/**
 * 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);
}
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
/**
 * 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
}
コード例 #4
0
 /**
  * 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;
 }
コード例 #5
0
 /**
  * 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
 }
コード例 #6
0
 /**
  * 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')));
 }
コード例 #7
0
 /**
  * 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)));
 }
コード例 #8
0
 /**
  * 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;
 }