List of modules */ public function getEmailEnabledModulesInfoForDetailView() { return array( 'Leads' => array('fieldName' => 'leadid', 'tableName' => 'vtiger_campaignleadrel'), 'Accounts' => array('fieldName' => 'accountid', 'tableName' => 'vtiger_campaignaccountrel'), 'Contacts' => array('fieldName' => 'contactid', 'tableName' => 'vtiger_campaigncontrel') ); } /** * Function to get Campaigns Relation status values * @return List of status values */ public function getCampaignRelationStatusValues() { $statusValues = array(); $db = PearDatabase::getInstance(); $result = $db->pquery("SELECT campaignrelstatusid, campaignrelstatus FROM vtiger_campaignrelstatus", array()); $numOfRows = $db->num_rows($result); for ($i=0; $i<$numOfRows; $i++) { $statusValues[$db->query_result($result, $i, 'campaignrelstatusid')] = $db->query_result($result, $i, 'campaignrelstatus'); } return $statusValues; } /** * Function to update the status of relation * @param Campaign record id * @param $statusDetails */ public function updateStatus($sourceRecordId, $statusDetails = array()) { if ($sourceRecordId && $statusDetails) { $relatedModuleName = $this->getRelationModuleModel()->getName(); $emailEnabledModulesInfo = $this->getEmailEnabledModulesInfoForDetailView(); if (array_key_exists($relatedModuleName, $emailEnabledModulesInfo)) { $fieldName = $emailEnabledModulesInfo[$relatedModuleName]['fieldName']; $tableName = $emailEnabledModulesInfo[$relatedModuleName]['tableName']; $db = PearDatabase::getInstance(); $updateQuery = "UPDATE $tableName SET campaignrelstatusid = CASE $fieldName "; foreach ($statusDetails as $relatedRecordId => $status) { $updateQuery .= " WHEN $relatedRecordId THEN $status "; } $updateQuery .= "ELSE campaignrelstatusid END WHERE campaignid = ?"; $db->pquery($updateQuery, array($sourceRecordId)); } } } }