[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /*+*********************************************************************************** 3 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 4 * ("License"); You may not use this file except in compliance with the License 5 * The Original Code is: vtiger CRM Open Source 6 * The Initial Developer of the Original Code is vtiger. 7 * Portions created by vtiger are Copyright (C) vtiger. 8 * All Rights Reserved. 9 * ************************************************************************************/ 10 11 class HelpDesk_Module_Model extends Vtiger_Module_Model { 12 13 /** 14 * Function to get the Quick Links for the module 15 * @param <Array> $linkParams 16 * @return <Array> List of Vtiger_Link_Model instances 17 */ 18 public function getSideBarLinks($linkParams) { 19 $parentQuickLinks = parent::getSideBarLinks($linkParams); 20 21 $quickLink = array( 22 'linktype' => 'SIDEBARLINK', 23 'linklabel' => 'LBL_DASHBOARD', 24 'linkurl' => $this->getDashBoardUrl(), 25 'linkicon' => '', 26 ); 27 28 //Check profile permissions for Dashboards 29 $moduleModel = Vtiger_Module_Model::getInstance('Dashboard'); 30 $userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); 31 $permission = $userPrivilegesModel->hasModulePermission($moduleModel->getId()); 32 if($permission) { 33 $parentQuickLinks['SIDEBARLINK'][] = Vtiger_Link_Model::getInstanceFromValues($quickLink); 34 } 35 36 return $parentQuickLinks; 37 } 38 39 /** 40 * Function to get Settings links for admin user 41 * @return Array 42 */ 43 public function getSettingLinks() { 44 $settingsLinks = parent::getSettingLinks(); 45 $currentUserModel = Users_Record_Model::getCurrentUserModel(); 46 47 if ($currentUserModel->isAdminUser()) { 48 $settingsLinks[] = array( 49 'linktype' => 'LISTVIEWSETTING', 50 'linklabel' => 'LBL_EDIT_MAILSCANNER', 51 'linkurl' =>'index.php?parent=Settings&module=MailConverter&view=List', 52 'linkicon' => '' 53 ); 54 } 55 return $settingsLinks; 56 } 57 58 59 /** 60 * Function returns Tickets grouped by Status 61 * @param type $data 62 * @return <Array> 63 */ 64 public function getOpenTickets() { 65 $db = PearDatabase::getInstance(); 66 //TODO need to handle security 67 $result = $db->pquery('SELECT count(*) AS count, concat(vtiger_users.first_name, " " ,vtiger_users.last_name) as name, vtiger_users.id as id FROM vtiger_troubletickets 68 INNER JOIN vtiger_crmentity ON vtiger_troubletickets.ticketid = vtiger_crmentity.crmid 69 INNER JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_users.status="ACTIVE" 70 AND vtiger_crmentity.deleted = 0'.Users_Privileges_Model::getNonAdminAccessControlQuery($this->getName()). 71 ' WHERE vtiger_troubletickets.status = ? GROUP BY smownerid', array('Open')); 72 73 $data = array(); 74 for($i=0; $i<$db->num_rows($result); $i++) { 75 $row = $db->query_result_rowdata($result, $i); 76 $data[] = $row; 77 } 78 return $data; 79 } 80 81 /** 82 * Function returns Tickets grouped by Status 83 * @param type $data 84 * @return <Array> 85 */ 86 public function getTicketsByStatus($owner, $dateFilter) { 87 $db = PearDatabase::getInstance(); 88 89 $ownerSql = $this->getOwnerWhereConditionForDashBoards($owner); 90 if(!empty($ownerSql)) { 91 $ownerSql = ' AND '.$ownerSql; 92 } 93 94 $params = array(); 95 if(!empty($dateFilter)) { 96 $dateFilterSql = ' AND createdtime BETWEEN ? AND ? '; 97 //client is not giving time frame so we are appending it 98 $params[] = $dateFilter['start']. ' 00:00:00'; 99 $params[] = $dateFilter['end']. ' 23:59:59'; 100 } 101 102 $result = $db->pquery('SELECT COUNT(*) as count, CASE WHEN vtiger_troubletickets.status IS NULL OR vtiger_troubletickets.status = "" THEN "" ELSE vtiger_troubletickets.status END AS statusvalue 103 FROM vtiger_troubletickets INNER JOIN vtiger_crmentity ON vtiger_troubletickets.ticketid = vtiger_crmentity.crmid AND vtiger_crmentity.deleted=0 104 '.Users_Privileges_Model::getNonAdminAccessControlQuery($this->getName()). $ownerSql .' '.$dateFilterSql. 105 ' INNER JOIN vtiger_ticketstatus ON vtiger_troubletickets.status = vtiger_ticketstatus.ticketstatus GROUP BY statusvalue ORDER BY vtiger_ticketstatus.sortorderid', $params); 106 107 $response = array(); 108 109 for($i=0; $i<$db->num_rows($result); $i++) { 110 $row = $db->query_result_rowdata($result, $i); 111 $response[$i][0] = $row['count']; 112 $ticketStatusVal = $row['statusvalue']; 113 if($ticketStatusVal == '') { 114 $ticketStatusVal = 'LBL_BLANK'; 115 } 116 $response[$i][1] = vtranslate($ticketStatusVal, $this->getName()); 117 $response[$i][2] = $ticketStatusVal; 118 } 119 return $response; 120 } 121 122 /** 123 * Function to get relation query for particular module with function name 124 * @param <record> $recordId 125 * @param <String> $functionName 126 * @param Vtiger_Module_Model $relatedModule 127 * @return <String> 128 */ 129 public function getRelationQuery($recordId, $functionName, $relatedModule) { 130 if ($functionName === 'get_activities') { 131 $userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); 132 133 $query = "SELECT CASE WHEN (vtiger_users.user_name not like '') THEN $userNameSql ELSE vtiger_groups.groupname END AS user_name, 134 vtiger_crmentity.*, vtiger_activity.activitytype, vtiger_activity.subject, vtiger_activity.date_start, vtiger_activity.time_start, 135 vtiger_activity.recurringtype, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.visibility, vtiger_seactivityrel.crmid AS parent_id, 136 CASE WHEN (vtiger_activity.activitytype = 'Task') THEN (vtiger_activity.status) ELSE (vtiger_activity.eventstatus) END AS status 137 FROM vtiger_activity 138 INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid 139 LEFT JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid 140 LEFT JOIN vtiger_cntactivityrel ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid 141 LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid 142 LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid 143 WHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.activitytype <> 'Emails' 144 AND vtiger_seactivityrel.crmid = ".$recordId; 145 146 $relatedModuleName = $relatedModule->getName(); 147 $query .= $this->getSpecificRelationQuery($relatedModuleName); 148 $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); 149 if ($nonAdminQuery) { 150 $query = appendFromClauseToQuery($query, $nonAdminQuery); 151 } 152 } else { 153 $query = parent::getRelationQuery($recordId, $functionName, $relatedModule); 154 } 155 156 return $query; 157 } 158 159 /** 160 * Function to get list view query for popup window 161 * @param <String> $sourceModule Parent module 162 * @param <String> $field parent fieldname 163 * @param <Integer> $record parent id 164 * @param <String> $listQuery 165 * @return <String> Listview Query 166 */ 167 public function getQueryByModuleField($sourceModule, $field, $record, $listQuery) { 168 if (in_array($sourceModule, array('Assets', 'Project', 'ServiceContracts', 'Services'))) { 169 $condition = " vtiger_troubletickets.ticketid NOT IN (SELECT relcrmid FROM vtiger_crmentityrel WHERE crmid = '$record' UNION SELECT crmid FROM vtiger_crmentityrel WHERE relcrmid = '$record') "; 170 $pos = stripos($listQuery, 'where'); 171 172 if ($pos) { 173 $split = spliti('where', $listQuery); 174 $overRideQuery = $split[0] . ' WHERE ' . $split[1] . ' AND ' . $condition; 175 } else { 176 $overRideQuery = $listQuery . ' WHERE ' . $condition; 177 } 178 return $overRideQuery; 179 } 180 } 181 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |