* @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 * @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 * @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 * @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 * @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 * @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 * @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 * @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; } }