예제 #1
0
파일: Likes.php 프로젝트: lorea/Hydra-dev
 /**
  * Listen to the creation of an annotation, if Like check auto subscribe
  *
  * @param string          $event  the name of the event
  * @param string          $type   the type of the event
  * @param \ElggAnnotation $annotation the created annotation
  *
  * @return void
  */
 public static function create($event, $type, $annotation)
 {
     if (!self::autoSubscribe()) {
         // auto subscribe isn't enabled
         return;
     }
     if (empty($annotation) || !$annotation instanceof \ElggAnnotation) {
         // not an annotation
         return;
     }
     if ($annotation->name !== 'likes') {
         // not likes
         return;
     }
     $entity = $annotation->getEntity();
     if (empty($entity) || !$entity instanceof \ElggEntity) {
         return;
     }
     $user = $annotation->getOwnerEntity();
     if (empty($user) || !$user instanceof \ElggUser) {
         return;
     }
     if (!content_subscriptions_can_subscribe($entity, $user->getGUID())) {
         // subscribing isn't allowed for this entity type/subtype
         return;
     }
     // auto subscribe to this entity
     content_subscriptions_autosubscribe($entity->getGUID(), $user->getGUID());
 }
예제 #2
0
 /**
  * Subscribe to a question when you create a comment on an answer
  *
  * @param string      $event
  * @param string      $type
  * @param \ElggObject $object
  *
  * @return void
  */
 public static function createCommentOnAnswer($event, $type, \ElggObject $object)
 {
     if (!elgg_is_active_plugin('content_subscriptions')) {
         return;
     }
     if (!$object instanceof \ElggComment) {
         return;
     }
     $answer = $object->getContainerEntity();
     if (!$answer instanceof \ElggAnswer) {
         return;
     }
     $owner = $object->getOwnerEntity();
     $question = $answer->getContainerEntity();
     if (!content_subscriptions_can_subscribe($question, $owner->getGUID())) {
         return;
     }
     // subscribe to the question
     content_subscriptions_autosubscribe($question->getGUID(), $owner->getGUID());
 }
예제 #3
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;
 }
예제 #4
0
파일: hooks.php 프로젝트: lorea/Hydra-dev
/**
 * 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;
}
예제 #5
0
파일: upgrade.php 프로젝트: lorea/Hydra-dev
         $upgrade->setCompleted();
     }
     break;
 }
 $options["count"] = false;
 $options["offset"] = $offset;
 $options["limit"] = $limit;
 $users = elgg_get_entities_from_relationship($options);
 foreach ($users as $user) {
     $error_counter = 0;
     $subscription_options = array("relationship" => CONTENT_SUBSCRIPTIONS_SUBSCRIPTION, "relationship_guid" => $user->getGUID(), "limit" => false);
     $batch = new ElggBatch("elgg_get_entities_from_relationship", $subscription_options);
     $batch->setIncrementOffset(false);
     foreach ($batch as $entity) {
         // for some reason you can't subscribe
         if (!content_subscriptions_can_subscribe($entity, $user->getGUID())) {
             if (!remove_entity_relationship($user->getGUID(), CONTENT_SUBSCRIPTIONS_SUBSCRIPTION, $entity->getGUID())) {
                 $error_counter++;
             }
             continue;
         }
         // subscribe the new way
         content_subscriptions_subscribe($entity->getGUID(), $user->getGUID());
         // remove old link
         if (!remove_entity_relationship($user->getGUID(), CONTENT_SUBSCRIPTIONS_SUBSCRIPTION, $entity->getGUID())) {
             $error_counter++;
         }
     }
     if ($error_counter > 0) {
         $error_count++;
     } else {