Example #1
0
 function uploadLanguage()
 {
     global $toC_Json, $osC_Language, $osC_Currencies;
     $osC_Currencies = new osC_Currencies();
     $error = false;
     $feedback = array();
     $language = $_FILES['upload_file'];
     $tmp_path = DIR_FS_CACHE . 'languages/' . time();
     if (!is_dir(DIR_FS_CACHE . 'languages')) {
         if (!mkdir(DIR_FS_CACHE . 'languages', 0777)) {
             $error = true;
         }
     }
     if ($error === false && mkdir($tmp_path, 0777)) {
         $temp_file = new upload($language, $tmp_path);
         if ($temp_file->exists() && $temp_file->parse() && $temp_file->save()) {
             require_once '../ext/zip/pclzip.lib.php';
             $archive = new PclZip($tmp_path . '/' . $temp_file->filename);
             if ($archive->extract(PCLZIP_OPT_PATH, $tmp_path) == 0) {
                 $error = true;
                 $feedback[] = $osC_Language->get('ms_error_wrong_zip_file_format');
             }
         } else {
             $error = true;
             $feedback[] = $osC_Language->get('ms_error_save_file_failed');
         }
     } else {
         $error = true;
         $feedback[] = sprintf($osC_Language->get('ms_error_creating_directory_failed'), DIR_FS_CACHE);
     }
     if ($error === false) {
         $osC_DirectoryListing = new osC_DirectoryListing($tmp_path);
         $osC_DirectoryListing->setIncludeDirectories(true);
         $osC_DirectoryListing->setIncludeFiles(false);
         $files = $osC_DirectoryListing->getFiles();
         $code = null;
         foreach ($files as $file) {
             if (is_dir($tmp_path . '/' . $file['name'] . '/includes') && is_dir($tmp_path . '/' . $file['name'] . '/' . DIR_FS_ADMIN) && is_dir($tmp_path . '/' . $file['name'] . '/install')) {
                 $code = $file['name'];
                 break;
             }
         }
         if ($code != null) {
             toc_dircopy($tmp_path . '/' . $code . "/includes/languages", DIR_FS_CATALOG . 'includes/languages');
             toc_dircopy($tmp_path . '/' . $code . "/" . DIR_FS_ADMIN . "includes/languages", DIR_FS_CATALOG . DIR_FS_ADMIN . 'includes/languages');
             toc_dircopy($tmp_path . '/' . $code . "/install/includes/languages", DIR_FS_CATALOG . 'install/includes/languages');
             toc_dircopy($tmp_path . '/' . $code . "/install/templates", DIR_FS_CATALOG . 'install/templates');
             osc_remove($tmp_path);
         } else {
             $error = true;
             $feedback[] = $osC_Language->get('ms_error_wrong_language_package');
         }
     }
     if ($error === false) {
         if (osC_Language_Admin::import($code, 'replace')) {
             $response = array('success' => true, 'feedback' => $osC_Language->get('ms_success_action_performed'));
         } else {
             $response = array('success' => false, 'feedback' => $osC_Language->get('ms_error_action_not_performed'));
         }
     } else {
         $response = array('success' => false, 'feedback' => $osC_Language->get('ms_error_action_not_performed') . '<br />' . implode('<br />', $feedback));
     }
     header('Content-Type: text/html');
     echo $toC_Json->encode($response);
 }
Example #2
0
function toc_dircopy($src, $dest, $folder_permission = 0755, $file_permission = 0644)
{
    $res = false;
    $src = str_replace('\\', '/', $src);
    $src = str_replace('//', '/', $src);
    $dest = str_replace('\\', '/', $dest);
    $dest = str_replace('//', '/', $dest);
    //file copy
    if (is_file($src)) {
        if (is_dir($dest)) {
            if ($dest[strlen($dest) - 1] != '/') {
                $__dest = $dest . "/";
            }
            $__dest .= basename($src);
        } else {
            $__dest = $dest;
        }
        $res = copy($src, $__dest);
        chmod($__dest, $file_permission);
    } elseif (is_dir($src)) {
        if (!is_dir($dest)) {
            toc_mkdir($dest, $folder_permission);
            chmod($dest, $folder_permission);
        }
        if ($src[strlen($src) - 1] != '/') {
            $__src = $src . '/';
        } else {
            $__src = $src;
        }
        if ($dest[strlen($dest) - 1] != '/') {
            $__dest = $dest . '/';
        } else {
            $__dest = $dest;
        }
        $res = true;
        $handle = opendir($src);
        while ($file = readdir($handle)) {
            if ($file != '.' && $file != '..') {
                $res = toc_dircopy($__src . $file, $__dest . $file, $folder_permission, $file_permission);
            }
        }
        closedir($handle);
    } else {
        $res = false;
    }
    return $res;
}