Index: trunk/core/kernel/db/db_event_handler.php =================================================================== diff -u -N -r8408 -r8413 --- trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 8408) +++ trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 8413) @@ -96,9 +96,9 @@ $permissions = Array( 'OnLoad' => Array('self' => 'view', 'subitem' => 'view'), 'OnItemBuild' => Array('self' => 'view', 'subitem' => 'view'), - + 'OnBuild' => Array('self' => true), - + 'OnNew' => Array('self' => 'add', 'subitem' => 'add|edit'), 'OnCreate' => Array('self' => 'add', 'subitem' => 'add|edit'), 'OnUpdate' => Array('self' => 'edit', 'subitem' => 'add|edit'), @@ -375,15 +375,19 @@ if (!$status_fields) { return true; } - + $status_field = array_shift($status_fields); if ($status_field == 'Status' || $status_field == 'Enabled') { $object =& $event->getObject(); + if (!$object->isLoaded()) { + return true; + } + return $object->GetDBField($status_field) == STATUS_ACTIVE; } return true; } - + /** * Builds item (loads if needed) * @@ -405,19 +409,20 @@ if ($auto_load && !$skip_autload) { $perm_status = true; + $user_id = $this->Application->RecallVar('user_id'); $event->setEventParam('top_prefix', $this->Application->GetTopmostPrefix($event->Prefix, true)); - if ($this->Application->RecallVar('user_id') == -1 || $this->CheckPermission($event)) { + if ($user_id == -1 || $this->CheckPermission($event)) { // don't autoload item, when user doesn't have view permission $this->LoadItem($event); - - if (!$this->checkItemStatus($event)) { + + if ($user_id != -1 && !$this->checkItemStatus($event)) { $perm_status = false; } } else { $perm_status = false; } - + if (!$perm_status) { // when no permission to view item -> redirect to no pemrission template trigger_error('ItemLoad Permission Failed for prefix ['.$event->getPrefixSpecial().']', E_USER_WARNING); @@ -522,7 +527,7 @@ $sql = $this->Application->ReplaceLanguageTags($sql); $object->setSelectSQL($sql); $object->Counted = false; // when requery="1" should re-count records too! - + $object->linkToParent( $this->getMainSpecial($event) ); $this->AddFilters($event); @@ -1044,7 +1049,7 @@ { $object =& $event->getObject( Array('skip_autoload' => true) ); /* @var $object kDBItem */ - + $object->Clear(0); $this->Application->SetVar($event->Prefix_Special.'_SaveEvent', 'OnCreate');