Example #1
0
 public function process(Vtiger_Request $request)
 {
     $shortURL = str_replace('index.php', '', AppConfig::main('site_URL'));
     $viewer = $this->getViewer($request);
     $viewer->assign('URLCSS', $shortURL . Yeti_Layout::getLayoutFile('modules/AJAXChat/Chat.css'));
     $viewer->assign('URL', $shortURL . "libraries/AJAXChat/index.php");
     $viewer->view('Index.tpl', 'AJAXChat');
 }
Example #2
0
 /**
  * Constructor - Sets the templateDir and compileDir for the Smarty files
  * @param <String> - $media Layout/Media name
  */
 function __construct($media = '')
 {
     parent::__construct();
     $THISDIR = dirname(__FILE__);
     $compileDir = '';
     $templateDir = [];
     if (!empty($media)) {
         self::$currentLayout = $media;
         $customTemplatesDir = $THISDIR . '/../../custom/layouts/' . $media;
         $templateDir[] = $THISDIR . '/../../layouts/' . $media;
         $compileDir = $THISDIR . '/../../cache/templates_c/' . $media;
     } else {
         self::$currentLayout = Yeti_Layout::getActiveLayout();
         $templateDir[] = $THISDIR . '/../../custom/layouts/' . self::$currentLayout;
         $templateDir[] = $THISDIR . '/../../layouts/' . self::$currentLayout;
     }
     $templateDir[] = $THISDIR . '/../../custom/layouts/' . self::getDefaultLayoutName();
     $templateDir[] = $THISDIR . '/../../layouts/' . self::getDefaultLayoutName();
     $compileDir = $THISDIR . '/../../cache/templates_c/' . self::getDefaultLayoutName();
     if (!file_exists($compileDir)) {
         mkdir($compileDir, 0777, true);
     }
     $this->setTemplateDir($templateDir);
     $this->setCompileDir($compileDir);
     self::$debugViewer = AppConfig::debug('DEBUG_VIEWER');
     // FOR SECURITY
     // Escape all {$variable} to overcome XSS
     // We need to use {$variable nofilter} to overcome double escaping
     // TODO: Until we review the use disabled.
     //$this->registerFilter('variable', array($this, 'safeHtmlFilter'));
     // FOR DEBUGGING: We need to have this only once.
     static $debugViewerURI = false;
     if (self::$debugViewer && $debugViewerURI === false) {
         $debugViewerURI = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
         if (!empty($_POST)) {
             $debugViewerURI .= '?' . http_build_query($_POST);
         } else {
             $debugViewerURI = $_SERVER['REQUEST_URI'];
         }
         $this->log("URI: {$debugViewerURI}, TYPE: " . $_SERVER['REQUEST_METHOD']);
     }
 }
Example #3
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';
 }
Example #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;
 }
Example #5
0
 /**
  * Function to remove icons related to a module
  */
 public function deleteIcons()
 {
     self::log(__CLASS__ . '::' . __METHOD__ . ' | Start');
     $iconSize = ['', 48, 64, 128];
     foreach ($iconSize as $value) {
         foreach (Yeti_Layout::getAllLayouts() as $name => $label) {
             $fileName = "layouts/{$name}/skins/images/" . $this->name . $value . ".png";
             if (file_exists($fileName)) {
                 @unlink($fileName);
             }
         }
     }
     self::log(__CLASS__ . '::' . __METHOD__ . ' | End');
 }
Example #6
0
 /**
  * Function to get the instance of Vtiger Link Model from a given Vtiger_Link object
  * @param Vtiger_Link $linkObj
  * @return Vtiger_Link_Model instance
  */
 public static function getInstanceFromLinkObject(Vtiger_Link $linkObj)
 {
     $objectProperties = get_object_vars($linkObj);
     $linkModel = new self();
     foreach ($objectProperties as $properName => $propertyValue) {
         $linkModel->{$properName} = $propertyValue;
     }
     // added support for multilayout
     if (strpos($linkModel->linkurl, '_layoutName_') !== false) {
         $filePath1 = str_replace('_layoutName_', Yeti_Layout::getActiveLayout(), $linkModel->linkurl);
         $filePath2 = str_replace('_layoutName_', Yeti_Layout::getActiveLayout(), $linkModel->linkurl);
         if (is_file(vglobal('root_directory') . $filePath1)) {
             $linkModel->linkurl = $filePath1;
         } else {
             if (is_file(vglobal('root_directory') . $filePath2)) {
                 $linkModel->linkurl = $filePath2;
             }
         }
     }
     return $linkModel;
 }
Example #7
0
 /**
  * Function to get picklist values
  * @param <String> $fieldName
  * @return <Array> list of module names
  */
 public function getPicklistValues($fieldName)
 {
     if ($fieldName === 'default_module') {
         $db = PearDatabase::getInstance();
         $presence = array(0);
         $restrictedModules = array('Emails', 'Integration', 'Dashboard');
         $query = 'SELECT name, tablabel FROM vtiger_tab WHERE presence IN (' . generateQuestionMarks($presence) . ') AND isentitytype = ? AND name NOT IN (' . generateQuestionMarks($restrictedModules) . ')';
         $result = $db->pquery($query, array($presence, '1', $restrictedModules));
         $numOfRows = $db->num_rows($result);
         $moduleData = array('Home' => 'Home');
         for ($i = 0; $i < $numOfRows; $i++) {
             $row = $db->query_result_rowdata($result, $i);
             $moduleData[$db->query_result($result, $i, 'name')] = $db->query_result($result, $i, 'tablabel');
         }
         return $moduleData;
     } else {
         if ($fieldName === 'defaultLayout') {
             return Yeti_Layout::getAllLayouts();
         }
     }
     return ['true', 'false'];
 }