/** * Adds the filter menu for todos * * @param string $hook name of the hook * @param string $type type of the hook * @param ElggMenuItem[] $return return value * @param array $params hook parameters * * @return ElggMenuItem[] */ function todos_filter_menu_register($hook, $type, $return, $params) { if (elgg_get_context() !== 'todos') { return $return; } $page_owner = elgg_get_page_owner_entity(); if (todos_enabled_for_container($page_owner)) { $base_url = 'todos'; if (elgg_instanceof($page_owner, 'group')) { $base_url .= "/group/{$page_owner->getGUID()}/all"; } $return[] = ElggMenuItem::factory(array('name' => 'active', 'text' => elgg_echo('todos:filter:active'), 'href' => $base_url)); $return[] = ElggMenuItem::factory(array('name' => 'completed', 'text' => elgg_echo('todos:filter:completed'), 'href' => "{$base_url}?filter=completed")); if ($page_owner instanceof ElggGroup) { $return[] = ElggMenuItem::factory(array('name' => 'assigned_per_user', 'text' => elgg_echo('todos:filter:assigned_per_user'), 'href' => "todos/assigned_per_user/{$page_owner->getGUID()}")); } $return[] = ElggMenuItem::factory(array('name' => 'overdue', 'text' => elgg_echo('todos:filter:overdue'), 'href' => "{$base_url}?filter=overdue")); } $user = elgg_get_logged_in_user_entity(); if (!empty($user)) { $href = "todos/assigned/{$user->username}"; if (elgg_instanceof($page_owner, 'group')) { $href .= "/{$page_owner->getGUID()}"; } $return[] = ElggMenuItem::factory(array('name' => 'assigned', 'text' => elgg_echo('todos:filter:assigned'), 'href' => $href)); } return $return; }
<?php $page_owner = elgg_get_page_owner_entity(); if (!$page_owner instanceof ElggGroup) { forward(REFERER); } if (!todos_enabled_for_container($page_owner)) { forward(REFERER); } // breadcrumb elgg_push_breadcrumb(elgg_echo('todos'), "todos/group/{$page_owner->getGUID()}/all"); elgg_push_breadcrumb($page_owner->name); // build page elements $title = elgg_echo('todos:filter:assigned_per_user'); $filter_tabs = elgg_view_menu('filter', array('sort_by' => 'priority', 'class' => 'elgg-menu-hz')); $sidebar = elgg_view('todos/sidebar'); // get items $dbprefix = elgg_get_config('dbprefix'); $options = array('type' => 'object', 'subtype' => TodoItem::SUBTYPE, 'limit' => false, 'pagination' => false, 'metadata_name_value_pairs' => array(), 'joins' => array("JOIN {$dbprefix}entities ce ON e.container_guid = ce.guid"), 'wheres' => array("ce.container_guid = {$page_owner->getGUID()}")); // filter options $filters = get_input('filters'); // show completed if (!elgg_extract('show_completed', $filters)) { $options['metadata_name_value_pairs'][] = array('name' => 'order', 'value' => 0, 'operand' => '>='); } // due date filters $date_filter = elgg_extract('date', $filters); switch ($date_filter) { case 'today': $options['metadata_name_value_pairs'][] = array('name' => 'due', 'value' => mktime(0, 0, 0), 'operand' => '>='); $options['metadata_name_value_pairs'][] = array('name' => 'due', 'value' => mktime(0, 0, 0) + 24 * 60 * 60, 'operand' => '<=');