function _UploadTheme($template, $path) { $path_temp = dirname(JPATH_BASE) . DS . "tmp" . DS . 'jat3' . time() . DS; if (!is_dir($path_temp)) { @JFolder::create($path_temp); $content = ''; JFile::write($path_temp . DS . 'index.html', $content); } $directory = $_FILES['install_package']['name']; $tmp_dest = $path_temp . $directory; $userfile = $_FILES['install_package']; // Build the appropriate paths $tmp_src = $userfile['tmp_name']; // $uploaded = JFile::upload($tmp_src, $tmp_dest); if (!$uploaded) { return JText::_('Upload false'); } // Unpack the downloaded package file $package = JAT3_AdminUtil::unpackzip($tmp_dest); if (!$package) { return JText::_('Package error.'); } //delete zip file JFile::delete($tmp_dest); $folder_uploaded = @JFolder::folders($path_temp); $files_uploaded = @JFolder::files($path_temp); $theme_info_path = ''; if ($files_uploaded) { foreach ($files_uploaded as $file) { if ($file == 'info.xml') { $theme_info_path = $path_temp . $file; break; } } } elseif (isset($folder_uploaded[0])) { $files = @JFolder::files($path_temp . DS . $folder_uploaded[0]); foreach ($files as $file) { if ($file == 'info.xml') { $theme_info_path = $path_temp . $folder_uploaded[0] . DS . $file; break; } } } if (!JFile::exists($theme_info_path)) { return JText::_('File info.xml not found!'); } $data = JAT3_AdminUtil::getThemeinfo($theme_info_path, true); if (!isset($data['name']) || !$data['name']) { return JText::_('Theme name is not defined!'); } $data['name'] = str_replace(' ', '_', $data['name']); $path .= DS . 'local' . DS . 'themes' . DS . $data['name']; $path = JPath::clean($path); $arr_spec = array('@', '#', '~', '$', '&', '(', ')', '^'); foreach ($arr_spec as $what) { if (($pos = strpos($data['name'], $what)) !== false) { return JText::_('Theme name invalid!'); } } if (JFolder::exists($path)) { return sprintf(JText::_('Theme "%s" already exists.'), $data['name']); } if ($files_uploaded) { $filedest = $path_temp; } elseif (isset($folder_uploaded[0])) { $filedest = $path_temp . DS . $folder_uploaded[0]; } $result = @JFolder::move($filedest, $path); if (is_bool($result) && !$result || is_string($result) && $result != '') { return sprintf(JText::_('Failed to move folder "%s"'), $data['name']); } return $data; }
/** * Upload theme * * @param string $template Template name * @param string $path Template path * * @return string Result message */ function _UploadTheme($template, $path) { $path_temp = dirname(JPATH_BASE) . DS . "tmp" . DS . 'jat3' . time() . DS; if (!is_dir($path_temp)) { @JFolder::create($path_temp); } if (!is_dir($path_temp)) { return JText::_('Can not create temp folder.'); } $directory = $_FILES['install_package']['name']; $tmp_dest = $path_temp . $directory; $userfile = $_FILES['install_package']; // Build the appropriate paths $tmp_src = $userfile['tmp_name']; // $uploaded = JFile::upload($tmp_src, $tmp_dest); if (!$uploaded) { return JText::_('UPLOAD_FALSE'); } // Unpack the downloaded package file $package = JAT3_AdminUtil::unpackzip($tmp_dest); if (!$package) { return JText::_('PACKAGE_ERROR'); } //delete zip file JFile::delete($tmp_dest); $folder_uploaded = @JFolder::folders($path_temp); $files_uploaded = @JFolder::files($path_temp); $theme_info_path = ''; if ($files_uploaded) { foreach ($files_uploaded as $file) { if ($file == 'info.xml') { $theme_info_path = $path_temp . $file; break; } } } elseif (isset($folder_uploaded[0])) { $files = @JFolder::files($path_temp . DS . $folder_uploaded[0]); foreach ($files as $file) { if ($file == 'info.xml') { $theme_info_path = $path_temp . $folder_uploaded[0] . DS . $file; break; } } } if (!JFile::exists($theme_info_path)) { return JText::_('FILE_INFO_XML_NOT_FOUND'); } $data = JAT3_AdminUtil::getThemeinfo($theme_info_path, true); if (!isset($data['name']) || !$data['name']) { return JText::_('THEME_NAME_IS_NOT_DEFINED'); } //$data['name'] = str_replace(' ', '_', $data['name']); $data['name'] = preg_replace('/[^a-zA-Z0-9\\_]/', '_', $data['name']); // Check length if (strlen($data['name']) > 50) { return JText::_('Theme name length must be smaller than 50'); } $path .= DS . 'themes' . DS . $data['name']; $path = JPath::clean($path); //$arr_spec = array('~','`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '\'',); //foreach ($arr_spec as $what) { // if (($pos = strpos($data['name'], $what))!==false) { // return JText::_('Theme name invalid!'); // } //} if (JFolder::exists($path)) { return sprintf(JText::_('THEME_S_ALREADY_EXISTS'), $data['name']); } if ($files_uploaded) { $filedest = $path_temp; } elseif (isset($folder_uploaded[0])) { $filedest = $path_temp . DS . $folder_uploaded[0]; } $result = @JFolder::move($filedest, $path); if (is_bool($result) && !$result || is_string($result) && $result != '') { return sprintf(JText::_('FAILED_TO_MOVE_FOLDER_S'), $data['name']); } return $data; }