Advertisement
Guest User

ListView.php

a guest
May 6th, 2016
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 14.06 KB | None | 0 0
  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. /**
  12.  * PBXManager ListView Model Class
  13.  */
  14.  
  15. class PBXManager_ListView_Model extends Vtiger_ListView_Model {
  16.    
  17.     /**
  18.     * Overrided to remove add button
  19.     */
  20.     public function getBasicLinks(){
  21.         $basicLinks = array();
  22.         return $basicLinks;
  23.     }
  24.    
  25.      
  26.     /**
  27.     * Overrided to remove Mass Edit Option
  28.     */
  29.     public function getListViewMassActions($linkParams) {
  30.         $currentUserModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
  31.         $moduleModel = $this->getModule();
  32.  
  33.         $linkTypes = array('LISTVIEWMASSACTION');
  34.         $links = Vtiger_Link_Model::getAllByType($moduleModel->getId(), $linkTypes, $linkParams);
  35.  
  36.  
  37.         if($currentUserModel->hasModuleActionPermission($moduleModel->getId(), 'Delete')) {
  38.             $massActionLinks[] = array(
  39.                 'linktype' => 'LISTVIEWMASSACTION',
  40.                 'linklabel' => 'LBL_DELETE',
  41.                 'linkurl' => 'javascript:Vtiger_List_Js.massDeleteRecords("index.php?module='.$moduleModel->get('name').'&action=MassDelete");',
  42.                 'linkicon' => ''
  43.             );
  44.        
  45.             foreach($massActionLinks as $massActionLink) {
  46.             $links['LISTVIEWMASSACTION'][] = Vtiger_Link_Model::getInstanceFromValues($massActionLink);
  47.             }
  48.         }
  49.  
  50.         return $links;
  51.     }
  52.    
  53.     /**
  54.     * Overrided to add HTML content for callstatus irrespective of the filters
  55.     */
  56.    
  57.    public function getListViewEntries($pagingModel) {
  58.         $db = PearDatabase::getInstance();
  59.  
  60.         $moduleName = $this->getModule()->get('name');
  61.         $moduleFocus = CRMEntity::getInstance($moduleName);
  62.         $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  63.  
  64.         //Add the direction field to the query irrespective of filter
  65.         $queryGenerator = $this->get('query_generator');
  66.         $fields = $queryGenerator->getFields();
  67.         array_push($fields, 'direction');
  68.         $queryGenerator->setFields($fields);
  69.         $this->set('query_generator', $queryGenerator);
  70.         //END
  71.  
  72.         $listViewContoller = $this->get('listview_controller');
  73.  
  74.        // SalesPlatform.ru begin
  75.        $searchParams = $this->get('search_params');
  76.        if(empty($searchParams)) {
  77.            $searchParams = array();
  78.        }
  79.        $glue = "";
  80.        if(count($queryGenerator->getWhereFields()) > 0 && (count($searchParams)) > 0) {
  81.            $glue = QueryGenerator::$AND;
  82.        }
  83.        $queryGenerator->parseAdvFilterList($searchParams, $glue);
  84.        // SalesPlatform.ru end
  85.  
  86.         $searchKey = $this->get('search_key');
  87.         $searchValue = $this->get('search_value');
  88.         $operator = $this->get('operator');
  89.         if (!empty($searchKey)) {
  90.             $queryGenerator->addUserSearchConditions(array('search_field' => $searchKey, 'search_text' => $searchValue, 'operator' => $operator));
  91.         }
  92.  
  93.         $orderBy = $this->getForSql('orderby');
  94.         $sortOrder = $this->getForSql('sortorder');
  95.  
  96.         //List view will be displayed on recently created/modified records
  97.         if (empty($orderBy) && empty($sortOrder) && $moduleName != "Users") {
  98.             $orderBy = 'modifiedtime';
  99.             $sortOrder = 'DESC';
  100.         }
  101.  
  102.         if (!empty($orderBy)) {
  103.             $columnFieldMapping = $moduleModel->getColumnFieldMapping();
  104.             $orderByFieldName = $columnFieldMapping[$orderBy];
  105.             $orderByFieldModel = $moduleModel->getField($orderByFieldName);
  106.  
  107.             if ($orderByFieldModel->getFieldDataType() == Vtiger_Field_Model::REFERENCE_TYPE) {
  108.                 //IF it is reference add it in the where fields so that from clause will be having join of the table
  109.                 $queryGenerator = $this->get('query_generator');
  110.                 $queryGenerator->addWhereField($orderByFieldName);
  111.                 //$queryGenerator->whereFields[] = $orderByFieldName;
  112.             }
  113.         }
  114.         $listQuery = $this->getQuery();
  115.  
  116.         $sourceModule = $this->get('src_module');
  117.         if (!empty($sourceModule)) {
  118.             if (method_exists($moduleModel, 'getQueryByModuleField')) {
  119.                 $overrideQuery = $moduleModel->getQueryByModuleField($sourceModule, $this->get('src_field'), $this->get('src_record'), $listQuery);
  120.                 if (!empty($overrideQuery)) {
  121.                     $listQuery = $overrideQuery;
  122.                 }
  123.             }
  124.         }
  125.  
  126.         $startIndex = $pagingModel->getStartIndex();
  127.         $pageLimit = $pagingModel->getPageLimit();
  128.  
  129.         if (!empty($orderBy)) {
  130.             if ($orderByFieldModel->isReferenceField()) {
  131.                 $referenceModules = $orderByFieldModel->getReferenceList();
  132.  
  133.                 $referenceNameFieldOrderBy = array();
  134.                 foreach ($referenceModules as $referenceModuleName) {
  135.                     $referenceModuleModel = Vtiger_Module_Model::getInstance($referenceModuleName);
  136.                     $referenceNameFields = $referenceModuleModel->getNameFields();
  137.                     $columnList = array();
  138.                     foreach ($referenceNameFields as $nameField) {
  139.                         $fieldModel = $referenceModuleModel->getField($nameField);
  140.                         $columnList[] = $fieldModel->get('table') . $orderByFieldModel->getName() . '.' . $fieldModel->get('column');
  141.                     }
  142.                     if (count($columnList) > 1) {
  143.                         $referenceNameFieldOrderBy[] = getSqlForNameInDisplayFormat(array('first_name' => $columnList[0], 'last_name' => $columnList[1]), 'Users') . ' ' . $sortOrder;
  144.                     } else {
  145.                         $referenceNameFieldOrderBy[] = implode('', $columnList) . ' ' . $sortOrder;
  146.                     }
  147.                 }
  148.                 $listQuery .= ' ORDER BY ' . implode(',', $referenceNameFieldOrderBy);
  149.             } else {
  150.                 $listQuery .= ' ORDER BY ' . $orderBy . ' ' . $sortOrder;
  151.             }
  152.         }
  153.  
  154.  
  155.         $viewid = ListViewSession::getCurrentView($moduleName);
  156.         ListViewSession::setSessionQuery($moduleName, $listQuery, $viewid);
  157.  
  158.         $listQuery .= " LIMIT $startIndex," . ($pageLimit + 1);
  159.  
  160.  
  161.  
  162.         $listResult = $db->pquery($listQuery, array());
  163.  
  164.  
  165.         $listViewRecordModels = array();
  166.         $listViewEntries = $listViewContoller->getListViewRecords($moduleFocus, $moduleName, $listResult);
  167.  
  168.         $pagingModel->calculatePageRange($listViewEntries);
  169.  
  170.         if ($db->num_rows($listResult) > $pageLimit) {
  171.             array_pop($listViewEntries);
  172.             $pagingModel->set('nextPageExists', true);
  173.         } else {
  174.             $pagingModel->set('nextPageExists', false);
  175.         }
  176.  
  177.         //Adding the HTML content based on the callstatus and direction to the records
  178.         foreach ($listViewEntries as $recordId => $record) {
  179.             //To Replace RecordingUrl by Icon
  180.             $recordingUrl = explode('>', $listViewEntries[$recordId]['recordingurl']);
  181.             $url = explode('<', $recordingUrl[1]);
  182.             // add RVS
  183.         if ($url[0] != '' && $listViewEntries[$recordId]['callstatus'] == 'completed' ){
  184.                 // SalesPlatform.ru begin
  185.                 /* $listViewEntries[$recordId]['recordingurl'] = '<audio src="index.php?module=PBXManager&action=ListenRecord&record='.$recordId.'" controls>
  186.                     <a href="index.php?module=PBXManager&action=ListenRecord&record='.$recordId.'" ><i class="icon-volume-up"></i></a>
  187.                 </audio>'; */
  188.                 //$listViewEntries[$recordId]['recordingurl'] = $recordingUrl[0] . '>' . '<i class="icon-volume-up"></i>' . '</a>';
  189.                 // SalesPlatform.ru end
  190.                
  191.                 //add RVS
  192.                 $customerPhone = explode('>', $listViewEntries[$recordId]['customernumber']);
  193.                 $customerPhone = explode('<', $customerPhone[1]);
  194.                 $customer = explode('>', $listViewEntries[$recordId]['customer']);
  195.                 $customer = explode('<', $customer[1]);
  196.                 $myurl = explode('<', $recordingUrl[1]);
  197.                
  198.                     if ($customer[1] != null) {
  199.                 $listViewEntries[$recordId]['recordingurl'] = '<audio src = "index.php?module=PBXManager&action=ListenRecord&record='.$recordId.'" controls></audio>';         
  200.                     }   else {         
  201.                 $listViewEntries[$recordId]['recordingurl'] = '<audio src = "index.php?module=PBXManager&action=ListenRecord&record='.$recordId.'" controls></audio>'
  202.                 .'</a><a href="./index.php?module=Leads&view=Edit&phone='.$customerPhone[0].'" target="_self" title="Сохранить обращение" >
  203.                 <img src="./layouts/vlayout/skins/images/btnColorAdd.png" width="30" height="30"></a>';
  204.                     }
  205.                 //end RVS
  206.                
  207.             } else {
  208.                 $listViewEntries[$recordId]['recordingurl'] = '';
  209.             }
  210.  
  211.            
  212.             if ($listViewEntries[$recordId]['direction'] == 'outbound') {
  213.                 if ($listViewEntries[$recordId]['callstatus'] == 'ringing' || $listViewEntries[$recordId]['callstatus'] == 'in-progress') {
  214.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-info"><i class="icon-arrow-up icon-white">
  215.                        <!-- SalesPlatform.ru begin -->
  216.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  217.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  218.                         // SalesPlatform.ru end
  219.                 } else if ($listViewEntries[$recordId]['callstatus'] == 'completed') {
  220.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-success"><i class="icon-arrow-up icon-white">
  221.                        <!-- SalesPlatform.ru begin -->
  222.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  223.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  224.                         // SalesPlatform.ru end
  225.                 } else if ($listViewEntries[$recordId]['callstatus'] == 'no-answer') {
  226.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-important"><i class="icon-arrow-up icon-white">
  227.                        <!-- SalesPlatform.ru begin -->
  228.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  229.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  230.                         // SalesPlatform.ru end
  231.                 } else {
  232.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-warning"><i class="icon-arrow-up icon-white">
  233.                        <!-- SalesPlatform.ru begin -->
  234.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  235.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  236.                         // SalesPlatform.ru end
  237.                 }
  238.             } else if ($listViewEntries[$recordId]['direction'] == 'inbound') {
  239.                 if ($listViewEntries[$recordId]['callstatus'] == 'ringing' || $listViewEntries[$recordId]['callstatus'] == 'in-progress') {
  240.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-info"><i class="icon-arrow-down icon-white">
  241.                        <!-- SalesPlatform.ru begin -->
  242.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  243.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  244.                         // SalesPlatform.ru end
  245.                 } else if ($listViewEntries[$recordId]['callstatus'] == 'completed') {
  246.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-success"><i class="icon-arrow-down icon-white">
  247.                        <!-- SalesPlatform.ru begin -->
  248.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  249.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  250.                     // SalesPlatform.ru end
  251.                 } else if ($listViewEntries[$recordId]['callstatus'] == 'no-answer') {
  252.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-important"><i class="icon-arrow-down icon-white">
  253.                        <!-- SalesPlatform.ru begin -->
  254.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  255.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  256.                         // SalesPlatform.ru end
  257.                 } else {
  258.                     $listViewEntries[$recordId]['callstatus'] = '<span class="label label-warning"><i class="icon-arrow-down icon-white">
  259.                        <!-- SalesPlatform.ru begin -->
  260.                        </i>&nbsp;' . vtranslate($listViewEntries[$recordId]["callstatus"], $moduleName) . '</span>';
  261.                         //</i>&nbsp;' . $listViewEntries[$recordId]["callstatus"] . '</span>';
  262.                         // SalesPlatform.ru end
  263.                 }
  264.             }
  265.  
  266.             // SalesPlatform.ru begin
  267.             $listViewEntries[$recordId]['direction'] = vtranslate($listViewEntries[$recordId]['direction'], $moduleName);
  268.             // SalesPlatform.ru end
  269.  
  270.         }
  271.         //END
  272.  
  273.         $index = 0;
  274.         foreach ($listViewEntries as $recordId => $record) {
  275.             $rawData = $db->query_result_rowdata($listResult, $index++);
  276.             $record['id'] = $recordId;
  277.             $listViewRecordModels[$recordId] = $moduleModel->getRecordFromArray($record, $rawData);
  278.         }
  279.  
  280.         return $listViewRecordModels;
  281.     }
  282.  
  283. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement