/** * Only site announcement editors can access this part * * @return void */ function site_announcements_editor_gatekeeper() { elgg_gatekeeper(); if (!site_announcements_is_editor()) { register_error(elgg_echo('limited_access')); forward(REFERER); } }
/** * Change the filter menu items for site announcements * * @param string $hook the name of the hook * @param string $type the type of the hook * @param \ElggMenuItem[] $returnvalue current returnvalue * @param array $params supplied params * * @return \ElggMenuItem[] */ public static function register($hook, $type, $returnvalue, $params) { if (empty($params) || !is_array($params)) { return $returnvalue; } if (!elgg_in_context('announcements')) { return $returnvalue; } // reset menu items $returnvalue = array(); $returnvalue[] = \ElggMenuItem::factory(array('name' => 'all', 'text' => elgg_echo('site_annoucements:filter:active'), 'href' => 'announcements/all', 'priority' => 100, 'is_trusted' => true)); $returnvalue[] = \ElggMenuItem::factory(array('name' => 'archive', 'text' => elgg_echo('site_annoucements:filter:archive'), 'href' => 'announcements/archive', 'priority' => 200, 'is_trusted' => true)); if (site_announcements_is_editor()) { $returnvalue[] = \ElggMenuItem::factory(array('name' => 'scheduled', 'text' => elgg_echo('site_annoucements:filter:scheduled'), 'href' => 'announcements/scheduled', 'priority' => 300, 'is_trusted' => true)); $returnvalue[] = \ElggMenuItem::factory(array('name' => 'editors', 'text' => elgg_echo('site_annoucements:filter:editors'), 'href' => 'announcements/editors', 'priority' => 400, 'is_trusted' => true)); } return $returnvalue; }
/** * Add a menu item to the user hover menu * * @param string $hook the name of the hook * @param string $type the type of the hook * @param \ElggMenuItem[] $returnvalue current returnvalue * @param array $params supplied params * * @return \ElggMenuItem[] */ public static function register($hook, $type, $returnvalue, $params) { if (!elgg_is_admin_logged_in()) { return $returnvalue; } if (empty($params) || !is_array($params)) { return $returnvalue; } $entity = elgg_extract("entity", $params); if (empty($entity) || !elgg_instanceof($entity, "user")) { return $returnvalue; } if ($entity->isAdmin()) { // user is already admin return $returnvalue; } $is_editor = site_announcements_is_editor($entity); $returnvalue[] = \ElggMenuItem::factory(array('name' => 'announcement_make_editor', 'text' => elgg_echo('site_announcements:user_hover:make_editor'), 'href' => "action/site_announcements/toggle_editor?user_guid={$entity->getGUID()}", 'item_class' => $is_editor ? 'hidden' : '', 'section' => 'admin', 'priority' => 400)); $returnvalue[] = \ElggMenuItem::factory(array('name' => 'announcement_remove_editor', 'text' => elgg_echo('site_announcements:user_hover:remove_editor'), 'href' => "action/site_announcements/toggle_editor?user_guid={$entity->getGUID()}", 'item_class' => $is_editor ? '' : 'hidden', 'section' => 'admin', 'priority' => 401)); return $returnvalue; }
<?php $user_guid = (int) get_input('user_guid'); $user = get_user($user_guid); if (empty($user)) { register_error(elgg_echo('error:missing_data')); forward(REFERER); } if ($user->isAdmin()) { register_error(elgg_echo('site_announcements:action:toggle_editor:error:is_admin', array($user->name))); forward(REFERER); } if (site_announcements_is_editor($user)) { elgg_unset_plugin_user_setting('editor', $user->getGUID(), 'site_announcements'); system_message(elgg_echo('site_announcements:action:toggle_editor:unmake', array($user->name))); } else { elgg_set_plugin_user_setting('editor', time(), $user->getGUID(), 'site_announcements'); system_message(elgg_echo('site_announcements:action:toggle_editor:make', array($user->name))); } forward(REFERER);
<?php /** * List all currently active announcements */ // breadcrumb elgg_push_breadcrumb(elgg_echo('site_annoucements')); // add button if (site_announcements_is_editor()) { elgg_register_title_button(); } // build page elements $title = elgg_echo('site_annoucements:all:title'); $options = array('type' => 'object', 'subtype' => SITE_ANNOUNCEMENT_SUBTYPE, 'order_by_metadata' => array('name' => 'startdate', 'as' => 'integer', 'direction' => 'DESC'), 'metadata_name_value_pairs' => array(array('name' => 'startdate', 'value' => time(), 'operand' => '<='), array('name' => 'enddate', 'value' => time(), 'operand' => '>')), 'no_results' => elgg_echo('site_annoucements:all:none')); $content = elgg_list_entities_from_metadata($options); // build page $page_data = elgg_view_layout('content', array('title' => $title, 'content' => $content)); // draw page echo elgg_view_page($title, $page_data);
/** * Check the write permissions * * @param string $hook the name of the hook * @param string $type the type of the hook * @param array $returnvalue current returnvalue * @param array $params supplied params * * @return bool */ public static function permissionsCheck($hook, $type, $returnvalue, $params) { if ($returnvalue) { // already allowed return $returnvalue; } if (empty($params) || !is_array($params)) { return $returnvalue; } $user = elgg_extract('user', $params); $entity = elgg_extract('entity', $params); if (empty($user) || !elgg_instanceof($user, 'user')) { return $returnvalue; } if (empty($entity) || !elgg_instanceof($entity, 'object', SITE_ANNOUNCEMENT_SUBTYPE)) { return $returnvalue; } if (site_announcements_is_editor($user)) { return true; } return $returnvalue; }