public static function realSingleUpload($frontEnd = 0)
{
$app = Factory::getApplication();
$paramsC = PhocacartUtils::getComponentParameters();
// $chunkMethod = $paramsC->get( 'multiple_upload_chunk', 0 );
// $uploadMethod = $paramsC->get( 'multiple_upload_method', 1 );
$overwriteExistingFiles = $paramsC->get('overwrite_existing_files', 0);
Session::checkToken('request') or jexit('ERROR: ' . Text::_('COM_PHOCACART_INVALID_TOKEN'));
$app->allowCache(false);
$file = Factory::getApplication()->input->files->get('Filedata', null, 'raw');
//$file = J R equest::getVar( 'Filedata', '', 'files', 'array' );
$folder = Factory::getApplication()->input->get('folder', '', '', 'path');
$format = Factory::getApplication()->input->get('format', 'html', '', 'cmd');
$return = JFactory::getApplication()->input->get('return-url', null, 'post', 'base64');
//includes field
$viewBack = Factory::getApplication()->input->get('viewback', '', '', '');
$manager = Factory::getApplication()->input->get('manager', 'file', '', 'string');
$tab = Factory::getApplication()->input->get('tab', '', '', 'string');
$field = Factory::getApplication()->input->get('field');
$errUploadMsg = '';
$folderUrl = $folder;
$tabUrl = '';
$component = Factory::getApplication()->input->get('option', '', '', 'string');
$path = PhocacartPath::getPath($manager);
// we use viewback to get right path
// In case no return value will be sent (should not happen)
if ($component != '' && $frontEnd == 0) {
$componentUrl = 'index.php?option=' . $component;
} else {
$componentUrl = 'index.php';
}
if ($tab != '') {
$tabUrl = '&tab=' . (string) $tab;
}
$ftp = ClientHelper::setCredentialsFromRequest('ftp');
// Make the filename safe
if (isset($file['name'])) {
$file['name'] = File::makeSafe($file['name']);
}
if (isset($folder) && $folder != '') {
$folder = $folder . '/';
}
// All HTTP header will be overwritten with js message
if (isset($file['name'])) {
$filepath = Path::clean($path['orig_abs_ds'] . $folder . strtolower($file['name']));
if (!PhocacartFileUpload::canUpload($file, $errUploadMsg, $manager, $frontEnd)) {
if ($errUploadMsg == 'COM_PHOCACART_WARNFILETOOLARGE') {
$errUploadMsg = Text::_($errUploadMsg) . ' (' . PhocacartFile::getFileSizeReadable($file['size']) . ')';
} else {
$errUploadMsg = Text::_($errUploadMsg);
}
if ($return) {
$app->enqueueMessage($errUploadMsg, 'error');
$app->redirect(base64_decode($return) . '&manager=' . (string) $manager . '&folder=' . $folderUrl);
exit;
} else {
$app->enqueueMessage($errUploadMsg, 'error');
$app->redirect($componentUrl);
exit;
}
}
if (File::exists($filepath) && $overwriteExistingFiles == 0) {
if ($return) {
$app->enqueueMessage(Text::_('COM_PHOCACART_FILE_ALREADY_EXISTS'), 'error');
$app->redirect(base64_decode($return) . '&manager=' . (string) $manager . '&folder=' . $folderUrl);
exit;
} else {
$app->enqueueMessage(Text::_('COM_PHOCACART_FILE_ALREADY_EXISTS'), 'error');
$app->redirect($componentUrl);
exit;
}
}
if (!File::upload($file['tmp_name'], $filepath, false, true)) {
PhocacartLog::add(2, 'Error uploading file - JFile upload', 0, 'File: ' . $file['name'] . ', File Path: ' . $filepath);
if ($return) {
$app->enqueueMessage(Text::_('COM_PHOCACART_ERROR_UNABLE_TO_UPLOAD_FILE'), 'error');
$app->redirect(base64_decode($return) . '&manager=' . (string) $manager . '&folder=' . $folderUrl);
exit;
} else {
$app->enqueueMessage(Text::_('COM_PHOCACART_ERROR_UNABLE_TO_UPLOAD_FILE'), 'error');
$app->redirect($componentUrl);
exit;
}
} else {
if ((int) $frontEnd > 0) {
return $file['name'];
}
if ($return) {
$app->enqueueMessage(Text::_('COM_PHOCACART_SUCCESS_FILE_UPLOADED'));
$app->redirect(base64_decode($return) . '&manager=' . (string) $manager . '&folder=' . $folderUrl);
exit;
} else {
$app->enqueueMessage(Text::_('COM_PHOCACART_SUCCESS_FILE_UPLOADED'));
$app->redirect($componentUrl);
exit;
}
}
} else {
PhocacartLog::add(2, 'Error uploading file - Filename does not exist', 0, 'File: File does not exist (Single Upload)');
$msg = Text::_('COM_PHOCACART_ERROR_UNABLE_TO_UPLOAD_FILE');
if ($return) {
$app->enqueueMessage($msg);
$app->redirect(base64_decode($return) . '&manager=' . (string) $manager . '&folder=' . $folderUrl);
exit;
} else {
if ($viewBack != '') {
$group = PhocacartUtilsSettings::getManagerGroup($manager);
$link = 'index.php?option=com_phocacart&view=phocacartmanager&manager=' . (string) $manager . str_replace('&', '&', $group['c']) . '&' . $tabUrl . '&folder=' . $folder . '&field=' . $field;
$app->enqueueMessage($msg);
$app->redirect($link);
} else {
$app->enqueueMessage($msg, 'error');
$app->redirect('index.php?option=com_phocacart');
}
}
}
}