Example #1
0
/**
 * Initializes the static plugin
 *
 * @return void
 */
function static_init()
{
    // register page handler for nice URL's
    elgg_register_page_handler('static', '\\ColdTrick\\StaticPages\\PageHandler::staticHandler');
    elgg_extend_view('css/elgg', 'css/static/site.css');
    elgg_register_ajax_view('static/ajax/menu_static_edit');
    // Register for search
    elgg_register_entity_type('object', 'static');
    // groups
    if (static_group_enabled()) {
        add_group_tool_option('static', elgg_echo('static:groups:tool_option'), true);
        elgg_register_widget_type('static_groups', elgg_echo('static:widgets:static_groups:title'), elgg_echo('static:widgets:static_groups:description'), ['groups']);
    }
    // events
    elgg_register_event_handler('create', 'object', '\\ColdTrick\\StaticPages\\Notifications::notifyLastEditor');
    elgg_register_event_handler('create', 'object', '\\ColdTrick\\StaticPages\\Cache::resetMenuCache');
    elgg_register_event_handler('update', 'object', '\\ColdTrick\\StaticPages\\Cache::resetMenuCache');
    elgg_register_event_handler('delete', 'object', '\\ColdTrick\\StaticPages\\Cache::resetMenuCache');
    elgg_register_event_handler('upgrade', 'system', '\\ColdTrick\\StaticPages\\Upgrade::migrateTreeStructure');
    elgg_register_event_handler('upgrade', 'system', '\\ColdTrick\\StaticPages\\Upgrade::registerClass');
    elgg_register_event_handler('upgrade', 'system', '\\ColdTrick\\StaticPages\\Upgrade::migrateContainers');
    elgg_register_event_handler('cache:flush', 'system', '\\ColdTrick\\StaticPages\\Cache::resetAllCache');
    // plugin hooks
    elgg_register_plugin_hook_handler('entity:url', 'object', '\\ColdTrick\\StaticPages\\Widgets::widgetURL');
    elgg_register_plugin_hook_handler('permissions_check', 'object', '\\ColdTrick\\StaticPages\\Permissions::objectPermissionsCheck');
    elgg_register_plugin_hook_handler('container_permissions_check', 'all', '\\ColdTrick\\StaticPages\\Permissions::containerPermissionsCheck');
    elgg_register_plugin_hook_handler('register', 'menu:owner_block', '\\ColdTrick\\StaticPages\\Menus::ownerBlockMenuRegister');
    elgg_register_plugin_hook_handler('register', 'menu:filter', '\\ColdTrick\\StaticPages\\Menus::filterMenuRegister');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\StaticPages\\Menus::entityMenuRegister');
    elgg_register_plugin_hook_handler('register', 'menu:page', '\\ColdTrick\\StaticPages\\Menus::registerAdminPageMenuItems');
    elgg_register_plugin_hook_handler('register', 'menu:static_edit', '\\ColdTrick\\StaticPages\\Menus::registerStaticEditMenuItems');
    elgg_register_plugin_hook_handler('prepare', 'menu:page', '\\ColdTrick\\StaticPages\\Menus::pageMenuPrepare');
    elgg_register_plugin_hook_handler('entity_types', 'content_subscriptions', '\\ColdTrick\\StaticPages\\ContentSubscriptions::entityTypes');
    elgg_register_plugin_hook_handler('group_tool_widgets', 'widget_manager', '\\ColdTrick\\StaticPages\\Widgets::groupToolWidgets');
    elgg_register_plugin_hook_handler('autocomplete', 'search_advanced', '\\ColdTrick\\StaticPages\\Search::searchAdvancedAutocomplete');
    elgg_register_plugin_hook_handler('cron', 'daily', '\\ColdTrick\\StaticPages\\Cron::daily');
    elgg_register_plugin_hook_handler('likes:is_likable', 'object:' . \StaticPage::SUBTYPE, '\\Elgg\\Values::getTrue');
    elgg_register_plugin_hook_handler('supported_types', 'entity_tools', '\\ColdTrick\\StaticPages\\MigrateStatic::supportedSubtypes');
    // actions
    elgg_register_action('static/edit', dirname(__FILE__) . '/actions/edit.php');
    elgg_register_action('static/delete', dirname(__FILE__) . '/actions/delete.php');
    elgg_register_action('static/reorder', dirname(__FILE__) . '/actions/reorder.php');
    elgg_register_action('static/reorder_root_pages', dirname(__FILE__) . '/actions/reorder_root_pages.php');
    elgg_register_action('static/upgrades/migrate_containers', dirname(__FILE__) . '/actions/upgrades/migrate_containers.php', 'admin');
}
Example #2
0
 /**
  * Add or remove widgets based on the group tool option
  *
  * @param string $hook         'group_tool_widgets'
  * @param string $type         'widget_manager'
  * @param array  $return_value current enable/disable widget handlers
  * @param array  $params       supplied params
  *
  * @return array
  */
 public static function groupToolWidgets($hook, $type, $return_value, $params)
 {
     $entity = elgg_extract('entity', $params);
     if (!elgg_instanceof($entity, 'group')) {
         return;
     }
     if (!is_array($return_value)) {
         $return_value = [];
     }
     if (!isset($return_value['enable'])) {
         $return_value['enable'] = [];
     }
     if (!isset($return_value['disable'])) {
         $return_value['disable'] = [];
     }
     if (static_group_enabled($entity)) {
         $return_value['enable'][] = 'static_groups';
     } else {
         $return_value['disable'][] = 'static_groups';
     }
     return $return_value;
 }
Example #3
0
<?php

$widget = elgg_extract('entity', $vars);
$group = $widget->getOwnerEntity();
if (empty($group) || !elgg_instanceof($group, 'group')) {
    return;
}
if (!static_group_enabled($group)) {
    return;
}
$can_write = $group->canWriteToContainer(0, 'object', 'static');
if ($can_write) {
    $ia = elgg_set_ignore_access(true);
}
$entities = elgg_get_entities(['type' => 'object', 'subtype' => StaticPage::SUBTYPE, 'limit' => false, 'container_guid' => $group->getGUID(), 'joins' => ['JOIN ' . elgg_get_config('dbprefix') . 'objects_entity oe ON e.guid = oe.guid'], 'order_by' => 'oe.title asc']);
if ($entities) {
    $ordered_entities = [];
    foreach ($entities as $index => $entity) {
        $order = $entity->order;
        if (empty($order)) {
            $order = 1000000 + $index;
        }
        $ordered_entities[$order] = elgg_view('object/static/widget', ['entity' => $entity]);
    }
    ksort($ordered_entities);
    echo implode($ordered_entities);
} else {
    echo elgg_echo('static:admin:empty');
}
if ($can_write) {
    elgg_set_ignore_access($ia);
Example #4
0
 /**
  * Add menu items to the owner block menu
  *
  * @param string         $hook         'register'
  * @param string         $type         'menu:owner_block'
  * @param ElggMenuItem[] $return_value the menu items
  * @param array          $params       supplied params
  *
  * @return ElggMenuItem[]
  */
 public static function ownerBlockMenuRegister($hook, $type, $return_value, $params)
 {
     $owner = elgg_extract('entity', $params);
     if (empty($owner) || !elgg_instanceof($owner, 'group')) {
         return;
     }
     if (!static_group_enabled($owner)) {
         return;
     }
     $return_value[] = \ElggMenuItem::factory(['name' => 'static', 'text' => elgg_echo('static:groups:owner_block'), 'href' => "static/group/{$owner->getGUID()}"]);
     return $return_value;
 }
Example #5
0
<?php

elgg_gatekeeper();
elgg_group_gatekeeper();
if (!static_out_of_date_enabled()) {
    forward(REFERER);
}
$page_owner = elgg_get_page_owner_entity();
if (!$page_owner instanceof ElggGroup) {
    register_error(elgg_echo('pageownerunavailable', [elgg_get_page_owner_guid()]));
    forward(REFERER);
}
if (!static_group_enabled($page_owner)) {
    forward(REFERER);
}
if (!$page_owner->canEdit()) {
    register_error(elgg_echo('limited_access'));
    forward(REFERER);
}
$days = (int) elgg_get_plugin_setting('out_of_date_days', 'static');
$options = ['type' => 'object', 'subtype' => StaticPage::SUBTYPE, 'owner_guid' => $page_owner->getGUID(), 'modified_time_upper' => time() - $days * 24 * 60 * 60, 'order_by' => 'e.time_updated DESC', 'no_results' => elgg_echo('static:out_of_date:none'), 'item_view' => 'object/static/simple'];
$title_text = elgg_echo('static:out_of_date:title');
$filter = elgg_view('page/layouts/elements/filter');
$body = elgg_list_entities($options);
// build page
$page_data = elgg_view_layout('content', ['title' => $title_text, 'content' => $body, 'filter' => $filter]);
// draw page
echo elgg_view_page($title_text, $page_data);