Portions created by the Initial Developer are Copyright (C) 2013-2020 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //define the permission class class permission { //delete the permissions function delete() { //get unprotected groups and their domain uuids (if any) $sql = "select group_name, domain_uuid "; $sql .= "from v_groups "; $sql .= "where group_protected <> 'true' "; $database = new database; $result = $database->select($sql, null, 'all'); if (is_array($result) && @sizeof($result) != 0) { foreach($result as $row) { $unprotected_groups[$row['group_name']] = $row['domain_uuid']; } } unset($sql, $result, $row); //delete unprotected group permissions if (is_array($unprotected_groups) && sizeof($unprotected_groups) > 0) { $x = 0; foreach ($unprotected_groups as $unprotected_group_name => $unprotected_domain_uuid) { //build delete array $array['group_permissions'][$x]['group_name'] = $unprotected_group_name; $array['group_permissions'][$x]['domain_uuid'] = $unprotected_domain_uuid != '' ? $unprotected_domain_uuid : null; $x++; } if (is_array($array) && @sizeof($array) != 0) { //grant temporary permissions $p = new permissions; $p->add('group_permission_delete', 'temp'); //execute delete $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->delete($array); unset($array); //revoke temporary permissions $p->delete('group_permission_delete', 'temp'); } } } //restore the permissions function restore() { //delete the group permisisons $this->delete(); //get the $apps array from the installed apps from the core and mod directories $config_list = glob($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/*/*/app_config.php"); $x = 0; foreach ($config_list as &$config_path) { include($config_path); $x++; } //restore default permissions $x = 0; foreach ($apps as $row) { foreach ($row['permissions'] as $permission) { //set the variables if ($permission['groups']) { foreach ($permission['groups'] as $group_name) { //check group protection $sql = "select group_uuid, group_protected from v_groups "; $sql .= "where group_name = :group_name "; $parameters['group_name'] = $group_name; $database = new database; $result = $database->select($sql, $parameters, 'row'); if (is_array($result) && @sizeof($result) != 0) { $group_uuid = $result['group_uuid']; $group_protected = $result['group_protected'] == 'true' ? true : false; } else { $group_protected = false; } unset($sql, $parameters); if (!$group_protected) { //if the item uuid is not currently in the db then add it $sql = "select count(*) from v_group_permissions "; $sql .= "where permission_name = :permission_name "; $sql .= "and group_name = :group_name "; $parameters['permission_name'] = $permission['name']; $parameters['group_name'] = $group_name; $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); if ($num_rows == 0) { //build default permissions insert array $array['group_permissions'][$x]['group_permission_uuid'] = uuid(); $array['group_permissions'][$x]['permission_name'] = $permission['name']; $array['group_permissions'][$x]['group_name'] = $group_name; if (is_uuid($group_uuid)) { $array['group_permissions'][$x]['group_uuid'] = $group_uuid; } $x++; } } } } } } if (is_array($array) && @sizeof($array)) { //grant temporary permissions $p = new permissions; $p->add('group_permission_add', 'temp'); //execute insert $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->save($array); unset($array); //revoke temporary permissions $p->delete('group_permission_add', 'temp'); } } } ?>