/** * Add a subscribe/unsubscribe link to the supported entity types * * @param string $hook the name of the hook * @param string $type the type of the hook * @param \ElggMenuItem[] $return_value the current menu items * @param array $params supplied params * * @return void|\ElggMenuItem[] */ public static function register($hook, $type, $return_value, $params) { if (!elgg_is_logged_in()) { return; } if (empty($params) || !is_array($params)) { return; } $entity = elgg_extract('entity', $params); if (empty($entity) || !content_subscriptions_can_subscribe($entity)) { return; } $subscribed = false; if (content_subscriptions_check_subscription($entity->getGUID())) { $subscribed = true; } $methods = content_subscriptions_get_notification_settings(); if (!empty($methods)) { $return_value[] = \ElggMenuItem::factory(['name' => 'content_subscription_subscribe', 'text' => elgg_echo('content_subscriptions:subscribe'), 'href' => "action/content_subscriptions/subscribe?entity_guid={$entity->getGUID()}", 'is_action' => true, 'priority' => 100, 'item_class' => $subscribed ? 'hidden' : '']); } $return_value[] = \ElggMenuItem::factory(['name' => 'content_subscription_unsubscribe', 'text' => elgg_echo('content_subscriptions:unsubscribe'), 'href' => "action/content_subscriptions/subscribe?entity_guid={$entity->getGUID()}", 'is_action' => true, 'priority' => 101, 'item_class' => $subscribed ? '' : 'hidden']); return $return_value; }
/** * Add a subscribe/unsubscribe link to the supported entity types * * @param string $hook "register" * @param string $type "menu:entity" * @param ElggMenuItem[] $return_value the current menu items * @param array $params supplied params * * @return ElggMenuItem[] */ function content_subscriptions_register_entity_menu_hook($hook, $type, $return_value, $params) { if (!elgg_is_logged_in()) { return $return_value; } if (empty($params) || !is_array($params)) { return $return_value; } $entity = elgg_extract("entity", $params); if (empty($entity) || !content_subscriptions_can_subscribe($entity)) { return $return_value; } $subscribed = false; if (content_subscriptions_check_subscription($entity->getGUID())) { $subscribed = true; } $methods = content_subscriptions_get_notification_settings(); if (!empty($methods)) { $return_value[] = ElggMenuItem::factory(array("name" => "content_subscription_subscribe", "text" => elgg_echo("content_subscriptions:subscribe"), "href" => "action/content_subscriptions/subscribe?entity_guid=" . $entity->getGUID(), "is_action" => true, "priority" => 100, "item_class" => $subscribed ? "hidden" : "")); } $return_value[] = ElggMenuItem::factory(array("name" => "content_subscription_unsubscribe", "text" => elgg_echo("content_subscriptions:unsubscribe"), "href" => "action/content_subscriptions/subscribe?entity_guid=" . $entity->getGUID(), "is_action" => true, "priority" => 101, "item_class" => $subscribed ? "" : "hidden")); return $return_value; }
function theme_ffd_questions_body_menu_hook_handler($hook, $type, $return_value, $params) { if (empty($params) || !is_array($params)) { return $return_value; } $entity = elgg_extract("entity", $params); if (empty($params) || !elgg_instanceof($entity, "object", "question")) { return $return_value; } // content subscriptions if (elgg_is_logged_in() && elgg_is_active_plugin("content_subscriptions")) { if (!content_subscriptions_check_subscription($entity->guid)) { $url = "action/content_subscriptions/subscribe?entity_guid=" . $entity->getGUID(); $text = elgg_view_icon('clip', 'mrs') . elgg_echo('theme_ffd:questions:menu:subscribe'); } else { $url = "action/content_subscriptions/subscribe?entity_guid=" . $entity->getGUID(); $text = elgg_view_icon('clip', 'mrs') . elgg_echo('theme_ffd:questions:menu:unsubscribe'); } $return_value[] = ElggMenuItem::factory(array("name" => "content_subscription", "text" => $text, "href" => $url, 'is_action' => true, "priority" => 90)); } // likes if (elgg_is_logged_in() && elgg_is_active_plugin("likes") && $entity->canAnnotate(0, 'likes')) { // likes button if (!elgg_annotation_exists($entity->getGUID(), 'likes')) { $url = "action/likes/add?guid=" . $entity->getGUID(); $text = elgg_view_icon('thumbs-up', 'mrs') . elgg_echo('theme_ffd:likes:questions:menu'); } else { $url = "action/likes/delete?guid=" . $entity->getGUID(); $text = elgg_view_icon('thumbs-up-alt', 'mrs') . elgg_echo('theme_ffd:likes:questions:menu:unlike'); } $return_value[] = ElggMenuItem::factory(array('name' => 'like', 'text' => $text, 'href' => $url, 'is_action' => true, 'priority' => 100)); } // answers $return_value[] = ElggMenuItem::factory(array("name" => "answer", "text" => elgg_view_icon("comment-o", "mrs") . elgg_echo("theme_ffd:answers:questions:menu"), "href" => "questions/view/" . $entity->getGUID() . "#questions-answer-add", "priority" => 400)); return $return_value; }
register_error(elgg_echo("InvalidParameterException:MissingParameter")); forward(REFERER); } $user = get_user($user_guid); $entity = get_entity($entity_guid); if (empty($user) || empty($entity)) { register_error(elgg_echo("InvalidParameterException:NoEntityFound")); forward(REFERER); } // user cant be the owner if ($entity->getOwnerGUID() == $user->getGUID()) { register_error(elgg_echo("content_subscriptions:action:subscribe:error:owner")); forward(REFERER); } // subscribe or unsubscribe if (content_subscriptions_check_subscription($entity->getGUID(), $user->getGUID())) { // unsubscribe if (content_subscriptions_unsubscribe($entity->getGUID(), $user->getGUID())) { system_message(elgg_echo("content_subscriptions:action:subscribe:success:unsubscribe")); } else { register_error(elgg_echo("content_subscriptions:action:subscribe:error:unsubscribe")); } } else { // subscribe if (content_subscriptions_subscribe($entity->getGUID(), $user->getGUID())) { system_message(elgg_echo("content_subscriptions:action:subscribe:success:subscribe")); } else { register_error(elgg_echo("content_subscriptions:action:subscribe:error:subscribe")); } } forward(REFERER);
/** * Unsubscribe a user from updates and set a flag so auto updates don't recreate the updates * * @param int $entity_guid the content entity to unsubscribe from * @param int $user_guid the user to unsubscribe (defaults to current user) * * @return bool */ function content_subscriptions_unsubscribe($entity_guid, $user_guid = 0) { $entity_guid = sanitise_int($entity_guid, false); $user_guid = sanitise_int($user_guid, false); if (empty($user_guid)) { $user_guid = elgg_get_logged_in_user_guid(); } if (empty($entity_guid) || empty($user_guid)) { return false; } // check if we have a subscription $sub = content_subscriptions_check_subscription($entity_guid, $user_guid, true); // make sure we can't autosubscribe add_entity_relationship($user_guid, CONTENT_SUBSCRIPTIONS_BLOCK, $entity_guid); // quick return if no subscriptions if (empty($sub)) { return true; } // remove subscriptions foreach ($sub as $service) { elgg_remove_subscription($user_guid, $service, $entity_guid); } return true; }
<?php $entity = $vars['entity']; $class = $vars['class']; ?> <?php if (elgg_is_logged_in()) { ?> <?php if (content_subscriptions_check_subscription($entity->guid)) { ?> <?php echo elgg_view('output/url', array('href' => '/action/content_subscriptions/subscribe?entity_guid=' . $entity->guid, 'text' => elgg_echo("content_subscriptions:unsubscribe"), 'title' => elgg_echo("content_subscriptions:unsubscribe"), 'is_action' => true, 'class' => $class)); ?> <?php } else { ?> <?php echo elgg_view('output/url', array('href' => '/action/content_subscriptions/subscribe?entity_guid=' . $entity->guid, 'text' => elgg_echo("content_subscriptions:subscribe"), 'title' => elgg_echo("content_subscriptions:subscribe"), 'is_action' => true, 'class' => $class)); ?> <?php } }