/** * Add feature/unfeature menu items * * @param string $hook "register" * @param string $type "menu:entity" * @param ElggMenuItem[] $return Menu * @param array $params Hook params * @return ElggMenuitem[] */ function actions_feature_entity_menu_setup($hook, $type, $return, $params) { $entity = elgg_extract('entity', $params); if (!$entity instanceof ElggEntity || !actions_feature_can_feature($entity)) { return; } $featured = $entity->featured || $entity->featured_group == 'yes'; $return[] = ElggMenuItem::factory(['name' => 'feature', 'text' => elgg_echo("actions:feature"), 'href' => "action/feature?guid={$entity->guid}", 'is_action' => true, 'priority' => 300, 'item_class' => $featured ? 'hidden' : '']); $return[] = ElggMenuItem::factory(['name' => 'unfeature', 'text' => elgg_echo("actions:unfeature"), 'href' => "action/unfeature?guid={$entity->guid}", 'is_action' => true, 'priority' => 300, 'item_class' => $featured ? '' : 'hidden']); return $return; }
<?php $guid = get_input('guid'); $entity = get_entity($guid); if (!$entity instanceof ElggEntity) { register_error(elgg_echo('actions:feature:item_not_found')); forward(REFERRER); } if (!actions_feature_can_feature($entity)) { register_error(elgg_echo('actions:feature:permission_denied')); forward(REFERRER); } // determine what name to show on success $display_name = $entity->getDisplayName(); if (!$display_name) { $display_name = elgg_echo('actions:feature:item'); } if (empty($entity->featured) && $entity->featured_group != 'yes') { register_error(elgg_echo('actions:unfeature:error', [$display_name])); forward(REFERRER); } $entity->featured = false; if ($entity instanceof ElggGroup) { // compatibility with the group plugin $entity->featured_group = 'no'; } elgg_trigger_event('unfeatured', $entity->getType(), $entity); system_message(elgg_echo('actions:unfeature:success', [$display_name])); forward(REFERRER);