晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/Reports/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('~~/modules/Reports/Reports.php');
class Vtiger_Report_Model extends Reports {
static function getInstance($reportId = "") {
$self = new self();
return $self->Reports($reportId);
}
function Reports($reportId = "") {
$db = PearDatabase::getInstance();
$currentUser = Users_Record_Model::getCurrentUserModel();
$userId = $currentUser->getId();
$currentUserRoleId = $currentUser->get('roleid');
$subordinateRoles = getRoleSubordinates($currentUserRoleId);
array_push($subordinateRoles, $currentUserRoleId);
$this->initListOfModules();
if($reportId != "") {
// Lookup information in cache first
$cachedInfo = VTCacheUtils::lookupReport_Info($userId, $reportId);
$subOrdinateUsers = VTCacheUtils::lookupReport_SubordinateUsers($reportId);
if($cachedInfo === false) {
$ssql = "SELECT vtiger_reportmodules.*, vtiger_report.* FROM vtiger_report
INNER JOIN vtiger_reportmodules ON vtiger_report.reportid = vtiger_reportmodules.reportmodulesid
WHERE vtiger_report.reportid = ?";
$params = array($reportId);
require_once('include/utils/GetUserGroups.php');
require('user_privileges/user_privileges_'.$userId.'.php');
$userGroups = new GetUserGroups();
$userGroups->getAllUserGroups($userId);
$userGroupsList = $userGroups->user_groups;
if(!empty($userGroupsList) && $currentUser->isAdminUser() == false) {
$userGroupsQuery = " (shareid IN (".generateQuestionMarks($userGroupsList).") AND setype='groups') OR";
foreach($userGroupsList as $group) {
array_push($params, $group);
}
}
$nonAdminQuery = " vtiger_report.reportid IN (SELECT reportid from vtiger_reportsharing
WHERE $userGroupsQuery (shareid=? AND setype='users'))";
if($currentUser->isAdminUser() == false) {
$ssql .= " AND (($nonAdminQuery)
OR vtiger_report.sharingtype = 'Public'
OR vtiger_report.owner = ? OR vtiger_report.owner IN
(SELECT vtiger_user2role.userid FROM vtiger_user2role
INNER JOIN vtiger_users ON vtiger_users.id = vtiger_user2role.userid
INNER JOIN vtiger_role ON vtiger_role.roleid = vtiger_user2role.roleid
WHERE vtiger_role.parentrole LIKE '$current_user_parent_role_seq::%')
OR (vtiger_report.reportid IN (SELECT reportid FROM vtiger_report_shareusers WHERE userid = ?))";
if(!empty($userGroupsList)) {
$ssql .= " OR (vtiger_report.reportid IN (SELECT reportid FROM vtiger_report_sharegroups
WHERE groupid IN (".generateQuestionMarks($userGroupsList).")))";
}
$ssql .= " OR (vtiger_report.reportid IN (SELECT reportid FROM vtiger_report_sharerole WHERE roleid = ?))
OR (vtiger_report.reportid IN (SELECT reportid FROM vtiger_report_sharers
WHERE rsid IN (".generateQuestionMarks($subordinateRoles).")))
)";
array_push($params, $userId, $userId, $userId);
foreach($userGroupsList as $groups) {
array_push($params, $groups);
}
array_push($params, $currentUserRoleId);
foreach($subordinateRoles as $role) {
array_push($params, $role);
}
}
$result = $db->pquery($ssql, $params);
if($result && $db->num_rows($result)) {
$reportModulesRow = $db->fetch_array($result);
// Update information in cache now
VTCacheUtils::updateReport_Info(
$userId, $reportId, $reportModulesRow["primarymodule"],
$reportModulesRow["secondarymodules"], $reportModulesRow["reporttype"],
$reportModulesRow["reportname"], $reportModulesRow["description"],
$reportModulesRow["folderid"], $reportModulesRow["owner"]
);
}
$subOrdinateUsers = Array();
$subResult = $db->pquery("SELECT userid FROM vtiger_user2role
INNER JOIN vtiger_users ON vtiger_users.id = vtiger_user2role.userid
INNER JOIN vtiger_role ON vtiger_role.roleid = vtiger_user2role.roleid
WHERE vtiger_role.parentrole LIKE '$current_user_parent_role_seq::%'", array());
$numOfSubRows = $db->num_rows($subResult);
for($i=0; $i<$numOfSubRows; $i++) {
$subOrdinateUsers[] = $db->query_result($subResult, $i,'userid');
}
// Update subordinate user information for re-use
VTCacheUtils::updateReport_SubordinateUsers($reportId, $subOrdinateUsers);
// Re-look at cache to maintain code-consistency below
$cachedInfo = VTCacheUtils::lookupReport_Info($userId, $reportId);
}
if($cachedInfo) {
$this->primodule = $cachedInfo["primarymodule"];
$this->secmodule = $cachedInfo["secondarymodules"];
$this->reporttype = $cachedInfo["reporttype"];
$this->reportname = decode_html($cachedInfo["reportname"]);
$this->reportdescription = decode_html($cachedInfo["description"]);
$this->folderid = $cachedInfo["folderid"];
if($currentUser->isAdminUser() == true || in_array($cachedInfo["owner"], $subOrdinateUsers) || $cachedInfo["owner"]==$userId) {
$this->is_editable = true;
}else{
$this->is_editable = false;
}
}
}
return $this;
}
function isEditable() {
return $this->is_editable;
}
function getModulesList() {
foreach($this->module_list as $key=>$value) {
if(isPermitted($key,'index') == "yes") {
$modules [$key] = vtranslate($key, $key);
}
}
asort($modules);
return $modules;
}
}