Array ('subitem' => true), ); $this->permMapping = array_merge($this->permMapping, $permissions); } /** * Adds/removes item from favorites * * @param kEvent $event */ function OnFavoriteToggle($event) { $config = $event->getUnitConfig(); $parent_prefix = $config->getParentPrefix(); $parent_object = $this->Application->recallObject($parent_prefix); /* @var $parent_object kDBItem */ 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 ' . $config->getTableName() . ' WHERE (PortalUserId = ' . $user_id . ') AND (ResourceId = ' . $parent_object->GetDBField('ResourceId') . ')'; $favorite_id = $this->Conn->GetOne($sql); $object = $event->getObject(Array ('skip_autoload' => true)); /* @var $object kDBItem */ 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); $object = $event->getObject(); /* @var $object kDBItem */ $user_id = $this->Application->RecallVar('user_id'); $object->SetDBField('PortalUserId', $user_id); $parent_prefix = $event->getUnitConfig()->getParentPrefix(); $parent_object = $this->Application->recallObject($parent_prefix); /* @var $parent_object kDBItem */ $object->SetDBField('ResourceId', $parent_object->GetDBField('ResourceId')); $object->SetDBField('ItemTypeId', $this->Application->getUnitConfig($parent_prefix)->getItemType()); } /** * [HOOK] Deletes favorite record to item, that is being deleted * * @param kEvent $event */ function OnDeleteFavoriteItem($event) { $main_object = $event->MasterEvent->getObject(); /* @var $main_object kDBItem */ $sql = 'DELETE FROM ' . $event->getUnitConfig()->getTableName() . ' WHERE ResourceId = ' . $main_object->GetDBField('ResourceId'); $this->Conn->Query($sql); } }