/** * 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()); }
/** * 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()); }
/** * 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; }
$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 {