本文整理汇总了PHP中app::addListingOrder方法的典型用法代码示例。如果您正苦于以下问题:PHP app::addListingOrder方法的具体用法?PHP app::addListingOrder怎么用?PHP app::addListingOrder使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类app
的用法示例。
在下文中一共展示了app::addListingOrder方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: executeGoto
public function executeGoto(sfWebRequest $request)
{
$q = Doctrine_Core::getTable('Tasks')->createQuery('t')->leftJoin('t.TasksPriority tp')->leftJoin('t.TasksStatus ts')->leftJoin('t.TasksLabels tl')->leftJoin('t.TasksTypes tt')->leftJoin('t.TasksGroups tg')->leftJoin('t.ProjectsPhases pp')->leftJoin('t.Versions v')->leftJoin('t.Projects p')->leftJoin('t.Users');
$q->addWhere('projects_id=?', $request->getParameter('projects_id'));
if (Users::hasAccess('view_own', 'tasks', $this->getUser(), $request->getParameter('projects_id'))) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',t.assigned_to) or t.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
$q = Tasks::addFiltersToQuery($q, $this->getUser()->getAttribute('tasks_filter' . ((int) $request->getParameter('projects_id') > 0 ? $request->getParameter('projects_id') : '')));
$q = app::addListingOrder($q, 'tasks', $this->getUser(), (int) $request->getParameter('projects_id'));
$this->menu = array();
$tasks_ids = array();
foreach ($q->fetchArray() as $tasks) {
if (strlen($sn = app::getArrayName($tasks, 'TasksStatus')) > 0) {
$sn = $sn . ': ';
} else {
$sn = '';
}
if ($request->getParameter('tasks_id') == $tasks['id']) {
$tasks['name'] = '<b>' . $tasks['name'] . '</b>';
}
$this->menu[] = array('title' => $sn . $tasks['name'], 'url' => 'tasksComments/index?projects_id=' . $request->getParameter('projects_id') . '&tasks_id=' . $tasks['id']);
$tasks_ids[] = $tasks['id'];
}
$current_key = array_search($request->getParameter('tasks_id'), $tasks_ids);
$this->previous_tasks_id = false;
$this->next_tasks_id = false;
if (isset($tasks_ids[$current_key - 1])) {
$this->previous_tasks_id = $tasks_ids[$current_key - 1];
}
if (isset($tasks_ids[$current_key + 1])) {
$this->next_tasks_id = $tasks_ids[$current_key + 1];
}
}
示例2: executeGoto
public function executeGoto(sfWebRequest $request)
{
$q = Doctrine_Core::getTable('Discussions')->createQuery('d')->leftJoin('d.DiscussionsStatus ds')->leftJoin('d.Projects p')->leftJoin('d.Users');
$q->addWhere('projects_id=?', $request->getParameter('projects_id'));
if (Users::hasAccess('view_own', 'discussions', $this->getUser(), $request->getParameter('projects_id'))) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',d.assigned_to) or d.users_id='" . $this->getUser()->getAttribute('id') . "'");
}
$q = Discussions::addFiltersToQuery($q, $this->getUser()->getAttribute('discussions_filter' . ((int) $request->getParameter('projects_id') > 0 ? $request->getParameter('projects_id') : '')));
$q = app::addListingOrder($q, 'discussions', $this->getUser(), (int) $request->getParameter('projects_id'));
$this->menu = array();
$ids = array();
foreach ($q->fetchArray() as $v) {
if (strlen($sn = app::getArrayName($v, 'DiscussionsStatus')) > 0) {
$sn = $sn . ': ';
} else {
$sn = '';
}
if ($request->getParameter('discussions_id') == $v['id']) {
$v['name'] = '<b>' . $v['name'] . '</b>';
}
$this->menu[] = array('title' => $sn . $v['name'], 'url' => 'discussionsComments/index?projects_id=' . $request->getParameter('projects_id') . '&discussions_id=' . $v['id']);
$ids[] = $v['id'];
}
$current_key = array_search($request->getParameter('discussions_id'), $ids);
$this->previous_item_id = false;
$this->next_item_id = false;
if (isset($ids[$current_key - 1])) {
$this->previous_item_id = $ids[$current_key - 1];
}
if (isset($ids[$current_key + 1])) {
$this->next_item_id = $ids[$current_key + 1];
}
}
示例3: executeGoto
public function executeGoto(sfWebRequest $request)
{
$q = Doctrine_Core::getTable('Tickets')->createQuery('t')->leftJoin('t.TicketsStatus ts')->leftJoin('t.TicketsTypes tt')->leftJoin('t.Departments td')->leftJoin('t.Projects p')->leftJoin('t.Users');
$q->addWhere('projects_id=?', $request->getParameter('projects_id'));
if (Users::hasAccess('view_own', 'tickets', $this->getUser(), $request->getParameter('projects_id'))) {
$q->addWhere("t.departments_id in (" . implode(',', Departments::getDepartmentIdByUserId($this->getUser()->getAttribute('id'))) . ") or t.users_id='" . $this->getUser()->getAttribute('id') . "'");
}
$q = Tickets::addFiltersToQuery($q, $this->getUser()->getAttribute('tickets_filter' . ((int) $request->getParameter('projects_id') > 0 ? $request->getParameter('projects_id') : '')));
$q = app::addListingOrder($q, 'tickets', $this->getUser(), (int) $request->getParameter('projects_id'));
$this->menu = array();
$ids = array();
foreach ($q->fetchArray() as $v) {
if (strlen($sn = app::getArrayName($v, 'TicketsStatus')) > 0) {
$sn = $sn . ': ';
} else {
$sn = '';
}
if ($request->getParameter('tickets_id') == $v['id']) {
$v['name'] = '<b>' . $v['name'] . '</b>';
}
$this->menu[] = array('title' => $sn . $v['name'], 'url' => 'ticketsComments/index?projects_id=' . $request->getParameter('projects_id') . '&tickets_id=' . $v['id']);
$ids[] = $v['id'];
}
$current_key = array_search($request->getParameter('tickets_id'), $ids);
$this->previous_item_id = false;
$this->next_item_id = false;
if (isset($ids[$current_key - 1])) {
$this->previous_item_id = $ids[$current_key - 1];
}
if (isset($ids[$current_key + 1])) {
$this->next_item_id = $ids[$current_key + 1];
}
}
示例4: executeListing
public function executeListing(sfWebRequest $request)
{
if (!isset($this->reports_id)) {
$this->reports_id = false;
}
$q = Doctrine_Core::getTable('Tasks')->createQuery('t')->leftJoin('t.TasksPriority tp')->leftJoin('t.TasksStatus ts')->leftJoin('t.TasksLabels tl')->leftJoin('t.TasksTypes tt')->leftJoin('t.TasksGroups tg')->leftJoin('t.ProjectsPhases pp')->leftJoin('t.Versions v')->leftJoin('t.Projects p')->leftJoin('t.Users');
if ($request->hasParameter('projects_id')) {
$q->addWhere('projects_id=?', $request->getParameter('projects_id'));
if (Users::hasAccess('view_own', 'tasks', $this->getUser(), $request->getParameter('projects_id'))) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',t.assigned_to) or t.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
} else {
if (Users::hasAccess('view_own', 'projects', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',team) or p.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
if (Users::hasAccess('view_own', 'tasks', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',t.assigned_to) or t.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
}
if ($this->reports_id > 0) {
$q = UserReports::addFiltersToQuery($q, $this->reports_id, $this->getUser()->getAttribute('id'));
} elseif ($request->hasParameter('search')) {
$q = app::addSearchQuery($q, $request->getParameter('search'), 'TasksComments', 't', $request->getParameter('search_by_extrafields'));
$q = app::addListingOrder($q, 'tasks', $this->getUser());
} else {
$q = Tasks::addFiltersToQuery($q, $this->getUser()->getAttribute('tasks_filter' . ((int) $request->getParameter('projects_id') > 0 ? $request->getParameter('projects_id') : '')));
$q = app::addListingOrder($q, 'tasks', $this->getUser(), (int) $request->getParameter('projects_id'));
}
$this->pager = false;
if (sfConfig::get('app_rows_limit') > 0) {
$this->pager = new sfDoctrinePager('Tasks', sfConfig::get('app_rows_limit'));
$this->pager->setQuery($q);
$this->pager->setPage($request->getParameter('page', 1));
$this->pager->init();
}
$this->tasks_list = $q->fetchArray();
if (isset($this->is_dashboard)) {
$this->url_params = 'redirect_to=dashboard';
$this->display_insert_button = true;
} elseif ($this->reports_id > 0) {
$this->url_params = 'redirect_to=userReports' . $this->reports_id;
$this->display_insert_button = true;
} else {
$this->url_params = 'redirect_to=tasksList';
if ($request->hasParameter('projects_id')) {
$this->url_params = 'projects_id=' . $request->getParameter('projects_id');
}
$this->display_insert_button = true;
}
$this->tlId = rand(1111111, 9999999);
$this->users_schema = Users::getSchema();
}
示例5: executeListing
public function executeListing(sfWebRequest $request)
{
if (!isset($this->reports_id)) {
$this->reports_id = false;
}
$q = Doctrine_Core::getTable('Tickets')->createQuery('t')->leftJoin('t.TicketsStatus ts')->leftJoin('t.TicketsTypes tt')->leftJoin('t.Departments td')->leftJoin('t.Projects p')->leftJoin('t.Users');
if ($request->hasParameter('projects_id')) {
$q->addWhere('projects_id=?', $request->getParameter('projects_id'));
if (Users::hasAccess('view_own', 'tickets', $this->getUser(), $request->getParameter('projects_id'))) {
$q->addWhere("t.departments_id in (" . implode(',', Departments::getDepartmentIdByUserId($this->getUser()->getAttribute('id'))) . ") or t.users_id='" . $this->getUser()->getAttribute('id') . "'");
}
} else {
if (Users::hasAccess('view_own', 'projects', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',team) or p.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
if (Users::hasAccess('view_own', 'tickets', $this->getUser())) {
$q->addWhere("t.departments_id in (" . implode(',', Departments::getDepartmentIdByUserId($this->getUser()->getAttribute('id'))) . ") or t.users_id='" . $this->getUser()->getAttribute('id') . "'");
}
}
if ($this->reports_id > 0) {
$q = TicketsReports::addFiltersToQuery($q, $this->reports_id, $this->getUser());
} elseif ($request->hasParameter('search')) {
$q = app::addSearchQuery($q, $request->getParameter('search'), 'TicketsComments', 't', $request->getParameter('search_by_extrafields'));
$q = app::addListingOrder($q, 'tickets', $this->getUser());
} else {
$q = Tickets::addFiltersToQuery($q, $this->getUser()->getAttribute('tickets_filter' . ((int) $request->getParameter('projects_id') > 0 ? $request->getParameter('projects_id') : '')));
$q = app::addListingOrder($q, 'tickets', $this->getUser(), (int) $request->getParameter('projects_id'));
}
if (sfConfig::get('app_rows_limit') > 0) {
$this->pager = new sfDoctrinePager('Tickets', sfConfig::get('app_rows_limit'));
$this->pager->setQuery($q);
$this->pager->setPage($request->getParameter('page', 1));
$this->pager->init();
}
$this->tickets_list = $q->fetchArray();
if (isset($this->is_dashboard)) {
$this->url_params = 'redirect_to=dashboard';
$this->display_insert_button = true;
} elseif ($this->reports_id > 0) {
$this->url_params = 'redirect_to=ticketsReports' . $this->reports_id;
$this->display_insert_button = true;
} else {
$this->url_params = 'redirect_to=ticketsList';
if ($request->hasParameter('projects_id')) {
$this->url_params = 'projects_id=' . $request->getParameter('projects_id');
}
$this->display_insert_button = true;
}
$this->tlId = rand(1111111, 9999999);
}
示例6: executeListing
public function executeListing(sfWebRequest $request)
{
if (!isset($this->reports_id)) {
$this->reports_id = false;
}
$q = Doctrine_Core::getTable('Projects')->createQuery('p')->leftJoin('p.ProjectsStatus ps')->leftJoin('p.ProjectsTypes pt')->leftJoin('p.Users');
if (Users::hasAccess('view_own', 'projects', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',p.team) or p.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
if ($this->reports_id > 0) {
$q = ProjectsReports::addFiltersToQuery($q, $this->reports_id, $this->getUser());
} elseif ($request->hasParameter('search')) {
$q = app::addSearchQuery($q, $request->getParameter('search'), 'ProjectsComments', 'p', $request->getParameter('search_by_extrafields'));
$q = app::addListingOrder($q, 'projects', $this->getUser());
} else {
$q = Projects::addFiltersToQuery($q, $this->getUser()->getAttribute('projects_filter'));
$q = app::addListingOrder($q, 'projects', $this->getUser());
}
if (sfConfig::get('app_rows_limit') > 0) {
$this->pager = new sfDoctrinePager('Projects', sfConfig::get('app_rows_limit'));
$this->pager->setQuery($q);
$this->pager->setPage($request->getParameter('page', 1));
$this->pager->init();
}
$this->projects_list = $q->fetchArray();
if (isset($this->is_dashboard)) {
$this->url_params = 'redirect_to=dashboard';
$this->display_insert_button = true;
} elseif ($this->reports_id > 0) {
$this->url_params = 'redirect_to=projectsReports' . $this->reports_id;
$this->display_insert_button = true;
} else {
$this->url_params = '';
$this->display_insert_button = true;
}
$this->tlId = rand(1111111, 9999999);
}
示例7: executeExport
public function executeExport(sfWebRequest $request)
{
/*check access*/
if ($request->hasParameter('projects_id')) {
$this->forward404Unless($this->projects = Doctrine_Core::getTable('Projects')->createQuery()->addWhere('id=?', $request->getParameter('projects_id'))->fetchOne(), sprintf('Object projects does not exist (%s).', $request->getParameter('projects_id')));
$this->checkProjectsAccess($this->projects);
$this->checkTicketsAccess('view', false, $this->projects);
} else {
$this->checkTicketsAccess('view');
}
$this->columns = array('Projects' => t::__('Project Name'), 'id' => t::__('Id'), 'TicketsStatus' => t::__('Status'), 'TicketsTypes' => t::__('Type'), 'name' => t::__('Name'), 'description' => t::__('Description'), 'Departments' => t::__('Department'), 'Users' => t::__('Created By'), 'created_at' => t::__('Created At'));
$extra_fields = ExtraFieldsList::getFieldsByType('tickets', $this->getUser(), false, array('all' => true));
foreach ($extra_fields as $v) {
$this->columns['extra_field_' . $v['id']] = $v['name'];
}
if (!$request->hasParameter('projects_id')) {
$this->columns['Projects'] = t::__('Project');
}
$this->columns['Projects'] = t::__('Project Name');
$this->columns['url'] = t::__('Url');
if ($fields = $request->getParameter('fields')) {
$separator = "\t";
$format = $request->getParameter('format', '.csv');
$filename = $request->getParameter('filename', 'tasks');
header("Content-type: Application/octet-stream");
header("Content-disposition: attachment; filename=" . $filename . "." . $format);
header("Pragma: no-cache");
header("Expires: 0");
$content = '';
foreach ($fields as $f) {
$content .= str_replace(array("\n\r", "\r", "\n", $separator), ' ', $this->columns[$f]) . $separator;
}
$content .= "\n";
if ($format == 'csv') {
echo chr(0xff) . chr(0xfe) . mb_convert_encoding($content, 'UTF-16LE', 'UTF-8');
} else {
echo $content;
}
if (strlen($request->getParameter('selected_items') == 0)) {
exit;
}
$q = Doctrine_Core::getTable('Tickets')->createQuery('t')->leftJoin('t.TicketsStatus ts')->leftJoin('t.TicketsTypes tt')->leftJoin('t.Departments td')->leftJoin('t.Projects p')->leftJoin('t.Users')->whereIn('t.id', explode(',', $request->getParameter('selected_items')));
if ($request->hasParameter('projects_id')) {
$q->addWhere('projects_id=?', $request->getParameter('projects_id'));
if (Users::hasAccess('view_own', 'tickets', $this->getUser(), $request->getParameter('projects_id'))) {
$q->addWhere("t.departments_id in (" . implode(',', Departments::getDepartmentIdByUserId($this->getUser()->getAttribute('id'))) . ") or t.users_id='" . $this->getUser()->getAttribute('id') . "'");
}
} else {
if (Users::hasAccess('view_own', 'projects', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',team) or p.users_id='" . $this->getUser()->getAttribute('id') . "'");
}
if (Users::hasAccess('view_own', 'tickets', $this->getUser())) {
$q->addWhere("t.departments_id in (" . implode(',', Departments::getDepartmentIdByUserId($this->getUser()->getAttribute('id'))) . ") or t.users_id='" . $this->getUser()->getAttribute('id') . "'");
}
}
if ($request->hasParameter('projects_id')) {
$q = app::addListingOrder($q, 'tickets', $this->getUser(), (int) $request->getParameter('projects_id'));
} else {
$q->orderBy('LTRIM(p.name), ts.sort_order, LTRIM(ts.name), LTRIM(t.name)');
}
$tickets = $q->fetchArray();
$totals = array();
$projects_totals = array();
$current_project_id = 0;
foreach ($tickets as $t) {
$ex_values = ExtraFieldsList::getValuesList($extra_fields, $t['id']);
$content = '';
//
if ($current_project_id == 0) {
$current_project_id = $t['projects_id'];
}
if ($current_project_id != $t['projects_id']) {
//adding totals
if (isset($projects_totals[$current_project_id])) {
foreach ($fields as $f) {
$v = '';
if (strstr($f, 'extra_field_')) {
if (isset($projects_totals[$current_project_id][str_replace('extra_field_', '', $f)])) {
$v = $projects_totals[$current_project_id][str_replace('extra_field_', '', $f)];
}
}
$content .= str_replace(array("\n\r", "\r", "\n", $separator), ' ', $v) . $separator;
}
$content .= "\n\n";
}
$current_project_id = $t['projects_id'];
}
foreach ($fields as $f) {
$v = '';
if (in_array($f, array('id', 'name', 'description'))) {
$v = $t[$f];
} elseif (strstr($f, 'extra_field_')) {
if ($ex = Doctrine_Core::getTable('ExtraFields')->find(str_replace('extra_field_', '', $f))) {
$v = ExtraFieldsList::renderFieldValueByType($ex, $ex_values, array(), true);
if (in_array($ex->getType(), array('number', 'formula'))) {
if (!isset($totals[$ex->getId()])) {
$totals[$ex->getId()] = 0;
}
if (!isset($projects_totals[$t['projects_id']][$ex->getId()])) {
$projects_totals[$t['projects_id']][$ex->getId()] = 0;
//.........这里部分代码省略.........
示例8: executeExport
public function executeExport(sfWebRequest $request)
{
/*check access*/
Users::checkAccess($this, 'view', $this->getModuleName(), $this->getUser());
$this->columns = array('id' => t::__('Id'), 'ProjectsStatus' => t::__('Status'), 'name' => t::__('Name'), 'description' => t::__('Description'), 'team' => t::__('Team'), 'ProjectsTypes' => t::__('Type'), 'Users' => t::__('Created By'), 'created_at' => t::__('Created At'));
$extra_fields = ExtraFieldsList::getFieldsByType('projects', $this->getUser(), false, array('all' => true));
foreach ($extra_fields as $v) {
$this->columns['extra_field_' . $v['id']] = $v['name'];
}
$this->columns['url'] = t::__('Url');
if ($fields = $request->getParameter('fields')) {
$separator = "\t";
$format = $request->getParameter('format', '.csv');
$filename = $request->getParameter('filename', 'projects');
header("Content-type: Application/octet-stream");
header("Content-disposition: attachment; filename=" . $filename . "." . $format);
header("Pragma: no-cache");
header("Expires: 0");
$content = '';
foreach ($fields as $f) {
$content .= str_replace(array("\n\r", "\r", "\n", $separator), ' ', $this->columns[$f]) . $separator;
}
$content .= "\n";
if ($format == 'csv') {
echo chr(0xff) . chr(0xfe) . mb_convert_encoding($content, 'UTF-16LE', 'UTF-8');
} else {
echo $content;
}
if (strlen($request->getParameter('selected_items') == 0)) {
exit;
}
$q = Doctrine_Core::getTable('Projects')->createQuery('p')->leftJoin('p.ProjectsStatus ps')->leftJoin('p.ProjectsTypes pt')->leftJoin('p.Users')->whereIn('p.id', explode(',', $request->getParameter('selected_items')));
if (Users::hasAccess('view_own', 'projects', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',p.team) or p.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
$q = app::addListingOrder($q, 'projects', $this->getUser());
$projects = $q->fetchArray();
$totals = array();
foreach ($projects as $p) {
$ex_values = ExtraFieldsList::getValuesList($extra_fields, $p['id']);
$content = '';
foreach ($fields as $f) {
$v = '';
if (in_array($f, array('id', 'name', 'description'))) {
$v = $p[$f];
} elseif (strstr($f, 'extra_field_')) {
if ($ex = Doctrine_Core::getTable('ExtraFields')->find(str_replace('extra_field_', '', $f))) {
$v = ExtraFieldsList::renderFieldValueByType($ex, $ex_values, array(), true);
if (in_array($ex->getType(), array('number', 'formula'))) {
if (!isset($totals[$ex->getId()])) {
$totals[$ex->getId()] = 0;
}
$totals[$ex->getId()] += $v;
}
$v = str_replace('<br>', ', ', $v);
}
} elseif ($f == 'team') {
$v = Users::getNameById($p[$f], ', ');
} elseif ($f == 'created_at') {
if (strlen($p[$f]) > 0) {
$v = date(app::getDateTimeFormat(), app::getDateTimestamp($p[$f]));
}
} elseif ($f == 'url') {
$v = app::public_url('projectsComments/index?projects_id=' . $p['id']);
} else {
$v = app::getArrayName($p, $f);
}
$content .= str_replace(array("\n\r", "\r", "\n", $separator), ' ', $v) . $separator;
}
$content .= "\n";
if ($format == 'csv') {
echo chr(0xff) . chr(0xfe) . mb_convert_encoding($content, 'UTF-16LE', 'UTF-8');
} else {
echo $content;
}
}
$content = '';
foreach ($fields as $f) {
$v = '';
if (strstr($f, 'extra_field_')) {
if (isset($totals[str_replace('extra_field_', '', $f)])) {
$v = $totals[str_replace('extra_field_', '', $f)];
}
}
$content .= str_replace(array("\n\r", "\r", "\n", $separator), ' ', $v) . $separator;
}
$content .= "\n";
if ($format == 'csv') {
echo chr(0xff) . chr(0xfe) . mb_convert_encoding($content, 'UTF-16LE', 'UTF-8');
} else {
echo $content;
}
exit;
}
}
示例9: executeExport
public function executeExport(sfWebRequest $request)
{
/*check access*/
if ($request->hasParameter('projects_id')) {
$this->forward404Unless($this->projects = Doctrine_Core::getTable('Projects')->createQuery()->addWhere('id=?', $request->getParameter('projects_id'))->fetchOne(), sprintf('Object projects does not exist (%s).', $request->getParameter('projects_id')));
$this->checkProjectsAccess($this->projects);
$this->checkTasksAccess('view', false, $this->projects);
} else {
$this->checkTasksAccess('view');
}
$this->columns = array('Projects' => t::__('Project Name'), 'id' => t::__('Id'), 'TasksGroups' => t::__('Group'), 'Versions' => t::__('Version'), 'ProjectsPhases' => t::__('Phase'), 'TasksPriority' => t::__('Priority'), 'TasksLabels' => t::__('Label'), 'name' => t::__('Name'), 'TasksStatus' => t::__('Status'), 'TasksTypes' => t::__('Type'), 'assigned_to' => t::__('Assigned To'), 'Users' => t::__('Created By'), 'estimated_time' => t::__('Est. Time'), 'work_hours' => t::__('Work Hours'), 'start_date' => t::__('Start Date'), 'due_date' => t::__('Due Date'), 'progress' => t::__('Progress'), 'created_at' => t::__('Created At'));
$extra_fields = ExtraFieldsList::getFieldsByType('tasks', $this->getUser(), false, array('all' => true));
foreach ($extra_fields as $v) {
$this->columns['extra_field_' . $v['id']] = $v['name'];
}
$this->columns['url'] = t::__('Url');
if ($fields = $request->getParameter('fields')) {
$separator = "\t";
$format = $request->getParameter('format', '.csv');
$filename = $request->getParameter('filename', 'tasks');
header("Content-type: Application/octet-stream");
header("Content-disposition: attachment; filename=" . $filename . "." . $format);
header("Pragma: no-cache");
header("Expires: 0");
$content = '';
foreach ($fields as $f) {
$content .= str_replace(array("\n\r", "\r", "\n", $separator), ' ', $this->columns[$f]) . $separator;
}
$content .= "\n";
if ($format == 'csv') {
echo chr(0xff) . chr(0xfe) . mb_convert_encoding($content, 'UTF-16LE', 'UTF-8');
} else {
echo $content;
}
if (strlen($request->getParameter('selected_items') == 0)) {
exit;
}
$q = Doctrine_Core::getTable('Tasks')->createQuery('t')->leftJoin('t.TasksPriority tp')->leftJoin('t.TasksStatus ts')->leftJoin('t.TasksLabels tl')->leftJoin('t.TasksTypes tt')->leftJoin('t.TasksGroups tg')->leftJoin('t.ProjectsPhases pp')->leftJoin('t.Versions v')->leftJoin('t.Projects p')->leftJoin('t.Users')->whereIn('t.id', explode(',', $request->getParameter('selected_items')));
if ($request->hasParameter('projects_id')) {
$q->addWhere('projects_id=?', $request->getParameter('projects_id'));
if (Users::hasAccess('view_own', 'tasks', $this->getUser(), $request->getParameter('projects_id'))) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',t.assigned_to) or t.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
} else {
if (Users::hasAccess('view_own', 'projects', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',team) or p.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
if (Users::hasAccess('view_own', 'tasks', $this->getUser())) {
$q->addWhere("find_in_set('" . $this->getUser()->getAttribute('id') . "',t.assigned_to) or t.created_by='" . $this->getUser()->getAttribute('id') . "'");
}
}
$tree_order = false;
if ($request->hasParameter('projects_id')) {
$q = app::addListingOrder($q, 'tasks', $this->getUser(), (int) $request->getParameter('projects_id'));
} else {
$q->orderBy('LTRIM(p.name), ts.group desc, ts.sort_order, LTRIM(ts.name), LTRIM(t.name)');
}
$tasks = $q->fetchArray();
$totals = array();
$projects_totals = array();
$current_project_id = 0;
foreach ($tasks as $t) {
$content = '';
//
if ($current_project_id == 0) {
$current_project_id = $t['projects_id'];
}
if ($current_project_id != $t['projects_id']) {
//adding totals
if (isset($projects_totals[$current_project_id])) {
foreach ($fields as $f) {
$v = '';
if (in_array($f, array('estimated_time', 'work_hours'))) {
$v = $projects_totals[$current_project_id][$f];
} elseif (strstr($f, 'extra_field_')) {
if (isset($projects_totals[$current_project_id][str_replace('extra_field_', '', $f)])) {
$v = $projects_totals[$current_project_id][str_replace('extra_field_', '', $f)];
}
}
$content .= str_replace(array("\n\r", "\r", "\n", $separator), ' ', $v) . $separator;
}
$content .= "\n\n";
}
$current_project_id = $t['projects_id'];
}
//
$name_adding = '';
$ex_values = ExtraFieldsList::getValuesList($extra_fields, $t['id']);
foreach ($fields as $f) {
$v = '';
if ($f == 'name') {
$v = $name_adding . $t[$f];
} elseif (in_array($f, array('id', 'description', 'estimated_time', 'work_hours'))) {
if ($f == 'work_hours') {
$v = TasksComments::getTotalWorkHours($t['id']);
} else {
$v = $t[$f];
}
if (in_array($f, array('estimated_time', 'work_hours'))) {
if (!isset($totals[$f])) {
//.........这里部分代码省略.........