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