Index: branches/RC/core/units/categories/categories_event_handler.php =================================================================== diff -u -r10371 -r10428 --- branches/RC/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 10371) +++ branches/RC/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 10428) @@ -920,6 +920,62 @@ } } } + + /** + * Apply same processing to each item beeing selected in grid + * + * @param kEvent $event + * @access private + */ + function iterateItems(&$event) + { + if ($event->Name != 'OnMassApprove' && $event->Name != 'OnMassDecline') { + return parent::iterateItems($event); + } + + if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) { + return; + } + + $object =& $event->getObject( Array('skip_autoload' => true) ); + $ids = $this->StoreSelectedIDs($event); + + if ($ids) { + $status_field = array_shift( $this->Application->getUnitOption($event->Prefix,'StatusField') ); + + foreach ($ids as $id) { + $object->Load($id); + + switch ($event->Name) { + case 'OnMassApprove': + $object->SetDBField($status_field, 1); + break; + + case 'OnMassDecline': + $object->SetDBField($status_field, 0); + break; + } + + if ($this->Application->GetVar('propagate_category_status')) { + $sql = 'UPDATE '.$object->TableName.' + SET '.$status_field.' = '.$object->GetDBField('Status').' + WHERE TreeLeft BETWEEN '.$object->GetDBField('TreeLeft').' AND '.$object->GetDBField('TreeRight'); + $this->Conn->Query($sql); + } + + if ($object->Update()) { + $event->status = erSUCCESS; + } + else { + $event->status = erFAIL; + $event->redirect = false; + break; + } + } + } + + $this->clearSelectedIDs($event); + } } ?> \ No newline at end of file