$linkParams * @return List of Vtiger_Link_Model instances */ public function getSideBarLinks($linkParams) { $parentQuickLinks = parent::getSideBarLinks($linkParams); $quickLink = array( 'linktype' => 'SIDEBARLINK', 'linklabel' => 'LBL_DASHBOARD', 'linkurl' => $this->getDashBoardUrl(), 'linkicon' => '', ); //Check profile permissions for Dashboards $moduleModel = Vtiger_Module_Model::getInstance('Dashboard'); $userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); $permission = $userPrivilegesModel->hasModulePermission($moduleModel->getId()); if($permission) { $parentQuickLinks['SIDEBARLINK'][] = Vtiger_Link_Model::getInstanceFromValues($quickLink); } return $parentQuickLinks; } /** * Function to get list view query for popup window * @param $sourceModule Parent module * @param $field parent fieldname * @param $record parent id * @param $listQuery * @return Listview Query */ public function getQueryByModuleField($sourceModule, $field, $record, $listQuery) { if (($sourceModule == 'Accounts' && $field == 'account_id' && $record) || in_array($sourceModule, array('Campaigns', 'Products', 'Services', 'Emails'))) { if ($sourceModule === 'Campaigns') { $condition = " vtiger_account.accountid NOT IN (SELECT accountid FROM vtiger_campaignaccountrel WHERE campaignid = '$record')"; } elseif ($sourceModule === 'Products') { $condition = " vtiger_account.accountid NOT IN (SELECT crmid FROM vtiger_seproductsrel WHERE productid = '$record')"; } elseif ($sourceModule === 'Services') { $condition = " vtiger_account.accountid NOT IN (SELECT relcrmid FROM vtiger_crmentityrel WHERE crmid = '$record' UNION SELECT crmid FROM vtiger_crmentityrel WHERE relcrmid = '$record') "; } elseif ($sourceModule === 'Emails') { $condition = ' vtiger_account.emailoptout = 0'; } else { $condition = " vtiger_account.accountid != '$record'"; } $position = stripos($listQuery, 'where'); if($position) { $split = spliti('where', $listQuery); $overRideQuery = $split[0] . ' WHERE ' . $split[1] . ' AND ' . $condition; } else { $overRideQuery = $listQuery. ' WHERE ' . $condition; } return $overRideQuery; } } /** * Function to get relation query for particular module with function name * @param $recordId * @param $functionName * @param Vtiger_Module_Model $relatedModule * @return */ public function getRelationQuery($recordId, $functionName, $relatedModule) { if ($functionName === 'get_activities') { $focus = CRMEntity::getInstance($this->getName()); $focus->id = $recordId; $entityIds = $focus->getRelatedContactsIds(); $entityIds = implode(',', $entityIds); $userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT CASE WHEN (vtiger_users.user_name not like '') THEN $userNameSql ELSE vtiger_groups.groupname END AS user_name, vtiger_crmentity.*, vtiger_activity.activitytype, vtiger_activity.subject, vtiger_activity.date_start, vtiger_activity.time_start, vtiger_activity.recurringtype, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.visibility, vtiger_seactivityrel.crmid AS parent_id, CASE WHEN (vtiger_activity.activitytype = 'Task') THEN (vtiger_activity.status) ELSE (vtiger_activity.eventstatus) END AS status FROM vtiger_activity INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid LEFT JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid LEFT JOIN vtiger_cntactivityrel ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid WHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.activitytype <> 'Emails' AND (vtiger_seactivityrel.crmid = ".$recordId; if($entityIds) { $query .= " OR vtiger_cntactivityrel.contactid IN (".$entityIds."))"; } else { $query .= ")"; } $relatedModuleName = $relatedModule->getName(); $query .= $this->getSpecificRelationQuery($relatedModuleName); $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); } // There could be more than one contact for an activity. $query .= ' GROUP BY vtiger_activity.activityid'; } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule); } return $query; } }