/** * 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'); }
/** * 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; }
<?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);
/** * 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; }
<?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);