Beispiel #1
0
 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;
 }
Beispiel #2
0
 /**
  * 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;
 }