晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/modules/EmailTemplates/models/ |
Upload 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 EmailTemplates_Module_Model extends Vtiger_Module_Model {
public static $BROWSER_MERGE_TAG = '$custom-viewinbrowser$';
/**
* Function to get Alphabet Search Field
*/
public function getAlphabetSearchField() {
return 'templatename';
}
/**
* Function to get the url for the Create Record view of the module
* @return <String> - url
*/
public function getCreateRecordUrl() {
return 'index.php?module=' . $this->get('name') . '&view=' . $this->getEditViewName();
}
/**
* Function to save a given record model of the current module
* @param EmailtTemplates_Record_Model $recordModel
* @return <integer> template id
*/
public function saveRecord(EmailTemplates_Record_Model $recordModel) {
$db = PearDatabase::getInstance();
$recordId = $templateid = $recordModel->getId();
$systemtemplate = $recordModel->get('systemtemplate');
if (empty($systemtemplate)) {
$systemtemplate = '0';
}
if(empty($templateid)){
$templateid = $db->getUniqueID('vtiger_emailtemplates');
$sql = "INSERT INTO vtiger_emailtemplates(templatename, subject, description, module, body, deleted, systemtemplate, templateid) VALUES (?,?,?,?,?,?,?,?)";
}else{
if($systemtemplate) {
$sql = "UPDATE vtiger_emailtemplates SET templatename=?, description=?, module=?, body=?, deleted=?, systemtemplate=? WHERE templateid = ?";
} else {
$sql = "UPDATE vtiger_emailtemplates SET templatename=?, subject=?, description=?, module=?, body=?, deleted=?, systemtemplate=? WHERE templateid = ?";
}
}
if(!empty($recordId) && $systemtemplate) {
$params = array(decode_html($recordModel->get('templatename')), decode_html($recordModel->get('description')),
$recordModel->get('module'),$recordModel->get('body'), 0, $systemtemplate, $templateid);
} else {
$params = array(decode_html($recordModel->get('templatename')), decode_html($recordModel->get('subject')),
decode_html($recordModel->get('description')), $recordModel->get('module'),$recordModel->get('body'), 0,
$systemtemplate, $templateid);
}
$db->pquery($sql, $params);
return $recordModel->setId($templateid);
}
/**
* Function to delete the email template
* @param type $recordIds
*/
public function deleteRecord(EmailTemplates_Record_Model $recordModel) {
$recordId = $recordModel->getId();
$db = PearDatabase::getInstance();
$db->pquery('DELETE FROM vtiger_emailtemplates WHERE templateid = ? AND systemtemplate = ? ', array($recordId, '0'));
}
/**
* Function to delete all the email templates
* @param type $recordIds
*/
public function deleteAllRecords() {
$db = PearDatabase::getInstance();
$db->pquery('DELETE FROM vtiger_emailtemplates WHERE systemtemplate = ?', array('0'));
}
/**
* Function to get Email template fields from modules
* @return <array> template fields
*/
public function getAllModuleEmailTemplateFields() {
$currentUserModel = Users_Record_Model::getCurrentUserModel();
$allModuleList = $this->getAllModuleList();
$allRelFields = array();
foreach ($allModuleList as $index => $module) {
if($module == 'Users'){
$fieldList = $this->getRelatedModuleFieldList($module, $currentUserModel);
//Added for sending credentials through a system email from an email template
$fieldList[] = array(
'module' => $module,
'fieldname' => 'user_password_custom',
'columnname' => 'user_password_custom',
'fieldlabel' => 'Password'
);
}else{
$fieldList = $this->getRelatedFields($module, $currentUserModel);
}
$allFields = array();
foreach ($fieldList as $key => $field) {
$option = array(vtranslate($field['module'], $field['module']) . ':' . vtranslate($field['fieldlabel'], $field['module']), "$" . strtolower($field['module']) . "-" . $field['columnname'] . "$");
$allFields[] = $option;
if (!empty($field['referencelist'])) {
foreach ($field['referencelist'] as $referenceList) {
foreach($referenceList as $key => $relField) {
$relOption = array(vtranslate($field['fieldlabel'], $field['module']) . ':' . '(' . vtranslate($relField['module'], $relField['module']) . ')' . vtranslate($relField['fieldlabel'],$relField['module']), "$" . strtolower($field['module']) . "-" . $field['columnname'] . ":" . $relField['columnname'] . "$");
$allRelFields[] = $relOption;
}
}
}
}
if(is_array($allFields) && is_array($allRelFields)){
$allFields = array_merge($allFields, $allRelFields);
$allRelFields= array();
}
$allOptions[$module] = $allFields;
$allFields = array();
}
return $allOptions;
}
/**
* Function retrives all company details merge tags and add to field array
* @return string
*/
function getCompanyMergeTagsInfo(){
global $site_URL;
$companyModuleModel = Settings_Vtiger_CompanyDetails_Model::getInstance();
$basicFields = $companyModuleModel->companyBasicFields;
$socialFields = $companyModuleModel->companySocialLinks;
$qualifiedModule = "Settings:Vtiger";
$moduleName = vtranslate("LBL_COMPANY_DETAILS", $qualifiedModule);
$allFields = array();
$logoPath = $site_URL . '/' . $companyModuleModel->getLogoPath();
foreach ($basicFields as $columnName => $value) {
//For column logo we need place logo in content
if($columnName == 'logo'){
$allFields[] = array($moduleName.':'. vtranslate($columnName, $qualifiedModule),"$$columnName$");
} else {
$allFields[] = array($moduleName.':'. vtranslate($columnName, $qualifiedModule),"$".strtolower("companydetails")."-".$columnName."$");
}
}
// Social links will be having hyperlink redirected to URL mentioned
foreach($socialFields as $columnName => $value){
$url = $companyModuleModel->get($columnName);
if($columnName == 'website'){
$websiteURL = $url;
if(empty($url)){
$websiteURL = $columnName;
}
$allFields[] = array($moduleName.':'. vtranslate($columnName, $qualifiedModule),"<a target='_blank' href='".$url."'>$websiteURL</a>");
} else {
$allFields[] = array($moduleName.':'. vtranslate($columnName, $qualifiedModule),"<a target='_blank' href='".$url."'>$columnName</a>");
}
}
return $allFields;
}
/**
* Function returns custom merge tags
* @return array
*/
function getCustomMergeTags(){
$customMergeTags = array(
array('Current Date', '$custom-currentdate$'),
array('Current Time', '$custom-currenttime$'),
array('View in browser',"<a target='_blank' href='".self::$BROWSER_MERGE_TAG."'>View in browser</a>"),
array('CRM Detail View Url','$custom-crmdetailviewurl$'),
array('Portal Detail View Url','$custom-portaldetailviewurl$'),
array('Site Url','$custom-siteurl$'),
array('Portal Url','$custom-portalurl$'));
return $customMergeTags;
}
/**
* Function to get module fields
* @param type $module
* @param type $currentUserModel
* @return <arrau>
*/
function getRelatedFields($module, $currentUserModel) {
$handler = vtws_getModuleHandlerFromName($module, $currentUserModel);
$meta = $handler->getMeta();
$moduleFields = $meta->getModuleFields();
$db = PearDatabase::getInstance();
//adding record id merge tag option
$fieldInfo = array('columnname' => 'id','fieldname' => 'id','fieldlabel' =>vtranslate('LBL_RECORD_ID', $this->getName()));
$recordIdField = WebserviceField::fromArray($db, $fieldInfo);
$moduleFields[$recordIdField->getFieldName()] = $recordIdField;
$returnData = array();
foreach ($moduleFields as $key => $field) {
if(!in_array($field->getPresence(), array(0,2))){
continue;
}
$referencelist = array();
$relatedField = $field->getReferenceList();
if ($field->getFieldName() == 'assigned_user_id') {
$relModule = 'Users';
$referencelist[] = $this->getRelatedModuleFieldList($relModule, $currentUserModel);
}
if (!empty($relatedField)) {
foreach ($relatedField as $ind => $relModule) {
$referencelist[] = $this->getRelatedModuleFieldList($relModule, $currentUserModel);
}
}
$returnData[] = array('module' => $module, 'fieldname' => $field->getFieldName(), 'columnname' => $field->getColumnName(), 'fieldlabel' => $field->getFieldLabelKey(), 'referencelist' => $referencelist);
}
return $returnData;
}
/**
* Function to get related module fields
* @param type $relModule
* @param type $user
* @return null
*/
function getRelatedModuleFieldList($relModule, $user) {
$handler = vtws_getModuleHandlerFromName($relModule, $user);
$relMeta = $handler->getMeta();
if (!$relMeta->isModuleEntity()) {
return array();
}
$relModuleFields = $relMeta->getModuleFields();
$relModuleFieldList = array();
foreach ($relModuleFields as $relind => $relModuleField) {
if(!in_array($relModuleField->getPresence(), array(0,2))){
continue;
}
if($relModule == 'Users') {
if(in_array($relModuleField->getFieldDataType(),array('string','phone','email','text'))) {
$skipFields = array(98,115,116,31,32);
if(!in_array($relModuleField->getUIType(), $skipFields) && $relModuleField->getFieldName() != 'asterisk_extension'){
$relModuleFieldList[] = array('module' => $relModule, 'fieldname' => $relModuleField->getFieldName(), 'columnname' => $relModuleField->getColumnName(), 'fieldlabel' => $relModuleField->getFieldLabelKey());
}
}
} else {
$relModuleFieldList[] = array('module' => $relModule, 'fieldname' => $relModuleField->getFieldName(), 'columnname' => $relModuleField->getColumnName(), 'fieldlabel' => $relModuleField->getFieldLabelKey());
}
}
return $relModuleFieldList;
}
/**
* Function to get module list which has the email field.
* @return type
*/
public function getAllModuleList(){
$db = PearDatabase::getInstance();
// Get modules names only those are active
$query = 'SELECT DISTINCT(name) AS modulename FROM vtiger_tab
LEFT JOIN vtiger_field ON vtiger_field.tabid = vtiger_tab.tabid
WHERE (vtiger_field.uitype = ? AND vtiger_tab.presence = ?) ';
$params = array('13',0);
// Check whether calendar module is active or not.
if(vtlib_isModuleActive("Calendar")){
$eventsTabid = getTabid('Events');
$query .= ' OR vtiger_tab.tabid IN (?, ?)';
array_push($params, $eventsTabid, getTabid('Calendar'));
}
$result = $db->pquery($query, $params);
$num_rows = $db->num_rows($result);
$moduleList = array();
for($i=0; $i<$num_rows; $i++){
$moduleList[] = $db->query_result($result, $i, 'modulename');
}
return $moduleList;
}
/**
* Function to get the Quick Links for the module
* @param <Array> $linkParams
* @return <Array> List of Vtiger_Link_Model instances
*/
public function getSideBarLinks($linkParams) {
$linkTypes = array('SIDEBARLINK', 'SIDEBARWIDGET');
$links = Vtiger_Link_Model::getAllByType($this->getId(), $linkTypes, $linkParams);
$quickLinks = array(
array(
'linktype' => 'SIDEBARLINK',
'linklabel' => 'LBL_RECORDS_LIST',
'linkurl' => $this->getDefaultUrl(),
'linkicon' => '',
),
);
foreach($quickLinks as $quickLink) {
$links['SIDEBARLINK'][] = Vtiger_Link_Model::getInstanceFromValues($quickLink);
}
return $links;
}
public function getRecordIds($skipRecords){
$db = PearDatabase::getInstance();
$query = 'SELECT templateid FROM vtiger_emailtemplates WHERE templateid NOT IN ('.generateQuestionMarks($skipRecords).')';
$result = $db->pquery($query, $skipRecords);
$num_rows = $db->num_rows($result);
$recordIds = array();
for($i; $i<$num_rows; $i++){
$recordIds[] = $db->query_result($result, $i, 'templateid');
}
return $recordIds;
}
/**
* Funxtion to identify if the module supports quick search or not
*/
public function isQuickSearchEnabled() {
return false;
}
public function getPopupUrl() {
return 'module=EmailTemplates&view=Popup';
}
public function getBlocks() {
if(empty($this->blocks)) {
$blockLabelKeys = array('SINGLE_EmailTemplates', 'LBL_EMAIL_TEMPLATE');
$blocks = array();
foreach($blockLabelKeys as $blockIndex => $blockLabel){
$blockInstance = new EmailTemplates_Block_Model();
$blockInstance->set('blocklabel',$blockLabel)->set('sequence',$blockIndex+1)->set('module',$this)->set('id',$blockIndex+1);
$blocks[$blockLabel] = $blockInstance;
}
$this->blocks = $blocks;
}
return parent::getBlocks();
}
/*
* Function to get supported utility actions for a module
*/
function getUtilityActionsNames() {
return array();
}
/**
* Function to get Module Header Links (for Vtiger7)
* @return array
*/
public function getModuleBasicLinks(){
$createPermission = Users_Privileges_Model::isPermitted($this->getName(), 'CreateView');
$moduleName = $this->getName();
if($createPermission) {
$basicLinks[] = array(
'linktype' => 'BASIC',
'linklabel' => 'LBL_ADD_RECORD',
'linkurl' => $this->getCreateRecordUrl(),
'linkicon' => 'fa-plus'
);
}
return $basicLinks;
}
function isFilterColumnEnabled() {
return false;
}
}