PageRenderTime 53ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/vTigerCRM/vtigercrm/pkg/vtiger/modules/EmailTemplates/models/Module.php

https://gitlab.com/hop23typhu/list-theme
PHP | 229 lines | 152 code | 21 blank | 56 comment | 24 complexity | 4139da08d65bd5760e9e38e31833ca02 MD5 | raw file
  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. class EmailTemplates_Module_Model extends Vtiger_Module_Model {
  11. /**
  12. * Function to get Alphabet Search Field
  13. */
  14. public function getAlphabetSearchField() {
  15. return 'templatename';
  16. }
  17. /**
  18. * Function to get the url for the Create Record view of the module
  19. * @return <String> - url
  20. */
  21. public function getCreateRecordUrl() {
  22. return 'index.php?module=' . $this->get('name') . '&view=' . $this->getEditViewName();
  23. }
  24. /**
  25. * Function to save a given record model of the current module
  26. * @param EmailtTemplates_Record_Model $recordModel
  27. * @return <integer> template id
  28. */
  29. public function saveRecord($recordModel) {
  30. $db = PearDatabase::getInstance();
  31. $templateid = $recordModel->getId();
  32. if(empty($templateid)){
  33. $templateid = $db->getUniqueID('vtiger_emailtemplates');
  34. $sql = "INSERT INTO vtiger_emailtemplates(templatename, subject, description, body, deleted, templateid) VALUES (?,?,?,?,?,?)";
  35. }else{
  36. $sql = "UPDATE vtiger_emailtemplates SET templatename=?, subject=?, description=?, body=?, deleted=? WHERE templateid = ?";
  37. }
  38. $params = array(decode_html($recordModel->get('templatename')), decode_html($recordModel->get('subject')),
  39. decode_html($recordModel->get('description')), $recordModel->get('body'), 0, $templateid);
  40. $db->pquery($sql, $params);
  41. return $recordModel->setId($templateid);
  42. }
  43. /**
  44. * Function to delete the email template
  45. * @param type $recordIds
  46. */
  47. public function deleteRecord($recordModel) {
  48. $recordId = $recordModel->getId();
  49. $db = PearDatabase::getInstance();
  50. $db->pquery('DELETE FROM vtiger_emailtemplates WHERE templateid = ? ', array($recordId));
  51. }
  52. /**
  53. * Function to delete all the email templates
  54. * @param type $recordIds
  55. */
  56. public function deleteAllRecords() {
  57. $db = PearDatabase::getInstance();
  58. $db->pquery('DELETE FROM vtiger_emailtemplates', array());
  59. }
  60. /**
  61. * Function to get Email template fields from modules
  62. * @return <array> template fields
  63. */
  64. public function getAllModuleEmailTemplateFields() {
  65. $currentUserModel = Users_Record_Model::getCurrentUserModel();
  66. $allModuleList = $this->getAllModuleList();
  67. $allRelFields = array();
  68. foreach ($allModuleList as $index => $module) {
  69. if($module == 'Users'){
  70. $fieldList = $this->getRelatedModuleFieldList($module, $currentUserModel);
  71. }else{
  72. $fieldList = $this->getRelatedFields($module, $currentUserModel);
  73. }
  74. foreach ($fieldList as $key => $field) {
  75. $option = array(vtranslate($field['module'], $field['module']) . ':' . vtranslate($field['fieldlabel'], $field['module']), "$" . strtolower($field['module']) . "-" . $field['columnname'] . "$");
  76. $allFields[] = $option;
  77. if (!empty($field['referencelist'])) {
  78. foreach ($field['referencelist'] as $key => $relField) {
  79. $relOption = array(vtranslate($field['fieldlabel'], $field['module']) . ':' . '(' . vtranslate($relField['module'], $relField['module']) . ')' . vtranslate($relField['fieldlabel'],$relField['module']), "$" . strtolower($field['module']) . "-" . $field['columnname'] . ":" . $relField['columnname'] . "$");
  80. $allRelFields[] = $relOption;
  81. }
  82. }
  83. }
  84. if(is_array($allFields) && is_array($allRelFields)){
  85. $allFields = array_merge($allFields, $allRelFields);
  86. $allRelFields="";
  87. }
  88. $allOptions[vtranslate($module, $module)] = $allFields;
  89. $allFields = "";
  90. }
  91. $option = array(vtranslate('LBL_CURRENT_DATE'), '$custom-currentdate$');
  92. $allFields[] = $option;
  93. $option = array(vtranslate('LBL_CURRENT_TIME'), '$custom-currenttime$');
  94. $allFields[] = $option;
  95. $allOptions['generalFields'] = $allFields;
  96. return $allOptions;
  97. }
  98. /**
  99. * Function to get module fields
  100. * @param type $module
  101. * @param type $currentUserModel
  102. * @return <arrau>
  103. */
  104. function getRelatedFields($module, $currentUserModel) {
  105. $handler = vtws_getModuleHandlerFromName($module, $currentUserModel);
  106. $meta = $handler->getMeta();
  107. $moduleFields = $meta->getModuleFields();
  108. $returnData = array();
  109. foreach ($moduleFields as $key => $field) {
  110. $referencelist = array();
  111. $relatedField = $field->getReferenceList();
  112. if ($field->getFieldName() == 'assigned_user_id') {
  113. $relModule = 'Users';
  114. $referencelist = $this->getRelatedModuleFieldList($relModule, $currentUserModel);
  115. }
  116. if (!empty($relatedField)) {
  117. foreach ($relatedField as $ind => $relModule) {
  118. $referencelist = $this->getRelatedModuleFieldList($relModule, $currentUserModel);
  119. }
  120. }
  121. $returnData[] = array('module' => $module, 'fieldname' => $field->getFieldName(), 'columnname' => $field->getColumnName(), 'fieldlabel' => $field->getFieldLabelKey(), 'referencelist' => $referencelist);
  122. }
  123. return $returnData;
  124. }
  125. /**
  126. * Function to get related module fields
  127. * @param type $relModule
  128. * @param type $user
  129. * @return null
  130. */
  131. function getRelatedModuleFieldList($relModule, $user) {
  132. $handler = vtws_getModuleHandlerFromName($relModule, $user);
  133. $relMeta = $handler->getMeta();
  134. if (!$relMeta->isModuleEntity()) {
  135. return null;
  136. }
  137. $relModuleFields = $relMeta->getModuleFields();
  138. $relModuleFieldList = array();
  139. foreach ($relModuleFields as $relind => $relModuleField) {
  140. if($relModule == 'Users') {
  141. if($relModuleField->getFieldDataType() == 'string' || $relModuleField->getFieldDataType() == 'email' || $relModuleField->getFieldDataType() == 'phone') {
  142. $skipFields = array(98,115,116,31,32);
  143. if(!in_array($relModuleField->getUIType(), $skipFields) && $relModuleField->getFieldName() != 'asterisk_extension'){
  144. $relModuleFieldList[] = array('module' => $relModule, 'fieldname' => $relModuleField->getFieldName(), 'columnname' => $relModuleField->getColumnName(), 'fieldlabel' => $relModuleField->getFieldLabelKey());
  145. }
  146. }
  147. } else {
  148. $relModuleFieldList[] = array('module' => $relModule, 'fieldname' => $relModuleField->getFieldName(), 'columnname' => $relModuleField->getColumnName(), 'fieldlabel' => $relModuleField->getFieldLabelKey());
  149. }
  150. }
  151. return $relModuleFieldList;
  152. }
  153. /**
  154. * Function to get module list which has the email field.
  155. * @return type
  156. */
  157. public function getAllModuleList(){
  158. $db = PearDatabase::getInstance();
  159. $query = 'SELECT DISTINCT(name) AS modulename FROM vtiger_tab
  160. LEFT JOIN vtiger_field ON vtiger_field.tabid = vtiger_tab.tabid
  161. WHERE vtiger_field.uitype = ?';
  162. $result = $db->pquery($query, array(13));
  163. $num_rows = $db->num_rows($result);
  164. $moduleList = array();
  165. for($i=0; $i<$num_rows; $i++){
  166. $moduleList[] = $db->query_result($result, $i, 'modulename');
  167. }
  168. return $moduleList;
  169. }
  170. /**
  171. * Function to get the Quick Links for the module
  172. * @param <Array> $linkParams
  173. * @return <Array> List of Vtiger_Link_Model instances
  174. */
  175. public function getSideBarLinks($linkParams) {
  176. $linkTypes = array('SIDEBARLINK', 'SIDEBARWIDGET');
  177. $links = Vtiger_Link_Model::getAllByType($this->getId(), $linkTypes, $linkParams);
  178. $quickLinks = array(
  179. array(
  180. 'linktype' => 'SIDEBARLINK',
  181. 'linklabel' => 'LBL_RECORDS_LIST',
  182. 'linkurl' => $this->getDefaultUrl(),
  183. 'linkicon' => '',
  184. ),
  185. );
  186. foreach($quickLinks as $quickLink) {
  187. $links['SIDEBARLINK'][] = Vtiger_Link_Model::getInstanceFromValues($quickLink);
  188. }
  189. return $links;
  190. }
  191. public function getRecordIds($skipRecords){
  192. $db = PearDatabase::getInstance();
  193. $query = 'SELECT templateid FROM vtiger_emailtemplates WHERE templateid NOT IN ('.generateQuestionMarks($skipRecords).')';
  194. $result = $db->pquery($query, $skipRecords);
  195. $num_rows = $db->num_rows($result);
  196. $recordIds = array();
  197. for($i; $i<$num_rows; $i++){
  198. $recordIds[] = $db->query_result($result, $i, 'templateid');
  199. }
  200. return $recordIds;
  201. }
  202. /**
  203. * Funxtion to identify if the module supports quick search or not
  204. */
  205. public function isQuickSearchEnabled() {
  206. return false;
  207. }
  208. }