Index: branches/5.2.x/core/units/categories/categories_event_handler.php =================================================================== diff -u -N -r14714 -r14719 --- branches/5.2.x/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 14714) +++ branches/5.2.x/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 14719) @@ -1,6 +1,6 @@ getObject(); + /* @var $object CategoriesItem */ + + if ( $object->GetDBField('ParentId') <= 0 ) { + // no parent category - use current (happens during import) + $object->SetDBField('ParentId', $this->Application->GetVar('m_cat_id')); + } + $this->_beforeItemChange($event); if ( $this->Application->isAdminUser || $event->Prefix == 'st' ) { @@ -1309,9 +1317,6 @@ } if ( $new_status ) { - $object =& $event->getObject(); - /* @var $object kDBItem */ - $object->SetDBField('Status', $new_status); // don't forget to set Priority for suggested from Front-End categories @@ -1350,14 +1355,14 @@ { parent::OnBeforeItemUpdate($event); + $this->_beforeItemChange($event); + $object =& $event->getObject(); /* @var $object kDBItem */ if ( $object->GetChangedFields() ) { $object->SetDBField('ModifiedById', $this->Application->RecallVar('user_id')); } - - $this->_beforeItemChange($event); } /** @@ -1620,8 +1625,11 @@ function _beforeItemChange(&$event) { $object =& $event->getObject(); - /* @var $object kDBItem */ + /* @var $object CategoriesItem */ + $object->checkFilename(); + $object->generateFilename(); + $now = adodb_mktime(); if ( !$this->Application->isDebugMode() && strpos($event->Special, 'rebuild') === false ) { @@ -1636,6 +1644,12 @@ } } + $is_admin = $this->Application->isAdminUser; + + if ( (!$object->IsTempTable() && !$is_admin) || ($is_admin && !$object->GetDBField('CreatedById')) ) { + $object->SetDBField('CreatedById', $this->Application->RecallVar('user_id')); + } + if ($object->GetChangedFields()) { $object->SetDBField('Modified_date', $now); $object->SetDBField('Modified_time', $now); @@ -2071,6 +2085,31 @@ } /** + * Occurs after creating item + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnAfterItemCreate(&$event) + { + parent::OnAfterItemCreate($event); + + $object =& $event->getObject(); + /* @var $object CategoriesItem */ + + // need to update path after category is created, so category is included in that path + $parent_path = $object->buildParentPath(); + + $sql = 'UPDATE ' . $object->TableName . ' + SET ParentPath = ' . $this->Conn->qstr($parent_path) . ' + WHERE CategoryId = ' . $object->GetID(); + $this->Conn->Query($sql); + + $object->SetDBField('ParentPath', $parent_path); + } + + /** * Enter description here... * * @param kEvent $event @@ -2785,4 +2824,23 @@ return $res; } + + /** + * Set's new unique resource id to user + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnAfterItemValidate(kEvent &$event) + { + $object =& $event->getObject(); + /* @var $object kDBItem */ + + $resource_id = $object->GetDBField('ResourceId'); + + if ( !$resource_id ) { + $object->SetDBField('ResourceId', $this->Application->NextResourceId()); + } + } } \ No newline at end of file