static function buildLangPackage($languageCode, $languageName, $buildPath) { $fileName = $languageName . '.zip'; if (is_file($buildPath . '/' . $fileName)) { unlink($buildPath . '/' . $fileName); } // first we check for the files if (!is_file("include/language/{$languageCode}.manifest.xml")) { // check for manifest throw new Exception("Manifest missing for language package {$languageName}"); } // Export as Zip $zip = new Vtiger_Zip($buildPath . '/' . $fileName); // Add manifest file $zip->addFile("include/language/{$languageCode}.manifest.xml", 'manifest.xml'); // Add calendar files $zip->copyFileFromDisk('jscalendar/', 'jscalendar/', 'calendar-setup.js'); $zip->copyFileFromDisk('jscalendar/lang/', 'jscalendar/lang/', 'calendar-' . substr($languageCode, 0, 2) . '.js'); //$zip->copyFileFromDisk('modules/Emails/language/','modules/Emails/language/','phpmailer.lang-'.$languageCode.'.php'); // Copy module/include language files foreach (glob("{modules,include}/*/language/{$languageCode}.lang.{php,js}", GLOB_BRACE) as $langfile) { $fname = basename($langfile); $dname = dirname($langfile); $zip->copyFileFromDisk($dname, $dname, $fname); } $zip->copyFileFromDisk('include/language/', 'include/language/', $languageCode . '.lang.php'); $zip->copyFileFromDisk('include/js/', 'include/js/', $languageCode . '.lang.js'); $zip->save(); }
static function languageFromFilesystem($languageCode, $languageName, $directDownload = false) { // first we check for the files $wehavefiles = file_exists("include/language/{$languageCode}.manifest.xml"); // check for manifest if ($wehavefiles) { // Export as Zip if (file_exists('packages/optional/manifest.xml')) { @unlink('packages/optional/manifest.xml'); } @copy("include/language/{$languageCode}.manifest.xml", 'packages/optional/manifest.xml'); $mpkg = 'packages/optional/' . $languageName; $zipfilename = $mpkg . '.zip'; if (file_exists($zipfilename)) { @unlink($zipfilename); } $zip = new Vtiger_Zip($zipfilename); // Add manifest file $zip->copyFileFromDisk('packages/optional/', '', 'manifest.xml'); // Add calendar files $zip->copyFileFromDisk('jscalendar/', 'jscalendar/', 'calendar-setup.js'); $zip->copyFileFromDisk('jscalendar/lang/', 'jscalendar/lang/', 'calendar-' . substr($languageCode, 0, 2) . '.js'); // Copy module/include language files foreach (glob('{modules,include}/*/language/' . $languageCode . '.lang.{php,js}', GLOB_BRACE) as $langfile) { $fname = basename($langfile); $dname = dirname($langfile); $zip->copyFileFromDisk($dname, $dname, $fname); } $zip->copyFileFromDisk('include/language/', 'include/language/', $languageCode . '.lang.php'); $zip->copyFileFromDisk('include/js/', 'include/js/', $languageCode . '.lang.js'); $zip->save(); if ($directDownload) { $zip->forceDownload($mpkg . '.zip'); } @unlink('packages/optional/manifest.xml'); } else { echo "ERROR: One or more files necessary to create package are missing"; } }