晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/www/crm/pkg/vtiger/modules/Webforms/modules/Webforms/model/ |
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.
******************************************************************************* */
require_once 'modules/Webforms/model/WebformsFieldModel.php';
class Webforms_Model {
public $data;
protected $fields = array();
function __construct($values = array()) {
$this->setData($values);
}
protected function addField(Webforms_Field_Model $field) {
$this->fields[] = $field;
}
function setData($data) {
$this->data = $data;
if (isset($data["fields"])) {
$this->setFields(vtlib_purify($data["fields"]), vtlib_purify($data["required"]), vtlib_purify($data["value"]));
}
if (isset($data['id'])) {
if (($data['enabled'] == 'on') || ($data['enabled'] == 1)) {
$this->setEnabled(1);
} else {
$this->setEnabled(0);
}
} else {
$this->setEnabled(1);
}
}
function hasId() {
return!empty($this->data['id']);
}
function setId($id) {
$this->data["id"] = $id;
}
function setName($name) {
$this->data["name"] = $name;
}
function setTargetModule($module) {
$this->data["targetmodule"] = $module;
}
protected function setPublicId($publicid) {
$this->data["publicid"] = $publicid;
}
function setEnabled($enabled) {
$this->data["enabled"] = $enabled;
}
function setDescription($description) {
$this->data["description"] = $description;
}
function setReturnUrl($returnurl) {
$this->data["returnurl"] = $returnurl;
}
function setOwnerId($ownerid) {
$this->data["ownerid"];
}
function setFields(array $fieldNames, $required, $value) {
require_once 'include/fields/DateTimeField.php';
foreach ($fieldNames as $ind => $fieldname) {
$fieldInfo = Webforms::getFieldInfo($this->getTargetModule(), $fieldname);
$fieldModel = new Webforms_Field_Model();
$fieldModel->setFieldName($fieldname);
$fieldModel->setNeutralizedField($fieldname, $fieldInfo['label']);
$field = Webforms::getFieldInfo('Leads', $fieldname);
if (($field['type']['name'] == 'date')) {
$defaultvalue = DateTimeField::convertToDBFormat($value[$fieldname]);
}else if (($field['type']['name'] == 'boolean')){
if(in_array($fieldname,$required)){
if(empty($value[$fieldname])){
$defaultvalue='off';
}else{
$defaultvalue='on';
}
}else{
$defaultvalue=$value[$fieldname];
}
}
else {
$defaultvalue = vtlib_purify($value[$fieldname]);
}
$fieldModel->setDefaultValue($defaultvalue);
if ((!empty($required) && in_array($fieldname, $required))) {
$fieldModel->setRequired(1);
} else {
$fieldModel->setRequired(0);
}
$this->addField($fieldModel);
}
}
function getId() {
return vtlib_purify($this->data["id"]);
}
function getName() {
return html_entity_decode(vtlib_purify($this->data["name"]));
}
function getTargetModule() {
return vtlib_purify($this->data["targetmodule"]);
}
function getPublicId() {
return vtlib_purify($this->data["publicid"]);
}
function getEnabled() {
return vtlib_purify($this->data["enabled"]);
}
function getDescription() {
return vtlib_purify($this->data["description"]);
}
function getReturnUrl() {
return vtlib_purify($this->data["returnurl"]);
}
function getOwnerId() {
return vtlib_purify($this->data["ownerid"]);
}
function getRoundrobin() {
return vtlib_purify($this->data["roundrobin"]);
}
function getRoundrobinOwnerId() {
global $adb;
$roundrobin_userid = vtlib_purify($this->data["roundrobin_userid"]);
$roundrobin_logic = vtlib_purify($this->data["roundrobin_logic"]);
$useridList = json_decode($roundrobin_userid,true);
if($roundrobin_logic >= count($useridList))
$roundrobin_logic=0;
$roundrobinOwnerId = $useridList[$roundrobin_logic];
$nextRoundrobinLogic = ($roundrobin_logic+1)%count($useridList);
$adb->pquery("UPDATE vtiger_webforms SET roundrobin_logic = ? WHERE id = ?", array($nextRoundrobinLogic,$this->getId()));
return vtlib_purify($roundrobinOwnerId);
}
function getFields() {
return $this->fields;
}
function generatePublicId($name) {
global $adb, $log;
$uid = md5(microtime(true) + $name);
return $uid;
}
function retrieveFields() {
global $adb;
$fieldsResult = $adb->pquery("SELECT * FROM vtiger_webforms_field WHERE webformid=?", array($this->getId()));
while ($fieldRow = $adb->fetch_array($fieldsResult)) {
$this->addField(new Webforms_Field_Model($fieldRow));
}
return $this;
}
function save() {
global $adb, $log;
$isNew = !$this->hasId();
// Create?
if ($isNew) {
if (self::existWebformWithName($this->getName())) {
throw new Exception('LBL_DUPLICATE_NAME');
}
$this->setPublicId($this->generatePublicId($this->getName()));
$insertSQL = "INSERT INTO vtiger_webforms(name, targetmodule, publicid, enabled, description,ownerid,returnurl) VALUES(?,?,?,?,?,?,?)";
$result = $adb->pquery($insertSQL, array($this->getName(), $this->getTargetModule(), $this->getPublicid(), $this->getEnabled(), $this->getDescription(), $this->getOwnerId(), $this->getReturnUrl()));
$this->setId($adb->getLastInsertID());
} else {
// Udpate
$updateSQL = "UPDATE vtiger_webforms SET description=? ,returnurl=?,ownerid=?,enabled=? WHERE id=?";
$result = $adb->pquery($updateSQL, array($this->getDescription(), $this->getReturnUrl(), $this->getOwnerId(), $this->getEnabled(), $this->getId()));
}
// Delete fields and re-add enabled once
$adb->pquery("DELETE FROM vtiger_webforms_field WHERE webformid=?", array($this->getId()));
$fieldInsertSQL = "INSERT INTO vtiger_webforms_field(webformid, fieldname, neutralizedfield, defaultvalue,required) VALUES(?,?,?,?,?)";
foreach ($this->fields as $field) {
$params = array();
$params[] = $this->getId();
$params[] = $field->getFieldName();
$params[] = $field->getNeutralizedField();
$params[] = $field->getDefaultValue();
$params[] = $field->getRequired();
$adb->pquery($fieldInsertSQL, $params);
}
return true;
}
function delete() {
global $adb, $log;
$adb->pquery("DELETE from vtiger_webforms_field where webformid=?", array($this->getId()));
$adb->pquery("DELETE from vtiger_webforms where id=?", array($this->getId()));
return true;
}
static function retrieveWithPublicId($publicid) {
global $adb, $log;
$model = false;
// Retrieve model and populate information
$result = $adb->pquery("SELECT * FROM vtiger_webforms WHERE publicid=? AND enabled=?", array($publicid, 1));
if ($adb->num_rows($result)) {
$model = new Webforms_Model($adb->fetch_array($result));
$model->retrieveFields();
}
return $model;
}
static function retrieveWithId($data) {
global $adb, $log;
$id = $data;
$model = false;
// Retrieve model and populate information
$result = $adb->pquery("SELECT * FROM vtiger_webforms WHERE id=?", array($id));
if ($adb->num_rows($result)) {
$model = new Webforms_Model($adb->fetch_array($result));
$model->retrieveFields();
}
return $model;
}
static function listAll() {
global $adb, $log;
$webforms = array();
$sql = "SELECT * FROM vtiger_webforms";
$result = $adb->pquery($sql, array());
for ($index = 0, $len = $adb->num_rows($result); $index < $len; $index++) {
$webform = new Webforms_Model($adb->fetch_array($result));
$webforms[] = $webform;
}
return $webforms;
}
static function isWebformField($webformid, $fieldname) {
global $adb, $log;
$checkSQL = "SELECT 1 from vtiger_webforms_field where webformid=? AND fieldname=?";
$result = $adb->pquery($checkSQL, array($webformid, $fieldname));
return (($adb->num_rows($result)) ? true : false);
}
static function isCustomField($fieldname) {
if (substr($fieldname, 0, 3) === "cf_") {
return true;
}
return false;
}
static function isRequired($webformid, $fieldname) {
global $adb;
$sql = "SELECT required FROM vtiger_webforms_field where webformid=? AND fieldname=?";
$result = $adb->pquery($sql, array($webformid, $fieldname));
$required = false;
if ($adb->num_rows($result)) {
$required = $adb->query_result($result, 0, "required");
}
return $required;
}
static function retrieveDefaultValue($webformid, $fieldname) {
require_once 'include/fields/DateTimeField.php';
global $adb,$current_user,$current_;
$dateformat=$current_user->date_format;
$sql = "SELECT defaultvalue FROM vtiger_webforms_field WHERE webformid=? and fieldname=?";
$result = $adb->pquery($sql, array($webformid, $fieldname));
$defaultvalue = false;
if ($adb->num_rows($result)) {
$defaultvalue = $adb->query_result($result, 0, "defaultvalue");
$field = Webforms::getFieldInfo('Leads', $fieldname);
if (($field['type']['name'] == 'date') && !empty($defaultvalue)) {
$defaultvalue = DateTimeField::convertToUserFormat($defaultvalue);
}
$defaultvalue = explode(' |##| ', $defaultvalue);
}
return $defaultvalue;
}
static function existWebformWithName($name) {
global $adb;
$checkSQL = "SELECT 1 FROM vtiger_webforms WHERE name=?";
$check = $adb->pquery($checkSQL, array($name));
if ($adb->num_rows($check) > 0) {
return true;
}
return false;
}
static function isActive($field, $mod) {
global $adb;
$tabid = getTabid($mod);
$query = 'SELECT 1 FROM vtiger_field WHERE fieldname = ? AND tabid = ? AND presence IN (0,2)';
$res = $adb->pquery($query, array($field, $tabid));
$rows = $adb->num_rows($res);
if ($rows > 0) {
return true;
} else {
return false;
}
}
/**
* Function to create document records for each submitted files in webform and relate to created target module record.
* @global $current_user
* @param <array> $wsRecord - Webservice record array of created target module record returned by vtws_create().
* @throws Exception - Throws exception if size of all uploaded files exceeds 50MB.
*/
function createDocuments($wsRecord) {
global $current_user;
$createdDocumentRecords = array();
$sourceModule = $this->getTargetModule();
if (Vtiger_Functions::isDocumentsRelated($sourceModule)) {
$allFileSize = 0;
foreach ($_FILES as $file) {
$allFileSize += $file['size'];
}
$recordModel = Settings_Webforms_Record_Model::getInstanceById($this->getId(), 'Settings:Webforms');
$allowedFilesSize = $recordModel->getModule()->allowedAllFilesSize();
if ($allFileSize > $allowedFilesSize) {
throw new Exception('Allowed files size exceeded. Allowed file size including all files is 50MB.');
}
$fileFields = $recordModel->getFileFields();
$fileFieldsArray = array();
$fileFieldsNameArray = array();
foreach ($fileFields as $fileField) {
$fileFieldsArray[$fileField['fieldname']] = $fileField['fieldlabel'];
$fileFieldsNameArray[] = $fileField['fieldname'];
}
$uploadedFiles = $_FILES;
foreach ($uploadedFiles as $fileFieldName => $uploadedFile) {
if (in_array($fileFieldName, $fileFieldsNameArray) && $uploadedFile['error'] == 0 && $uploadedFile['name']) {
$data['notes_title'] = $fileFieldsArray[$fileFieldName];
$data['document_source'] = 'Vtiger';
$data['filename'] = $uploadedFile['name'];
$data['filelocationtype'] = 'I';
$data['source'] = 'WEBFORM';
$data['assigned_user_id'] = $wsRecord['assigned_user_id'];
$data['filestatus'] = 1;
unset($_FILES);
$_FILES['filename'] = $uploadedFile;
$record = vtws_create('Documents', $data, $current_user);
array_push($createdDocumentRecords, $record['id']);
}
}
if (!empty($createdDocumentRecords)) {
vtws_add_related($wsRecord['id'], $createdDocumentRecords);
}
}
}
}
?>