ElixirVault/www/system-brs-core/cms/cmsPermissionGroups/inc/cmsPermissionGroupsModule.php

190 lines
5.5 KiB
PHP

<?php
namespace BRSystems\Core\Cms\cmsPermissionGroups\inc;
use BRSystems\Core\Library\cDb\cDb;
/**
* sysUsers Module
*
* @category cmsPermissionGroupsModule Module
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @since Version 2.0
*/
class cmsPermissionGroupsModule
{
public $db;
/**
* Class constructor
*/
public function __construct() {
$this->db = cDb::getInstance();
}
/**
* Function to get module records
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category cmsPermissionGroupsModule Module
* @param string $where - sql query
* @param string $sort - sql query
* @param int $offset - db table offset
* @param int $limitPerPage - limit per page
* @return array of data
* @version 1.1
*/
public function getModuleRecords($where, $sort, $offset = 0, $limitPerPage = 20){
$sSql = "
SELECT SQL_CALC_FOUND_ROWS
pg.id,
pg.group_name,
pg.group_description,
pg.group_blocked
FROM
mod_permissions_groups pg
WHERE
1 {$where}
ORDER BY
{$sort}
LIMIT
{$offset}, {$limitPerPage}
";
$this->db->query($sSql);
return $this->db->getArray();
}
/**
* Function to add or save user data
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category cmsPermissionGroupsModule Module
* @param int $id - user id
* @param array $data - user data
* @return boot user id
* @version 1.1
*/
public function saveRecordDataById($id, $data){
if($id){
if(!$this->db->_queryUpdate('mod_permissions_groups', $data, array('id' => $id))){
return false;
}
}else{
if(!($id = $this->db->_queryInsert('mod_permissions_groups', $data))){
return false;
}
}
return $id;
}
/**
* Function to get group data by id
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category cmsPermissionGroupsModule Module
* @param int $id - user id
* @return array - user data
* @version 1.1
*/
public function getGroupDataById($id){
return $this->db->_querySelectRow('mod_permissions_groups', false, array('id' => $id));
}
/**
* Function to get group linked permissions
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category cmsPermissionGroupsModule Module
* @param int $groupId - group id
* @return array - with records
* @version 1.1
*/
public function getGroupPermissionsByGrId($groupId){
$groupId = $groupId ? $groupId : 0;
$sSql = "
SELECT
DISTINCT sp.id,
sp.p_name,
sp.p_description,
stp.permissions_id > 0 as `sel`
FROM
mod_permissions sp
LEFT JOIN mod_users_permissions stp ON
stp.permissions_id = sp.id
AND stp.groups_id = '" . $this->db->prepData($groupId) . "'
AND stp.user_id = 0
ORDER BY
sp.p_name
";
$this->db->query($sSql);
return $this->db->getArray();
}
/**
* Function to handle & rewrite group permissions
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category cmsPermissionGroupsModule Module
* @param int $groupId - group id
* @param array $permissions
* @return bool true / false
* @version 1.1
*/
public function updateGroupPermissions($groupId, $permissions = array()){
if($groupId){
$this->db->_queryDelete("mod_users_permissions", array('user_id' => 0, 'groups_id' => $groupId));
if(count($permissions)){
$this->db->_queryInsertArray("mod_users_permissions", $permissions);
}
return true;
}
return false;
}
/**
* Function to delete table records form db
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category cmsPermissionGroupsModule Module
* @param array $ids - record ids to delete
* @return bool true / false
* @version 1.1
*/
public function deleteRecords($ids){
return $this->db->execute("DELETE FROM `mod_permissions_groups` WHERE `id` IN (" . implode(',', $ids) . ")");
}
/**
* Function to change record status in db table
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category cmsPermissionGroupsModule Module
* @param array $ids - record ids to affect
* @param string $field - field to update for status ENUM
* @return bool true / false
* @version 1.1
*/
public function changeRecordsStatus($ids, $field){
$time = time();
$ids = implode(',', $ids);
$status = $this->db->query("UPDATE mod_permissions_groups pg SET {$field} = '1', group_modified = '{$time}' WHERE {$field} = '0' AND `id` IN ({$ids})");
if(!$status)
return $status;
$status = $this->db->query("UPDATE mod_permissions_groups pg SET {$field} = '0', group_modified = '{$time}' WHERE {$field} = '1' AND `id` IN ({$ids}) AND group_modified <> '{$time}'");
return $status;
}
}