コード例 #1
0
ファイル: Reports.php プロジェクト: rcrrich/UpdatePackages
 function initListOfModules()
 {
     global $adb, $current_user, $old_related_modules;
     $restricted_modules = array('Events');
     $restricted_blocks = array('LBL_COMMENTS', 'LBL_COMMENT_INFORMATION');
     $this->module_id = array();
     $this->module_list = array();
     // Prefetch module info to check active or not and also get list of tabs
     $modulerows = vtlib_prefetchModuleActiveInfo(false);
     $cachedInfo = VTCacheUtils::lookupReport_ListofModuleInfos();
     if ($cachedInfo !== false) {
         $this->module_list = $cachedInfo['module_list'];
         $this->related_modules = $cachedInfo['related_modules'];
     } else {
         if ($modulerows) {
             foreach ($modulerows as $resultrow) {
                 if ($resultrow['presence'] == '1') {
                     continue;
                 }
                 // skip disabled modules
                 if ($resultrow['isentitytype'] != '1') {
                     continue;
                 }
                 // skip extension modules
                 if (in_array($resultrow['name'], $restricted_modules)) {
                     // skip restricted modules
                     continue;
                 }
                 if ($resultrow['name'] != 'Calendar') {
                     $this->module_id[$resultrow['tabid']] = $resultrow['name'];
                 } else {
                     $this->module_id[9] = $resultrow['name'];
                     $this->module_id[16] = $resultrow['name'];
                 }
                 $this->module_list[$resultrow['name']] = array();
             }
             $moduleids = array_keys($this->module_id);
             $reportblocks = $adb->pquery("SELECT blockid, blocklabel, tabid FROM vtiger_blocks WHERE tabid IN (" . generateQuestionMarks($moduleids) . ")", array($moduleids));
             $prev_block_label = '';
             if ($adb->num_rows($reportblocks)) {
                 while ($resultrow = $adb->fetch_array($reportblocks)) {
                     $blockid = $resultrow['blockid'];
                     $blocklabel = $resultrow['blocklabel'];
                     $module = $this->module_id[$resultrow['tabid']];
                     if (in_array($blocklabel, $restricted_blocks) || in_array($blockid, $this->module_list[$module]) || isset($this->module_list[$module][getTranslatedString($blocklabel, $module)])) {
                         continue;
                     }
                     if (!empty($blocklabel)) {
                         if ($module == 'Calendar' && $blocklabel == 'LBL_CUSTOM_INFORMATION') {
                             $this->module_list[$module][$blockid] = getTranslatedString($blocklabel, $module);
                         } else {
                             $this->module_list[$module][$blockid] = getTranslatedString($blocklabel, $module);
                         }
                         $prev_block_label = $blocklabel;
                     } else {
                         $this->module_list[$module][$blockid] = getTranslatedString($prev_block_label, $module);
                     }
                 }
             }
             $relatedmodules = $adb->pquery("SELECT vtiger_tab.name, vtiger_relatedlists.tabid FROM vtiger_tab\n\t\t\t\t\tINNER JOIN vtiger_relatedlists on vtiger_tab.tabid=vtiger_relatedlists.related_tabid\n\t\t\t\t\tWHERE vtiger_tab.isentitytype=1\n\t\t\t\t\tAND vtiger_tab.name NOT IN(" . generateQuestionMarks($restricted_modules) . ")\n\t\t\t\t\tAND vtiger_tab.presence = 0 AND vtiger_relatedlists.label!='Activity History'\n\t\t\t\t\tUNION\n\t\t\t\t\tSELECT module, vtiger_tab.tabid FROM vtiger_fieldmodulerel\n\t\t\t\t\tINNER JOIN vtiger_tab on vtiger_tab.name = vtiger_fieldmodulerel.relmodule\n\t\t\t\t\tWHERE vtiger_tab.isentitytype = 1\n\t\t\t\t\tAND vtiger_tab.name NOT IN(" . generateQuestionMarks($restricted_modules) . ")\n\t\t\t\t\tAND vtiger_tab.presence = 0", array($restricted_modules, $restricted_modules));
             if ($adb->num_rows($relatedmodules)) {
                 while ($resultrow = $adb->fetch_array($relatedmodules)) {
                     $module = $this->module_id[$resultrow['tabid']];
                     if (!isset($this->related_modules[$module])) {
                         $this->related_modules[$module] = array();
                     }
                     if ($module != $resultrow['name']) {
                         $this->related_modules[$module][] = $resultrow['name'];
                     }
                     // To achieve Backward Compatability with Report relations
                     if (isset($old_related_modules[$module])) {
                         $rel_mod = array();
                         foreach ($old_related_modules[$module] as $key => $name) {
                             if (vtlib_isModuleActive($name) && isPermitted($name, 'index', '')) {
                                 $rel_mod[] = $name;
                             }
                         }
                         if (!empty($rel_mod)) {
                             $this->related_modules[$module] = array_merge($this->related_modules[$module], $rel_mod);
                             $this->related_modules[$module] = array_unique($this->related_modules[$module]);
                         }
                     }
                 }
             }
             foreach ($this->related_modules as $module => $related_modules) {
                 if ($module == 'Emails') {
                     $this->related_modules[$module] = getEmailRelatedModules();
                 }
             }
             // Put the information in cache for re-use
             VTCacheUtils::updateReport_ListofModuleInfos($this->module_list, $this->related_modules);
         }
     }
 }
コード例 #2
0
ファイル: ITS4YouReports.php プロジェクト: cin-system/cinrepo
 public function initListOfModules()
 {
     global $old_related_modules;
     $adb = PearDatabase::getInstance();
     $this->inventory_modules = self::$inventory_modules;
     // $restricted_modules = array('Emails', 'Events', 'Webmails');
     $restricted_modules = array('Emails', 'Events', 'Webmails');
     global $current_user;
     if ($current_user->is_admin != "on") {
         $restricted_modules[] = "Users";
     }
     $restricted_blocks = array('LBL_IMAGE_INFORMATION', 'LBL_COMMENTS', 'LBL_COMMENT_INFORMATION');
     $this->module_id = array();
     $this->module_list = array();
     // Prefetch module info to check active or not and also get list of tabs
     $modulerows = vtlib_prefetchModuleActiveInfo(false);
     $cachedInfo = VTCacheUtils::lookupReport_ListofModuleInfos();
     if ($cachedInfo !== false) {
         $this->module_list = $cachedInfo['module_list'];
         $this->related_modules = $cachedInfo['related_modules'];
     } else {
         if ($modulerows) {
             foreach ($modulerows as $resultrow) {
                 if ($resultrow['presence'] == '1') {
                     continue;
                 }
                 // skip disabled modules
                 // ITS4YOU-UP SlOl 21. 2. 2014 11:38:13 add Assigned to Users module
                 if ($resultrow['isentitytype'] != '1' && $resultrow['name'] != "Users") {
                     continue;
                 }
                 // skip extension modules
                 if (in_array($resultrow['name'], $restricted_modules)) {
                     // skip restricted modules
                     continue;
                 }
                 if ($resultrow['name'] != 'Calendar') {
                     $this->module_id[$resultrow['tabid']] = $resultrow['name'];
                 } else {
                     $this->module_id[9] = $resultrow['name'];
                     $this->module_id[16] = $resultrow['name'];
                 }
                 // ITS4YOU-CR SlOl  2. 12. 2013 8:42:40
                 $this->init_list_for_module($resultrow['name']);
                 // ITS4YOU-END 2. 12. 2013 8:42:43
                 $this->module_list[$resultrow['name']] = array();
             }
             $moduleids = array_keys($this->module_id);
             //$adb->setDebug(true);
             $reportblocks = $adb->pquery("SELECT blockid, blocklabel, tabid FROM vtiger_blocks WHERE tabid IN (" . generateQuestionMarks($moduleids) . ")", array($moduleids));
             // $reportblocks = $adb->pquery("SELECT blockid, blocklabel, tabid FROM vtiger_blocks WHERE tabid IN (9,16)", array());
             //$adb->setDebug(false);
             $prev_block_label = '';
             if ($adb->num_rows($reportblocks) > 0) {
                 while ($resultrow = $adb->fetch_array($reportblocks)) {
                     $blockid = $resultrow['blockid'];
                     $blocklabel = $resultrow['blocklabel'];
                     $module = $this->module_id[$resultrow['tabid']];
                     if (in_array($blocklabel, $restricted_blocks) || in_array($blockid, $this->module_list[$module]) || isset($this->module_list[$module][vtranslate($blocklabel, $module)])) {
                         continue;
                     }
                     if ($blocklabel != "") {
                         if ($module == 'Calendar' && $blocklabel == 'LBL_CUSTOM_INFORMATION') {
                             $this->module_list[$module][$blockid] = vtranslate($blocklabel, $module);
                         } elseif ($module == 'Calendar' && in_array($blocklabel, array("LBL_RECURRENCE_INFORMATION", "LBL_RELATED_TO"))) {
                             $this->module_list[$module][$blockid] = vtranslate($blocklabel, "Events");
                         } else {
                             $this->module_list[$module][$blockid] = vtranslate($blocklabel, $module);
                         }
                         $prev_block_label = $blocklabel;
                         // ak je blocklabel prazdny spustat toto ??? zistit !!!
                     } else {
                         $this->module_list[$module][$blockid] = vtranslate($prev_block_label, $module);
                     }
                 }
             }
             // tvorba vazby cez ui10 a pridanie stlpcov k danemu modulu
             //    $adb->setDebug(true);
             $relatedmodules_pf = $adb->pquery("\n                                    SELECT uitype,fieldid, CONCAT(fieldlabel,' (',relmodule,') ') AS name, vtiger_tab.tabid, relmodule FROM vtiger_fieldmodulerel\n                                    INNER JOIN vtiger_tab on vtiger_tab.name = vtiger_fieldmodulerel.module \n                                    INNER JOIN vtiger_field USING (fieldid) \n                                    WHERE vtiger_tab.isentitytype = 1\n                                    AND vtiger_tab.name NOT IN(" . generateQuestionMarks($restricted_modules) . ")\n                                    AND vtiger_tab.presence = 0 AND vtiger_field.uitype='10' ", array($restricted_modules));
             //AND vtiger_tab.presence = 0 AND vtiger_field.uitype='10'  GROUP BY relmodule ", array($restricted_modules));
             //    $adb->setDebug(false);
             if ($adb->num_rows($relatedmodules_pf) > 0) {
                 $related_fields_array = array();
                 while ($resultrow = $adb->fetch_array($relatedmodules_pf)) {
                     $tabid = $resultrow['tabid'];
                     $module = $this->module_id[$tabid];
                     if (!isset($this->related_modules[$module])) {
                         $this->related_modules[$module] = array();
                     }
                     $this->init_list_for_module($module);
                     $field_rel = $st_rel_row["fieldlabel"];
                     if (is_numeric(strpos($resultrow["name"], $resultrow['relmodule']))) {
                         $reltabid = getTabid($resultrow["relmodule"]);
                         $relmodule_lbl = vtranslate($resultrow['name']);
                         $this->related_modules[$module][] = array("name" => $relmodule_lbl, "id" => $reltabid . "x" . $resultrow['fieldid']);
                     }
                 }
             }
             // pridanie modulu Users pre assigned user id ui type 53 na vyber poloziek
             // ITS4YOU-CR SlOl 21. 2. 2014 11:02:16
             foreach ($this->related_modules as $modulename => $related_array) {
                 $module_id = getTabid($modulename);
                 //$adb->setDebug(true);
                 $relatedmodules_at = $adb->pquery("SELECT fieldlabel, fieldid FROM vtiger_field WHERE uitype = ? AND tabid = ? AND presence IN (0,2)", array(53, $module_id));
                 //$adb->setDebug(false);
                 while ($row = $adb->fetchByAssoc($relatedmodules_at)) {
                     $user_module = "Users";
                     $user_module_lbl = vtranslate($user_module);
                     $this->related_modules[$modulename][] = array("name" => vtranslate($row['fieldlabel']) . " (" . $user_module_lbl . ")", "id" => getTabid($user_module) . "x" . $row['fieldid']);
                 }
             }
             // ITS4YOU-END 21. 2. 2014 11:02:18
             // related modules with MIF signature (more_info relation)
             $relatedmodules_mi = $adb->pquery("SELECT vtiger_tab.name AS name, vtiger_relatedlists.tabid FROM vtiger_tab\n                            INNER JOIN vtiger_relatedlists on vtiger_tab.tabid=vtiger_relatedlists.related_tabid\n                            WHERE vtiger_tab.isentitytype=1\n                            AND vtiger_tab.name NOT IN(" . generateQuestionMarks($restricted_modules) . ") \n                            AND vtiger_tab.presence = 0 AND vtiger_relatedlists.label!='Activity History'\n                        UNION \n                        SELECT module, vtiger_tab.tabid \n                            FROM vtiger_fieldmodulerel \n                            INNER JOIN vtiger_tab on vtiger_tab.name = vtiger_fieldmodulerel.relmodule \n                            INNER JOIN vtiger_field ON vtiger_field.fieldid = vtiger_fieldmodulerel.fieldid AND vtiger_field.uitype != '10' \n                            WHERE vtiger_tab.isentitytype = 1 AND vtiger_tab.name NOT IN('Emails','Events','Webmails') AND vtiger_tab.presence = 0   \n                        ", array($restricted_modules));
             //$adb->setDebug(true);
             while ($resultrow = $adb->fetch_array($relatedmodules_mi)) {
                 $tabid = $resultrow['tabid'];
                 $module = $this->module_id[$tabid];
                 $relmodule_lbl = vtranslate($resultrow['name']);
                 $this->related_modules[$module][] = array("name" => $relmodule_lbl, "id" => getTabid($resultrow['name']) . "xMIF");
             }
             //$adb->setDebug(false);
             // inventory modules related modules Services Products with INV signature (inventory relation)
             foreach ($this->related_modules as $module => $rel_array) {
                 foreach ($rel_array as $r_key => $r_d_array) {
                     if (in_array($module, $this->inventory_modules)) {
                         if (!in_array("Products", $r_d_array) && !$this->in_multiarray(vtranslate("Products"), $this->related_modules[$module])) {
                             $related_modules[$module][] = "Products";
                             $this->related_modules[$module][] = array("name" => vtranslate("Products"), "id" => getTabid("Products") . "xINV");
                             $r_d_array[] = "Products";
                         }
                         if (!in_array("Services", $r_d_array) && !$this->in_multiarray(vtranslate("Services"), $this->related_modules[$module])) {
                             $related_modules[$module][] = "Services";
                             $this->related_modules[$module][] = array("name" => vtranslate("Services"), "id" => getTabid("Services") . "xINV");
                             $r_d_array[] = "Services";
                         }
                     }
                 }
             }
             // Put the information in cache for re-use
             VTCacheUtils::updateReport_ListofModuleInfos($this->module_list, $this->related_modules);
         }
     }
 }