[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Emails/models/ -> Module.php (source)

   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 Emails_Module_Model extends Vtiger_Module_Model{
  12  
  13      /**
  14       * Function to check whether the module is an entity type module or not
  15       * @return <Boolean> true/false
  16       */
  17  	public function isQuickCreateSupported() {
  18          //emails module is not enabled for quick create
  19          return false;
  20      }
  21  
  22  	public function isWorkflowSupported() {
  23          return false;
  24      }
  25  
  26      /**
  27       * Function to check whether the module is summary view supported
  28       * @return <Boolean> - true/false
  29       */
  30  	public function isSummaryViewSupported() {
  31          return false;
  32      }
  33      
  34      /**
  35       * Function to get emails related modules
  36       * @return <Array> - list of modules 
  37       */    
  38  	public function getEmailRelatedModules() {
  39          $userPrivModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
  40          
  41          $relatedModules = vtws_listtypes(array('email'), Users_Record_Model::getCurrentUserModel());
  42          $relatedModules = $relatedModules['types'];
  43  
  44          foreach ($relatedModules as $key => $moduleName) {
  45              if ($moduleName === 'Users') {
  46                  unset($relatedModules[$key]);
  47              }
  48          }
  49          foreach ($relatedModules as $moduleName) {
  50              $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  51              if($userPrivModel->isAdminUser() || $userPrivModel->hasGlobalReadPermission() || $userPrivModel->hasModulePermission($moduleModel->getId())) {
  52                  $emailRelatedModules[] = $moduleName;
  53              }
  54          }
  55          $emailRelatedModules[] = 'Users';
  56          return $emailRelatedModules;
  57      }
  58  
  59      /**
  60       * Function to search emails for send email
  61       * @param <String> $searchValue
  62       * @return <Array> Result of searched emails
  63       */
  64  	public function searchEmails($searchValue) {
  65          $emailsResult = array();
  66          $db = PearDatabase::getInstance();
  67          $currentUserModel = Users_Record_Model::getCurrentUserModel();
  68          $emailSupportedModulesList = $this->getEmailRelatedModules();
  69  
  70          foreach ($emailSupportedModulesList as $moduleName) {
  71              $searchFields = array();
  72              $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  73              $emailFieldModels = $moduleModel->getFieldsByType('email');
  74  
  75              foreach ($emailFieldModels as $fieldName => $fieldModel) {
  76                  if ($fieldModel->isViewable()) {
  77                      $searchFields[] = $fieldName;
  78                  }
  79              }
  80              $emailFields = $searchFields;
  81  
  82              $nameFields = $moduleModel->getNameFields();
  83              foreach ($nameFields as $fieldName) {
  84                  $fieldModel = Vtiger_Field_Model::getInstance($fieldName, $moduleModel);
  85                  if ($fieldModel->isViewable()) {
  86                      $searchFields[] = $fieldName;
  87                  }
  88              }
  89  
  90              if ($emailFields) {
  91                  $moduleInstance = CRMEntity::getInstance($moduleName);
  92                  $queryGenerator = new QueryGenerator($moduleName, $currentUserModel);
  93                  $listFields = $searchFields;
  94                  $listFields[] = 'id';
  95                  $queryGenerator->setFields($listFields);
  96                                  
  97                                  //Opensource fix for showing up deleted records on email search
  98                                  $queryGenerator->startGroup(""); 
  99                  foreach ($searchFields as $key => $emailField) {
 100                      $queryGenerator->addCondition($emailField, trim($searchValue), 'c', 'OR');
 101                  }
 102  
 103                                  $queryGenerator->endGroup(); 
 104                  $result = $db->pquery($queryGenerator->getQuery(), array());
 105                  $numOfRows = $db->num_rows($result);
 106  
 107                  for($i=0; $i<$numOfRows; $i++) {
 108                      $row = $db->query_result_rowdata($result, $i);
 109                      foreach ($emailFields as $emailField) {
 110                          $emailFieldValue = $row[$emailField];
 111                          if ($emailFieldValue) {
 112                              $recordLabel = getEntityFieldNameDisplay($moduleName, $nameFields, $row);
 113                              if (strpos($emailFieldValue, $searchValue) !== false || strpos($recordLabel, $searchValue) !== false) {
 114                                  $emailsResult[vtranslate($moduleName, $moduleName)][$row[$moduleInstance->table_index]][]
 115                                              = array('value'    => $emailFieldValue,
 116                                                      'label'    => $recordLabel . ' <b>('.$emailFieldValue.')</b>');
 117  
 118                              }
 119                          }
 120                      }
 121                  }
 122              }
 123          }
 124          return $emailsResult;
 125      }
 126  }
 127  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1