'(general : (__VtigerMeta__) date) ($_DATE_FORMAT_)', 'Current Time' => '(general : (__VtigerMeta__) time)', 'System Timezone' => '(general : (__VtigerMeta__) dbtimezone)', 'User Timezone' => '(general : (__VtigerMeta__) usertimezone)', 'CRM Detail View URL' => '(general : (__VtigerMeta__) crmdetailviewurl)', 'Portal Detail View URL' => '(general : (__VtigerMeta__) portaldetailviewurl)', 'Site Url' => '(general : (__VtigerMeta__) siteurl)', 'Portal Url' => '(general : (__VtigerMeta__) portalurl)', 'Record Id' => '(general : (__VtigerMeta__) recordId)', 'LBL_HELPDESK_SUPPORT_NAME' => '(general : (__VtigerMeta__) supportName)', 'LBL_HELPDESK_SUPPORT_EMAILID' => '(general : (__VtigerMeta__) supportEmailid)', ); static public $triggerTypes = array( 1 => 'ON_FIRST_SAVE', 2 => 'ONCE', 3 => 'ON_EVERY_SAVE', 4 => 'ON_MODIFY', // Reserving 5 & 6 for ON_DELETE and ON_SCHEDULED types. 6 => 'ON_SCHEDULE' ); // var $listFields = array('summary' => 'Summary', 'module_name' => 'Module', 'execution_condition' => 'Execution Condition'); public $baseTable = 'its4you_processflow'; public $baseIndex = 'pfid'; public $listFields = array('module_name' => 'Module', 'pfname' => 'Name', 'description' => 'Description', 'conditions' => 'Conditions'); public $name = 'ITS4YouProcessFlow'; public static function getInstance() { return new self(); } public static function getDefaultUrl() { return "index.php?module=ITS4YouProcessFlow&parent=Settings&view=List"; } public static function getCreateViewUrl() { return "javascript:Settings_ITS4YouProcessFlow_List_Js.triggerCreate('index.php?module=ITS4YouProcessFlow&parent=Settings&view=Edit')"; } public static function getCreateRecordUrl() { return 'index.php?module=ITS4YouProcessFlow&parent=Settings&view=Edit'; } public static function getRelatedActionStatusChangeUrl($PFData) { return 'index.php?module=ITS4YouProcessFlow&parent=Settings&action=RelationAjax&mode=statusChange&pf_record=' . $PFData["pfid"] . '&action_record=' . $PFData["id"]; } public static function getRelatedActionDeleteUrl($PFData) { return 'index.php?module=ITS4YouProcessFlow&parent=Settings&action=RelationAjax&mode=deleteRelation&pf_record=' . $PFData["pfid"] . '&action_record=' . $PFData["id"]; } /** * @param array $PFData * @return string */ public static function getRelatedActionEditUrl($PFData) { return 'index.php?module=' . $PFData['parent_module'] . '&parent=Settings&view=Edit&record=' . $PFData['parent_id']; } public static function getSupportedModules() { $moduleModels = Vtiger_Module_Model::getAll(array(0, 2)); $supportedModuleModels = array(); foreach ($moduleModels as $tabId => $moduleModel) { if ($moduleModel->isWorkflowSupported() && $moduleModel->getName() != 'Webmails') { $supportedModuleModels[$tabId] = $moduleModel; } } return $supportedModuleModels; } public static function getTriggerTypes() { return self::$triggerTypes; } public static function getExpressions() { $db = PearDatabase::getInstance(); $mem = new VTExpressionsManager($db); return $mem->expressionFunctions(); } public static function getMetaVariables() { return self::$metaVariables; } /** * Function to get the count of active workflows * @return count of active workflows */ public static function getActiveProcessFlowCount($moduleCount = false) { $db = PearDatabase::getInstance(); $query = 'SELECT count(*) AS count, vtiger_tab.tabid FROM its4you_processflow INNER JOIN vtiger_tab ON vtiger_tab.name = its4you_processflow.module_name AND vtiger_tab.presence IN (0,2) WHERE its4you_processflow.deleted = ? AND (parent_id = ? OR parent_id IS NULL) '; if ($moduleCount) { $query .= ' GROUP BY its4you_processflow.module_name'; } $result = $db->pquery($query, array(0, 0)); $count = 0; $wfModulesCount = array(); $noOfRows = $db->num_rows($result); for ($i = 0; $i < $noOfRows; ++$i) { $row = $db->query_result_rowdata($result, $i); $count = $count + $row['count']; $wfModulesCount[$row['tabid']] = $row['count']; } if ($moduleCount) { $wfModulesCount['All'] = $count; return $wfModulesCount; } else { return $count; } } public static function getActionsLinks(Vtiger_Request $request, $recordModel) { $links = array(); $moduleModels = Vtiger_Module_Model::getAll(array(0, 2)); foreach ($moduleModels as $tabId => $moduleModel) { $class_name = $moduleModel->getName() . "_Module_Model"; if (method_exists($class_name, 'getProcessFlowActions')) { $recordLinks = $moduleModel->getProcessFlowActions($request, $recordModel); foreach ($recordLinks as $recordLink) { $links[] = Vtiger_Link_Model::getInstanceFromValues($recordLink); } } } return $links; } public function getListFields() { if (!$this->listFieldModels) { $fields = $this->listFields; $fieldObjects = array(); foreach ($fields as $fieldName => $fieldLabel) { if ($fieldName == 'module_name') { $fieldObjects[$fieldName] = new Vtiger_Base_Model(array('name' => $fieldName, 'label' => $fieldLabel, 'sort' => false)); } else { $fieldObjects[$fieldName] = new Vtiger_Base_Model(array('name' => $fieldName, 'label' => $fieldLabel)); } } $this->listFieldModels = $fieldObjects; } return $this->listFieldModels; } public function getFields() { return array(); } public function getModuleBasicLinks() { return array(); } /** * Function to get Settings links * @return */ public function getSettingLinks() { $settingsLinks = array(); $currentUserModel = Users_Record_Model::getCurrentUserModel(); if ($currentUserModel->isAdminUser()) { $settingsLinks[] = array( 'linktype' => 'LISTVIEWSETTING', 'linklabel' => vtranslate('LBL_UPGRADE', 'Settings:ITS4YouProcessFlow'), 'linkurl' => 'javascript:window.location="index.php?module=ModuleManager&parent=Settings&view=ModuleImport&mode=importUserModuleStep1"', 'linkicon' => '' ); $settingsLinks[] = array( 'linktype' => 'LISTVIEWSETTING', 'linklabel' => vtranslate('LBL_UNINSTALL', 'Settings:ITS4YouProcessFlow'), 'linkurl' => 'javascript:window.location="index.php?module=ITS4YouProcessFlow&view=Uninstall&parent=Settings"', 'linkicon' => '' ); } return $settingsLinks; } public function getSiteRoad(Vtiger_Request $request) { $new = false; $siteRoad = "getListViewUrl() . "\">"; $siteRoad .= vtranslate($this->getName(), $this->getName()); $siteRoad .= ""; $recordId = $request->get('record'); if (empty($recordId)) { if ($request->has('parentId') && !$request->isEmpty('parentId')) { $recordId = $request->get('parentId'); } $new = true; } if ($recordId) { $recordModel = Settings_ITS4YouProcessFlow_Record_Model::getInstance($recordId); } elseif ($request->has('sourceModule') && !$request->isEmpty('sourceModule')) { $sourceModule = $request->get('sourceModule'); $recordModel = Settings_ITS4YouProcessFlow_Record_Model::getDefaultInstance($sourceModule); } if ($recordModel) { $siteRoad .= $recordModel->getSiteRoad(false); } if ($new) { $siteRoad .= " "; $siteRoad .= " "; $siteRoad .= vtranslate('LBL_ADDING_NEW', $this->getName()); } return $siteRoad; } public function getListViewUrl() { return "index.php?module=ITS4YouProcessFlow&parent=Settings&view=List"; } }