Ejemplo n.º 1
0
 public static function getLayoutFile($name)
 {
     $basePath = 'layouts' . '/' . vglobal('defaultLayout') . '/';
     $filePath = Vtiger_Loader::resolveNameToPath('~' . $basePath . $name);
     if (is_file($filePath)) {
         return $basePath . $name;
     }
     $basePath = 'layouts' . '/' . Vtiger_Viewer::getDefaultLayoutName() . '/';
     return $basePath . $name;
 }
Ejemplo n.º 2
0
 /**
  * Getting template name
  * @return string templateName
  */
 public function getTemplateName($view, $moduleName)
 {
     $tpl = $view . $this->name . '.tpl';
     $filename = 'layouts' . DIRECTORY_SEPARATOR . Yeti_Layout::getActiveLayout() . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR . $moduleName . DIRECTORY_SEPARATOR . 'inventoryfields' . DIRECTORY_SEPARATOR . $tpl;
     if (is_file($filename)) {
         return $tpl;
     }
     $filename = 'layouts' . DIRECTORY_SEPARATOR . Yeti_Layout::getActiveLayout() . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR . 'Vtiger' . DIRECTORY_SEPARATOR . 'inventoryfields' . DIRECTORY_SEPARATOR . $tpl;
     if (is_file($filename)) {
         return $tpl;
     }
     $filename = 'layouts' . DIRECTORY_SEPARATOR . Vtiger_Viewer::getDefaultLayoutName() . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR . $moduleName . DIRECTORY_SEPARATOR . 'inventoryfields' . DIRECTORY_SEPARATOR . $tpl;
     if (is_file($filename)) {
         return $tpl;
     }
     $filename = 'layouts' . DIRECTORY_SEPARATOR . Vtiger_Viewer::getDefaultLayoutName() . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR . 'Vtiger' . DIRECTORY_SEPARATOR . 'inventoryfields' . DIRECTORY_SEPARATOR . $tpl;
     if (is_file($filename)) {
         return $tpl;
     }
     return $view . 'Base' . '.tpl';
 }
Ejemplo n.º 3
0
 /**
  * Initialize Update
  * @access private
  */
 function initUpdate($moduleInstance, $zipfile, $overwrite)
 {
     $module = $this->getModuleNameFromZip($zipfile);
     if (!$moduleInstance || $moduleInstance->name != $module) {
         self::log('Module name mismatch!');
         return false;
     }
     if ($module != null) {
         $unzip = new Vtiger_Unzip($zipfile, $overwrite);
         // Unzip selectively
         $unzip->unzipAllEx(".", ['include' => ['templates', "modules/{$module}", 'cron', 'languages', 'layouts', 'settings/actions', 'settings/views', 'settings/models', 'settings/templates', 'settings/connectors', 'settings/libraries']], ['templates' => "layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/modules/{$module}", 'cron' => "cron/modules/{$module}", 'settings/actions' => "modules/Settings/{$module}/actions", 'settings/views' => "modules/Settings/{$module}/views", 'settings/models' => "modules/Settings/{$module}/models", 'settings/connectors' => "modules/Settings/{$module}/connectors", 'settings/libraries' => "modules/Settings/{$module}/libraries", 'settings/templates' => "layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/modules/Settings/{$module}", 'images' => "layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/skins/images/{$module}", 'settings' => 'modules/Settings', 'layouts' => 'layouts']);
         // If data is not yet available
         if (empty($this->_modulexml)) {
             $this->__parseManifestFile($unzip);
         }
         if ($unzip) {
             $unzip->close();
         }
     }
     return $module;
 }
Ejemplo n.º 4
0
 /**
  * Function returns the css files
  * @param <Array> $cssFileNames
  * @param <String> $fileExtension
  * @return <Array of Vtiger_CssScript_Model>
  *
  * First check if $cssFileName exists
  * if not, check under layout folder $cssFileName eg:layouts/basic/$cssFileName
  */
 function checkAndConvertCssStyles($cssFileNames, $fileExtension = 'css')
 {
     $cssStyleInstances = [];
     foreach ($cssFileNames as $cssFileName) {
         $cssScriptModel = new Vtiger_CssScript_Model();
         if (strpos($cssFileName, 'http://') === 0 || strpos($cssFileName, 'https://') === 0) {
             $cssStyleInstances[] = $cssScriptModel->set('href', $cssFileName);
             continue;
         }
         $completeFilePath = Vtiger_Loader::resolveNameToPath($cssFileName, $fileExtension);
         if (file_exists($completeFilePath)) {
             if (strpos($cssFileName, '~') === 0) {
                 $filePath = ltrim(ltrim($cssFileName, '~'), '/');
             } else {
                 $filePath = str_replace('.', '/', $cssFileName) . '.' . $fileExtension;
             }
             $minFilePath = str_replace('.css', '.min.css', $filePath);
             if (Vtiger_Functions::getMinimizationOptions($fileExtension) && is_file(Vtiger_Loader::resolveNameToPath('~' . $minFilePath, $fileExtension))) {
                 $filePath = $minFilePath;
             }
             $cssStyleInstances[$cssFileName] = $cssScriptModel->set('href', $filePath);
             continue;
         } else {
             $preLayoutPath = '';
             if (strpos($cssFileName, '~') === 0) {
                 $cssFile = ltrim(ltrim($cssFileName, '~'), '/');
                 $preLayoutPath = '~';
             } else {
                 $cssFile = $cssFileName;
             }
             // Checking if file exists in selected layout
             $layoutPath = 'layouts' . '/' . Yeti_Layout::getActiveLayout();
             $fallBackFilePath = Vtiger_Loader::resolveNameToPath($preLayoutPath . $layoutPath . '/' . $cssFile, $fileExtension);
             if (is_file($fallBackFilePath)) {
                 if (empty($preLayoutPath)) {
                     $filePath = str_replace('.', '/', $cssFile) . '.css';
                 }
                 $minFilePath = str_replace('.css', '.min.css', $filePath);
                 if (Vtiger_Functions::getMinimizationOptions($fileExtension) && is_file(Vtiger_Loader::resolveNameToPath('~' . $layoutPath . '/' . $minFilePath, $fileExtension))) {
                     $filePath = $minFilePath;
                 }
                 $cssStyleInstances[$cssFileName] = $cssScriptModel->set('href', $layoutPath . '/' . $filePath);
                 continue;
             }
             // Checking if file exists in default layout
             $layoutPath = 'layouts' . '/' . Vtiger_Viewer::getDefaultLayoutName();
             $fallBackFilePath = Vtiger_Loader::resolveNameToPath($preLayoutPath . $layoutPath . '/' . $cssFile, $fileExtension);
             if (is_file($fallBackFilePath)) {
                 if (empty($preLayoutPath)) {
                     $filePath = str_replace('.', '/', $cssFile) . '.css';
                 }
                 $minFilePath = str_replace('.css', '.min.css', $filePath);
                 if (Vtiger_Functions::getMinimizationOptions($fileExtension) && is_file(Vtiger_Loader::resolveNameToPath('~' . $layoutPath . '/' . $minFilePath, $fileExtension))) {
                     $filePath = $minFilePath;
                 }
                 $cssStyleInstances[$cssFileName] = $cssScriptModel->set('href', $layoutPath . '/' . $filePath);
                 continue;
             }
         }
     }
     return $cssStyleInstances;
 }
Ejemplo n.º 5
0
 /**
  * Initialize Import
  * @access private
  */
 function initImport($zipfile, $overwrite = true)
 {
     $module = $this->getModuleNameFromZip($zipfile);
     if ($module != null) {
         $unzip = new Vtiger_Unzip($zipfile, $overwrite);
         // Unzip selectively
         $unzip->unzipAllEx(".", ['include' => array('templates', "modules/{$module}", 'cron', 'languages', 'settings/actions', 'settings/views', 'settings/models', 'settings/templates', 'settings/connectors', 'settings/libraries', "{$module}.png", 'updates', 'layouts')], ['templates' => "layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/modules/{$module}", 'cron' => "cron/modules/{$module}", 'settings/actions' => "modules/Settings/{$module}/actions", 'settings/views' => "modules/Settings/{$module}/views", 'settings/models' => "modules/Settings/{$module}/models", 'settings/connectors' => "modules/Settings/{$module}/connectors", 'settings/libraries' => "modules/Settings/{$module}/libraries", 'settings/templates' => "layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/modules/Settings/{$module}", 'images' => "layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/skins/images/{$module}", 'settings' => "modules/Settings", 'updates' => "cache/updates", 'layouts' => 'layouts']);
         if ($unzip->checkFileExistsInRootFolder("{$module}.png")) {
             $unzip->unzip("{$module}.png", "layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/skins/images/{$module}.png");
         }
         if ($unzip) {
             $unzip->close();
         }
     }
     return $module;
 }
Ejemplo n.º 6
0
 /**
  * Export Module as a zip file.
  * @param Vtiger_Module Instance of module
  * @param Path Output directory path
  * @param String Zipfilename to use
  * @param Boolean True for sending the output as download
  */
 function export($moduleInstance, $todir = '', $zipfilename = '', $directDownload = false)
 {
     $module = $moduleInstance->name;
     $this->__initExport($module, $moduleInstance);
     // Call module export function
     $this->export_Module($moduleInstance);
     $this->__finishExport();
     // Export as Zip
     // if($zipfilename == '') $zipfilename = "$module-" . date('YmdHis') . ".zip";
     $zipfilename = $moduleInstance->name . "_" . date('Y-m-d-Hi') . "_" . $moduleInstance->version . ".zip";
     $zipfilename = "{$this->_export_tmpdir}/{$zipfilename}";
     $zip = new Vtiger_Zip($zipfilename);
     // Add manifest file
     $zip->addFile($this->__getManifestFilePath(), "manifest.xml");
     // Copy module directory
     $zip->copyDirectoryFromDisk("modules/{$module}");
     // Copy Settings/module directory
     if (is_dir("modules/Settings/{$module}")) {
         $zip->copyDirectoryFromDisk("modules/Settings/{$module}", 'settings/');
     }
     // Copy cron files of the module (if any)
     if (is_dir("cron/modules/{$module}")) {
         $zip->copyDirectoryFromDisk("cron/modules/{$module}", "cron");
     }
     //Copy module templates files
     if (is_dir('layouts/' . Vtiger_Viewer::getDefaultLayoutName() . '/modules/' . $module)) {
         $zip->copyDirectoryFromDisk('layouts/' . Vtiger_Viewer::getDefaultLayoutName() . '/modules/' . $module, 'templates');
     }
     //Copy Settings module templates files, if any
     if (is_dir("layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/modules/Settings/{$module}")) {
         $zip->copyDirectoryFromDisk("layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/modules/Settings/{$module}", "settings/templates");
     }
     //Support to multiple layouts of module
     $layoutDirectories = glob('layouts' . '/*', GLOB_ONLYDIR);
     foreach ($layoutDirectories as $key => $layoutName) {
         $moduleLayout = $layoutName . "/modules/{$module}";
         if (is_dir($moduleLayout)) {
             $zip->copyDirectoryFromDisk($moduleLayout, $moduleLayout);
         }
         $settingsLayout = $layoutName . "/modules/Settings/{$module}";
         if (is_dir($settingsLayout)) {
             $zip->copyDirectoryFromDisk($settingsLayout, $settingsLayout);
         }
     }
     //Copy language files
     $this->__copyLanguageFiles($zip, $module);
     //Copy image file
     if (file_exists("layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/skins/images/{$module}.png")) {
         $zip->copyFileFromDisk("layouts/" . Vtiger_Viewer::getDefaultLayoutName() . "/skins/images", "", "{$module}.png");
     }
     $zip->save();
     if ($todir) {
         copy($zipfilename, $todir);
     }
     if ($directDownload) {
         $zip->forceDownload($zipfilename);
         unlink($zipfilename);
     }
     $this->__cleanupExport();
 }