Index: branches/5.0.x/units/order_items/order_items_event_handler.php =================================================================== diff -u -r12924 -r13334 --- branches/5.0.x/units/order_items/order_items_event_handler.php (.../order_items_event_handler.php) (revision 12924) +++ branches/5.0.x/units/order_items/order_items_event_handler.php (.../order_items_event_handler.php) (revision 13334) @@ -1,6 +1,6 @@ <?php /** -* @version $Id: order_items_event_handler.php 12739 2009-10-20 19:38:22Z alex $ +* @version $Id: order_items_event_handler.php 13334 2010-04-06 08:02:56Z alex $ * @package In-Commerce * @copyright Copyright (C) 1997 - 2009 Intechnic. All rights reserved. * @license Commercial License @@ -24,9 +24,12 @@ function mapPermissions() { parent::mapPermissions(); - $permissions = Array( - 'OnSaveItems' => Array('subitem' => 'add|edit'), - ); + + $permissions = Array ( + 'OnItemBuild' => Array ('subitem' => true), + 'OnSaveItems' => Array ('subitem' => 'add|edit'), + ); + $this->permMapping = array_merge($this->permMapping, $permissions); } @@ -200,4 +203,31 @@ $object->addFilter('product_type', 'p.Type ='.$type); } } + + /** + * Checks, that currently loaded item is allowed for viewing (non permission-based) + * + * @param kEvent $event + * @return bool + */ + function checkItemStatus(&$event) + { + if ($this->Application->IsAdmin()) { + return true; + } + + $object =& $event->getObject(); + if (!$object->isLoaded()) { + return true; + } + + $order =& $this->Application->recallObject('ord'); + /* @var $order kDBItem */ + + if ($order->isLoaded() && ($order->GetID() == $object->GetDBField('OrderId'))) { + return $order->GetDBField('PortalUserId') == $this->Application->RecallVar('user_id'); + } + + return false; + } } \ No newline at end of file