$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); } }