Application->GetVar($event->getPrefixSpecial(true)); if (!$permissions) { return false; } $object =& $event->getObject( Array('skip_autoload' => true) ); $group_id = $this->Application->GetVar('g_id'); $permissions_helper =& $this->Application->recallObject('PermissionsHelper'); $permissions_helper->LoadPermissions('g'); $delete_ids = Array(); $create_sql = Array(); $create_mask = '(%s,%s,'.$group_id.',%s,1,0)'; $new_id = (int)$this->Conn->GetOne('SELECT MIN('.$object->IDField.') FROM '.$object->TableName); if($new_id > 0) $new_id = 0; --$new_id; foreach ($permissions as $section_name => $section_permissions) { foreach ($section_permissions as $perm_name => $perm_value) { if (!$permissions_helper->isOldPermission($section_name, $perm_name)) { $perm_name = $section_name.'.'.$perm_name; } $db_perm_value = $permissions_helper->getPermissionValue($perm_name); if ($db_perm_value == 1 && $perm_value == 0) { // permission was disabled => delete it's record $delete_ids[] = $permissions_helper->getPermissionID($perm_name); } elseif ($db_perm_value == 0 && $perm_value == 1) { // permission was enabled => created it's record $create_sql[] = sprintf($create_mask, $new_id--, $this->Conn->qstr($perm_name), $this->Conn->qstr($perm_value)); } // permission state was not changed in all other cases } } if ($delete_ids) { $delete_sql = ' DELETE FROM '.$object->TableName.' WHERE '.$object->IDField.' IN ('.implode(',', $delete_ids).')'; $this->Conn->Query($delete_sql); } if ($create_sql) { $create_sql = ' INSERT INTO '.$object->TableName.' VALUES '.implode(',', $create_sql); $this->Conn->Query($create_sql); } if ($delete_ids || $create_sql) { $object->setModifiedFlag(); } if ($this->Application->GetVar('advanced_save') == 1) { // advanced permission popup [save button] $this->finalizePopup($event); // $event->redirect = 'incs/just_close'; } elseif ($this->Application->GetVar('section_name') != '') { // save simple permissions before opening advanced permission popup $event->redirect = false; } } } ?>