'index.php?module=Users&parent=Settings&view=List', 'index.php?module=Settings&action=listroles&parenttab=Settings' => 'index.php?module=Roles&parent=Settings&view=Index', 'index.php?module=Settings&action=ListProfiles&parenttab=Settings' => 'index.php?module=Profiles&parent=Settings&view=List', 'index.php?module=Settings&action=listgroups&parenttab=Settings' => 'index.php?module=Groups&parent=Settings&view=List', 'index.php?module=Settings&action=OrgSharingDetailView&parenttab=Settings' => 'index.php?module=SharingAccess&parent=Settings&view=Index', 'index.php?module=Settings&action=DefaultFieldPermissions&parenttab=Settings' => 'index.php?module=FieldAccess&parent=Settings&view=Index', 'index.php?module=Settings&action=ListLoginHistory&parenttab=Settings' => 'index.php?module=LoginHistory&parent=Settings&view=List', 'index.php?module=Settings&action=ModuleManager&parenttab=Settings' => 'index.php?module=ModuleManager&parent=Settings&view=List', 'index.php?module=PickList&action=PickList&parenttab=Settings' => 'index.php?parent=Settings&module=Picklist&view=Index', 'index.php?module=Settings&action=listemailtemplates&parenttab=Settings' => 'index.php?module=Emails&view=ListTemplates', 'index.php?module=Settings&action=listwordtemplates&parenttab=Settings' => 'index.php?module=Settings&submodule=ModuleManager&view=WordTemplates', 'index.php?module=Settings&action=listnotificationschedulers&parenttab=Settings' => 'index.php?module=Settings&submodule=Vtiger&view=Schedulers', 'index.php?module=Settings&action=listinventorynotifications&parenttab=Settings' => 'index.php?module=Settings&submodule=Notifications&view=InventoryAlerts', 'index.php?module=Settings&action=OrganizationConfig&parenttab=Settings' => 'index.php?parent=Settings&module=Vtiger&view=CompanyDetails', 'index.php?module=Settings&action=EmailConfig&parenttab=Settings' => 'index.php?parent=Settings&module=Vtiger&view=OutgoingServerDetail', 'index.php?module=Settings&action=CurrencyListView&parenttab=Settings' => 'index.php?parent=Settings&module=Currency&view=List', 'index.php?module=Settings&action=TaxConfig&parenttab=Settings' => 'index.php?module=Vtiger&parent=Settings&view=TaxIndex', 'index.php?module=Settings&action=ProxyServerConfig&parenttab=Settings' => 'index.php?module=Settings&submodule=Server&view=ProxyConfig', 'index.php?module=Settings&action=OrganizationTermsandConditions&parenttab=Settings' => 'index.php?parent=Settings&module=Vtiger&view=TermsAndConditionsEdit', 'index.php?module=Settings&action=CustomModEntityNo&parenttab=Settings' => 'index.php?module=Vtiger&parent=Settings&view=CustomRecordNumbering', 'index.php?module=Settings&action=MailScanner&parenttab=Settings' => 'index.php?parent=Settings&module=MailConverter&view=List', 'index.php?module=com_vtiger_workflow&action=workflowlist&parenttab=Settings' => 'index.php?module=Workflows&parent=Settings&view=List', 'index.php?module=com_vtiger_workflow&action=workflowlist' => 'index.php?module=Workflows&parent=Settings&view=List', 'index.php?module=ConfigEditor&action=index' => 'index.php?module=Vtiger&parent=Settings&view=ConfigEditorDetail', 'index.php?module=Tooltip&action=QuickView&parenttab=Settings' => 'index.php?module=Settings&submodule=Tooltip&view=Index', 'index.php?module=CustomerPortal&action=index&parenttab=Settings' => 'index.php?module=CustomerPortal&parent=Settings&view=Index', 'index.php?module=Settings&action=Announcements&parenttab=Settings' => 'index.php?parent=Settings&module=Vtiger&view=AnnouncementEdit', 'index.php?module=PickList&action=PickListDependencySetup&parenttab=Settings' => 'index.php?parent=Settings&module=PickListDependency&view=List', 'index.php?module=ModTracker&action=BasicSettings&parenttab=Settings&formodule=ModTracker' => 'index.php?module=Settings&submodule=ModTracker&view=Index', 'index.php?module=CronTasks&action=ListCronJobs&parenttab=Settings' => 'index.php?module=CronTasks&parent=Settings&view=List', 'index.php?module=Webforms&action=index&parenttab=Settings' => 'index.php?module=Webforms&parent=Settings&view=List', 'index.php?module=Settings&action=MenuEditor&parenttab=Settings' => 'index.php?module=MenuEditor&parent=Settings&view=Index', 'index.php?module=ExchangeConnector&action=index&parenttab=Settings' => 'index.php?module=ExchangeConnector&parent=Settings&view=Index' ); /** * Function to get the Id of the menu item * @return - Menu Item Id */ public function getId() { return $this->get(self::$itemId); } /** * Function to get the Menu to which the Item belongs * @return Settings_Vtiger_Menu_Model instance */ public function getMenu() { return $this->menu; } /** * Function to set the Menu to which the Item belongs, given Menu Id * @param $menuId * @return Settings_Vtiger_MenuItem_Model */ public function setMenu($menuId) { $this->menu = Settings_Vtiger_Menu_Model::getInstanceById($menuId); return $this; } /** * Function to set the Menu to which the Item belongs, given Menu Model instance * @param $menu - Settings Menu Model instance * @return Settings_Vtiger_MenuItem_Model */ public function setMenuFromInstance($menu) { $this->menu = $menu; return $this; } /** * Function to get the url to get to the Settings Menu Item * @return - Menu Item landing url */ public function getUrl() { $url = $this->get('linkto'); $url = decode_html($url); if(isset(self::$transformedUrlMapping[$url])) { $url = self::$transformedUrlMapping[$url]; } $url .= '&block='.$this->getMenu()->getId().'&fieldid='.$this->getId(); return $url; } /** * Function to get the module name, to which the Settings Menu Item belongs to * @return - Module to which the Menu Item belongs */ public function getModuleName() { return 'Settings:Vtiger'; } /** * Function to get the pin and unpin action url */ public function getPinUnpinActionUrl() { return 'index.php?module=Vtiger&parent=Settings&action=Basic&mode=updateFieldPinnedStatus&fieldid='.$this->getId(); } /** * Function to verify whether menuitem is pinned or not * @return true to pinned, false to not pinned. */ public function isPinned() { $pinStatus = $this->get('pinned'); return $pinStatus == '1' ? true : false; } /** * Function which will update the pin status * @param $pinned - true to enable , false to disable */ private function updatePinStatus($pinned=false){ $db = PearDatabase::getInstance(); $pinnedStaus = 0; if($pinned) { $pinnedStaus = 1; } $query = 'UPDATE '.self::$itemsTable.' SET pinned='.$pinnedStaus.' WHERE '.self::$itemId.'='.$this->getId(); $db->pquery($query,array()); } /** * Function which will enable the field as pinned */ public function markPinned() { $this->updatePinStatus(1); } /** * Function which will disable the field pinned status */ public function unMarkPinned() { $this->updatePinStatus(); } /** * Function to get the instance of the Menu Item model given the valuemap array * @param $valueMap * @return Settings_Vtiger_MenuItem_Model instance */ public static function getInstanceFromArray($valueMap) { return new self($valueMap); } /** * Function to get the instance of the Menu Item model, given name and Menu instance * @param $name * @param $menuModel * @return Settings_Vtiger_MenuItem_Model instance */ public static function getInstance($name, $menuModel=false) { $db = PearDatabase::getInstance(); $sql = 'SELECT * FROM '.self::$itemsTable. ' WHERE name = ?'; $params = array($name); if($menuModel) { $sql .= ' WHERE blockid = ?'; $params[] = $menuModel->getId(); } $result = $db->pquery($sql, $params); if($db->num_rows($result) > 0) { $rowData = $db->query_result_rowdata($result, 0); $menuItem = Settings_Vtiger_MenuItem_Model::getInstanceFromArray($rowData); if($menuModel) { $menuItem->setMenuFromInstance($menuModel); } else { $menuItem->setMenu($rowData['blockid']); } return $menuItem; } return false; } /** * Function to get the instance of the Menu Item model, given item id and Menu instance * @param $name * @param $menuModel * @return Settings_Vtiger_MenuItem_Model instance */ public static function getInstanceById($id, $menuModel=false) { $db = PearDatabase::getInstance(); $sql = 'SELECT * FROM '.self::$itemsTable. ' WHERE ' .self::$itemId. ' = ?'; $params = array($id); if($menuModel) { $sql .= ' WHERE blockid = ?'; $params[] = $menuModel->getId(); } $result = $db->pquery($sql, $params); if($db->num_rows($result) > 0) { $rowData = $db->query_result_rowdata($result, 0); $menuItem = Settings_Vtiger_MenuItem_Model::getInstanceFromArray($rowData); if($menuModel) { $menuItem->setMenuFromInstance($menuModel); } else { $menuItem->setMenu($rowData['blockid']); } return $menuItem; } return false; } /** * Static function to get the list of all the items of the given Menu, all items if Menu is not specified * @param $menuModel * @return - List of Settings_Vtiger_MenuItem_Model instances */ public static function getAll($menuModel=false, $onlyActive=true) { $skipMenuItemList = array('LBL_AUDIT_TRAIL', 'LBL_SYSTEM_INFO', 'LBL_PROXY_SETTINGS', 'LBL_DEFAULT_MODULE_VIEW', 'LBL_FIELDFORMULAS', 'LBL_FIELDS_ACCESS', 'LBL_MAIL_MERGE', 'NOTIFICATIONSCHEDULERS', 'INVENTORYNOTIFICATION', 'ModTracker', 'LBL_WORKFLOW_LIST','LBL_TOOLTIP_MANAGEMENT','Webforms Configuration Editor'); $db = PearDatabase::getInstance(); $sql = 'SELECT * FROM '.self::$itemsTable; $params = array(); $conditionsSqls = array(); if($menuModel != false) { $conditionsSqls[] = 'blockid = ?'; $params[] = $menuModel->getId(); } if($onlyActive) { $conditionsSqls[] = 'active = 0'; } if(count($conditionsSqls) > 0) { $sql .= ' WHERE '. implode(' AND ', $conditionsSqls); } $sql .= ' AND name NOT IN ('.generateQuestionMarks($skipMenuItemList).')'; $sql .= ' ORDER BY sequence'; $result = $db->pquery($sql, array_merge($params, $skipMenuItemList)); $noOfMenus = $db->num_rows($result); $menuItemModels = array(); for($i=0; $i<$noOfMenus; ++$i) { $fieldId = $db->query_result($result, $i, self::$itemId); $rowData = $db->query_result_rowdata($result, $i); $menuItem = Settings_Vtiger_MenuItem_Model::getInstanceFromArray($rowData); if($menuModel) { $menuItem->setMenuFromInstance($menuModel); } else { $menuItem->setMenu($rowData['blockid']); } $menuItemModels[$fieldId] = $menuItem; } return $menuItemModels; } /** * Function to get the pinned items * @param array of fieldids. * @return - List of Settings_Vtiger_MenuItem_Model instances */ public static function getPinnedItems($fieldList = array()) { $skipMenuItemList = array('LBL_AUDIT_TRAIL', 'LBL_SYSTEM_INFO', 'LBL_PROXY_SETTINGS', 'LBL_DEFAULT_MODULE_VIEW', 'LBL_FIELDFORMULAS', 'LBL_FIELDS_ACCESS', 'LBL_MAIL_MERGE', 'NOTIFICATIONSCHEDULERS', 'INVENTORYNOTIFICATION', 'ModTracker', 'LBL_WORKFLOW_LIST','LBL_TOOLTIP_MANAGEMENT','Webforms Configuration Editor'); $db = PearDatabase::getInstance(); $query = 'SELECT * FROM '.self::$itemsTable.' WHERE pinned=1 AND active = 0'; if(!empty($fieldList)) { if(!is_array($fieldList)){ $fieldList = array($fieldList); } $query .=' AND '.self::$itemsId.' IN ('.generateQuestionMarks($fieldList).')'; } $query .= ' AND name NOT IN ('.generateQuestionMarks($skipMenuItemList).')'; $result = $db->pquery($query, array_merge($fieldList, $skipMenuItemList)); $noOfMenus = $db->num_rows($result); $menuItemModels = array(); for($i=0; $i<$noOfMenus; ++$i) { $fieldId = $db->query_result($result, $i, self::$itemId); $rowData = $db->query_result_rowdata($result, $i); $menuItem = Settings_Vtiger_MenuItem_Model::getInstanceFromArray($rowData); $menuItem->setMenu($rowData['blockid']); $menuItemModels[$fieldId] = $menuItem; } return $menuItemModels; } }