Advertisement
n0system

IncomingCallPoll.php

Aug 14th, 2017
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.80 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. include_once 'include/Webservices/Create.php';
  11. include_once 'include/utils/utils.php';
  12.  
  13. class PBXManager_IncomingCallPoll_Action extends Vtiger_Action_Controller{
  14.    
  15.     function __construct() {
  16.             $this->exposeMethod('searchIncomingCalls');
  17.             $this->exposeMethod('createRecord');
  18.             $this->exposeMethod('getCallStatus');
  19.             $this->exposeMethod('checkModuleViewPermission');
  20.             $this->exposeMethod('checkPermissionForPolling');
  21.     }
  22.    
  23.     public function process(Vtiger_Request $request) {
  24.         $mode = $request->getMode();
  25.         if(!empty($mode) && $this->isMethodExposed($mode)) {
  26.             $this->invokeExposedMethod($mode, $request);
  27.             return;
  28.         }
  29.     }
  30.    
  31.     public function checkPermission(Vtiger_Request $request) {
  32.         $moduleName = $request->getModule();
  33.         $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  34.         $userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
  35.         $permission = $userPrivilegesModel->hasModulePermission($moduleModel->getId());
  36.  
  37.         if(!$permission) {
  38.             throw new AppException('LBL_PERMISSION_DENIED');
  39.         }
  40.     }
  41.    
  42.     public function checkModuleViewPermission(Vtiger_Request $request){
  43.         $response = new Vtiger_Response();
  44.         $modules = array('Contacts','Leads');
  45.         $view = $request->get('view');
  46.         Users_Privileges_Model::getCurrentUserPrivilegesModel();
  47.         foreach($modules as $module){
  48.             if(Users_Privileges_Model::isPermitted($module, $view)){
  49.                 $result['modules'][$module] = true;
  50.             }else{
  51.                 $result['modules'][$module] = false;
  52.             }
  53.         }
  54.         $response->setResult($result);
  55.         $response->emit();
  56.     }
  57.    
  58.     public function searchIncomingCalls(Vtiger_Request $request){
  59.         $recordModel = PBXManager_Record_Model::getCleanInstance();
  60.         $response = new Vtiger_Response();
  61.         $user = Users_Record_Model::getCurrentUserModel();
  62.        
  63.         $recordModels = $recordModel->searchIncomingCall();
  64.         // To check whether user have permission on caller record
  65.         if($recordModels){
  66.             foreach ($recordModels as $recordModel){
  67.                 // To check whether the user has permission to see contact name in popup
  68.                 $recordModel->set('callername', null);
  69.                
  70.                 //SalesPlatform.ru begin incoming call for calling user
  71.                 if($user->id != $recordModel->get('user')) {
  72.                     continue;
  73.                 }
  74.                 //SalesPlatform.ru end
  75.  
  76.                 $callerid = $recordModel->get('customer');
  77.                 if($callerid){
  78.                     $moduleName = $recordModel->get('customertype');
  79.  
  80.                     // SalesPlatform.ru begin
  81.                     $callerRecordModel = Vtiger_Record_Model::getInstanceById($callerid, $moduleName);
  82.                     $ownerId = $callerRecordModel->get('assigned_user_id');
  83.                     $recordModel->set('ownername',getUserFullName($ownerId));
  84.                     // SalesPlatform.ru end
  85.  
  86.                     if(!Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $callerid)){
  87.                         $name = $recordModel->get('customernumber').vtranslate('LBL_HIDDEN','PBXManager');
  88.                         $recordModel->set('callername',$name);
  89.                     }else{
  90.                         $entityNames = getEntityName($moduleName, array($callerid));
  91.                         $callerName = $entityNames[$callerid];
  92.                         $recordModel->set('callername',$callerName);
  93.                     }
  94.                 }
  95.                 // End
  96.                 $direction = $recordModel->get('direction');
  97.                 if($direction == 'inbound'){
  98.                     $userid = $recordModel->get('user');
  99.                     if($userid){
  100.                         $entityNames = getEntityName('Users', array($userid));
  101.                         $userName = $entityNames[$userid];
  102.                         $recordModel->set('answeredby',$userName);
  103.                     }
  104.                 }
  105.                 $recordModel->set('current_user_id',$user->id);
  106.                 $calls[] = $recordModel->getData();
  107.             }
  108.         }
  109.         $response->setResult($calls);
  110.         $response->emit();
  111.     }
  112.    
  113.    public function createRecord(Vtiger_Request $request){
  114.             $user = Users_Record_Model::getCurrentUserModel();
  115.             $moduleName = $request->get('modulename');
  116.             //comment RVS
  117.             //$name = explode("@",$request->get('email'));
  118.             //$element['lastname'] = $name[0];
  119.             //end RVS
  120.             // add RVS
  121.             $element['firstname'] = $request->get('firstname');
  122.             $element['lastname'] = $request->get('lastname');
  123.             $element['patronymic'] = $request->get('patronymic');
  124.             $element['description'] = $request->get('description');
  125.             $element['leadstatus'] = $request->get('leadstatus');
  126.             //$element['leadstatus'] = vtws_getWebserviceEntityId('Leads', $leadstatus->leadstatusid);
  127.             //$element['assigned_user_id'] = vtws_getWebserviceEntityId(‘Users’, $user->id);
  128.             // end RVS
  129.            
  130.             $element['email'] = $request->get('email');
  131.             $element['phone'] = $request->get('number');
  132.             $element['assigned_user_id'] = vtws_getWebserviceEntityId('Users', $user->id);
  133.            
  134.             $moduleInstance = Vtiger_Module_Model::getInstance($moduleName);
  135.             $mandatoryFieldModels = $moduleInstance->getMandatoryFieldModels();
  136.             foreach($mandatoryFieldModels as $mandatoryField){
  137.                 $fieldName = $mandatoryField->get('name');
  138.                 $fieldType = $mandatoryField->getFieldDataType();
  139.                 $defaultValue = decode_html($mandatoryField->get('defaultvalue'));
  140.                 if(!empty($element[$fieldName])){
  141.                     continue;
  142.                 }else{
  143.                     $fieldValue = $defaultValue;
  144.                     if(empty($fieldValue)) {
  145.                         $fieldValue = Vtiger_Util_Helper::getDefaultMandatoryValue($fieldType);
  146.                     }
  147.                     $element[$fieldName] = $fieldValue ;
  148.                 }
  149.             }
  150.            
  151.             $entity = vtws_create($moduleName, $element, $user);
  152.             $this->updateCustomerInPhoneCalls($entity, $request);
  153.             $response = new Vtiger_Response();
  154.             $response->setResult(true);
  155.             $response->emit();
  156.     }
  157.    
  158.     public function updateCustomerInPhoneCalls($customer, $request){
  159.         $id = vtws_getIdComponents($customer['id']);
  160.         $sourceuuid = $request->get('callid');
  161.         $module = $request->get('modulename');
  162.         //SalesPlatform.ru begin
  163.         $currentUser = Users_Record_Model::getCurrentUserModel();
  164.         $user = array('id' => $currentUser->id);
  165.         $recordModel = PBXManager_Record_Model::getInstanceBySourceUUID($sourceuuid, $user);
  166.         $recordModel->updateCallDetails(array('customer'=>$id[1], 'customertype'=>$module), $user);
  167.         //$recordModel = PBXManager_Record_Model::getInstanceBySourceUUID($sourceuuid);
  168.         //$recordModel->updateCallDetails(array('customer'=>$id[1], 'customertype'=>$module));
  169.         //SalesPlatform.ru end
  170.     }
  171.    
  172.     public function getCallStatus($request){
  173.         $phonecallsid = $request->get('callid');
  174.         $recordModel = PBXManager_Record_Model::getInstanceById($phonecallsid);
  175.         $response = new Vtiger_Response();
  176.         $response->setResult($recordModel->get('callstatus'));
  177.         $response->emit();
  178.     }
  179.    
  180.     function checkPermissionForPolling(Vtiger_Request $request) {
  181.         Users_Privileges_Model::getCurrentUserPrivilegesModel();
  182.         $callPermission = Users_Privileges_Model::isPermitted('PBXManager', 'ReceiveIncomingCalls');
  183.        
  184.         $serverModel = PBXManager_Server_Model::getInstance();
  185.         $gateway = $serverModel->get("gateway");
  186.  
  187.         $user = Users_Record_Model::getCurrentUserModel();
  188.         $userNumber = $user->phone_crm_extension;
  189.        
  190.         $result = false;
  191.         if($callPermission && $userNumber && $gateway ){
  192.             $result = true;
  193.         }
  194.        
  195.         $response = new Vtiger_Response();
  196.         $response->setResult($result);
  197.         $response->emit();
  198.     }
  199.  
  200. }
  201.  
  202. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement