Array ('subitem' => true), ); $this->permMapping = array_merge($this->permMapping, $permissions); } /** * Adds/removes item from favorites * * @param kEvent $event */ function OnFavoriteToggle($event) { $parent_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix'); /** @var kDBItem $parent_object */ $parent_object = $this->Application->recallObject($parent_prefix); if (!$parent_object->isLoaded() || !$this->Application->CheckPermission('FAVORITES', 0, $parent_object->GetDBField('ParentPath'))) { $event->status = kEvent::erPERM_FAIL; return ; } $user_id = $this->Application->RecallVar('user_id'); $sql = 'SELECT FavoriteId FROM '.$this->Application->getUnitOption($event->Prefix, 'TableName').' WHERE (PortalUserId = '.$user_id.') AND (ResourceId = '.$parent_object->GetDBField('ResourceId').')'; $favorite_id = $this->Conn->GetOne($sql); /** @var kDBItem $object */ $object = $event->getObject(Array('skip_autoload' => true)); if ($favorite_id) { $object->Delete($favorite_id); } else { $object->Create(); } $event->SetRedirectParam('pass', 'm,'.$parent_prefix); } /** * Prepares Favorite record fields * * @param kEvent $event * @return void * @access protected */ protected function OnBeforeItemCreate(kEvent $event) { parent::OnBeforeItemCreate($event); /** @var kDBItem $object */ $object = $event->getObject(); $user_id = $this->Application->RecallVar('user_id'); $object->SetDBField('PortalUserId', $user_id); $parent_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix'); /** @var kDBItem $parent_object */ $parent_object = $this->Application->recallObject($parent_prefix); $object->SetDBField('ResourceId', $parent_object->GetDBField('ResourceId')); $object->SetDBField('ItemTypeId', $this->Application->getUnitOption($parent_prefix, 'ItemType')); } /** * [HOOK] Deletes favorite record to item, that is beeing deleted * * @param kEvent $event */ function OnDeleteFavoriteItem($event) { $main_object = $event->MasterEvent->getObject(); $sql = 'DELETE FROM '.$this->Application->getUnitOption($event->Prefix, 'TableName').' WHERE ResourceId = '.$main_object->GetDBField('ResourceId'); $this->Conn->Query($sql); } }