Пример #1
0
 /**
  * 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;
 }
Пример #2
0
/**
 * 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;
}
Пример #3
0
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;
}
Пример #4
0
    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);
Пример #5
0
/**
 * 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;
}
Пример #6
0
<?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 
    }
}