Пример #1
0
/**
 * This function is called when the Elgg system gets initialized
 *
 * @return void
 */
function newsletter_init()
{
    // register page handler
    elgg_register_page_handler("newsletter", "newsletter_page_handler");
    // Register entity_type for search
    elgg_register_entity_type("object", "newsletter");
    // CSS & JS
    elgg_extend_view("css/elgg", "css/newsletter/site");
    elgg_register_simplecache_view("js/newsletter/embed.js");
    // extend views
    elgg_extend_view("groups/sidebar/my_status", "newsletter/sidebar/subscribe");
    elgg_extend_view("register/extend", "newsletter/register");
    // create group setting
    if (newsletter_is_group_enabled()) {
        add_group_tool_option("newsletter", elgg_echo("newsletter:group:tool_option"), true);
    }
    // widget
    elgg_register_widget_type("newsletter_subscribe", elgg_echo("newsletter:sidebar:subscribe:title"), elgg_echo("newsletter:widget:subscribe:description"), array("index", "groups"));
    // register plugin hooks
    elgg_register_plugin_hook_handler("cron", "hourly", "newsletter_cron_handler");
    elgg_register_plugin_hook_handler("access:collections:write", "all", "newsletter_write_access_handler", 600);
    // needs to be after groups
    elgg_register_plugin_hook_handler("register", "menu:page", "newsletter_register_page_menu_handler");
    elgg_register_plugin_hook_handler("register", "menu:newsletter_steps", "newsletter_register_newsletter_steps_menu_handler");
    elgg_register_plugin_hook_handler("register", "menu:entity", "newsletter_register_entity_menu_handler");
    elgg_register_plugin_hook_handler("register", "menu:owner_block", "newsletter_register_owner_block_menu_handler");
    elgg_register_plugin_hook_handler("register", "menu:filter", "newsletter_register_filter_menu_handler");
    elgg_register_plugin_hook_handler("register", "menu:longtext", "newsletter_register_longtext_menu_handler");
    elgg_register_plugin_hook_handler("register", "menu:newsletter_buttons", "newsletter_register_buttons_menu_handler");
    elgg_register_plugin_hook_handler("register", "menu:longtext", "newsletter_register_longtext_menu_handler");
    elgg_register_plugin_hook_handler("usersettings:save", "user", "newsletter_usersettings_save_handler");
    elgg_register_plugin_hook_handler("register", "user", "newsletter_register_user_handler");
    elgg_register_plugin_hook_handler("entity:icon:url", "object", "newsletter_icon_hook");
    elgg_register_plugin_hook_handler("widget_url", "widget_manager", "newsletter_widget_url_handler");
    elgg_register_plugin_hook_handler("notification_type_subtype", "tag_tools", "newsletter_tag_tools_notifications");
    // extend public pages
    elgg_register_plugin_hook_handler('public_pages', 'walled_garden', 'newsletter_public_pages');
    // register event handlers
    elgg_register_event_handler("upgrade", "system", "newsletter_upgrade_event_handler");
    elgg_register_event_handler("create", "member_of_site", "newsletter_join_site_event_handler");
    // register actions
    elgg_register_action("newsletter/edit", dirname(__FILE__) . "/actions/edit.php");
    elgg_register_action("newsletter/edit/schedule", dirname(__FILE__) . "/actions/edit/schedule.php");
    elgg_register_action("newsletter/edit/content", dirname(__FILE__) . "/actions/edit/content.php");
    elgg_register_action("newsletter/edit/template", dirname(__FILE__) . "/actions/edit/template.php");
    elgg_register_action("newsletter/edit/template_to_custom", dirname(__FILE__) . "/actions/edit/template_to_custom.php");
    elgg_register_action("newsletter/edit/recipients", dirname(__FILE__) . "/actions/edit/recipients.php");
    elgg_register_action("newsletter/delete", dirname(__FILE__) . "/actions/delete.php");
    elgg_register_action("newsletter/send", dirname(__FILE__) . "/actions/send.php");
    elgg_register_action("newsletter/subscribe", dirname(__FILE__) . "/actions/subscribe.php", "public");
    elgg_register_action("newsletter/unsubscribe", dirname(__FILE__) . "/actions/unsubscribe.php", "public");
    elgg_register_action("newsletter/subscriptions", dirname(__FILE__) . "/actions/subscriptions.php");
    elgg_register_action("newsletter/duplicate", dirname(__FILE__) . "/actions/duplicate.php");
    elgg_register_action("newsletter/preview_mail", dirname(__FILE__) . "/actions/preview_mail.php");
    elgg_register_action("newsletter/template/edit", dirname(__FILE__) . "/actions/template/edit.php");
    elgg_register_action("newsletter/template/delete", dirname(__FILE__) . "/actions/template/delete.php");
}
Пример #2
0
/**
 * This function is called when the Elgg system gets initialized
 *
 * @return void
 */
function newsletter_init()
{
    // register page handler
    elgg_register_page_handler('newsletter', '\\ColdTrick\\Newsletter\\PageHandler::newsletter');
    // Register entity_type for search
    elgg_register_entity_type('object', 'newsletter');
    // CSS & JS
    elgg_extend_view('css/elgg', 'css/newsletter.css');
    elgg_register_simplecache_view('js/newsletter/embed.js');
    // extend views
    elgg_extend_view('groups/sidebar/my_status', 'newsletter/sidebar/subscribe');
    elgg_extend_view('register/extend', 'newsletter/register');
    // create group setting
    if (newsletter_is_group_enabled()) {
        add_group_tool_option('newsletter', elgg_echo('newsletter:group:tool_option'), true);
    }
    // widget
    elgg_register_widget_type('newsletter_subscribe', elgg_echo('newsletter:sidebar:subscribe:title'), elgg_echo('newsletter:widget:subscribe:description'), ['index', 'groups']);
    // register plugin hooks
    elgg_register_plugin_hook_handler('cron', 'hourly', '\\ColdTrick\\Newsletter\\Cron::sendNewsletters');
    elgg_register_plugin_hook_handler('access:collections:write', 'all', '\\ColdTrick\\Newsletter\\Access::writeAccessCollections', 600);
    // needs to be after groups
    elgg_register_plugin_hook_handler('register', 'menu:page', '\\ColdTrick\\Newsletter\\Menus::pageRegister');
    elgg_register_plugin_hook_handler('register', 'menu:newsletter_steps', '\\ColdTrick\\Newsletter\\Menus::newsletterSteps');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\Newsletter\\Menus::entityRegister');
    elgg_register_plugin_hook_handler('register', 'menu:owner_block', '\\ColdTrick\\Newsletter\\Menus::ownerBlockRegister');
    elgg_register_plugin_hook_handler('register', 'menu:filter', '\\ColdTrick\\Newsletter\\Menus::filterRegister');
    elgg_register_plugin_hook_handler('register', 'menu:newsletter_buttons', '\\ColdTrick\\Newsletter\\Menus::newsletterButtonsRegister');
    elgg_register_plugin_hook_handler('register', 'menu:longtext', '\\ColdTrick\\Newsletter\\Menus::longtextRegister');
    elgg_register_plugin_hook_handler('usersettings:save', 'user', '\\ColdTrick\\Newsletter\\User::convertEmailSubscriptionToUserSetting');
    elgg_register_plugin_hook_handler('register', 'user', '\\ColdTrick\\Newsletter\\User::subscribeToSiteNewsletter');
    elgg_register_plugin_hook_handler('widget_url', 'widget_manager', '\\ColdTrick\\Newsletter\\Widgets::widgetURL');
    elgg_register_plugin_hook_handler('notification_type_subtype', 'tag_tools', '\\ColdTrick\\Newsletter\\TagTools::notificationTypeSubtype');
    elgg_register_plugin_hook_handler('likes:is_likable', 'object:' . \Newsletter::SUBTYPE, '\\Elgg\\Values::getTrue');
    // extend public pages
    elgg_register_plugin_hook_handler('public_pages', 'walled_garden', '\\ColdTrick\\Newsletter\\Site::publicPages');
    // register event handlers
    elgg_register_event_handler('upgrade', 'system', '\\ColdTrick\\Newsletter\\Upgrade::urlPostfix');
    elgg_register_event_handler('create', 'relationship', '\\ColdTrick\\Newsletter\\Site::join');
    // register actions
    elgg_register_action('newsletter/edit', dirname(__FILE__) . '/actions/edit.php');
    elgg_register_action('newsletter/edit/schedule', dirname(__FILE__) . '/actions/edit/schedule.php');
    elgg_register_action('newsletter/edit/content', dirname(__FILE__) . '/actions/edit/content.php');
    elgg_register_action('newsletter/edit/template', dirname(__FILE__) . '/actions/edit/template.php');
    elgg_register_action('newsletter/edit/template_to_custom', dirname(__FILE__) . '/actions/edit/template_to_custom.php');
    elgg_register_action('newsletter/edit/recipients', dirname(__FILE__) . '/actions/edit/recipients.php');
    elgg_register_action('newsletter/delete', dirname(__FILE__) . '/actions/delete.php');
    elgg_register_action('newsletter/send', dirname(__FILE__) . '/actions/send.php');
    elgg_register_action('newsletter/subscribe', dirname(__FILE__) . '/actions/subscribe.php', 'public');
    elgg_register_action('newsletter/unsubscribe', dirname(__FILE__) . '/actions/unsubscribe.php', 'public');
    elgg_register_action('newsletter/subscriptions', dirname(__FILE__) . '/actions/subscriptions.php');
    elgg_register_action('newsletter/duplicate', dirname(__FILE__) . '/actions/duplicate.php');
    elgg_register_action('newsletter/preview_mail', dirname(__FILE__) . '/actions/preview_mail.php');
    elgg_register_action('newsletter/template/edit', dirname(__FILE__) . '/actions/template/edit.php');
    elgg_register_action('newsletter/template/delete', dirname(__FILE__) . '/actions/template/delete.php');
}
Пример #3
0
 /**
  * Add a menu item in the owner block menu of a group
  *
  * @param string $hook        name of the hook
  * @param string $type        type of the hook
  * @param array  $returnvalue Default menu items
  * @param array  $params      params for the hook
  *
  * @return array Menu items
  */
 public static function ownerBlockRegister($hook, $type, $returnvalue, $params)
 {
     $entity = elgg_extract('entity', $params);
     if (!elgg_instanceof($entity, 'group')) {
         return;
     }
     if (!newsletter_is_group_enabled($entity)) {
         return;
     }
     $returnvalue[] = \ElggMenuItem::factory(['name' => 'newsletter', 'text' => elgg_echo('newsletter:menu:owner_block:group'), 'href' => 'newsletter/group/' . $entity->getGUID(), 'is_trusted' => true]);
     return $returnvalue;
 }
Пример #4
0
<?php

/**
 * (un)subscribe to the newsletter of the container entity
 * This is shown in the sidebar
 *
 * @uses	$vars['entity']	The container entity to (un)subscribe to/from
 */
$entity = elgg_extract("entity", $vars);
$display_subbox = false;
if (elgg_instanceof($entity, "group")) {
    if (newsletter_is_group_enabled($entity)) {
        $display_subbox = true;
    }
} else {
    $display_subbox = true;
}
if ($display_subbox) {
    $title = elgg_echo("newsletter:sidebar:subscribe:title");
    $content = elgg_view_form("newsletter/subscribe", array(), array("entity" => $entity));
    echo elgg_view_module("aside", $title, $content);
}
Пример #5
0
/**
 * Add a menu item in the owner block menu of a group
 *
 * @param string $hook        name of the hook
 * @param string $type        type of the hook
 * @param array  $returnvalue Default menu items
 * @param array  $params      params for the hook
 *
 * @return array Menu items
 */
function newsletter_register_owner_block_menu_handler($hook, $type, $returnvalue, $params)
{
    $result = $returnvalue;
    if (!empty($params) && is_array($params)) {
        $entity = elgg_extract("entity", $params);
        if (!empty($entity) && elgg_instanceof($entity, "group")) {
            if (newsletter_is_group_enabled($entity)) {
                $result[] = ElggMenuItem::factory(array("name" => "newsletter", "text" => elgg_echo("newsletter:menu:owner_block:group"), "href" => "newsletter/group/" . $entity->getGUID(), "is_trusted" => true));
            }
        }
    }
    return $result;
}
Пример #6
0
<?php

/**
 * List all the newsletter in this group
 *
 * @uses elgg_get_page_owner_entity() the group to list the newsletter from
 */
$filter = false;
$page_owner = elgg_get_page_owner_entity();
if (empty($page_owner) || !elgg_instanceof($page_owner, 'group')) {
    register_error(elgg_echo('pageownerunavailable', [elgg_get_page_owner_guid()]));
    forward(REFERER);
}
if (!newsletter_is_group_enabled($page_owner)) {
    register_error(elgg_echo('newsletter:group:error:not_enabled'));
    forward($page_owner->getURL());
}
// build breadcrumb
elgg_push_breadcrumb(elgg_echo('newsletter:breadcrumb:site'), 'newsletter/site');
elgg_push_breadcrumb($page_owner->name);
// build page elements
if ($page_owner->canEdit()) {
    elgg_register_title_button();
    $filter = get_input('filter');
    if (empty($filter)) {
        $filter = 'concept';
        // input is used in filter tabs also
        set_input('filter', $filter);
    }
}
$title_text = elgg_echo('newsletter:group:title', [$page_owner->name]);
Пример #7
0
 */
elgg_gatekeeper();
elgg_require_js("newsletter/edit");
$page_owner = elgg_get_page_owner_entity();
$container_guid = 0;
// check if we have access
if (elgg_instanceof($page_owner, "user")) {
    // access to site newsletters is only for admins
    if ($page_owner->isAdmin()) {
        $container_guid = elgg_get_site_entity()->getGUID();
    } else {
        forward(REFERER);
    }
} elseif (elgg_instanceof($page_owner, "group")) {
    // only for group owners/admins
    if (newsletter_is_group_enabled($page_owner) && $page_owner->canEdit()) {
        $container_guid = $page_owner->getGUID();
    } else {
        forward(REFERER);
    }
} else {
    forward(REFERER);
}
// breadcrumb
elgg_push_breadcrumb(elgg_echo("newsletter:breadcrumb:site"), "newsletter/site");
if (elgg_instanceof($page_owner, "group")) {
    elgg_push_breadcrumb($page_owner->name, "newsletter/group/" . $page_owner->getGUID());
}
elgg_push_breadcrumb(elgg_echo("add"));
// build page elements
$title_text = elgg_echo("newsletter:add:title");
Пример #8
0
$options = array("types" => array("site", "group"), "relationship" => NewsletterSubscription::SUBSCRIPTION, "relationship_guid" => $entity->getGUID(), "limit" => false, "wheres" => array("(e.guid NOT IN (" . implode(",", $processed_subscriptions) . "))"));
$subscriptions = elgg_get_entities_from_relationship($options);
if (!empty($subscriptions)) {
    $title = elgg_echo("newsletter:subscriptions:other:title");
    $content = elgg_view("output/longtext", array("value" => elgg_echo("newsletter:subscriptions:other:description"), "class" => "mtn mbs"));
    $content .= "<table class='elgg-table-alt'>";
    $content .= "<tr>";
    $content .= "<th>&nbsp;</th>";
    $content .= "<th class='newsletter-settings-small'>" . elgg_echo("on") . "</th>";
    $content .= "<th class='newsletter-settings-small'>" . elgg_echo("off") . "</th>";
    $content .= "</tr>";
    $subscriptions_order = array();
    $subscriptions_content = array();
    foreach ($subscriptions as $subscription) {
        // check if group and enabled or site
        if (elgg_instanceof($subscription, "site") || elgg_instanceof($subscription, "group") && newsletter_is_group_enabled($subscription)) {
            $subscriptions_order[$subscription->getGUID()] = $subscription->name;
            $on = "";
            $off = "checked='checked'";
            if (newsletter_check_user_subscription($entity, $subscription)) {
                $on = "checked='checked'";
                $off = "";
            }
            $subscriptions_content[$subscription->getGUID()] = "<tr>";
            $subscriptions_content[$subscription->getGUID()] .= "<td>" . $subscription->name . "</td>";
            $subscriptions_content[$subscription->getGUID()] .= "<td class='newsletter-settings-small'><input type='radio' name='subscriptions[" . $subscription->getGUID() . "]' value='1' " . $on . " /></td>";
            $subscriptions_content[$subscription->getGUID()] .= "<td class='newsletter-settings-small'><input type='radio' name='subscriptions[" . $subscription->getGUID() . "]' value='0' " . $off . " /></td>";
            $subscriptions_content[$subscription->getGUID()] .= "</tr>";
        }
    }
    natcasesort($subscriptions_order);
Пример #9
0
        $content .= elgg_format_element('table', ['class' => 'elgg-table-alt'], $rows);
        echo elgg_view_module('info', elgg_echo('newsletter:subscriptions:groups:title'), $content);
    }
}
// other group subscriptions
$subscriptions = elgg_get_entities_from_relationship(['types' => ['site', 'group'], 'relationship' => NewsletterSubscription::SUBSCRIPTION, 'relationship_guid' => $entity->getGUID(), 'limit' => false, 'wheres' => ['(e.guid NOT IN (' . implode(',', $processed_subscriptions) . '))']]);
if (!empty($subscriptions)) {
    $header_row = elgg_format_element('th', [], '&nbsp;');
    $header_row .= elgg_format_element('th', ['class' => 'newsletter-settings-small'], elgg_echo('on'));
    $header_row .= elgg_format_element('th', ['class' => 'newsletter-settings-small'], elgg_echo('off'));
    $rows = elgg_format_element('tr', [], $header_row);
    $subscriptions_order = [];
    $subscriptions_content = [];
    foreach ($subscriptions as $subscription) {
        // check if group and enabled or site
        if (elgg_instanceof($subscription, 'site') || elgg_instanceof($subscription, 'group') && newsletter_is_group_enabled($subscription)) {
            $subscriptions_order[$subscription->getGUID()] = $subscription->name;
            $has_subscription = newsletter_check_user_subscription($entity, $subscription);
            $subscription_row_data = elgg_format_element('td', [], $subscription->name);
            $subscription_row_data .= elgg_format_element('td', ['class' => 'newsletter-settings-small'], elgg_view('input/radio', ['name' => "subscriptions[{$subscription->getGUID()}]", 'value' => '1', 'checked' => $has_subscription]));
            $subscription_row_data .= elgg_format_element('td', ['class' => 'newsletter-settings-small'], elgg_view('input/radio', ['name' => "subscriptions[{$subscription->getGUID()}]", 'value' => '0', 'checked' => !$has_subscription]));
            $subscriptions_content[$subscription->getGUID()] = elgg_format_element('tr', [], $subscription_row_data);
        }
    }
    natcasesort($subscriptions_order);
    foreach ($subscriptions_order as $guid => $dummy) {
        $rows .= $subscriptions_content[$guid];
    }
    $content = elgg_view('output/longtext', ['value' => elgg_echo('newsletter:subscriptions:other:description'), 'class' => 'mtn mbs']);
    $content .= elgg_format_element('table', ['class' => 'elgg-table-alt'], $rows);
    echo elgg_view_module('info', elgg_echo('newsletter:subscriptions:other:title'), $content);