Index: trunk/core/units/general/cat_event_handler.php =================================================================== diff -u -N -r8402 -r8407 --- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 8402) +++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 8407) @@ -25,6 +25,29 @@ } /** + * Load item if id is available + * + * @param kEvent $event + */ + function LoadItem(&$event) + { + $object =& $event->getObject(); + $id = $this->getPassedID($event); + if ($object->Load($id)) { + $actions =& $this->Application->recallObject('kActions'); + $actions->Set($event->Prefix_Special.'_id', $object->GetID() ); + + $use_pending_editing = $this->Application->getUnitOption($event->Prefix, 'UsePendingEditing'); + if ($use_pending_editing && $event->Special != 'original') { + $this->Application->SetVar($event->Prefix.'.original_id', $object->GetDBField('OrgId')); + } + } + else { + $object->setID($id); + } + } + + /** * Checks permissions of user * * @param kEvent $event @@ -1835,6 +1858,25 @@ $event->SetRedirectParam('m_cat_id', 0); } } + + /** + * Checks, that currently loaded item is allowed for viewing (non permission-based) + * + * @param kEvent $event + * @return bool + */ + function checkItemStatus(&$event) + { + $object =& $event->getObject(); + $status = $object->GetDBField('Status'); + + $user_id = $this->Application->RecallVar('user_id'); + if (($status == -2 || $status == STATUS_PENDING) && ($object->GetDBField('CreatedById') == $user_id)) { + return true; + } + + return $status == STATUS_ACTIVE; + } } ?> \ No newline at end of file