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); }