Files
crm.clientright.ru/modules/FinReports/models/Module.php

118 lines
4.7 KiB
PHP
Executable File

<?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 FinReports_Module_Model
*/
class FinReports_Module_Model extends Vtiger_Module_Model
{
public $user = NULL;
public $db = NULL;
public function __construct()
{
$this->user = Users_Record_Model::getCurrentUserModel();
$this->db = PearDatabase::getInstance();
}
public function getAllSettings()
{
$list = array();
$res = $this->db->pquery("SELECT * FROM vtiger_finreports_settings", array());
if ($this->db->num_rows($res)) {
while ($row = $this->db->fetchByAssoc($res)) {
$list[$row['name']] = $row['value'];
}
}
return $list;
}
public function getOrgField()
{
$settingsArray = $this->getAllSettings();
if (array_key_exists('org_field', $settingsArray)) {
return $settingsArray['org_field'];
} else {
return false;
}
}
public function getVendorField()
{
$settingsArray = $this->getAllSettings();
if (array_key_exists('del_field', $settingsArray)) {
return $settingsArray['del_field'];
} else {
return false;
}
}
public function getAPI()
{
$settingsArray = $this->getAllSettings();
if (array_key_exists('api', $settingsArray)) {
return $settingsArray['api'];
} else {
return false;
}
}
/**
* Function to get relation query for particular module with function name
* @param <record> $recordId
* @param <String> $functionName
* @param Vtiger_Module_Model $relatedModule
* @return <String>
*/
public function getRelationQuery($recordId, $functionName, $relatedModule, $relationId) {
if ($functionName === 'get_activities') {
$focus = CRMEntity::getInstance($this->getName());
$focus->id = $recordId;
$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;
$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, $relationId);
}
return $query;
}
public function getModuleIcon() {
$moduleName = $this->getName();
$lowerModuleName = strtolower($moduleName);
$title = vtranslate($moduleName, $moduleName);
$moduleIcon = "<i class='vicon-$lowerModuleName' title='$title'></i>";
return $moduleIcon;
}
}