Files
crm.clientright.ru/modules/ITS4YouEmailMarketing/models/CustomView.php

126 lines
4.9 KiB
PHP
Executable File

<?php
class ITS4YouEmailMarketing_CustomView_Model extends CustomView_Record_Model
{
public static $custom_views_page = 1;
/**
* @param string $moduleName
* @param bool $listMode
* @return array
*/
public static function getAllByGroup($moduleName = '', $listMode = true)
{
$customViews = self::getAll($moduleName);
$groupedCustomViews = array();
$groupedCustomViews['Mine'] = array();
$groupedCustomViews['Shared'] = array();
foreach ($customViews as $index => $customView) {
if ($customView->isMine() && ($customView->get('viewname') != 'All' || !$listMode)) {
$groupedCustomViews['Mine'][] = $customView;
} elseif ($customView->isPublic()) {
$groupedCustomViews['Public'][] = $customView;
$groupedCustomViews['Shared'][] = $customView;
} elseif ($customView->isPending()) {
$groupedCustomViews['Pending'][] = $customView;
$groupedCustomViews['Shared'][] = $customView;
} else {
$groupedCustomViews['Others'][] = $customView;
$groupedCustomViews['Shared'][] = $customView;
}
}
if (empty($groupedCustomViews['Shared'])) {
unset($groupedCustomViews['Shared']);
}
return $groupedCustomViews;
}
/**
* @param string $moduleName
* @return array
*/
public static function getAll($moduleName = '')
{
list($sql, $params) = self::getQuery($moduleName);
$sql .= ' LIMIT 10 OFFSET ? ';
$params[] = (self::$custom_views_page - 1) * 10;
$db = PearDatabase::getInstance();
$result = $db->pquery($sql, $params);
$customViews = array();
while ($row = $db->fetchByAssoc($result)) {
$customView = new self();
$customViews[] = $customView->setData($row)->setModule($row['entitytype']);
}
return $customViews;
}
public static function getQuery($moduleName = '')
{
$db = PearDatabase::getInstance();
$userPrivilegeModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
$currentUser = Users_Record_Model::getCurrentUserModel();
$sql = 'SELECT * FROM vtiger_customview';
$params = array();
if (!empty($moduleName)) {
$sql .= ' WHERE entitytype=?';
$params[] = $moduleName;
}
if (!$userPrivilegeModel->isAdminUser()) {
$userGroups = new GetUserGroups();
$userGroups->getAllUserGroups($currentUser->getId());
$groups = $userGroups->user_groups;
$userRole = fetchUserRole($currentUser->getId());
$parentRoles = getParentRole($userRole);
$parentRoleList = array();
foreach ($parentRoles as $par_rol_id) {
$parentRoleList[] = $par_rol_id;
}
$parentRoleList[] = $userRole;
$userParentRoleSeq = $userPrivilegeModel->get('parent_role_seq');
$sql .= " AND ( vtiger_customview.userid = ? OR vtiger_customview.status = 0 OR vtiger_customview.status = 3
OR vtiger_customview.userid 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 '" . $userParentRoleSeq . "::%')
OR vtiger_customview.cvid IN (SELECT vtiger_cv2users.cvid FROM vtiger_cv2users WHERE vtiger_cv2users.userid=?)";
$params[] = $currentUser->getId();
$params[] = $currentUser->getId();
if (!empty($groups)) {
$sql .= "OR vtiger_customview.cvid IN (SELECT vtiger_cv2group.cvid FROM vtiger_cv2group WHERE vtiger_cv2group.groupid IN (" . generateQuestionMarks($groups) . "))";
$params = array_merge($params, $groups);
}
$sql .= "OR vtiger_customview.cvid IN (SELECT vtiger_cv2role.cvid FROM vtiger_cv2role WHERE vtiger_cv2role.roleid =?)";
$params[] = $userRole;
if (!empty($parentRoleList)) {
$sql .= "OR vtiger_customview.cvid IN (SELECT vtiger_cv2rs.cvid FROM vtiger_cv2rs WHERE vtiger_cv2rs.rsid IN (" . generateQuestionMarks($parentRoleList) . "))";
$params = array_merge($params, $parentRoleList);
}
$sql .= ")";
}
return [$sql, $params];
}
public static function getAllCount($moduleName = '')
{
list($sql, $params) = self::getQuery($moduleName);
$db = PearDatabase::getInstance();
$result = $db->pquery($sql, $params);
return $db->num_rows($result);
}
}