Files
crm.clientright.ru/modules/Campaigns/models/RelationListView.php

77 lines
3.4 KiB
PHP
Raw Normal View History

<?php
/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
class Campaigns_RelationListView_Model extends Vtiger_RelationListView_Model {
/**
* Function to get the links for related list
* @return <Array> List of action models <Vtiger_Link_Model>
*/
public function getLinks() {
$relatedLinks = parent::getLinks();
$relationModel = $this->getRelationModel();
$relatedModuleName = $relationModel->getRelationModuleModel()->getName();
if (array_key_exists($relatedModuleName, $relationModel->getEmailEnabledModulesInfoForDetailView())) {
$currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
if ($currentUserPriviligesModel->hasModulePermission(getTabid('Emails'))) {
$emailLink = Vtiger_Link_Model::getInstanceFromValues(array(
'linktype' => 'LISTVIEWBASIC',
'linklabel' => vtranslate('LBL_SEND_EMAIL', $relatedModuleName),
'linkurl' => "javascript:Campaigns_RelatedList_Js.triggerSendEmail('index.php?module=$relatedModuleName&view=MassActionAjax&mode=showComposeEmailForm&step=step1','Emails');",
'linkicon' => ''
));
$emailLink->set('_sendEmail',true);
$relatedLinks['LISTVIEWBASIC'][] = $emailLink;
}
}
return $relatedLinks;
}
/**
* Function to get list of record models in this relation
* @param <Vtiger_Paging_Model> $pagingModel
* @return <array> List of record models <Vtiger_Record_Model>
*/
public function getEntries($pagingModel) {
$relationModel = $this->getRelationModel();
$parentRecordModel = $this->getParentRecordModel();
$relatedModuleName = $relationModel->getRelationModuleModel()->getName();
$relatedRecordModelsList = parent::getEntries($pagingModel);
$emailEnabledModulesInfo = $relationModel->getEmailEnabledModulesInfoForDetailView();
if (array_key_exists($relatedModuleName, $emailEnabledModulesInfo) && $relatedRecordModelsList) {
$fieldName = $emailEnabledModulesInfo[$relatedModuleName]['fieldName'];
$tableName = $emailEnabledModulesInfo[$relatedModuleName]['tableName'];
$db = PearDatabase::getInstance();
$relatedRecordIdsList = array_keys($relatedRecordModelsList);
$query = "SELECT campaignrelstatus, $fieldName FROM $tableName
INNER JOIN vtiger_campaignrelstatus ON vtiger_campaignrelstatus.campaignrelstatusid = $tableName.campaignrelstatusid
WHERE $fieldName IN (". generateQuestionMarks($relatedRecordIdsList).") AND campaignid = ?";
array_push($relatedRecordIdsList, $parentRecordModel->getId());
$result = $db->pquery($query, $relatedRecordIdsList);
$numOfrows = $db->num_rows($result);
for($i=0; $i<$numOfrows; $i++) {
$recordId = $db->query_result($result, $i, $fieldName);
$relatedRecordModel = $relatedRecordModelsList[$recordId];
$relatedRecordModel->set('status', $db->query_result($result, $i, 'campaignrelstatus'));
$relatedRecordModelsList[$recordId] = $relatedRecordModel;
}
}
return $relatedRecordModelsList;
}
}