晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/Vtiger/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.
*************************************************************************************/
vimport('~~/libraries/freetag/freetag.class.php');
class Vtiger_Tag_Model extends Vtiger_Base_Model {
//Num of tags that need to show by default in detail view
const NUM_OF_TAGS_DETAIL = 3;
const NUM_OF_TAGS_LIST = 5;
const PRIVATE_TYPE = 'private';
const PUBLIC_TYPE = 'public';
private $_freetag = false;
static $TAG_FETCH_LIMIT = 100;
function __construct() {
$this->_freetag = new freetag();
}
public function getId() {
return $this->get('id');
}
public function setId($tagId) {
$this->set('id', $tagId);
return $this;
}
public function getName() {
return $this->get('tag');
}
public function setName($name) {
$this->set('tag', $name);
return $this;
}
public function getType() {
return $this->get('visibility');
}
public function setType($type) {
$this->set('visibility', $type);
return $this;
}
/**
* Function saves a tag to database
*/
public function save() {
$this->_freetag->tag_object($this->get('userid'), $this->get('record'), $this->get('tagname'), $this->get('module'));
}
public function create(){
$db = PearDatabase::getInstance();
$tagName = $this->getName();
$visibility = $this->getType();
$currentUser = Users_Record_Model::getCurrentUserModel();
$checkRes = $db->pquery("SELECT id FROM vtiger_freetags WHERE tag=?",array($this->getName()));
if($db->num_rows($checkRes) > 0) {
$id = $db->query_result($checkRes, 0, 'id');
}else{
$id = $db->getUniqueId('vtiger_freetags');
$db->pquery("INSERT INTO vtiger_freetags values(?,?,?,?,?)", array($id, $tagName, $tagName, $visibility, $currentUser->getId()));
}
$this->set('id', $id);
return $id;
}
public function update() {
$db = PearDatabase::getInstance();
$query = "UPDATE vtiger_freetags SET tag=?, raw_tag=?, visibility=? WHERE id=?";
$db->pquery($query, array($this->getName(), $this->getName(), $this->getType(), $this->getId()));
return true;
}
public function isEditable($userId = '') {
if(empty($userId)) {
$currentUser = Users_Record_Model::getCurrentUserModel();
$userId = $currentUser->id;
}
return ($this->get('owner') == $userId) ? true : false;
}
public function isUnLinkable($userId = '') {
if(empty($userId)) {
$currentUser = Users_Record_Model::getCurrentUserModel();
$userId = $currentUser->id;
}
return ($this->get('owner') == $userId) ? true : false;
}
/**
* Function deletes a tag from database
*/
public function delete() {
$db = PearDatabase::getInstance();
$db->pquery('DELETE FROM vtiger_freetagged_objects WHERE tag_id = ? AND object_id = ?',
array($this->get('tag_id'), $this->get('record')));
}
public function remove() {
$db = PearDatabase::getInstance();
$query = "DELETE FROM vtiger_freetags WHERE id=?";
$db->pquery($query, array($this->getId()));
}
/**
* Function returns the tags
* @param type $userId
* @param type $module
* @param type $record
* @return type
*/
public static function getAll($userId = NULL, $module = "", $record = NULL) {
$tag = new self();
return $tag->_freetag->get_tag_cloud_tags(self::$TAG_FETCH_LIMIT, $userId, $module, $record);
}
public static function getAllUserTags($userId) {
$db = PearDatabase::getInstance();
$result = $db->pquery("SELECT * FROM vtiger_freetags WHERE owner=? OR visibility=?", array($userId, self::PUBLIC_TYPE));
$num_rows = $db->num_rows($result);
$tagsList = array();
for($i=0; $i<$num_rows; $i++) {
$row = $db->query_result_rowdata($result, $i);
$tagModel = new self();
$tagModel->setData($row);
$tagsList[$tagModel->getId()] = $tagModel;
}
return $tagsList;
}
public static function getAllAccessible($userId, $module = "", $recordId = null, $mode="") {
$db = PearDatabase::getInstance();
$query = "SELECT * ";
if($mode == "count") {
$query = "SELECT count(1) AS count";
}
$query .= " FROM vtiger_freetags
INNER JOIN vtiger_freetagged_objects ON vtiger_freetags.id = vtiger_freetagged_objects.tag_id
WHERE (vtiger_freetagged_objects.tagger_id = ? OR vtiger_freetags.visibility='public') ";
$params = array($userId);
if(!empty($module)) {
$query .= ' AND vtiger_freetagged_objects.module=?';
array_push($params, $module);
}
if(!empty($recordId)) {
$query .= ' AND vtiger_freetagged_objects.object_id=?';
array_push($params, $recordId);
}
// if($mode != "count"){
// $query .= ' GROUP BY vtiger_freetags.id';
// }
$query .=' ORDER BY tagged_on ';
$result = $db->pquery($query , $params);
$num_rows = $db->num_rows($result);
if($mode == "count") {
if($num_rows > 0) {
return $db->query_result($result, 0,'count');
}else{
return $num_rows;
}
}
$tagsList = array();
for($i=0; $i<$num_rows; $i++) {
$row = $db->query_result_rowdata($result, $i);
$tagModel = new self();
$tagModel->setData($row);
$tagsList[$tagModel->getId()] = $tagModel;
}
return $tagsList;
}
public static function getTaggedRecords($tagId) {
$recordModels = array();
if(!empty($tagId)) {
$db = PearDatabase::getInstance();
$result = $db->pquery("SELECT vtiger_crmentity.* FROM vtiger_freetags
INNER JOIN vtiger_freetagged_objects ON vtiger_freetags.id = vtiger_freetagged_objects.tag_id
INNER JOIN vtiger_crmentity ON vtiger_freetagged_objects.object_id=vtiger_crmentity.crmid
AND vtiger_crmentity.deleted=0
WHERE tag_id = ?", array($tagId));
$rows = $db->num_rows($result);
for($i=0; $i<$rows; $i++) {
$row = $db->query_result_rowdata($result, $i);
$recordModel = Vtiger_Record_Model::getCleanInstance($row['setype']);
$recordModel->setData($row);
$recordModel->setId($row['crmid']);
$recordModels[$row['setype']][] = $recordModel;
}
}
return $recordModels;
}
public static function saveForRecord($recordId , $tagList , $userId='', $module='') {
$db = PearDatabase::getInstance();
if(empty($userId)) {
$currentUser = Users_Record_Model::getCurrentUserModel();
$userId = $currentUser->getId();
}
if(empty($module)) {
$module = Vtiger_Functions::getCRMRecordType($recordId);
}
if(!is_array($tagList)) {
$tagList = array($tagList);
}
$date_var = date('Y-m-d H:i:s');
$createdOn = $db->formatDate($date_var, true);
foreach ($tagList as $tagId) {
$saveQuery = "INSERT INTO vtiger_freetagged_objects VALUES(?,?,?,?,?) ON DUPLICATE KEY UPDATE tag_id=?";
$params = array($tagId, $userId, $recordId, $createdOn, $module,$tagId);
$db->pquery($saveQuery, $params);
}
}
public static function deleteForRecord($recordId, $tagList, $userId ='', $module='') {
$db = PearDatabase::getInstance();
if(empty($userId)) {
$currentUser = Users_Record_Model::getCurrentUserModel();
$userId = $currentUser->getId();
}
if(empty($module)) {
$module = Vtiger_Functions::getCRMRecordType($recordId);
}
if(!is_array($tagList)) {
$tagList = array($tagList);
}
$tagModel = new self();
foreach ($tagList as $tagId) {
$tagModel->set('tag_id', $tagId)->set('record', $recordId);
$tagModel->delete();
}
}
public static function getCleanInstance(){
return new self();
}
public static function getInstanceById($tagId) {
$db = PearDatabase::getInstance();
$query = "SELECT * FROM vtiger_freetags WHERE id=?";
$result = $db->pquery($query, array($tagId));
$tagModel = false;
if($db->num_rows($result) > 0) {
$tagModel = new self();
$rowData = $db->query_result_rowdata($result, '0');
$tagModel->setData($rowData);
}
return $tagModel;
}
public static function getInstanceByName($name, $userId, $excludedTagId = false) {
$db = PearDatabase::getInstance();
$query = "SELECT * FROM vtiger_freetags WHERE (tag=? OR raw_tag=?) AND (owner=? OR visibility=?)";
$params = array($name, $name, $userId, self::PUBLIC_TYPE);
global $log;
$log->fatal($excludedTagId);
if($excludedTagId !== false) {
$query .= ' AND id != ?';
array_push($params, $excludedTagId);
}
global $log;
$log->fatal($db->convert2Sql($query , $params));
$result = $db->pquery($query, $params);
$tagModel = false;
if($db->num_rows($result) > 0) {
$tagModel = new self();
$rowData = $db->query_result_rowdata($result, '0');
$tagModel->setData($rowData);
}
return $tagModel;
}
public static function checkIfOtherUsersUsedTag($tagId, $userIdToExclude) {
$db = PearDatabase::getInstance();
$checkQuery = "SELECT 1 FROM vtiger_freetagged_objects
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_freetagged_objects.object_id
WHERE tag_id=? and tagger_id !=? AND vtiger_crmentity.deleted=0";
//TODO : check for module specific delete query as well
$result = $db->pquery($checkQuery, array($tagId, $userIdToExclude));
return $db->num_rows($result) > 0 ? true : false;
}
}
?>