198 lines
5.9 KiB
PHP
198 lines
5.9 KiB
PHP
<?php
|
|
|
|
namespace BRSystems\Core\Sys\sysPermissionGroups\inc;
|
|
|
|
use BRSystems\Core\Library\cDb\cDb;
|
|
|
|
/**
|
|
* sysUsers Module
|
|
*
|
|
* @category sysPermissionGroupsModule Module
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @since Version 2.0
|
|
*/
|
|
class sysPermissionGroupsModule
|
|
{
|
|
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 sysPermissionGroupsModule 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
|
|
site_users_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 sysPermissionGroupsModule Module
|
|
* @param int $id - user id
|
|
* @param array $data - user data
|
|
* @return bool|int user id
|
|
* @version 1.1
|
|
*/
|
|
public function saveRecordDataById($id, $data){
|
|
|
|
if($id){
|
|
if(!$this->db->_queryUpdate('site_users_groups', $data, array('id' => $id))){
|
|
return false;
|
|
}
|
|
}else{
|
|
if(!($id = $this->db->_queryInsert('site_users_groups', $data))){
|
|
return false;
|
|
}
|
|
}
|
|
return $id;
|
|
|
|
}
|
|
|
|
/**
|
|
* Function to get group data by id
|
|
*
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @category sysPermissionGroupsModule Module
|
|
* @param int $id - user id
|
|
* @return array - user data
|
|
* @version 1.1
|
|
*/
|
|
public function getGroupDataById($id){
|
|
|
|
return $this->db->_querySelectRow('site_users_groups', false, array('id' => $id));
|
|
|
|
}
|
|
|
|
/**
|
|
* Function to get group linked permissions
|
|
*
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @category sysPermissionGroupsModule Module
|
|
* @param int $groupId - group id
|
|
* @return array - with records
|
|
* @version 1.1
|
|
*/
|
|
public function getGroupPermissionsByGrId($groupId){
|
|
$groupId = $groupId ? $groupId : 0;
|
|
$sSql = "
|
|
SELECT
|
|
*
|
|
FROM (
|
|
SELECT
|
|
DISTINCT sp.id,
|
|
COALESCE(mc.cl_name, '') as type_name,
|
|
sp.p_name,
|
|
sp.p_type_id,
|
|
sp.p_description,
|
|
stp.id > 0 as `sel`
|
|
FROM
|
|
site_permissions sp
|
|
LEFT JOIN mod_classificators mc ON
|
|
mc.id = sp.p_type_id
|
|
LEFT JOIN site_users_permissions stp ON
|
|
stp.permissions_id = sp.id
|
|
AND stp.groups_id = '" . $this->db->prepData($groupId) . "'
|
|
AND stp.user_id = 0
|
|
) dt
|
|
ORDER BY
|
|
dt.p_type_id, dt.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 sysPermissionGroupsModule 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("site_users_permissions", array('user_id' => 0, 'groups_id' => $groupId));
|
|
if(count($permissions)){
|
|
$this->db->_queryInsertArray("site_users_permissions", $permissions);
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Function to delete table records form db
|
|
*
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @category sysPermissionGroupsModule 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 `site_users_groups` WHERE `id` IN (" . implode(',', $ids) . ")");
|
|
|
|
}
|
|
|
|
/**
|
|
* Function to change record status in db table
|
|
*
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @category sysPermissionGroupsModule 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 site_users_groups pg SET {$field} = '1', group_modified = '{$time}' WHERE {$field} = '0' AND id IN ({$ids})");
|
|
if(!$status)
|
|
return $status;
|
|
$status = $this->db->query("UPDATE site_users_groups pg SET {$field} = '0', group_modified = '{$time}' WHERE {$field} = '1' AND id IN ({$ids}) AND group_modified <> '{$time}'");
|
|
return $status;
|
|
|
|
}
|
|
}
|