/** * Render select_default_assignment_filter control * * Parameters: * * - user - User - User using the page * - value - integer - ID of selected filter * - optional - boolean - Value is optional? * * @param array $params * @param Smarty $smarty * @return string */ function smarty_function_select_default_assignment_filter($params, &$smarty) { $user = array_var($params, 'user', null, true); $value = array_var($params, 'value', null, true); $optional = array_var($params, 'optional', true, true); $default_filter_id = (int) ConfigOptions::getValue('default_assignments_filter'); $default_filter = $default_filter_id ? AssignmentFilters::findById($default_filter_id) : null; $options = array(); if (instance_of($default_filter, 'AssignmentFilter') && $optional) { $options[] = option_tag(lang('-- System Default (:filter) --', array('filter' => $default_filter->getName())), ''); } // if $grouped_filters = AssignmentFilters::findGrouped($user, true); if (is_foreachable($grouped_filters)) { foreach ($grouped_filters as $group_name => $filters) { $group_options = array(); foreach ($filters as $filter) { $group_options[] = option_tag($filter->getName(), $filter->getId(), array('selected' => $value == $filter->getId())); } // foreach if (count($options) > 0) { $options[] = option_tag('', ''); } // if $options[] = option_group_tag($group_name, $group_options); } // foreach } // if return select_box($options, $params); }
/** * Return all filters grouped by group name * * @param User $user * @param boolean $skip_private * @return array */ function findGrouped($user = null, $skip_private = false) { $result = null; $conditions = null; if (instance_of($user, 'User')) { $conditions = array('is_private = ? OR (is_private = ? AND created_by_id = ?)', false, true, $user->getId()); } elseif ($skip_private) { $conditions = array('is_private = ?', false); } // if $all = AssignmentFilters::find(array('conditions' => $conditions, 'order' => 'group_name, name')); if (is_foreachable($all)) { $result = array(); $other_filters = array(); foreach ($all as $filter) { if ($group_name = $filter->getGroupName()) { if (!isset($result[$group_name])) { $result[$group_name] = array(); } // if $result[$group_name][] = $filter; } else { $other_filters[] = $filter; } // if } // foreach if (count($other_filters)) { $result[lang('Other')] = $other_filters; } } // if return $result; }
/** * Handle on_object_deleted event * * @param ApplicationObject $object * @return null */ function resources_handle_on_object_deleted($object) { if (instance_of($object, 'User')) { AssignmentFilters::cleanByUser($object); } // if }
/** * Render RSS feed for a spcific filter * * @param void * @return null */ function rss() { if ($this->active_filter->isNew()) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if if (!$this->active_filter->canUse($this->logged_user)) { $this->httpError(HTTP_ERR_FORBIDDEN); } // if require_once ANGIE_PATH . '/classes/feed/init.php'; $feed = new Feed($this->owner_company->getName() . ' - ' . $this->active_filter->getName(), $this->active_filter->getUrl()); $assignments = AssignmentFilters::executeFilter($this->logged_user, $this->active_filter, false); if (is_foreachable($assignments)) { $project_ids = array(); foreach ($assignments as $assignment) { if (!in_array($assignment->getProjectId(), $project_ids)) { $project_ids[] = $assignment->getProjectId(); } // if } // foreach $projects = array(); if (is_foreachable($project_ids)) { $rows = db_execute_all('SELECT id, name FROM ' . TABLE_PREFIX . 'projects WHERE id IN (?)', $project_ids); if (is_foreachable($rows)) { foreach ($rows as $row) { $projects[$row['id']] = $row['name']; } // foreach } // if } // if foreach ($assignments as $assignment) { $title = '[' . array_var($projects, $assignment->getProjectId()) . '] ' . $assignment->getVerboseType() . ' "' . $assignment->getName() . '"'; $this->smarty->assign('_assignment', $assignment); $body = $this->smarty->fetch(get_template_path('_feed_body', 'assignment_filters', RESOURCES_MODULE)); $item = new FeedItem($title, $assignment->getViewUrl(), $body, $assignment->getCreatedOn()); $item->setId($assignment->getViewUrl()); $feed->addItem($item); } // foreach } // if print render_rss_feed($feed); die; }
/** * Show tasks for a given user * * @param void * @return null */ function user_tasks() { $filter = new AssignmentFilter(); $filter->setUserFilter(USER_FILTER_LOGGED_USER); $filter->setProjectFilter(PROJECT_FILTER_SELECTED); $filter->setProjectFilterData(array($this->active_project->getId())); $filter->setStatusFilter(STATUS_FILTER_ACTIVE); $filter->setOrderBy('priority DESC'); $filter->setObjectsPerPage(30); if ($this->request->isApiCall()) { $this->serveData(AssignmentFilters::executeFilter($this->logged_user, $filter, false), 'assignments'); } else { list($assignments, $pagination) = AssignmentFilters::executeFilter($this->logged_user, $filter, null, (int) $this->request->get('page')); $this->smarty->assign(array('assignments' => $assignments, 'pagination' => $pagination)); } // if }
/** * Shows a assignments page * */ function assignments() { $filter_id = $this->request->getId('filter_id'); if (!$filter_id) { $filter_id = UserConfigOptions::getValue('default_assignments_filter', $this->logged_user); } // if if ($filter_id) { $active_filter = AssignmentFilters::findById($filter_id); } // if $page = $this->getPaginationPage(); $per_page = 15; $pagination = null; if (instance_of($active_filter, 'AssignmentFilter')) { list($assignments, $pagination) = AssignmentFilters::executeFilter($this->logged_user, $active_filter, true, $page, $per_page); } else { $assignments = array(); } // if $this->smarty->assign(array("objects" => $assignments, "page_title" => lang('Assignments'), 'grouped_filters' => AssignmentFilters::findGrouped($this->logged_user), "active_filter" => $active_filter, 'pagination' => $pagination, 'pagination_url' => assemble_url('mobile_access_assignments'))); }
/** * Show assignments index * * @param void * @return null */ function index() { list($assignments, $pagination) = AssignmentFilters::executeFilter($this->logged_user, $this->active_filter, null, (int) $this->request->get('page')); $this->wireframe->addRssFeed($this->owner_company->getName() . ' - ' . $this->active_filter->getName(), $this->active_filter->getRssUrl($this->logged_user), FEED_RSS); $this->smarty->assign(array('assignments' => $assignments, 'pagination' => $pagination, 'grouped_filters' => AssignmentFilters::findGrouped($this->logged_user))); }
/** * Render iCalendar feed * * @param void * @return null */ function ical() { $filter = new AssignmentFilter(); $filter->setUserFilter(USER_FILTER_SELECTED); $filter->setUserFilterData(array($this->active_user->getId())); $filter->setProjectFilter(PROJECT_FILTER_ACTIVE); $filter->setStatusFilter(STATUS_FILTER_ACTIVE); render_icalendar(lang(":user's calendar", array('user' => $this->active_user->getDisplayName())), AssignmentFilters::executeFilter($this->logged_user, $filter, false)); die; }