Changeset View
Changeset View
Standalone View
Standalone View
branches/5.2.x/core/units/permissions/permissions_event_handler.php
Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Line(s) | |||||
$group_id = $this->Application->GetVar('current_group_id'); | $group_id = $this->Application->GetVar('current_group_id'); | ||||
$category_id = $this->Application->GetVar('c_id'); | $category_id = $this->Application->GetVar('c_id'); | ||||
$permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); | $permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); | ||||
if (isset($permissions[$group_id])) { | if (isset($permissions[$group_id])) { | ||||
$permissions = $permissions[$group_id]; | $permissions = $permissions[$group_id]; | ||||
$object = $event->getObject( Array('skip_autoload' => true) ); | $object = $event->getObject( Array('skip_autoload' => true) ); | ||||
/** @var kPermissionsHelper $permissions_helper */ | |||||
$permissions_helper = $this->Application->recallObject('PermissionsHelper'); | $permissions_helper = $this->Application->recallObject('PermissionsHelper'); | ||||
/* @var $permissions_helper kPermissionsHelper */ | |||||
$permissions_helper->LoadPermissions($group_id, $category_id, 0, 'c'); | $permissions_helper->LoadPermissions($group_id, $category_id, 0, 'c'); | ||||
// format: <perm_name>['inherited'] || <perm_name>['value'] | // format: <perm_name>['inherited'] || <perm_name>['value'] | ||||
$delete_ids = Array(); | $delete_ids = Array(); | ||||
$create_sql = Array(); | $create_sql = Array(); | ||||
$update_sql = Array(); | $update_sql = Array(); | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Line(s) | |||||
return ; | return ; | ||||
} | } | ||||
$permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); | $permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); | ||||
if ( !$permissions ) { | if ( !$permissions ) { | ||||
return ; | return ; | ||||
} | } | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject( Array ('skip_autoload' => true) ); | $object = $event->getObject( Array ('skip_autoload' => true) ); | ||||
/* @var $object kDBItem */ | |||||
$group_id = $this->Application->GetVar('g_id'); | $group_id = $this->Application->GetVar('g_id'); | ||||
/** @var kPermissionsHelper $permissions_helper */ | |||||
$permissions_helper = $this->Application->recallObject('PermissionsHelper'); | $permissions_helper = $this->Application->recallObject('PermissionsHelper'); | ||||
/* @var $permissions_helper kPermissionsHelper */ | |||||
$permissions_helper->LoadPermissions($group_id, 0, 1, 'g'); | $permissions_helper->LoadPermissions($group_id, 0, 1, 'g'); | ||||
$delete_ids = $create_sql = Array (); | $delete_ids = $create_sql = Array (); | ||||
$create_mask = '(%s,%s,' . $group_id . ',%s,1,0)'; | $create_mask = '(%s,%s,' . $group_id . ',%s,1,0)'; | ||||
$new_id = (int)$this->Conn->GetOne('SELECT MIN(' . $object->IDField . ') FROM ' . $object->TableName); | $new_id = (int)$this->Conn->GetOne('SELECT MIN(' . $object->IDField . ') FROM ' . $object->TableName); | ||||
if ( $new_id > 0 ) { | if ( $new_id > 0 ) { | ||||
$new_id = 0; | $new_id = 0; | ||||
} | } | ||||
--$new_id; | --$new_id; | ||||
/** @var kSectionsHelper $sections_helper */ | |||||
$sections_helper = $this->Application->recallObject('SectionsHelper'); | $sections_helper = $this->Application->recallObject('SectionsHelper'); | ||||
/* @var $sections_helper kSectionsHelper */ | |||||
foreach ($permissions as $section_name => $section_permissions) { | foreach ($permissions as $section_name => $section_permissions) { | ||||
$section_name = $sections_helper->getPermSection($section_name); | $section_name = $sections_helper->getPermSection($section_name); | ||||
foreach ($section_permissions as $perm_name => $perm_value) { | foreach ($section_permissions as $perm_name => $perm_value) { | ||||
if ( !$permissions_helper->isOldPermission($section_name, $perm_name) ) { | if ( !$permissions_helper->isOldPermission($section_name, $perm_name) ) { | ||||
$perm_name = $section_name . '.' . $perm_name; | $perm_name = $section_name . '.' . $perm_name; | ||||
} | } | ||||
Show All 30 Lines | |||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
* @param Array $create_sql | * @param Array $create_sql | ||||
* @param Array $update_sql | * @param Array $update_sql | ||||
* @param Array $delete_ids | * @param Array $delete_ids | ||||
*/ | */ | ||||
function UpdatePermissions($event, $create_sql, $update_sql, $delete_ids) | function UpdatePermissions($event, $create_sql, $update_sql, $delete_ids) | ||||
{ | { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
if ($delete_ids) { | if ($delete_ids) { | ||||
$action = ChangeLog::DELETE; | $action = ChangeLog::DELETE; | ||||
$object->Load($delete_ids[count($delete_ids) - 1]); | $object->Load($delete_ids[count($delete_ids) - 1]); | ||||
$delete_sql = ' DELETE FROM '.$object->TableName.' | $delete_sql = ' DELETE FROM '.$object->TableName.' | ||||
WHERE '.$object->IDField.' IN ('.implode(',', $delete_ids).')'; | WHERE '.$object->IDField.' IN ('.implode(',', $delete_ids).')'; | ||||
$this->Conn->Query($delete_sql); | $this->Conn->Query($delete_sql); | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | |||||
parent::OnBeforeDeleteFromLive($event); | parent::OnBeforeDeleteFromLive($event); | ||||
if ( $event->Prefix == 'c-perm' ) { | if ( $event->Prefix == 'c-perm' ) { | ||||
// only when saving category permissions, not group permissions | // only when saving category permissions, not group permissions | ||||
$foreign_keys = $event->getEventParam('foreign_key'); | $foreign_keys = $event->getEventParam('foreign_key'); | ||||
if ( (count($foreign_keys) == 1) && ($foreign_keys[0] == 0) ) { | if ( (count($foreign_keys) == 1) && ($foreign_keys[0] == 0) ) { | ||||
// parent item has zero id | // parent item has zero id | ||||
/** @var CategoriesItem $temp_object */ | |||||
$temp_object = $this->Application->recallObject('c'); | $temp_object = $this->Application->recallObject('c'); | ||||
/* @var $temp_object CategoriesItem */ | |||||
if ( $temp_object->isLoaded() ) { | if ( $temp_object->isLoaded() ) { | ||||
// category with id = 0 found in temp table | // category with id = 0 found in temp table | ||||
$event->status = kEvent::erFAIL; | $event->status = kEvent::erFAIL; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } |