Index: branches/RC/core/units/reviews/reviews_event_handler.php =================================================================== diff -u -N -r10519 -r11538 --- branches/RC/core/units/reviews/reviews_event_handler.php (.../reviews_event_handler.php) (revision 10519) +++ branches/RC/core/units/reviews/reviews_event_handler.php (.../reviews_event_handler.php) (revision 11538) @@ -95,16 +95,28 @@ function _getReviewCategory(&$event) { $items_info = $this->Application->GetVar($event->getPrefixSpecial()); - list ($review_id, ) = each($items_info); + if ($items_info) { + // rev:PersetFormFields is used to initialize new review creation + list ($review_id, ) = each($items_info); + } + else { + // when adding new review in admin + $review_id = false; + + } + if (!$review_id) { return false; } - // 1. get main item resource id + $object =& $event->getObject(); + /* @var $object kDBItem */ + + // 1. get main item resource id (use object, because of temp tables in admin) $sql = 'SELECT ItemId - FROM ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . ' - WHERE ' . $this->Application->getUnitOption($event->Prefix, 'IDField') . ' = ' . $review_id; + FROM ' . $object->TableName . ' + WHERE ' . $object->IDField . ' = ' . $review_id; $resource_id = $this->Conn->GetOne($sql); // 2. set main item id (for permission checks) @@ -437,15 +449,18 @@ // 1. add join to items table (for "Structure & Data" -> "Reviews" section) $item_table = $this->Application->getUnitOption($regs[1], 'TableName'); + $ci_table = $this->Application->getUnitOption('ci', 'TableName'); $list_sqls = $this->Application->getUnitOption($event->Prefix, 'ListSQLs'); $list_sqls[''] .= ' LEFT JOIN '.$item_table.' item_table ON item_table.ResourceId = %1$s.ItemId'; + $list_sqls[''] .= ' LEFT JOIN '.$ci_table.' ci ON item_table.ResourceId = ci.ItemResourceId AND ci.PrimaryCat = 1'; $this->Application->setUnitOption($event->Prefix, 'ListSQLs', $list_sqls); // 2. add calculated field $calculated_fields = $this->Application->getUnitOption($event->Prefix, 'CalculatedFields'); $calculated_fields['']['CatalogItemName'] = 'item_table.' . $this->getTitleField($regs[1]); $calculated_fields['']['CatalogItemId'] = 'item_table.' . $this->Application->getUnitOption($regs[1], 'IDField'); + $calculated_fields['']['CatalogItemCategory'] = 'ci.CategoryId'; $this->Application->setUnitOption($event->Prefix, 'CalculatedFields', $calculated_fields); } }