summaryrefslogtreecommitdiff
path: root/app/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'app/Controller')
-rw-r--r--app/Controller/ActionController.php (renamed from app/Controller/Action.php)28
-rw-r--r--app/Controller/ActionCreationController.php (renamed from app/Controller/ActionCreation.php)24
-rw-r--r--app/Controller/ActivityController.php (renamed from app/Controller/Activity.php)8
-rw-r--r--app/Controller/AnalyticController.php (renamed from app/Controller/Analytic.php)20
-rw-r--r--app/Controller/AppController.php1
-rw-r--r--app/Controller/AuthController.php (renamed from app/Controller/Auth.php)12
-rw-r--r--app/Controller/AvatarFileController.php (renamed from app/Controller/AvatarFile.php)14
-rw-r--r--app/Controller/BaseController.php12
-rw-r--r--app/Controller/BoardAjaxController.php (renamed from app/Controller/Board.php)80
-rw-r--r--app/Controller/BoardPopoverController.php (renamed from app/Controller/BoardPopover.php)18
-rw-r--r--app/Controller/BoardTooltipController.php (renamed from app/Controller/BoardTooltip.php)22
-rw-r--r--app/Controller/BoardViewController.php65
-rw-r--r--app/Controller/CalendarController.php (renamed from app/Controller/Calendar.php)14
-rw-r--r--app/Controller/CaptchaController.php (renamed from app/Controller/Captcha.php)4
-rw-r--r--app/Controller/CategoryController.php (renamed from app/Controller/Category.php)22
-rw-r--r--app/Controller/ColumnController.php (renamed from app/Controller/Column.php)26
-rw-r--r--app/Controller/CommentController.php (renamed from app/Controller/Comment.php)22
-rw-r--r--app/Controller/ConfigController.php (renamed from app/Controller/Config.php)32
-rw-r--r--app/Controller/CurrencyController.php (renamed from app/Controller/Currency.php)20
-rw-r--r--app/Controller/CustomFilterController.php (renamed from app/Controller/Customfilter.php)38
-rw-r--r--app/Controller/DashboardController.php14
-rw-r--r--app/Controller/DocumentationController.php (renamed from app/Controller/Doc.php)10
-rw-r--r--app/Controller/ExportController.php (renamed from app/Controller/Export.php)10
-rw-r--r--app/Controller/FeedController.php (renamed from app/Controller/Feed.php)10
-rw-r--r--app/Controller/FileViewerController.php (renamed from app/Controller/FileViewer.php)4
-rw-r--r--app/Controller/Gantt.php165
-rw-r--r--app/Controller/GroupCreationController.php2
-rw-r--r--app/Controller/GroupListController.php22
-rw-r--r--app/Controller/GroupModificationController.php4
-rw-r--r--app/Controller/ICalendarController.php (renamed from app/Controller/Ical.php)16
-rw-r--r--app/Controller/LinkController.php (renamed from app/Controller/Link.php)24
-rw-r--r--app/Controller/OAuthController.php (renamed from app/Controller/Oauth.php)6
-rw-r--r--app/Controller/PasswordResetController.php (renamed from app/Controller/PasswordReset.php)24
-rw-r--r--app/Controller/ProjectActionDuplicationController.php (renamed from app/Controller/ActionProject.php)14
-rw-r--r--app/Controller/ProjectCreationController.php (renamed from app/Controller/ProjectCreation.php)12
-rw-r--r--app/Controller/ProjectEditController.php8
-rw-r--r--app/Controller/ProjectFileController.php (renamed from app/Controller/ProjectFile.php)16
-rw-r--r--app/Controller/ProjectGanttController.php57
-rw-r--r--app/Controller/ProjectListController.php6
-rw-r--r--app/Controller/ProjectOverviewController.php (renamed from app/Controller/ProjectOverview.php)12
-rw-r--r--app/Controller/ProjectPermissionController.php20
-rw-r--r--app/Controller/ProjectStatusController.php6
-rw-r--r--app/Controller/ProjectUserOverviewController.php (renamed from app/Controller/Projectuser.php)30
-rw-r--r--app/Controller/ProjectViewController.php18
-rw-r--r--app/Controller/SearchController.php (renamed from app/Controller/Search.php)14
-rw-r--r--app/Controller/SubtaskController.php20
-rw-r--r--app/Controller/SubtaskConverterController.php4
-rw-r--r--app/Controller/SubtaskRestrictionController.php10
-rw-r--r--app/Controller/SubtaskStatusController.php11
-rw-r--r--app/Controller/SwimlaneController.php (renamed from app/Controller/Swimlane.php)52
-rw-r--r--app/Controller/TaskAjaxController.php (renamed from app/Controller/TaskHelper.php)8
-rw-r--r--app/Controller/TaskBulkController.php11
-rw-r--r--app/Controller/TaskCreationController.php16
-rw-r--r--app/Controller/TaskDuplicationController.php (renamed from app/Controller/Taskduplication.php)30
-rw-r--r--app/Controller/TaskExternalLinkController.php (renamed from app/Controller/TaskExternalLink.php)20
-rw-r--r--app/Controller/TaskFileController.php (renamed from app/Controller/TaskFile.php)20
-rw-r--r--app/Controller/TaskGanttController.php62
-rw-r--r--app/Controller/TaskGanttCreationController.php71
-rw-r--r--app/Controller/TaskImportController.php (renamed from app/Controller/TaskImport.php)37
-rw-r--r--app/Controller/TaskInternalLinkController.php (renamed from app/Controller/TaskInternalLink.php)24
-rw-r--r--app/Controller/TaskListController.php (renamed from app/Controller/Listing.php)12
-rw-r--r--app/Controller/TaskModificationController.php (renamed from app/Controller/Taskmodification.php)28
-rw-r--r--app/Controller/TaskPopoverController.php (renamed from app/Controller/TaskPopover.php)20
-rw-r--r--app/Controller/TaskRecurrenceController.php (renamed from app/Controller/TaskRecurrence.php)16
-rw-r--r--app/Controller/TaskStatusController.php (renamed from app/Controller/Taskstatus.php)8
-rw-r--r--app/Controller/TaskSuppressionController.php53
-rw-r--r--app/Controller/TaskViewController.php (renamed from app/Controller/Task.php)86
-rw-r--r--app/Controller/TwoFactorController.php (renamed from app/Controller/Twofactor.php)18
-rw-r--r--app/Controller/UserAjaxController.php4
-rw-r--r--app/Controller/UserCreationController.php14
-rw-r--r--app/Controller/UserCredentialController.php6
-rw-r--r--app/Controller/UserListController.php2
-rw-r--r--app/Controller/UserModificationController.php6
-rw-r--r--app/Controller/UserStatusController.php6
-rw-r--r--app/Controller/UserViewController.php36
-rw-r--r--app/Controller/WebNotification.php50
-rw-r--r--app/Controller/WebNotificationController.php79
77 files changed, 972 insertions, 874 deletions
diff --git a/app/Controller/Action.php b/app/Controller/ActionController.php
index 40497a62..097640f6 100644
--- a/app/Controller/Action.php
+++ b/app/Controller/ActionController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Automatic Actions
+ * Automatic Actions Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Action extends BaseController
+class ActionController extends BaseController
{
/**
* List of automatic actions for a given project
@@ -18,7 +18,7 @@ class Action extends BaseController
public function index()
{
$project = $this->getProject();
- $actions = $this->action->getAllByProject($project['id']);
+ $actions = $this->actionModel->getAllByProject($project['id']);
$this->response->html($this->helper->layout->project('action/index', array(
'values' => array('project_id' => $project['id']),
@@ -27,12 +27,12 @@ class Action extends BaseController
'available_actions' => $this->actionManager->getAvailableActions(),
'available_events' => $this->eventManager->getAll(),
'available_params' => $this->actionManager->getAvailableParameters($actions),
- 'columns_list' => $this->column->getList($project['id']),
- 'users_list' => $this->projectUserRole->getAssignableUsersList($project['id']),
- 'projects_list' => $this->projectUserRole->getProjectsByUser($this->userSession->getId()),
- 'colors_list' => $this->color->getList(),
- 'categories_list' => $this->category->getList($project['id']),
- 'links_list' => $this->link->getList(0, false),
+ 'columns_list' => $this->columnModel->getList($project['id']),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id']),
+ 'projects_list' => $this->projectUserRoleModel->getProjectsByUser($this->userSession->getId()),
+ 'colors_list' => $this->colorModel->getList(),
+ 'categories_list' => $this->categoryModel->getList($project['id']),
+ 'links_list' => $this->linkModel->getList(0, false),
'title' => t('Automatic actions')
)));
}
@@ -47,7 +47,7 @@ class Action extends BaseController
$project = $this->getProject();
$this->response->html($this->helper->layout->project('action/remove', array(
- 'action' => $this->action->getById($this->request->getIntegerParam('action_id')),
+ 'action' => $this->actionModel->getById($this->request->getIntegerParam('action_id')),
'available_events' => $this->eventManager->getAll(),
'available_actions' => $this->actionManager->getAvailableActions(),
'project' => $project,
@@ -64,14 +64,14 @@ class Action extends BaseController
{
$this->checkCSRFParam();
$project = $this->getProject();
- $action = $this->action->getById($this->request->getIntegerParam('action_id'));
+ $action = $this->actionModel->getById($this->request->getIntegerParam('action_id'));
- if (! empty($action) && $this->action->remove($action['id'])) {
+ if (! empty($action) && $this->actionModel->remove($action['id'])) {
$this->flash->success(t('Action removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this action.'));
}
- $this->response->redirect($this->helper->url->to('action', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('ActionController', 'index', array('project_id' => $project['id'])));
}
}
diff --git a/app/Controller/ActionCreation.php b/app/Controller/ActionCreationController.php
index 388b30e2..e984f8d4 100644
--- a/app/Controller/ActionCreation.php
+++ b/app/Controller/ActionCreationController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Action Creation
+ * Action Creation Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class ActionCreation extends BaseController
+class ActionCreationController extends BaseController
{
/**
* Show the form (step 1)
@@ -69,19 +69,19 @@ class ActionCreation extends BaseController
$this->doCreation($project, $values + array('params' => array()));
}
- $projects_list = $this->projectUserRole->getActiveProjectsByUser($this->userSession->getId());
+ $projects_list = $this->projectUserRoleModel->getActiveProjectsByUser($this->userSession->getId());
unset($projects_list[$project['id']]);
$this->response->html($this->template->render('action_creation/params', array(
'values' => $values,
'action_params' => $action_params,
- 'columns_list' => $this->column->getList($project['id']),
- 'users_list' => $this->projectUserRole->getAssignableUsersList($project['id']),
+ 'columns_list' => $this->columnModel->getList($project['id']),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id']),
'projects_list' => $projects_list,
- 'colors_list' => $this->color->getList(),
- 'categories_list' => $this->category->getList($project['id']),
- 'links_list' => $this->link->getList(0, false),
- 'priorities_list' => $this->project->getPriorities($project),
+ 'colors_list' => $this->colorModel->getList(),
+ 'categories_list' => $this->categoryModel->getList($project['id']),
+ 'links_list' => $this->linkModel->getList(0, false),
+ 'priorities_list' => $this->projectModel->getPriorities($project),
'project' => $project,
'available_actions' => $this->actionManager->getAvailableActions(),
'events' => $this->actionManager->getCompatibleEvents($values['action_name']),
@@ -110,13 +110,13 @@ class ActionCreation extends BaseController
list($valid, ) = $this->actionValidator->validateCreation($values);
if ($valid) {
- if ($this->action->create($values) !== false) {
+ if ($this->actionModel->create($values) !== false) {
$this->flash->success(t('Your automatic action have been created successfully.'));
} else {
$this->flash->failure(t('Unable to create your automatic action.'));
}
}
- $this->response->redirect($this->helper->url->to('action', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('ActionController', 'index', array('project_id' => $project['id'])));
}
}
diff --git a/app/Controller/Activity.php b/app/Controller/ActivityController.php
index 0c6aa3f3..9f9841af 100644
--- a/app/Controller/Activity.php
+++ b/app/Controller/ActivityController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Activity stream
+ * Activity Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Activity extends BaseController
+class ActivityController extends BaseController
{
/**
* Activity page for a project
@@ -38,7 +38,7 @@ class Activity extends BaseController
$this->response->html($this->helper->layout->task('activity/task', array(
'title' => $task['title'],
'task' => $task,
- 'project' => $this->project->getById($task['project_id']),
+ 'project' => $this->projectModel->getById($task['project_id']),
'events' => $this->helper->projectActivity->getTaskEvents($task['id']),
)));
}
diff --git a/app/Controller/Analytic.php b/app/Controller/AnalyticController.php
index ba73c15c..cf3ba034 100644
--- a/app/Controller/Analytic.php
+++ b/app/Controller/AnalyticController.php
@@ -3,15 +3,15 @@
namespace Kanboard\Controller;
use Kanboard\Filter\TaskProjectFilter;
-use Kanboard\Model\Task as TaskModel;
+use Kanboard\Model\TaskModel;
/**
- * Project Analytic controller
+ * Project Analytic Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Analytic extends BaseController
+class AnalyticController extends BaseController
{
/**
* Show average Lead and Cycle time
@@ -30,8 +30,8 @@ class Analytic extends BaseController
),
'project' => $project,
'average' => $this->averageLeadCycleTimeAnalytic->build($project['id']),
- 'metrics' => $this->projectDailyStats->getRawMetrics($project['id'], $from, $to),
- 'date_format' => $this->config->get('application_date_format'),
+ 'metrics' => $this->projectDailyStatsModel->getRawMetrics($project['id'], $from, $to),
+ 'date_format' => $this->configModel->get('application_date_format'),
'date_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateFormats()),
'title' => t('Lead and Cycle time for "%s"', $project['name']),
)));
@@ -47,7 +47,7 @@ class Analytic extends BaseController
$project = $this->getProject();
$paginator = $this->paginator
- ->setUrl('analytic', 'compareHours', array('project_id' => $project['id']))
+ ->setUrl('AnalyticController', 'compareHours', array('project_id' => $project['id']))
->setMax(30)
->setOrder(TaskModel::TABLE.'.id')
->setQuery($this->taskQuery
@@ -145,7 +145,7 @@ class Analytic extends BaseController
$project = $this->getProject();
list($from, $to) = $this->getDates();
- $display_graph = $this->projectDailyColumnStats->countDays($project['id'], $from, $to) >= 2;
+ $display_graph = $this->projectDailyColumnStatsModel->countDays($project['id'], $from, $to) >= 2;
$this->response->html($this->helper->layout->analytic($template, array(
'values' => array(
@@ -153,9 +153,9 @@ class Analytic extends BaseController
'to' => $to,
),
'display_graph' => $display_graph,
- 'metrics' => $display_graph ? $this->projectDailyColumnStats->getAggregatedMetrics($project['id'], $from, $to, $column) : array(),
+ 'metrics' => $display_graph ? $this->projectDailyColumnStatsModel->getAggregatedMetrics($project['id'], $from, $to, $column) : array(),
'project' => $project,
- 'date_format' => $this->config->get('application_date_format'),
+ 'date_format' => $this->configModel->get('application_date_format'),
'date_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateFormats()),
'title' => t($title, $project['name']),
)));
diff --git a/app/Controller/AppController.php b/app/Controller/AppController.php
index 60bc154a..45cf39a5 100644
--- a/app/Controller/AppController.php
+++ b/app/Controller/AppController.php
@@ -8,6 +8,7 @@ use Kanboard\Core\Base;
* Class AppController
*
* @package Kanboard\Controller
+ * @author Frederic Guillot
*/
class AppController extends Base
{
diff --git a/app/Controller/Auth.php b/app/Controller/AuthController.php
index cad44a34..dc46070c 100644
--- a/app/Controller/Auth.php
+++ b/app/Controller/AuthController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Authentication controller
+ * Authentication Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Auth extends BaseController
+class AuthController extends BaseController
{
/**
* Display the form login
@@ -23,7 +23,7 @@ class Auth extends BaseController
$this->response->redirect($this->helper->url->to('DashboardController', 'show'));
} else {
$this->response->html($this->helper->layout->app('auth/index', array(
- 'captcha' => ! empty($values['username']) && $this->userLocking->hasCaptcha($values['username']),
+ 'captcha' => ! empty($values['username']) && $this->userLockingModel->hasCaptcha($values['username']),
'errors' => $errors,
'values' => $values,
'no_layout' => true,
@@ -59,9 +59,9 @@ class Auth extends BaseController
{
if (! DISABLE_LOGOUT) {
$this->sessionManager->close();
- $this->response->redirect($this->helper->url->to('auth', 'login'));
+ $this->response->redirect($this->helper->url->to('AuthController', 'login'));
} else {
- $this->response->redirect($this->helper->url->to('auth', 'index'));
+ $this->response->redirect($this->helper->url->to('AuthController', 'index'));
}
}
diff --git a/app/Controller/AvatarFile.php b/app/Controller/AvatarFileController.php
index 1891a2fc..6879c577 100644
--- a/app/Controller/AvatarFile.php
+++ b/app/Controller/AvatarFileController.php
@@ -8,10 +8,10 @@ use Kanboard\Core\Thumbnail;
/**
* Avatar File Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class AvatarFile extends BaseController
+class AvatarFileController extends BaseController
{
/**
* Display avatar page
@@ -32,11 +32,11 @@ class AvatarFile extends BaseController
{
$user = $this->getUser();
- if (! $this->avatarFile->uploadImageFile($user['id'], $this->request->getFileInfo('avatar'))) {
+ if (! $this->avatarFileModel->uploadImageFile($user['id'], $this->request->getFileInfo('avatar'))) {
$this->flash->failure(t('Unable to upload the file.'));
}
- $this->response->redirect($this->helper->url->to('AvatarFile', 'show', array('user_id' => $user['id'])));
+ $this->response->redirect($this->helper->url->to('AvatarFileController', 'show', array('user_id' => $user['id'])));
}
/**
@@ -46,9 +46,9 @@ class AvatarFile extends BaseController
{
$this->checkCSRFParam();
$user = $this->getUser();
- $this->avatarFile->remove($user['id']);
+ $this->avatarFileModel->remove($user['id']);
$this->userSession->refresh($user['id']);
- $this->response->redirect($this->helper->url->to('AvatarFile', 'show', array('user_id' => $user['id'])));
+ $this->response->redirect($this->helper->url->to('AvatarFileController', 'show', array('user_id' => $user['id'])));
}
/**
@@ -58,7 +58,7 @@ class AvatarFile extends BaseController
{
$user_id = $this->request->getIntegerParam('user_id');
$size = $this->request->getStringParam('size', 48);
- $filename = $this->avatarFile->getFilename($user_id);
+ $filename = $this->avatarFileModel->getFilename($user_id);
$etag = md5($filename.$size);
$this->response->withCache(365 * 86400, $etag);
diff --git a/app/Controller/BaseController.php b/app/Controller/BaseController.php
index ad02f708..36871bb4 100644
--- a/app/Controller/BaseController.php
+++ b/app/Controller/BaseController.php
@@ -33,7 +33,7 @@ abstract class BaseController extends Base
*/
protected function checkWebhookToken()
{
- if ($this->config->get('webhook_token') !== $this->request->getStringParam('token')) {
+ if ($this->configModel->get('webhook_token') !== $this->request->getStringParam('token')) {
$this->response->text('Not Authorized', 401);
}
}
@@ -49,7 +49,7 @@ abstract class BaseController extends Base
protected function getTask()
{
$project_id = $this->request->getIntegerParam('project_id');
- $task = $this->taskFinder->getDetails($this->request->getIntegerParam('task_id'));
+ $task = $this->taskFinderModel->getDetails($this->request->getIntegerParam('task_id'));
if (empty($task)) {
throw new PageNotFoundException();
@@ -78,7 +78,7 @@ abstract class BaseController extends Base
if ($task_id > 0) {
$model = 'taskFile';
- $project_id = $this->taskFinder->getProjectId($task_id);
+ $project_id = $this->taskFinderModel->getProjectId($task_id);
if ($project_id !== $this->request->getIntegerParam('project_id')) {
throw new AccessForbiddenException();
@@ -106,7 +106,7 @@ abstract class BaseController extends Base
protected function getProject($project_id = 0)
{
$project_id = $this->request->getIntegerParam('project_id', $project_id);
- $project = $this->project->getByIdWithOwner($project_id);
+ $project = $this->projectModel->getByIdWithOwner($project_id);
if (empty($project)) {
throw new PageNotFoundException();
@@ -125,7 +125,7 @@ abstract class BaseController extends Base
*/
protected function getUser()
{
- $user = $this->user->getById($this->request->getIntegerParam('user_id', $this->userSession->getId()));
+ $user = $this->userModel->getById($this->request->getIntegerParam('user_id', $this->userSession->getId()));
if (empty($user)) {
throw new PageNotFoundException();
@@ -147,7 +147,7 @@ abstract class BaseController extends Base
*/
protected function getSubtask()
{
- $subtask = $this->subtask->getById($this->request->getIntegerParam('subtask_id'));
+ $subtask = $this->subtaskModel->getById($this->request->getIntegerParam('subtask_id'));
if (empty($subtask)) {
throw new PageNotFoundException();
diff --git a/app/Controller/Board.php b/app/Controller/BoardAjaxController.php
index 0f6b3b14..24914671 100644
--- a/app/Controller/Board.php
+++ b/app/Controller/BoardAjaxController.php
@@ -6,67 +6,15 @@ use Kanboard\Core\Controller\AccessForbiddenException;
use Kanboard\Formatter\BoardFormatter;
/**
- * Board controller
+ * Class BoardAjaxController
*
- * @package controller
- * @author Frederic Guillot
+ * @package Kanboard\Controller
+ * @author Fredric Guillot
*/
-class Board extends BaseController
+class BoardAjaxController extends BaseController
{
/**
- * Display the public version of a board
- * Access checked by a simple token, no user login, read only, auto-refresh
- *
- * @access public
- */
- public function readonly()
- {
- $token = $this->request->getStringParam('token');
- $project = $this->project->getByToken($token);
-
- // Token verification
- if (empty($project)) {
- throw AccessForbiddenException::getInstance()->withoutLayout();
- }
-
- // Display the board with a specific layout
- $this->response->html($this->helper->layout->app('board/view_public', array(
- 'project' => $project,
- 'swimlanes' => $this->board->getBoard($project['id']),
- 'title' => $project['name'],
- 'description' => $project['description'],
- 'no_layout' => true,
- 'not_editable' => true,
- 'board_public_refresh_interval' => $this->config->get('board_public_refresh_interval'),
- 'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'),
- 'board_highlight_period' => $this->config->get('board_highlight_period'),
- )));
- }
-
- /**
- * Show a board for a given project
- *
- * @access public
- */
- public function show()
- {
- $project = $this->getProject();
- $search = $this->helper->projectHeader->getSearchQuery($project);
-
- $this->response->html($this->helper->layout->app('board/view_private', array(
- 'project' => $project,
- 'title' => $project['name'],
- 'description' => $this->helper->projectHeader->getDescription($project),
- 'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'),
- 'board_highlight_period' => $this->config->get('board_highlight_period'),
- 'swimlanes' => $this->taskLexer
- ->build($search)
- ->format(BoardFormatter::getInstance($this->container)->setProjectId($project['id']))
- )));
- }
-
- /**
- * Save the board (Ajax request made by the drag and drop)
+ * Save new task positions (Ajax request made by the drag and drop)
*
* @access public
*/
@@ -80,7 +28,7 @@ class Board extends BaseController
$values = $this->request->getJson();
- $result =$this->taskPosition->movePosition(
+ $result =$this->taskPositionModel->movePosition(
$project_id,
$values['task_id'],
$values['column_id'],
@@ -106,8 +54,8 @@ class Board extends BaseController
$timestamp = $this->request->getIntegerParam('timestamp');
if (! $project_id || ! $this->request->isAjax()) {
- $this->response->status(403);
- } elseif (! $this->project->isModifiedSince($project_id, $timestamp)) {
+ throw new AccessForbiddenException();
+ } elseif (! $this->projectModel->isModifiedSince($project_id, $timestamp)) {
$this->response->status(304);
} else {
$this->response->html($this->renderBoard($project_id));
@@ -167,23 +115,23 @@ class Board extends BaseController
if ($this->request->isAjax()) {
$this->response->html($this->renderBoard($project_id));
} else {
- $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $project_id)));
+ $this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $project_id)));
}
}
/**
* Render board
*
- * @access private
+ * @access protected
* @param integer $project_id
* @return string
*/
- private function renderBoard($project_id)
+ protected function renderBoard($project_id)
{
return $this->template->render('board/table_container', array(
- 'project' => $this->project->getById($project_id),
- 'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'),
- 'board_highlight_period' => $this->config->get('board_highlight_period'),
+ 'project' => $this->projectModel->getById($project_id),
+ 'board_private_refresh_interval' => $this->configModel->get('board_private_refresh_interval'),
+ 'board_highlight_period' => $this->configModel->get('board_highlight_period'),
'swimlanes' => $this->taskLexer
->build($this->userSession->getFilters($project_id))
->format(BoardFormatter::getInstance($this->container)->setProjectId($project_id))
diff --git a/app/Controller/BoardPopover.php b/app/Controller/BoardPopoverController.php
index d3117f78..a0f5ae12 100644
--- a/app/Controller/BoardPopover.php
+++ b/app/Controller/BoardPopoverController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Board Popover
+ * Board Popover Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class BoardPopover extends BaseController
+class BoardPopoverController extends BaseController
{
/**
* Confirmation before to close all column tasks
@@ -23,9 +23,9 @@ class BoardPopover extends BaseController
$this->response->html($this->template->render('board_popover/close_all_tasks_column', array(
'project' => $project,
- 'nb_tasks' => $this->taskFinder->countByColumnAndSwimlaneId($project['id'], $column_id, $swimlane_id),
- 'column' => $this->column->getColumnTitleById($column_id),
- 'swimlane' => $this->swimlane->getNameById($swimlane_id) ?: t($project['default_swimlane']),
+ 'nb_tasks' => $this->taskFinderModel->countByColumnAndSwimlaneId($project['id'], $column_id, $swimlane_id),
+ 'column' => $this->columnModel->getColumnTitleById($column_id),
+ 'swimlane' => $this->swimlaneModel->getNameById($swimlane_id) ?: t($project['default_swimlane']),
'values' => array('column_id' => $column_id, 'swimlane_id' => $swimlane_id),
)));
}
@@ -40,8 +40,8 @@ class BoardPopover extends BaseController
$project = $this->getProject();
$values = $this->request->getValues();
- $this->taskStatus->closeTasksBySwimlaneAndColumn($values['swimlane_id'], $values['column_id']);
- $this->flash->success(t('All tasks of the column "%s" and the swimlane "%s" have been closed successfully.', $this->column->getColumnTitleById($values['column_id']), $this->swimlane->getNameById($values['swimlane_id']) ?: t($project['default_swimlane'])));
- $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $project['id'])));
+ $this->taskStatusModel->closeTasksBySwimlaneAndColumn($values['swimlane_id'], $values['column_id']);
+ $this->flash->success(t('All tasks of the column "%s" and the swimlane "%s" have been closed successfully.', $this->columnModel->getColumnTitleById($values['column_id']), $this->swimlaneModel->getNameById($values['swimlane_id']) ?: t($project['default_swimlane'])));
+ $this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $project['id'])));
}
}
diff --git a/app/Controller/BoardTooltip.php b/app/Controller/BoardTooltipController.php
index 49d02ced..2a947027 100644
--- a/app/Controller/BoardTooltip.php
+++ b/app/Controller/BoardTooltipController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Board Tooltip
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class BoardTooltip extends BaseController
+class BoardTooltipController extends BaseController
{
/**
* Get links on mouseover
@@ -19,7 +19,7 @@ class BoardTooltip extends BaseController
{
$task = $this->getTask();
$this->response->html($this->template->render('board/tooltip_tasklinks', array(
- 'links' => $this->taskLink->getAllGroupedByLabel($task['id']),
+ 'links' => $this->taskLinkModel->getAllGroupedByLabel($task['id']),
'task' => $task,
)));
}
@@ -33,7 +33,7 @@ class BoardTooltip extends BaseController
{
$task = $this->getTask();
$this->response->html($this->template->render('board/tooltip_external_links', array(
- 'links' => $this->taskExternalLink->getAll($task['id']),
+ 'links' => $this->taskExternalLinkModel->getAll($task['id']),
'task' => $task,
)));
}
@@ -47,7 +47,7 @@ class BoardTooltip extends BaseController
{
$task = $this->getTask();
$this->response->html($this->template->render('board/tooltip_subtasks', array(
- 'subtasks' => $this->subtask->getAll($task['id']),
+ 'subtasks' => $this->subtaskModel->getAll($task['id']),
'task' => $task,
)));
}
@@ -62,7 +62,7 @@ class BoardTooltip extends BaseController
$task = $this->getTask();
$this->response->html($this->template->render('board/tooltip_files', array(
- 'files' => $this->taskFile->getAll($task['id']),
+ 'files' => $this->taskFileModel->getAll($task['id']),
'task' => $task,
)));
}
@@ -78,7 +78,7 @@ class BoardTooltip extends BaseController
$this->response->html($this->template->render('board/tooltip_comments', array(
'task' => $task,
- 'comments' => $this->comment->getAll($task['id'], $this->userSession->getCommentSorting())
+ 'comments' => $this->commentModel->getAll($task['id'], $this->userSession->getCommentSorting())
)));
}
@@ -107,9 +107,9 @@ class BoardTooltip extends BaseController
$this->response->html($this->template->render('task_recurrence/info', array(
'task' => $task,
- 'recurrence_trigger_list' => $this->task->getRecurrenceTriggerList(),
- 'recurrence_timeframe_list' => $this->task->getRecurrenceTimeframeList(),
- 'recurrence_basedate_list' => $this->task->getRecurrenceBasedateList(),
+ 'recurrence_trigger_list' => $this->taskModel->getRecurrenceTriggerList(),
+ 'recurrence_timeframe_list' => $this->taskModel->getRecurrenceTimeframeList(),
+ 'recurrence_basedate_list' => $this->taskModel->getRecurrenceBasedateList(),
)));
}
@@ -121,7 +121,7 @@ class BoardTooltip extends BaseController
public function swimlane()
{
$this->getProject();
- $swimlane = $this->swimlane->getById($this->request->getIntegerParam('swimlane_id'));
+ $swimlane = $this->swimlaneModel->getById($this->request->getIntegerParam('swimlane_id'));
$this->response->html($this->template->render('board/tooltip_description', array('task' => $swimlane)));
}
}
diff --git a/app/Controller/BoardViewController.php b/app/Controller/BoardViewController.php
new file mode 100644
index 00000000..496fa995
--- /dev/null
+++ b/app/Controller/BoardViewController.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Core\Controller\AccessForbiddenException;
+use Kanboard\Formatter\BoardFormatter;
+
+/**
+ * Board controller
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class BoardViewController extends BaseController
+{
+ /**
+ * Display the public version of a board
+ * Access checked by a simple token, no user login, read only, auto-refresh
+ *
+ * @access public
+ */
+ public function readonly()
+ {
+ $token = $this->request->getStringParam('token');
+ $project = $this->projectModel->getByToken($token);
+
+ if (empty($project)) {
+ throw AccessForbiddenException::getInstance()->withoutLayout();
+ }
+
+ $this->response->html($this->helper->layout->app('board/view_public', array(
+ 'project' => $project,
+ 'swimlanes' => $this->boardModel->getBoard($project['id']),
+ 'title' => $project['name'],
+ 'description' => $project['description'],
+ 'no_layout' => true,
+ 'not_editable' => true,
+ 'board_public_refresh_interval' => $this->configModel->get('board_public_refresh_interval'),
+ 'board_private_refresh_interval' => $this->configModel->get('board_private_refresh_interval'),
+ 'board_highlight_period' => $this->configModel->get('board_highlight_period'),
+ )));
+ }
+
+ /**
+ * Show a board for a given project
+ *
+ * @access public
+ */
+ public function show()
+ {
+ $project = $this->getProject();
+ $search = $this->helper->projectHeader->getSearchQuery($project);
+
+ $this->response->html($this->helper->layout->app('board/view_private', array(
+ 'project' => $project,
+ 'title' => $project['name'],
+ 'description' => $this->helper->projectHeader->getDescription($project),
+ 'board_private_refresh_interval' => $this->configModel->get('board_private_refresh_interval'),
+ 'board_highlight_period' => $this->configModel->get('board_highlight_period'),
+ 'swimlanes' => $this->taskLexer
+ ->build($search)
+ ->format(BoardFormatter::getInstance($this->container)->setProjectId($project['id']))
+ )));
+ }
+}
diff --git a/app/Controller/Calendar.php b/app/Controller/CalendarController.php
index 706c1d3b..e5114f02 100644
--- a/app/Controller/Calendar.php
+++ b/app/Controller/CalendarController.php
@@ -5,16 +5,16 @@ namespace Kanboard\Controller;
use Kanboard\Filter\TaskAssigneeFilter;
use Kanboard\Filter\TaskProjectFilter;
use Kanboard\Filter\TaskStatusFilter;
-use Kanboard\Model\Task as TaskModel;
+use Kanboard\Model\TaskModel;
/**
- * Project Calendar controller
+ * Calendar Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
* @author Timo Litzbarski
*/
-class Calendar extends BaseController
+class CalendarController extends BaseController
{
/**
* Show calendar view for projects
@@ -29,7 +29,7 @@ class Calendar extends BaseController
'project' => $project,
'title' => $project['name'],
'description' => $this->helper->projectHeader->getDescription($project),
- 'check_interval' => $this->config->get('board_private_refresh_interval'),
+ 'check_interval' => $this->configModel->get('board_private_refresh_interval'),
)));
}
@@ -75,7 +75,7 @@ class Calendar extends BaseController
$events = $this->helper->calendar->getTaskDateDueEvents(clone($queryBuilder), $start, $end);
$events = array_merge($events, $this->helper->calendar->getTaskEvents(clone($queryBuilder), $start, $end));
- if ($this->config->get('calendar_user_subtasks_time_tracking') == 1) {
+ if ($this->configModel->get('calendar_user_subtasks_time_tracking') == 1) {
$events = array_merge($events, $this->helper->calendar->getSubtaskTimeTrackingEvents($user_id, $start, $end));
}
@@ -98,7 +98,7 @@ class Calendar extends BaseController
if ($this->request->isAjax() && $this->request->isPost()) {
$values = $this->request->getJson();
- $this->taskModification->update(array(
+ $this->taskModificationModel->update(array(
'id' => $values['task_id'],
'date_due' => substr($values['date_due'], 0, 10),
));
diff --git a/app/Controller/Captcha.php b/app/Controller/CaptchaController.php
index f6c717b3..43b2f823 100644
--- a/app/Controller/Captcha.php
+++ b/app/Controller/CaptchaController.php
@@ -7,10 +7,10 @@ use Gregwar\Captcha\CaptchaBuilder;
/**
* Captcha Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Captcha extends BaseController
+class CaptchaController extends BaseController
{
/**
* Display captcha image
diff --git a/app/Controller/Category.php b/app/Controller/CategoryController.php
index 954d92cc..dd6e1c35 100644
--- a/app/Controller/Category.php
+++ b/app/Controller/CategoryController.php
@@ -5,12 +5,12 @@ namespace Kanboard\Controller;
use Kanboard\Core\Controller\PageNotFoundException;
/**
- * Category management
+ * Category Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Category extends BaseController
+class CategoryController extends BaseController
{
/**
* Get the category (common method between actions)
@@ -21,7 +21,7 @@ class Category extends BaseController
*/
private function getCategory()
{
- $category = $this->category->getById($this->request->getIntegerParam('category_id'));
+ $category = $this->categoryModel->getById($this->request->getIntegerParam('category_id'));
if (empty($category)) {
throw new PageNotFoundException();
@@ -43,7 +43,7 @@ class Category extends BaseController
$project = $this->getProject();
$this->response->html($this->helper->layout->project('category/index', array(
- 'categories' => $this->category->getList($project['id'], false),
+ 'categories' => $this->categoryModel->getList($project['id'], false),
'values' => $values + array('project_id' => $project['id']),
'errors' => $errors,
'project' => $project,
@@ -64,9 +64,9 @@ class Category extends BaseController
list($valid, $errors) = $this->categoryValidator->validateCreation($values);
if ($valid) {
- if ($this->category->create($values)) {
+ if ($this->categoryModel->create($values) !== false) {
$this->flash->success(t('Your category have been created successfully.'));
- return $this->response->redirect($this->helper->url->to('category', 'index', array('project_id' => $project['id'])));
+ return $this->response->redirect($this->helper->url->to('CategoryController', 'index', array('project_id' => $project['id'])));
} else {
$this->flash->failure(t('Unable to create your category.'));
}
@@ -109,9 +109,9 @@ class Category extends BaseController
list($valid, $errors) = $this->categoryValidator->validateModification($values);
if ($valid) {
- if ($this->category->update($values)) {
+ if ($this->categoryModel->update($values)) {
$this->flash->success(t('Your category have been updated successfully.'));
- return $this->response->redirect($this->helper->url->to('category', 'index', array('project_id' => $project['id'])));
+ return $this->response->redirect($this->helper->url->to('CategoryController', 'index', array('project_id' => $project['id'])));
} else {
$this->flash->failure(t('Unable to update your category.'));
}
@@ -148,12 +148,12 @@ class Category extends BaseController
$project = $this->getProject();
$category = $this->getCategory();
- if ($this->category->remove($category['id'])) {
+ if ($this->categoryModel->remove($category['id'])) {
$this->flash->success(t('Category removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this category.'));
}
- $this->response->redirect($this->helper->url->to('category', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('CategoryController', 'index', array('project_id' => $project['id'])));
}
}
diff --git a/app/Controller/Column.php b/app/Controller/ColumnController.php
index 294c31d8..95fbcaaa 100644
--- a/app/Controller/Column.php
+++ b/app/Controller/ColumnController.php
@@ -5,12 +5,12 @@ namespace Kanboard\Controller;
use Kanboard\Core\Controller\AccessForbiddenException;
/**
- * Column controller
+ * Column Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Column extends BaseController
+class ColumnController extends BaseController
{
/**
* Display columns list
@@ -20,7 +20,7 @@ class Column extends BaseController
public function index()
{
$project = $this->getProject();
- $columns = $this->column->getAll($project['id']);
+ $columns = $this->columnModel->getAll($project['id']);
$this->response->html($this->helper->layout->project('column/index', array(
'columns' => $columns,
@@ -66,9 +66,9 @@ class Column extends BaseController
list($valid, $errors) = $this->columnValidator->validateCreation($values);
if ($valid) {
- if ($this->column->create($project['id'], $values['title'], $values['task_limit'], $values['description'])) {
+ if ($this->columnModel->create($project['id'], $values['title'], $values['task_limit'], $values['description']) !== false) {
$this->flash->success(t('Column created successfully.'));
- return $this->response->redirect($this->helper->url->to('column', 'index', array('project_id' => $project['id'])), true);
+ return $this->response->redirect($this->helper->url->to('ColumnController', 'index', array('project_id' => $project['id'])), true);
} else {
$errors['title'] = array(t('Another column with the same name exists in the project'));
}
@@ -87,7 +87,7 @@ class Column extends BaseController
public function edit(array $values = array(), array $errors = array())
{
$project = $this->getProject();
- $column = $this->column->getById($this->request->getIntegerParam('column_id'));
+ $column = $this->columnModel->getById($this->request->getIntegerParam('column_id'));
$this->response->html($this->helper->layout->project('column/edit', array(
'errors' => $errors,
@@ -111,9 +111,9 @@ class Column extends BaseController
list($valid, $errors) = $this->columnValidator->validateModification($values);
if ($valid) {
- if ($this->column->update($values['id'], $values['title'], $values['task_limit'], $values['description'])) {
+ if ($this->columnModel->update($values['id'], $values['title'], $values['task_limit'], $values['description'])) {
$this->flash->success(t('Board updated successfully.'));
- return $this->response->redirect($this->helper->url->to('column', 'index', array('project_id' => $project['id'])));
+ return $this->response->redirect($this->helper->url->to('ColumnController', 'index', array('project_id' => $project['id'])));
} else {
$this->flash->failure(t('Unable to update this board.'));
}
@@ -133,7 +133,7 @@ class Column extends BaseController
$values = $this->request->getJson();
if (! empty($values) && isset($values['column_id']) && isset($values['position'])) {
- $result = $this->column->changePosition($project['id'], $values['column_id'], $values['position']);
+ $result = $this->columnModel->changePosition($project['id'], $values['column_id'], $values['position']);
$this->response->json(array('result' => $result));
} else {
throw new AccessForbiddenException();
@@ -150,7 +150,7 @@ class Column extends BaseController
$project = $this->getProject();
$this->response->html($this->helper->layout->project('column/remove', array(
- 'column' => $this->column->getById($this->request->getIntegerParam('column_id')),
+ 'column' => $this->columnModel->getById($this->request->getIntegerParam('column_id')),
'project' => $project,
'title' => t('Remove a column from a board')
)));
@@ -167,12 +167,12 @@ class Column extends BaseController
$this->checkCSRFParam();
$column_id = $this->request->getIntegerParam('column_id');
- if ($this->column->remove($column_id)) {
+ if ($this->columnModel->remove($column_id)) {
$this->flash->success(t('Column removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this column.'));
}
- $this->response->redirect($this->helper->url->to('column', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('ColumnController', 'index', array('project_id' => $project['id'])));
}
}
diff --git a/app/Controller/Comment.php b/app/Controller/CommentController.php
index 83a67b41..2a8c258a 100644
--- a/app/Controller/Comment.php
+++ b/app/Controller/CommentController.php
@@ -6,12 +6,12 @@ use Kanboard\Core\Controller\AccessForbiddenException;
use Kanboard\Core\Controller\PageNotFoundException;
/**
- * Comment controller
+ * Comment Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Comment extends BaseController
+class CommentController extends BaseController
{
/**
* Get the current comment
@@ -23,7 +23,7 @@ class Comment extends BaseController
*/
private function getComment()
{
- $comment = $this->comment->getById($this->request->getIntegerParam('comment_id'));
+ $comment = $this->commentModel->getById($this->request->getIntegerParam('comment_id'));
if (empty($comment)) {
throw new PageNotFoundException();
@@ -76,13 +76,13 @@ class Comment extends BaseController
list($valid, $errors) = $this->commentValidator->validateCreation($values);
if ($valid) {
- if ($this->comment->create($values)) {
+ if ($this->commentModel->create($values) !== false) {
$this->flash->success(t('Comment added successfully.'));
} else {
$this->flash->failure(t('Unable to create your comment.'));
}
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'), true);
}
return $this->create($values, $errors);
@@ -125,13 +125,13 @@ class Comment extends BaseController
list($valid, $errors) = $this->commentValidator->validateModification($values);
if ($valid) {
- if ($this->comment->update($values)) {
+ if ($this->commentModel->update($values)) {
$this->flash->success(t('Comment updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your comment.'));
}
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), false);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), false);
}
return $this->edit($values, $errors);
@@ -165,13 +165,13 @@ class Comment extends BaseController
$task = $this->getTask();
$comment = $this->getComment();
- if ($this->comment->remove($comment['id'])) {
+ if ($this->commentModel->remove($comment['id'])) {
$this->flash->success(t('Comment removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this comment.'));
}
- $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'));
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'));
}
/**
@@ -186,6 +186,6 @@ class Comment extends BaseController
$order = $this->userSession->getCommentSorting() === 'ASC' ? 'DESC' : 'ASC';
$this->userSession->setCommentSorting($order);
- $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'));
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'));
}
}
diff --git a/app/Controller/Config.php b/app/Controller/ConfigController.php
index abf6565c..8bcf4c35 100644
--- a/app/Controller/Config.php
+++ b/app/Controller/ConfigController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Config controller
+ * Config Controller
*
- * @package controller
+ * @package Kanboard/Controller
* @author Frederic Guillot
*/
-class Config extends BaseController
+class ConfigController extends BaseController
{
/**
* Display the about page
@@ -18,7 +18,7 @@ class Config extends BaseController
public function index()
{
$this->response->html($this->helper->layout->config('config/about', array(
- 'db_size' => $this->config->getDatabaseSize(),
+ 'db_size' => $this->configModel->getDatabaseSize(),
'db_version' => $this->db->getDriver()->getDatabaseVersion(),
'user_agent' => $this->request->getServerVariable('HTTP_USER_AGENT'),
'title' => t('Settings').' &gt; '.t('About'),
@@ -54,14 +54,14 @@ class Config extends BaseController
break;
}
- if ($this->config->save($values)) {
- $this->language->loadCurrentLanguage();
+ if ($this->configModel->save($values)) {
+ $this->languageModel->loadCurrentLanguage();
$this->flash->success(t('Settings saved successfully.'));
} else {
$this->flash->failure(t('Unable to save your settings.'));
}
- $this->response->redirect($this->helper->url->to('config', $redirect));
+ $this->response->redirect($this->helper->url->to('ConfigController', $redirect));
}
/**
@@ -72,8 +72,8 @@ class Config extends BaseController
public function application()
{
$this->response->html($this->helper->layout->config('config/application', array(
- 'languages' => $this->language->getLanguages(),
- 'timezones' => $this->timezone->getTimezones(),
+ 'languages' => $this->languageModel->getLanguages(),
+ 'timezones' => $this->timezoneModel->getTimezones(),
'date_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateFormats()),
'datetime_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateTimeFormats()),
'time_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getTimeFormats()),
@@ -89,8 +89,8 @@ class Config extends BaseController
public function project()
{
$this->response->html($this->helper->layout->config('config/project', array(
- 'colors' => $this->color->getList(),
- 'default_columns' => implode(', ', $this->board->getDefaultColumns()),
+ 'colors' => $this->colorModel->getList(),
+ 'default_columns' => implode(', ', $this->boardModel->getDefaultColumns()),
'title' => t('Settings').' &gt; '.t('Project settings'),
)));
}
@@ -164,7 +164,7 @@ class Config extends BaseController
{
$this->checkCSRFParam();
$this->response->withFileDownload('db.sqlite.gz');
- $this->response->binary($this->config->downloadDatabase());
+ $this->response->binary($this->configModel->downloadDatabase());
}
/**
@@ -175,9 +175,9 @@ class Config extends BaseController
public function optimizeDb()
{
$this->checkCSRFParam();
- $this->config->optimizeDatabase();
+ $this->configModel->optimizeDatabase();
$this->flash->success(t('Database optimization done.'));
- $this->response->redirect($this->helper->url->to('config', 'index'));
+ $this->response->redirect($this->helper->url->to('ConfigController', 'index'));
}
/**
@@ -190,9 +190,9 @@ class Config extends BaseController
$type = $this->request->getStringParam('type');
$this->checkCSRFParam();
- $this->config->regenerateToken($type.'_token');
+ $this->configModel->regenerateToken($type.'_token');
$this->flash->success(t('Token regenerated.'));
- $this->response->redirect($this->helper->url->to('config', $type));
+ $this->response->redirect($this->helper->url->to('ConfigController', $type));
}
}
diff --git a/app/Controller/Currency.php b/app/Controller/CurrencyController.php
index 872d6929..ad590035 100644
--- a/app/Controller/Currency.php
+++ b/app/Controller/CurrencyController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Currency controller
+ * Currency Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Currency extends BaseController
+class CurrencyController extends BaseController
{
/**
* Display all currency rates and form
@@ -20,11 +20,11 @@ class Currency extends BaseController
public function index(array $values = array(), array $errors = array())
{
$this->response->html($this->helper->layout->config('currency/index', array(
- 'config_values' => array('application_currency' => $this->config->get('application_currency')),
+ 'config_values' => array('application_currency' => $this->configModel->get('application_currency')),
'values' => $values,
'errors' => $errors,
- 'rates' => $this->currency->getAll(),
- 'currencies' => $this->currency->getCurrencies(),
+ 'rates' => $this->currencyModel->getAll(),
+ 'currencies' => $this->currencyModel->getCurrencies(),
'title' => t('Settings').' &gt; '.t('Currency rates'),
)));
}
@@ -40,9 +40,9 @@ class Currency extends BaseController
list($valid, $errors) = $this->currencyValidator->validateCreation($values);
if ($valid) {
- if ($this->currency->create($values['currency'], $values['rate'])) {
+ if ($this->currencyModel->create($values['currency'], $values['rate'])) {
$this->flash->success(t('The currency rate have been added successfully.'));
- return $this->response->redirect($this->helper->url->to('currency', 'index'));
+ return $this->response->redirect($this->helper->url->to('CurrencyController', 'index'));
} else {
$this->flash->failure(t('Unable to add this currency rate.'));
}
@@ -60,12 +60,12 @@ class Currency extends BaseController
{
$values = $this->request->getValues();
- if ($this->config->save($values)) {
+ if ($this->configModel->save($values)) {
$this->flash->success(t('Settings saved successfully.'));
} else {
$this->flash->failure(t('Unable to save your settings.'));
}
- $this->response->redirect($this->helper->url->to('currency', 'index'));
+ $this->response->redirect($this->helper->url->to('CurrencyController', 'index'));
}
}
diff --git a/app/Controller/Customfilter.php b/app/Controller/CustomFilterController.php
index d0794366..e5f674cd 100644
--- a/app/Controller/Customfilter.php
+++ b/app/Controller/CustomFilterController.php
@@ -6,17 +6,21 @@ use Kanboard\Core\Controller\AccessForbiddenException;
use Kanboard\Core\Security\Role;
/**
- * Custom Filter management
+ * Custom Filter Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Timo Litzbarski
+ * @author Frederic Guillot
*/
-class Customfilter extends BaseController
+class CustomFilterController extends BaseController
{
/**
* Display list of filters
*
* @access public
+ * @param array $values
+ * @param array $errors
+ * @throws \Kanboard\Core\Controller\PageNotFoundException
*/
public function index(array $values = array(), array $errors = array())
{
@@ -26,7 +30,7 @@ class Customfilter extends BaseController
'values' => $values + array('project_id' => $project['id']),
'errors' => $errors,
'project' => $project,
- 'custom_filters' => $this->customFilter->getAll($project['id'], $this->userSession->getId()),
+ 'custom_filters' => $this->customFilterModel->getAll($project['id'], $this->userSession->getId()),
'title' => t('Custom filters'),
)));
}
@@ -46,9 +50,9 @@ class Customfilter extends BaseController
list($valid, $errors) = $this->customFilterValidator->validateCreation($values);
if ($valid) {
- if ($this->customFilter->create($values)) {
+ if ($this->customFilterModel->create($values) !== false) {
$this->flash->success(t('Your custom filter have been created successfully.'));
- return $this->response->redirect($this->helper->url->to('customfilter', 'index', array('project_id' => $project['id'])));
+ return $this->response->redirect($this->helper->url->to('CustomFilterController', 'index', array('project_id' => $project['id'])));
} else {
$this->flash->failure(t('Unable to create your custom filter.'));
}
@@ -65,7 +69,7 @@ class Customfilter extends BaseController
public function confirm()
{
$project = $this->getProject();
- $filter = $this->customFilter->getById($this->request->getIntegerParam('filter_id'));
+ $filter = $this->customFilterModel->getById($this->request->getIntegerParam('filter_id'));
$this->response->html($this->helper->layout->project('custom_filter/remove', array(
'project' => $project,
@@ -83,28 +87,32 @@ class Customfilter extends BaseController
{
$this->checkCSRFParam();
$project = $this->getProject();
- $filter = $this->customFilter->getById($this->request->getIntegerParam('filter_id'));
+ $filter = $this->customFilterModel->getById($this->request->getIntegerParam('filter_id'));
$this->checkPermission($project, $filter);
- if ($this->customFilter->remove($filter['id'])) {
+ if ($this->customFilterModel->remove($filter['id'])) {
$this->flash->success(t('Custom filter removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this custom filter.'));
}
- $this->response->redirect($this->helper->url->to('customfilter', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('CustomFilterController', 'index', array('project_id' => $project['id'])));
}
/**
* Edit a custom filter (display the form)
*
* @access public
+ * @param array $values
+ * @param array $errors
+ * @throws AccessForbiddenException
+ * @throws \Kanboard\Core\Controller\PageNotFoundException
*/
public function edit(array $values = array(), array $errors = array())
{
$project = $this->getProject();
- $filter = $this->customFilter->getById($this->request->getIntegerParam('filter_id'));
+ $filter = $this->customFilterModel->getById($this->request->getIntegerParam('filter_id'));
$this->checkPermission($project, $filter);
@@ -125,7 +133,7 @@ class Customfilter extends BaseController
public function update()
{
$project = $this->getProject();
- $filter = $this->customFilter->getById($this->request->getIntegerParam('filter_id'));
+ $filter = $this->customFilterModel->getById($this->request->getIntegerParam('filter_id'));
$this->checkPermission($project, $filter);
@@ -142,9 +150,9 @@ class Customfilter extends BaseController
list($valid, $errors) = $this->customFilterValidator->validateModification($values);
if ($valid) {
- if ($this->customFilter->update($values)) {
+ if ($this->customFilterModel->update($values)) {
$this->flash->success(t('Your custom filter have been updated successfully.'));
- return $this->response->redirect($this->helper->url->to('customfilter', 'index', array('project_id' => $project['id'])));
+ return $this->response->redirect($this->helper->url->to('CustomFilterController', 'index', array('project_id' => $project['id'])));
} else {
$this->flash->failure(t('Unable to update custom filter.'));
}
@@ -157,7 +165,7 @@ class Customfilter extends BaseController
{
$user_id = $this->userSession->getId();
- if ($filter['user_id'] != $user_id && ($this->projectUserRole->getUserRole($project['id'], $user_id) === Role::PROJECT_MANAGER || ! $this->userSession->isAdmin())) {
+ if ($filter['user_id'] != $user_id && ($this->projectUserRoleModel->getUserRole($project['id'], $user_id) === Role::PROJECT_MANAGER || ! $this->userSession->isAdmin())) {
throw new AccessForbiddenException();
}
}
diff --git a/app/Controller/DashboardController.php b/app/Controller/DashboardController.php
index 145e0bff..44874546 100644
--- a/app/Controller/DashboardController.php
+++ b/app/Controller/DashboardController.php
@@ -2,8 +2,8 @@
namespace Kanboard\Controller;
-use Kanboard\Model\Project as ProjectModel;
-use Kanboard\Model\Subtask as SubtaskModel;
+use Kanboard\Model\ProjectModel;
+use Kanboard\Model\SubtaskModel;
/**
* Dashboard Controller
@@ -28,7 +28,7 @@ class DashboardController extends BaseController
->setUrl('DashboardController', $action, array('pagination' => 'projects', 'user_id' => $user_id))
->setMax($max)
->setOrder(ProjectModel::TABLE.'.name')
- ->setQuery($this->project->getQueryColumnStats($this->projectPermission->getActiveProjectIds($user_id)))
+ ->setQuery($this->projectModel->getQueryColumnStats($this->projectPermissionModel->getActiveProjectIds($user_id)))
->calculateOnlyIf($this->request->getStringParam('pagination') === 'projects');
}
@@ -47,7 +47,7 @@ class DashboardController extends BaseController
->setUrl('DashboardController', $action, array('pagination' => 'tasks', 'user_id' => $user_id))
->setMax($max)
->setOrder('tasks.id')
- ->setQuery($this->taskFinder->getUserQuery($user_id))
+ ->setQuery($this->taskFinderModel->getUserQuery($user_id))
->calculateOnlyIf($this->request->getStringParam('pagination') === 'tasks');
}
@@ -66,7 +66,7 @@ class DashboardController extends BaseController
->setUrl('DashboardController', $action, array('pagination' => 'subtasks', 'user_id' => $user_id))
->setMax($max)
->setOrder('tasks.id')
- ->setQuery($this->subtask->getUserQuery($user_id, array(SubTaskModel::STATUS_TODO, SubtaskModel::STATUS_INPROGRESS)))
+ ->setQuery($this->subtaskModel->getUserQuery($user_id, array(SubTaskModel::STATUS_TODO, SubtaskModel::STATUS_INPROGRESS)))
->calculateOnlyIf($this->request->getStringParam('pagination') === 'subtasks');
}
@@ -147,7 +147,7 @@ class DashboardController extends BaseController
$this->response->html($this->helper->layout->dashboard('dashboard/activity', array(
'title' => t('My activity stream'),
- 'events' => $this->helper->projectActivity->getProjectsEvents($this->projectPermission->getActiveProjectIds($user['id']), 100),
+ 'events' => $this->helper->projectActivity->getProjectsEvents($this->projectPermissionModel->getActiveProjectIds($user['id']), 100),
'user' => $user,
)));
}
@@ -176,7 +176,7 @@ class DashboardController extends BaseController
$this->response->html($this->helper->layout->dashboard('dashboard/notifications', array(
'title' => t('My notifications'),
- 'notifications' => $this->userUnreadNotification->getAll($user['id']),
+ 'notifications' => $this->userUnreadNotificationModel->getAll($user['id']),
'user' => $user,
)));
}
diff --git a/app/Controller/Doc.php b/app/Controller/DocumentationController.php
index 5caf5f5f..d86fb3c8 100644
--- a/app/Controller/Doc.php
+++ b/app/Controller/DocumentationController.php
@@ -7,10 +7,10 @@ use Parsedown;
/**
* Documentation Viewer
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Doc extends BaseController
+class DocumentationController extends BaseController
{
public function show()
{
@@ -20,7 +20,7 @@ class Doc extends BaseController
$page = 'index';
}
- if ($this->language->getCurrentLanguage() === 'fr_FR') {
+ if ($this->languageModel->getCurrentLanguage() === 'fr_FR') {
$filename = __DIR__.'/../../doc/fr/' . $page . '.markdown';
} else {
$filename = __DIR__ . '/../../doc/' . $page . '.markdown';
@@ -71,7 +71,7 @@ class Doc extends BaseController
*/
public function replaceMarkdownUrl(array $matches)
{
- return '('.$this->helper->url->to('doc', 'show', array('file' => str_replace('.markdown', '', $matches[1]))).')';
+ return '('.$this->helper->url->to('DocumentationController', 'show', array('file' => str_replace('.markdown', '', $matches[1]))).')';
}
/**
@@ -83,7 +83,7 @@ class Doc extends BaseController
*/
public function replaceImageUrl(array $matches)
{
- if ($this->language->getCurrentLanguage() === 'fr_FR') {
+ if ($this->languageModel->getCurrentLanguage() === 'fr_FR') {
return '('.$this->helper->url->base().'doc/fr/'.$matches[1].')';
}
diff --git a/app/Controller/Export.php b/app/Controller/ExportController.php
index 7e1d2fdc..b2fe0ebd 100644
--- a/app/Controller/Export.php
+++ b/app/Controller/ExportController.php
@@ -3,12 +3,12 @@
namespace Kanboard\Controller;
/**
- * Export controller
+ * Export Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Export extends BaseController
+class ExportController extends BaseController
{
/**
* Common export method
@@ -35,14 +35,14 @@ class Export extends BaseController
$this->response->html($this->helper->layout->project('export/'.$action, array(
'values' => array(
- 'controller' => 'export',
+ 'controller' => 'ExportController',
'action' => $action,
'project_id' => $project['id'],
'from' => $from,
'to' => $to,
),
'errors' => array(),
- 'date_format' => $this->config->get('application_date_format'),
+ 'date_format' => $this->configModel->get('application_date_format'),
'date_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateFormats()),
'project' => $project,
'title' => $page_title,
diff --git a/app/Controller/Feed.php b/app/Controller/FeedController.php
index 7554a499..cf2b1088 100644
--- a/app/Controller/Feed.php
+++ b/app/Controller/FeedController.php
@@ -7,10 +7,10 @@ use Kanboard\Core\Controller\AccessForbiddenException;
/**
* Atom/RSS Feed controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Feed extends BaseController
+class FeedController extends BaseController
{
/**
* RSS feed for a user
@@ -20,7 +20,7 @@ class Feed extends BaseController
public function user()
{
$token = $this->request->getStringParam('token');
- $user = $this->user->getByToken($token);
+ $user = $this->userModel->getByToken($token);
// Token verification
if (empty($user)) {
@@ -28,7 +28,7 @@ class Feed extends BaseController
}
$this->response->xml($this->template->render('feed/user', array(
- 'events' => $this->helper->projectActivity->getProjectsEvents($this->projectPermission->getActiveProjectIds($user['id'])),
+ 'events' => $this->helper->projectActivity->getProjectsEvents($this->projectPermissionModel->getActiveProjectIds($user['id'])),
'user' => $user,
)));
}
@@ -41,7 +41,7 @@ class Feed extends BaseController
public function project()
{
$token = $this->request->getStringParam('token');
- $project = $this->project->getByToken($token);
+ $project = $this->projectModel->getByToken($token);
if (empty($project)) {
throw AccessForbiddenException::getInstance()->withoutLayout();
diff --git a/app/Controller/FileViewer.php b/app/Controller/FileViewerController.php
index a49b0fb2..245845c7 100644
--- a/app/Controller/FileViewer.php
+++ b/app/Controller/FileViewerController.php
@@ -7,10 +7,10 @@ use Kanboard\Core\ObjectStorage\ObjectStorageException;
/**
* File Viewer Controller
*
- * @package controller
+ * @package Kanbaord\Controller
* @author Frederic Guillot
*/
-class FileViewer extends BaseController
+class FileViewerController extends BaseController
{
/**
* Get file content from object storage
diff --git a/app/Controller/Gantt.php b/app/Controller/Gantt.php
deleted file mode 100644
index d062b2fe..00000000
--- a/app/Controller/Gantt.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-
-namespace Kanboard\Controller;
-
-use Kanboard\Filter\ProjectIdsFilter;
-use Kanboard\Filter\ProjectStatusFilter;
-use Kanboard\Filter\ProjectTypeFilter;
-use Kanboard\Filter\TaskProjectFilter;
-use Kanboard\Formatter\ProjectGanttFormatter;
-use Kanboard\Formatter\TaskGanttFormatter;
-use Kanboard\Model\Task as TaskModel;
-use Kanboard\Model\Project as ProjectModel;
-
-/**
- * Gantt controller
- *
- * @package controller
- * @author Frederic Guillot
- */
-class Gantt extends BaseController
-{
- /**
- * Show Gantt chart for all projects
- */
- public function projects()
- {
- $project_ids = $this->projectPermission->getActiveProjectIds($this->userSession->getId());
- $filter = $this->projectQuery
- ->withFilter(new ProjectTypeFilter(ProjectModel::TYPE_TEAM))
- ->withFilter(new ProjectStatusFilter(ProjectModel::ACTIVE))
- ->withFilter(new ProjectIdsFilter($project_ids));
-
- $filter->getQuery()->asc(ProjectModel::TABLE.'.start_date');
-
- $this->response->html($this->helper->layout->app('gantt/projects', array(
- 'projects' => $filter->format(new ProjectGanttFormatter($this->container)),
- 'title' => t('Gantt chart for all projects'),
- )));
- }
-
- /**
- * Save new project start date and end date
- */
- public function saveProjectDate()
- {
- $values = $this->request->getJson();
-
- $result = $this->project->update(array(
- 'id' => $values['id'],
- 'start_date' => $this->dateParser->getIsoDate(strtotime($values['start'])),
- 'end_date' => $this->dateParser->getIsoDate(strtotime($values['end'])),
- ));
-
- if (! $result) {
- $this->response->json(array('message' => 'Unable to save project'), 400);
- } else {
- $this->response->json(array('message' => 'OK'), 201);
- }
- }
-
- /**
- * Show Gantt chart for one project
- */
- public function project()
- {
- $project = $this->getProject();
- $search = $this->helper->projectHeader->getSearchQuery($project);
- $sorting = $this->request->getStringParam('sorting', 'board');
- $filter = $this->taskLexer->build($search)->withFilter(new TaskProjectFilter($project['id']));
-
- if ($sorting === 'date') {
- $filter->getQuery()->asc(TaskModel::TABLE.'.date_started')->asc(TaskModel::TABLE.'.date_creation');
- } else {
- $filter->getQuery()->asc('column_position')->asc(TaskModel::TABLE.'.position');
- }
-
- $this->response->html($this->helper->layout->app('gantt/project', array(
- 'project' => $project,
- 'title' => $project['name'],
- 'description' => $this->helper->projectHeader->getDescription($project),
- 'sorting' => $sorting,
- 'tasks' => $filter->format(new TaskGanttFormatter($this->container)),
- )));
- }
-
- /**
- * Save new task start date and due date
- */
- public function saveTaskDate()
- {
- $this->getProject();
- $values = $this->request->getJson();
-
- $result = $this->taskModification->update(array(
- 'id' => $values['id'],
- 'date_started' => strtotime($values['start']),
- 'date_due' => strtotime($values['end']),
- ));
-
- if (! $result) {
- $this->response->json(array('message' => 'Unable to save task'), 400);
- } else {
- $this->response->json(array('message' => 'OK'), 201);
- }
- }
-
- /**
- * Simplified form to create a new task
- *
- * @access public
- * @param array $values
- * @param array $errors
- * @throws \Kanboard\Core\Controller\PageNotFoundException
- */
- public function task(array $values = array(), array $errors = array())
- {
- $project = $this->getProject();
-
- $values = $values + array(
- 'project_id' => $project['id'],
- 'column_id' => $this->column->getFirstColumnId($project['id']),
- 'position' => 1
- );
-
- $values = $this->hook->merge('controller:task:form:default', $values, array('default_values' => $values));
- $values = $this->hook->merge('controller:gantt:task:form:default', $values, array('default_values' => $values));
-
- $this->response->html($this->template->render('gantt/task_creation', array(
- 'project' => $project,
- 'errors' => $errors,
- 'values' => $values,
- 'users_list' => $this->projectUserRole->getAssignableUsersList($project['id'], true, false, true),
- 'colors_list' => $this->color->getList(),
- 'categories_list' => $this->category->getList($project['id']),
- 'swimlanes_list' => $this->swimlane->getList($project['id'], false, true),
- 'title' => $project['name'].' &gt; '.t('New task')
- )));
- }
-
- /**
- * Validate and save a new task
- *
- * @access public
- */
- public function saveTask()
- {
- $project = $this->getProject();
- $values = $this->request->getValues();
-
- list($valid, $errors) = $this->taskValidator->validateCreation($values);
-
- if ($valid) {
- $task_id = $this->taskCreation->create($values);
-
- if ($task_id !== false) {
- $this->flash->success(t('Task created successfully.'));
- return $this->response->redirect($this->helper->url->to('gantt', 'project', array('project_id' => $project['id'])));
- } else {
- $this->flash->failure(t('Unable to create your task.'));
- }
- }
-
- return $this->task($values, $errors);
- }
-}
diff --git a/app/Controller/GroupCreationController.php b/app/Controller/GroupCreationController.php
index 7d0bb93c..b297b19f 100644
--- a/app/Controller/GroupCreationController.php
+++ b/app/Controller/GroupCreationController.php
@@ -36,7 +36,7 @@ class GroupCreationController extends BaseController
list($valid, $errors) = $this->groupValidator->validateCreation($values);
if ($valid) {
- if ($this->group->create($values['name']) !== false) {
+ if ($this->groupModel->create($values['name']) !== false) {
$this->flash->success(t('Group created successfully.'));
return $this->response->redirect($this->helper->url->to('GroupListController', 'index'), true);
} else {
diff --git a/app/Controller/GroupListController.php b/app/Controller/GroupListController.php
index 17f3b2a9..4486bbff 100644
--- a/app/Controller/GroupListController.php
+++ b/app/Controller/GroupListController.php
@@ -21,7 +21,7 @@ class GroupListController extends BaseController
->setUrl('GroupListController', 'index')
->setMax(30)
->setOrder('name')
- ->setQuery($this->group->getQuery())
+ ->setQuery($this->groupModel->getQuery())
->calculate();
$this->response->html($this->helper->layout->app('group/index', array(
@@ -38,13 +38,13 @@ class GroupListController extends BaseController
public function users()
{
$group_id = $this->request->getIntegerParam('group_id');
- $group = $this->group->getById($group_id);
+ $group = $this->groupModel->getById($group_id);
$paginator = $this->paginator
->setUrl('GroupListController', 'users', array('group_id' => $group_id))
->setMax(30)
->setOrder('username')
- ->setQuery($this->groupMember->getQuery($group_id))
+ ->setQuery($this->groupMemberModel->getQuery($group_id))
->calculate();
$this->response->html($this->helper->layout->app('group/users', array(
@@ -64,14 +64,14 @@ class GroupListController extends BaseController
public function associate(array $values = array(), array $errors = array())
{
$group_id = $this->request->getIntegerParam('group_id');
- $group = $this->group->getById($group_id);
+ $group = $this->groupModel->getById($group_id);
if (empty($values)) {
$values['group_id'] = $group_id;
}
$this->response->html($this->template->render('group/associate', array(
- 'users' => $this->user->prepareList($this->groupMember->getNotMembers($group_id)),
+ 'users' => $this->userModel->prepareList($this->groupMemberModel->getNotMembers($group_id)),
'group' => $group,
'errors' => $errors,
'values' => $values,
@@ -88,7 +88,7 @@ class GroupListController extends BaseController
$values = $this->request->getValues();
if (isset($values['group_id']) && isset($values['user_id'])) {
- if ($this->groupMember->addUser($values['group_id'], $values['user_id'])) {
+ if ($this->groupMemberModel->addUser($values['group_id'], $values['user_id'])) {
$this->flash->success(t('Group member added successfully.'));
return $this->response->redirect($this->helper->url->to('GroupListController', 'users', array('group_id' => $values['group_id'])), true);
} else {
@@ -108,8 +108,8 @@ class GroupListController extends BaseController
{
$group_id = $this->request->getIntegerParam('group_id');
$user_id = $this->request->getIntegerParam('user_id');
- $group = $this->group->getById($group_id);
- $user = $this->user->getById($user_id);
+ $group = $this->groupModel->getById($group_id);
+ $user = $this->userModel->getById($user_id);
$this->response->html($this->template->render('group/dissociate', array(
'group' => $group,
@@ -128,7 +128,7 @@ class GroupListController extends BaseController
$group_id = $this->request->getIntegerParam('group_id');
$user_id = $this->request->getIntegerParam('user_id');
- if ($this->groupMember->removeUser($group_id, $user_id)) {
+ if ($this->groupMemberModel->removeUser($group_id, $user_id)) {
$this->flash->success(t('User removed successfully from this group.'));
} else {
$this->flash->failure(t('Unable to remove this user from the group.'));
@@ -145,7 +145,7 @@ class GroupListController extends BaseController
public function confirm()
{
$group_id = $this->request->getIntegerParam('group_id');
- $group = $this->group->getById($group_id);
+ $group = $this->groupModel->getById($group_id);
$this->response->html($this->template->render('group/remove', array(
'group' => $group,
@@ -162,7 +162,7 @@ class GroupListController extends BaseController
$this->checkCSRFParam();
$group_id = $this->request->getIntegerParam('group_id');
- if ($this->group->remove($group_id)) {
+ if ($this->groupModel->remove($group_id)) {
$this->flash->success(t('Group removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this group.'));
diff --git a/app/Controller/GroupModificationController.php b/app/Controller/GroupModificationController.php
index 1f225a14..bd181b74 100644
--- a/app/Controller/GroupModificationController.php
+++ b/app/Controller/GroupModificationController.php
@@ -20,7 +20,7 @@ class GroupModificationController extends BaseController
public function show(array $values = array(), array $errors = array())
{
if (empty($values)) {
- $values = $this->group->getById($this->request->getIntegerParam('group_id'));
+ $values = $this->groupModel->getById($this->request->getIntegerParam('group_id'));
}
$this->response->html($this->template->render('group_modification/show', array(
@@ -40,7 +40,7 @@ class GroupModificationController extends BaseController
list($valid, $errors) = $this->groupValidator->validateModification($values);
if ($valid) {
- if ($this->group->update($values) !== false) {
+ if ($this->groupModel->update($values) !== false) {
$this->flash->success(t('Group updated successfully.'));
return $this->response->redirect($this->helper->url->to('GroupListController', 'index'), true);
} else {
diff --git a/app/Controller/Ical.php b/app/Controller/ICalendarController.php
index 091ea5f4..e354c6f1 100644
--- a/app/Controller/Ical.php
+++ b/app/Controller/ICalendarController.php
@@ -8,16 +8,16 @@ use Kanboard\Filter\TaskAssigneeFilter;
use Kanboard\Filter\TaskProjectFilter;
use Kanboard\Filter\TaskStatusFilter;
use Kanboard\Formatter\TaskICalFormatter;
-use Kanboard\Model\Task as TaskModel;
+use Kanboard\Model\TaskModel;
use Eluceo\iCal\Component\Calendar as iCalendar;
/**
- * iCalendar controller
+ * iCalendar Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Ical extends BaseController
+class ICalendarController extends BaseController
{
/**
* Get user iCalendar
@@ -27,7 +27,7 @@ class Ical extends BaseController
public function user()
{
$token = $this->request->getStringParam('token');
- $user = $this->user->getByToken($token);
+ $user = $this->userModel->getByToken($token);
// Token verification
if (empty($user)) {
@@ -37,7 +37,7 @@ class Ical extends BaseController
// Common filter
$queryBuilder = new QueryBuilder();
$queryBuilder
- ->withQuery($this->taskFinder->getICalQuery())
+ ->withQuery($this->taskFinderModel->getICalQuery())
->withFilter(new TaskStatusFilter(TaskModel::STATUS_OPEN))
->withFilter(new TaskAssigneeFilter($user['id']));
@@ -58,7 +58,7 @@ class Ical extends BaseController
public function project()
{
$token = $this->request->getStringParam('token');
- $project = $this->project->getByToken($token);
+ $project = $this->projectModel->getByToken($token);
// Token verification
if (empty($project)) {
@@ -68,7 +68,7 @@ class Ical extends BaseController
// Common filter
$queryBuilder = new QueryBuilder();
$queryBuilder
- ->withQuery($this->taskFinder->getICalQuery())
+ ->withQuery($this->taskFinderModel->getICalQuery())
->withFilter(new TaskStatusFilter(TaskModel::STATUS_OPEN))
->withFilter(new TaskProjectFilter($project['id']));
diff --git a/app/Controller/Link.php b/app/Controller/LinkController.php
index d28f5e4e..477b25a4 100644
--- a/app/Controller/Link.php
+++ b/app/Controller/LinkController.php
@@ -5,13 +5,13 @@ namespace Kanboard\Controller;
use Kanboard\Core\Controller\PageNotFoundException;
/**
- * Link controller
+ * Link Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Olivier Maridat
* @author Frederic Guillot
*/
-class Link extends BaseController
+class LinkController extends BaseController
{
/**
* Get the current link
@@ -22,7 +22,7 @@ class Link extends BaseController
*/
private function getLink()
{
- $link = $this->link->getById($this->request->getIntegerParam('link_id'));
+ $link = $this->linkModel->getById($this->request->getIntegerParam('link_id'));
if (empty($link)) {
throw new PageNotFoundException();
@@ -41,7 +41,7 @@ class Link extends BaseController
public function index(array $values = array(), array $errors = array())
{
$this->response->html($this->helper->layout->config('link/index', array(
- 'links' => $this->link->getMergedList(),
+ 'links' => $this->linkModel->getMergedList(),
'values' => $values,
'errors' => $errors,
'title' => t('Settings').' &gt; '.t('Task\'s links'),
@@ -59,9 +59,9 @@ class Link extends BaseController
list($valid, $errors) = $this->linkValidator->validateCreation($values);
if ($valid) {
- if ($this->link->create($values['label'], $values['opposite_label']) !== false) {
+ if ($this->linkModel->create($values['label'], $values['opposite_label']) !== false) {
$this->flash->success(t('Link added successfully.'));
- return $this->response->redirect($this->helper->url->to('link', 'index'));
+ return $this->response->redirect($this->helper->url->to('LinkController', 'index'));
} else {
$this->flash->failure(t('Unable to create your link.'));
}
@@ -86,7 +86,7 @@ class Link extends BaseController
$this->response->html($this->helper->layout->config('link/edit', array(
'values' => $values ?: $link,
'errors' => $errors,
- 'labels' => $this->link->getList($link['id']),
+ 'labels' => $this->linkModel->getList($link['id']),
'link' => $link,
'title' => t('Link modification')
)));
@@ -103,9 +103,9 @@ class Link extends BaseController
list($valid, $errors) = $this->linkValidator->validateModification($values);
if ($valid) {
- if ($this->link->update($values)) {
+ if ($this->linkModel->update($values)) {
$this->flash->success(t('Link updated successfully.'));
- return $this->response->redirect($this->helper->url->to('link', 'index'));
+ return $this->response->redirect($this->helper->url->to('LinkController', 'index'));
} else {
$this->flash->failure(t('Unable to update your link.'));
}
@@ -139,12 +139,12 @@ class Link extends BaseController
$this->checkCSRFParam();
$link = $this->getLink();
- if ($this->link->remove($link['id'])) {
+ if ($this->linkModel->remove($link['id'])) {
$this->flash->success(t('Link removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this link.'));
}
- $this->response->redirect($this->helper->url->to('link', 'index'));
+ $this->response->redirect($this->helper->url->to('LinkController', 'index'));
}
}
diff --git a/app/Controller/Oauth.php b/app/Controller/OAuthController.php
index 04adf154..7663ddcc 100644
--- a/app/Controller/Oauth.php
+++ b/app/Controller/OAuthController.php
@@ -5,12 +5,12 @@ namespace Kanboard\Controller;
use Kanboard\Core\Security\OAuthAuthenticationProviderInterface;
/**
- * OAuth controller
+ * OAuth Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Oauth extends BaseController
+class OAuthController extends BaseController
{
/**
* Redirect to the provider if no code received
diff --git a/app/Controller/PasswordReset.php b/app/Controller/PasswordResetController.php
index 7050d6d2..18b4be80 100644
--- a/app/Controller/PasswordReset.php
+++ b/app/Controller/PasswordResetController.php
@@ -7,10 +7,10 @@ use Kanboard\Core\Controller\AccessForbiddenException;
/**
* Password Reset Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class PasswordReset extends BaseController
+class PasswordResetController extends BaseController
{
/**
* Show the form to reset the password
@@ -38,7 +38,7 @@ class PasswordReset extends BaseController
if ($valid) {
$this->sendEmail($values['username']);
- $this->response->redirect($this->helper->url->to('auth', 'login'));
+ $this->response->redirect($this->helper->url->to('AuthController', 'login'));
} else {
$this->create($values, $errors);
}
@@ -52,7 +52,7 @@ class PasswordReset extends BaseController
$this->checkActivation();
$token = $this->request->getStringParam('token');
- $user_id = $this->passwordReset->getUserIdByToken($token);
+ $user_id = $this->passwordResetModel->getUserIdByToken($token);
if ($user_id !== false) {
$this->response->html($this->helper->layout->app('password_reset/change', array(
@@ -62,7 +62,7 @@ class PasswordReset extends BaseController
'no_layout' => true,
)));
} else {
- $this->response->redirect($this->helper->url->to('auth', 'login'));
+ $this->response->redirect($this->helper->url->to('AuthController', 'login'));
}
}
@@ -78,14 +78,14 @@ class PasswordReset extends BaseController
list($valid, $errors) = $this->passwordResetValidator->validateModification($values);
if ($valid) {
- $user_id = $this->passwordReset->getUserIdByToken($token);
+ $user_id = $this->passwordResetModel->getUserIdByToken($token);
if ($user_id !== false) {
- $this->user->update(array('id' => $user_id, 'password' => $values['password']));
- $this->passwordReset->disable($user_id);
+ $this->userModel->update(array('id' => $user_id, 'password' => $values['password']));
+ $this->passwordResetModel->disable($user_id);
}
- return $this->response->redirect($this->helper->url->to('auth', 'login'));
+ return $this->response->redirect($this->helper->url->to('AuthController', 'login'));
}
return $this->change($values, $errors);
@@ -96,10 +96,10 @@ class PasswordReset extends BaseController
*/
private function sendEmail($username)
{
- $token = $this->passwordReset->create($username);
+ $token = $this->passwordResetModel->create($username);
if ($token !== false) {
- $user = $this->user->getByUsername($username);
+ $user = $this->userModel->getByUsername($username);
$this->emailClient->send(
$user['email'],
@@ -115,7 +115,7 @@ class PasswordReset extends BaseController
*/
private function checkActivation()
{
- if ($this->config->get('password_reset', 0) == 0) {
+ if ($this->configModel->get('password_reset', 0) == 0) {
throw AccessForbiddenException::getInstance()->withoutLayout();
}
}
diff --git a/app/Controller/ActionProject.php b/app/Controller/ProjectActionDuplicationController.php
index 10b3c9d4..a4993cca 100644
--- a/app/Controller/ActionProject.php
+++ b/app/Controller/ProjectActionDuplicationController.php
@@ -5,18 +5,18 @@ namespace Kanboard\Controller;
/**
* Duplicate automatic action from another project
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class ActionProject extends BaseController
+class ProjectActionDuplicationController extends BaseController
{
- public function project()
+ public function show()
{
$project = $this->getProject();
- $projects = $this->projectUserRole->getProjectsByUser($this->userSession->getId());
+ $projects = $this->projectUserRoleModel->getProjectsByUser($this->userSession->getId());
unset($projects[$project['id']]);
- $this->response->html($this->template->render('action_project/project', array(
+ $this->response->html($this->template->render('project_action_duplication/show', array(
'project' => $project,
'projects_list' => $projects,
)));
@@ -27,12 +27,12 @@ class ActionProject extends BaseController
$project = $this->getProject();
$src_project_id = $this->request->getValue('src_project_id');
- if ($this->action->duplicate($src_project_id, $project['id'])) {
+ if ($this->actionModel->duplicate($src_project_id, $project['id'])) {
$this->flash->success(t('Actions duplicated successfully.'));
} else {
$this->flash->failure(t('Unable to duplicate actions.'));
}
- $this->response->redirect($this->helper->url->to('action', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('ActionController', 'index', array('project_id' => $project['id'])));
}
}
diff --git a/app/Controller/ProjectCreation.php b/app/Controller/ProjectCreationController.php
index 0ffa2174..c471cfdd 100644
--- a/app/Controller/ProjectCreation.php
+++ b/app/Controller/ProjectCreationController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Project Creation Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class ProjectCreation extends BaseController
+class ProjectCreationController extends BaseController
{
/**
* Display a form to create a new project
@@ -20,7 +20,7 @@ class ProjectCreation extends BaseController
public function create(array $values = array(), array $errors = array())
{
$is_private = isset($values['is_private']) && $values['is_private'] == 1;
- $projects_list = array(0 => t('Do not duplicate anything')) + $this->projectUserRole->getActiveProjectsByUser($this->userSession->getId());
+ $projects_list = array(0 => t('Do not duplicate anything')) + $this->projectUserRoleModel->getActiveProjectsByUser($this->userSession->getId());
$this->response->html($this->helper->layout->app('project_creation/create', array(
'values' => $values,
@@ -98,7 +98,7 @@ class ProjectCreation extends BaseController
'is_private' => $values['is_private'],
);
- return $this->project->create($project, $this->userSession->getId(), true);
+ return $this->projectModel->create($project, $this->userSession->getId(), true);
}
/**
@@ -112,13 +112,13 @@ class ProjectCreation extends BaseController
{
$selection = array();
- foreach ($this->projectDuplication->getOptionalSelection() as $item) {
+ foreach ($this->projectDuplicationModel->getOptionalSelection() as $item) {
if (isset($values[$item]) && $values[$item] == 1) {
$selection[] = $item;
}
}
- return $this->projectDuplication->duplicate(
+ return $this->projectDuplicationModel->duplicate(
$values['src_project_id'],
$selection,
$this->userSession->getId(),
diff --git a/app/Controller/ProjectEditController.php b/app/Controller/ProjectEditController.php
index 774c6909..228d681c 100644
--- a/app/Controller/ProjectEditController.php
+++ b/app/Controller/ProjectEditController.php
@@ -73,7 +73,7 @@ class ProjectEditController extends BaseController
list($valid, $errors) = $this->projectValidator->validateModification($values);
if ($valid) {
- if ($this->project->update($values)) {
+ if ($this->projectModel->update($values)) {
$this->flash->success(t('Project updated successfully.'));
return $this->response->redirect($this->helper->url->to('ProjectEditController', $redirect, array('project_id' => $project['id'])), true);
} else {
@@ -97,11 +97,11 @@ class ProjectEditController extends BaseController
{
if ($redirect === 'edit') {
if (isset($values['is_private'])) {
- if (! $this->helper->user->hasProjectAccess('ProjectCreation', 'create', $project['id'])) {
+ if (! $this->helper->user->hasProjectAccess('ProjectCreationController', 'create', $project['id'])) {
unset($values['is_private']);
}
} elseif ($project['is_private'] == 1 && ! isset($values['is_private'])) {
- if ($this->helper->user->hasProjectAccess('ProjectCreation', 'create', $project['id'])) {
+ if ($this->helper->user->hasProjectAccess('ProjectCreationController', 'create', $project['id'])) {
$values += array('is_private' => 0);
}
}
@@ -123,7 +123,7 @@ class ProjectEditController extends BaseController
$project = $this->getProject();
$this->response->html($this->helper->layout->project($template, array(
- 'owners' => $this->projectUserRole->getAssignableUsersList($project['id'], true),
+ 'owners' => $this->projectUserRoleModel->getAssignableUsersList($project['id'], true),
'values' => empty($values) ? $project : $values,
'errors' => $errors,
'project' => $project,
diff --git a/app/Controller/ProjectFile.php b/app/Controller/ProjectFileController.php
index 6ec5ff27..cbe48679 100644
--- a/app/Controller/ProjectFile.php
+++ b/app/Controller/ProjectFileController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Project File Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class ProjectFile extends BaseController
+class ProjectFileController extends BaseController
{
/**
* File upload form
@@ -34,11 +34,11 @@ class ProjectFile extends BaseController
{
$project = $this->getProject();
- if (! $this->projectFile->uploadFiles($project['id'], $this->request->getFileInfo('files'))) {
+ if (! $this->projectFileModel->uploadFiles($project['id'], $this->request->getFileInfo('files'))) {
$this->flash->failure(t('Unable to upload the file.'));
}
- $this->response->redirect($this->helper->url->to('ProjectOverview', 'show', array('project_id' => $project['id'])), true);
+ $this->response->redirect($this->helper->url->to('ProjectOverviewController', 'show', array('project_id' => $project['id'])), true);
}
/**
@@ -50,15 +50,15 @@ class ProjectFile extends BaseController
{
$this->checkCSRFParam();
$project = $this->getProject();
- $file = $this->projectFile->getById($this->request->getIntegerParam('file_id'));
+ $file = $this->projectFileModel->getById($this->request->getIntegerParam('file_id'));
- if ($this->projectFile->remove($file['id'])) {
+ if ($this->projectFileModel->remove($file['id'])) {
$this->flash->success(t('File removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this file.'));
}
- $this->response->redirect($this->helper->url->to('ProjectOverview', 'show', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('ProjectOverviewController', 'show', array('project_id' => $project['id'])));
}
/**
@@ -69,7 +69,7 @@ class ProjectFile extends BaseController
public function confirm()
{
$project = $this->getProject();
- $file = $this->projectFile->getById($this->request->getIntegerParam('file_id'));
+ $file = $this->projectFileModel->getById($this->request->getIntegerParam('file_id'));
$this->response->html($this->template->render('project_file/remove', array(
'project' => $project,
diff --git a/app/Controller/ProjectGanttController.php b/app/Controller/ProjectGanttController.php
new file mode 100644
index 00000000..a70d9eee
--- /dev/null
+++ b/app/Controller/ProjectGanttController.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Filter\ProjectIdsFilter;
+use Kanboard\Filter\ProjectStatusFilter;
+use Kanboard\Filter\ProjectTypeFilter;
+use Kanboard\Formatter\ProjectGanttFormatter;
+use Kanboard\Model\ProjectModel;
+
+/**
+ * Projects Gantt Controller
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class ProjectGanttController extends BaseController
+{
+ /**
+ * Show Gantt chart for all projects
+ */
+ public function show()
+ {
+ $project_ids = $this->projectPermissionModel->getActiveProjectIds($this->userSession->getId());
+ $filter = $this->projectQuery
+ ->withFilter(new ProjectTypeFilter(ProjectModel::TYPE_TEAM))
+ ->withFilter(new ProjectStatusFilter(ProjectModel::ACTIVE))
+ ->withFilter(new ProjectIdsFilter($project_ids));
+
+ $filter->getQuery()->asc(ProjectModel::TABLE.'.start_date');
+
+ $this->response->html($this->helper->layout->app('project_gantt/show', array(
+ 'projects' => $filter->format(new ProjectGanttFormatter($this->container)),
+ 'title' => t('Gantt chart for all projects'),
+ )));
+ }
+
+ /**
+ * Save new project start date and end date
+ */
+ public function save()
+ {
+ $values = $this->request->getJson();
+
+ $result = $this->projectModel->update(array(
+ 'id' => $values['id'],
+ 'start_date' => $this->dateParser->getIsoDate(strtotime($values['start'])),
+ 'end_date' => $this->dateParser->getIsoDate(strtotime($values['end'])),
+ ));
+
+ if (! $result) {
+ $this->response->json(array('message' => 'Unable to save project'), 400);
+ } else {
+ $this->response->json(array('message' => 'OK'), 201);
+ }
+ }
+}
diff --git a/app/Controller/ProjectListController.php b/app/Controller/ProjectListController.php
index 5571b3c9..e1172400 100644
--- a/app/Controller/ProjectListController.php
+++ b/app/Controller/ProjectListController.php
@@ -18,9 +18,9 @@ class ProjectListController extends BaseController
public function show()
{
if ($this->userSession->isAdmin()) {
- $project_ids = $this->project->getAllIds();
+ $project_ids = $this->projectModel->getAllIds();
} else {
- $project_ids = $this->projectPermission->getActiveProjectIds($this->userSession->getId());
+ $project_ids = $this->projectPermissionModel->getActiveProjectIds($this->userSession->getId());
}
$nb_projects = count($project_ids);
@@ -29,7 +29,7 @@ class ProjectListController extends BaseController
->setUrl('ProjectListController', 'show')
->setMax(20)
->setOrder('name')
- ->setQuery($this->project->getQueryColumnStats($project_ids))
+ ->setQuery($this->projectModel->getQueryColumnStats($project_ids))
->calculate();
$this->response->html($this->helper->layout->app('project_list/show', array(
diff --git a/app/Controller/ProjectOverview.php b/app/Controller/ProjectOverviewController.php
index f8837f95..abdff657 100644
--- a/app/Controller/ProjectOverview.php
+++ b/app/Controller/ProjectOverviewController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Project Overview Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class ProjectOverview extends BaseController
+class ProjectOverviewController extends BaseController
{
/**
* Show project overview
@@ -16,17 +16,17 @@ class ProjectOverview extends BaseController
public function show()
{
$project = $this->getProject();
- $this->project->getColumnStats($project);
+ $this->projectModel->getColumnStats($project);
$this->response->html($this->helper->layout->app('project_overview/show', array(
'project' => $project,
'title' => $project['name'],
'description' => $this->helper->projectHeader->getDescription($project),
- 'users' => $this->projectUserRole->getAllUsersGroupedByRole($project['id']),
+ 'users' => $this->projectUserRoleModel->getAllUsersGroupedByRole($project['id']),
'roles' => $this->role->getProjectRoles(),
'events' => $this->helper->projectActivity->getProjectEvents($project['id'], 10),
- 'images' => $this->projectFile->getAllImages($project['id']),
- 'files' => $this->projectFile->getAllDocuments($project['id']),
+ 'images' => $this->projectFileModel->getAllImages($project['id']),
+ 'files' => $this->projectFileModel->getAllDocuments($project['id']),
)));
}
}
diff --git a/app/Controller/ProjectPermissionController.php b/app/Controller/ProjectPermissionController.php
index d27681b1..f3ca6ed9 100644
--- a/app/Controller/ProjectPermissionController.php
+++ b/app/Controller/ProjectPermissionController.php
@@ -50,8 +50,8 @@ class ProjectPermissionController extends BaseController
$this->response->html($this->helper->layout->project('project_permission/index', array(
'project' => $project,
- 'users' => $this->projectUserRole->getUsers($project['id']),
- 'groups' => $this->projectGroupRole->getGroups($project['id']),
+ 'users' => $this->projectUserRoleModel->getUsers($project['id']),
+ 'groups' => $this->projectGroupRoleModel->getGroups($project['id']),
'roles' => $this->role->getProjectRoles(),
'values' => $values,
'errors' => $errors,
@@ -69,7 +69,7 @@ class ProjectPermissionController extends BaseController
$project = $this->getProject();
$values = $this->request->getValues() + array('is_everybody_allowed' => 0);
- if ($this->project->update($values)) {
+ if ($this->projectModel->update($values)) {
$this->flash->success(t('Project updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this project.'));
@@ -90,7 +90,7 @@ class ProjectPermissionController extends BaseController
if (empty($values['user_id'])) {
$this->flash->failure(t('User not found.'));
- } elseif ($this->projectUserRole->addUser($values['project_id'], $values['user_id'], $values['role'])) {
+ } elseif ($this->projectUserRoleModel->addUser($values['project_id'], $values['user_id'], $values['role'])) {
$this->flash->success(t('Project updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this project.'));
@@ -110,7 +110,7 @@ class ProjectPermissionController extends BaseController
$project = $this->getProject();
$user_id = $this->request->getIntegerParam('user_id');
- if ($this->projectUserRole->removeUser($project['id'], $user_id)) {
+ if ($this->projectUserRoleModel->removeUser($project['id'], $user_id)) {
$this->flash->success(t('Project updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this project.'));
@@ -129,7 +129,7 @@ class ProjectPermissionController extends BaseController
$project = $this->getProject();
$values = $this->request->getJson();
- if (! empty($project) && ! empty($values) && $this->projectUserRole->changeUserRole($project['id'], $values['id'], $values['role'])) {
+ if (! empty($project) && ! empty($values) && $this->projectUserRoleModel->changeUserRole($project['id'], $values['id'], $values['role'])) {
$this->response->json(array('status' => 'ok'));
} else {
$this->response->json(array('status' => 'error'));
@@ -147,10 +147,10 @@ class ProjectPermissionController extends BaseController
$values = $this->request->getValues();
if (empty($values['group_id']) && ! empty($values['external_id'])) {
- $values['group_id'] = $this->group->create($values['name'], $values['external_id']);
+ $values['group_id'] = $this->groupModel->create($values['name'], $values['external_id']);
}
- if ($this->projectGroupRole->addGroup($project['id'], $values['group_id'], $values['role'])) {
+ if ($this->projectGroupRoleModel->addGroup($project['id'], $values['group_id'], $values['role'])) {
$this->flash->success(t('Project updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this project.'));
@@ -170,7 +170,7 @@ class ProjectPermissionController extends BaseController
$project = $this->getProject();
$group_id = $this->request->getIntegerParam('group_id');
- if ($this->projectGroupRole->removeGroup($project['id'], $group_id)) {
+ if ($this->projectGroupRoleModel->removeGroup($project['id'], $group_id)) {
$this->flash->success(t('Project updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this project.'));
@@ -189,7 +189,7 @@ class ProjectPermissionController extends BaseController
$project = $this->getProject();
$values = $this->request->getJson();
- if (! empty($project) && ! empty($values) && $this->projectGroupRole->changeGroupRole($project['id'], $values['id'], $values['role'])) {
+ if (! empty($project) && ! empty($values) && $this->projectGroupRoleModel->changeGroupRole($project['id'], $values['id'], $values['role'])) {
$this->response->json(array('status' => 'ok'));
} else {
$this->response->json(array('status' => 'error'));
diff --git a/app/Controller/ProjectStatusController.php b/app/Controller/ProjectStatusController.php
index 16ac32b8..78e77870 100644
--- a/app/Controller/ProjectStatusController.php
+++ b/app/Controller/ProjectStatusController.php
@@ -31,7 +31,7 @@ class ProjectStatusController extends BaseController
$project = $this->getProject();
$this->checkCSRFParam();
- if ($this->project->enable($project['id'])) {
+ if ($this->projectModel->enable($project['id'])) {
$this->flash->success(t('Project activated successfully.'));
} else {
$this->flash->failure(t('Unable to activate this project.'));
@@ -61,7 +61,7 @@ class ProjectStatusController extends BaseController
$project = $this->getProject();
$this->checkCSRFParam();
- if ($this->project->disable($project['id'])) {
+ if ($this->projectModel->disable($project['id'])) {
$this->flash->success(t('Project disabled successfully.'));
} else {
$this->flash->failure(t('Unable to disable this project.'));
@@ -91,7 +91,7 @@ class ProjectStatusController extends BaseController
$project = $this->getProject();
$this->checkCSRFParam();
- if ($this->project->remove($project['id'])) {
+ if ($this->projectModel->remove($project['id'])) {
$this->flash->success(t('Project removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this project.'));
diff --git a/app/Controller/Projectuser.php b/app/Controller/ProjectUserOverviewController.php
index fe1fe0f1..686de830 100644
--- a/app/Controller/Projectuser.php
+++ b/app/Controller/ProjectUserOverviewController.php
@@ -2,36 +2,36 @@
namespace Kanboard\Controller;
-use Kanboard\Model\User as UserModel;
-use Kanboard\Model\Task as TaskModel;
+use Kanboard\Model\UserModel;
+use Kanboard\Model\TaskModel;
use Kanboard\Core\Security\Role;
/**
* Project User overview
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Projectuser extends BaseController
+class ProjectUserOverviewController extends BaseController
{
private function common()
{
$user_id = $this->request->getIntegerParam('user_id', UserModel::EVERYBODY_ID);
if ($this->userSession->isAdmin()) {
- $project_ids = $this->project->getAllIds();
+ $project_ids = $this->projectModel->getAllIds();
} else {
- $project_ids = $this->projectPermission->getActiveProjectIds($this->userSession->getId());
+ $project_ids = $this->projectPermissionModel->getActiveProjectIds($this->userSession->getId());
}
- return array($user_id, $project_ids, $this->user->getActiveUsersList(true));
+ return array($user_id, $project_ids, $this->userModel->getActiveUsersList(true));
}
private function role($role, $action, $title, $title_user)
{
list($user_id, $project_ids, $users) = $this->common();
- $query = $this->projectPermission->getQueryByRole($project_ids, $role)->callback(array($this->project, 'applyColumnStats'));
+ $query = $this->projectPermissionModel->getQueryByRole($project_ids, $role)->callback(array($this->projectModel, 'applyColumnStats'));
if ($user_id !== UserModel::EVERYBODY_ID && isset($users[$user_id])) {
$query->eq(UserModel::TABLE.'.id', $user_id);
@@ -39,13 +39,13 @@ class Projectuser extends BaseController
}
$paginator = $this->paginator
- ->setUrl('projectuser', $action, array('user_id' => $user_id))
+ ->setUrl('ProjectUserOverviewController', $action, array('user_id' => $user_id))
->setMax(30)
->setOrder('projects.name')
->setQuery($query)
->calculate();
- $this->response->html($this->helper->layout->projectUser('project_user/roles', array(
+ $this->response->html($this->helper->layout->projectUser('project_user_overview/roles', array(
'paginator' => $paginator,
'title' => $title,
'user_id' => $user_id,
@@ -57,7 +57,7 @@ class Projectuser extends BaseController
{
list($user_id, $project_ids, $users) = $this->common();
- $query = $this->taskFinder->getProjectUserOverviewQuery($project_ids, $is_active);
+ $query = $this->taskFinderModel->getProjectUserOverviewQuery($project_ids, $is_active);
if ($user_id !== UserModel::EVERYBODY_ID && isset($users[$user_id])) {
$query->eq(TaskModel::TABLE.'.owner_id', $user_id);
@@ -65,13 +65,13 @@ class Projectuser extends BaseController
}
$paginator = $this->paginator
- ->setUrl('projectuser', $action, array('user_id' => $user_id))
+ ->setUrl('ProjectUserOverviewController', $action, array('user_id' => $user_id))
->setMax(50)
->setOrder(TaskModel::TABLE.'.id')
->setQuery($query)
->calculate();
- $this->response->html($this->helper->layout->projectUser('project_user/tasks', array(
+ $this->response->html($this->helper->layout->projectUser('project_user_overview/tasks', array(
'paginator' => $paginator,
'title' => $title,
'user_id' => $user_id,
@@ -122,8 +122,8 @@ class Projectuser extends BaseController
{
$project = $this->getProject();
- return $this->response->html($this->template->render('project_user/tooltip_users', array(
- 'users' => $this->projectUserRole->getAllUsersGroupedByRole($project['id']),
+ return $this->response->html($this->template->render('project_user_overview/tooltip_users', array(
+ 'users' => $this->projectUserRoleModel->getAllUsersGroupedByRole($project['id']),
'roles' => $this->role->getProjectRoles(),
)));
}
diff --git a/app/Controller/ProjectViewController.php b/app/Controller/ProjectViewController.php
index ca112a41..92b93804 100644
--- a/app/Controller/ProjectViewController.php
+++ b/app/Controller/ProjectViewController.php
@@ -21,7 +21,7 @@ class ProjectViewController extends BaseController
$this->response->html($this->helper->layout->project('project_view/show', array(
'project' => $project,
- 'stats' => $this->project->getTaskStats($project['id']),
+ 'stats' => $this->projectModel->getTaskStats($project['id']),
'title' => $project['name'],
)));
}
@@ -53,7 +53,7 @@ class ProjectViewController extends BaseController
$this->checkCSRFParam();
$switch = $this->request->getStringParam('switch');
- if ($this->project->{$switch.'PublicAccess'}($project['id'])) {
+ if ($this->projectModel->{$switch.'PublicAccess'}($project['id'])) {
$this->flash->success(t('Project updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this project.'));
@@ -74,8 +74,8 @@ class ProjectViewController extends BaseController
$this->response->html($this->helper->layout->project('project_view/integrations', array(
'project' => $project,
'title' => t('Integrations'),
- 'webhook_token' => $this->config->get('webhook_token'),
- 'values' => $this->projectMetadata->getAll($project['id']),
+ 'webhook_token' => $this->configModel->get('webhook_token'),
+ 'values' => $this->projectMetadataModel->getAll($project['id']),
'errors' => array(),
)));
}
@@ -89,7 +89,7 @@ class ProjectViewController extends BaseController
{
$project = $this->getProject();
- $this->projectMetadata->save($project['id'], $this->request->getValues());
+ $this->projectMetadataModel->save($project['id'], $this->request->getValues());
$this->flash->success(t('Project updated successfully.'));
$this->response->redirect($this->helper->url->to('ProjectViewController', 'integrations', array('project_id' => $project['id'])));
}
@@ -104,8 +104,8 @@ class ProjectViewController extends BaseController
$project = $this->getProject();
$this->response->html($this->helper->layout->project('project_view/notifications', array(
- 'notifications' => $this->projectNotification->readSettings($project['id']),
- 'types' => $this->projectNotificationType->getTypes(),
+ 'notifications' => $this->projectNotificationModel->readSettings($project['id']),
+ 'types' => $this->projectNotificationTypeModel->getTypes(),
'project' => $project,
'title' => t('Notifications'),
)));
@@ -121,7 +121,7 @@ class ProjectViewController extends BaseController
$project = $this->getProject();
$values = $this->request->getValues();
- $this->projectNotification->saveSettings($project['id'], $values);
+ $this->projectNotificationModel->saveSettings($project['id'], $values);
$this->flash->success(t('Project updated successfully.'));
$this->response->redirect($this->helper->url->to('ProjectViewController', 'notifications', array('project_id' => $project['id'])));
}
@@ -149,7 +149,7 @@ class ProjectViewController extends BaseController
public function doDuplication()
{
$project = $this->getProject();
- $project_id = $this->projectDuplication->duplicate($project['id'], array_keys($this->request->getValues()), $this->userSession->getId());
+ $project_id = $this->projectDuplicationModel->duplicate($project['id'], array_keys($this->request->getValues()), $this->userSession->getId());
if ($project_id !== false) {
$this->flash->success(t('Project cloned successfully.'));
diff --git a/app/Controller/Search.php b/app/Controller/SearchController.php
index a092cba6..8557b182 100644
--- a/app/Controller/Search.php
+++ b/app/Controller/SearchController.php
@@ -5,21 +5,21 @@ namespace Kanboard\Controller;
use Kanboard\Filter\TaskProjectsFilter;
/**
- * Search controller
+ * Search Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Search extends BaseController
+class SearchController extends BaseController
{
public function index()
{
- $projects = $this->projectUserRole->getProjectsByUser($this->userSession->getId());
+ $projects = $this->projectUserRoleModel->getProjectsByUser($this->userSession->getId());
$search = urldecode($this->request->getStringParam('search'));
$nb_tasks = 0;
$paginator = $this->paginator
- ->setUrl('search', 'index', array('search' => $search))
+ ->setUrl('SearchController', 'index', array('search' => $search))
->setMax(30)
->setOrder('tasks.id')
->setDirection('DESC');
@@ -39,7 +39,7 @@ class Search extends BaseController
$this->response->html($this->helper->layout->app('search/index', array(
'values' => array(
'search' => $search,
- 'controller' => 'search',
+ 'controller' => 'SearchController',
'action' => 'index',
),
'paginator' => $paginator,
@@ -56,7 +56,7 @@ class Search extends BaseController
$this->response->html($this->helper->layout->app('search/activity', array(
'values' => array(
'search' => $search,
- 'controller' => 'search',
+ 'controller' => 'SearchController',
'action' => 'activity',
),
'title' => t('Search in activity stream').($nb_events > 0 ? ' ('.$nb_events.')' : ''),
diff --git a/app/Controller/SubtaskController.php b/app/Controller/SubtaskController.php
index 830548da..93dab5cd 100644
--- a/app/Controller/SubtaskController.php
+++ b/app/Controller/SubtaskController.php
@@ -36,7 +36,7 @@ class SubtaskController extends BaseController
$this->response->html($this->template->render('subtask/create', array(
'values' => $values,
'errors' => $errors,
- 'users_list' => $this->projectUserRole->getAssignableUsersList($task['project_id']),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($task['project_id']),
'task' => $task,
)));
}
@@ -54,7 +54,7 @@ class SubtaskController extends BaseController
list($valid, $errors) = $this->subtaskValidator->validateCreation($values);
if ($valid) {
- if ($this->subtask->create($values)) {
+ if ($this->subtaskModel->create($values) !== false) {
$this->flash->success(t('Sub-task added successfully.'));
} else {
$this->flash->failure(t('Unable to create your sub-task.'));
@@ -64,7 +64,7 @@ class SubtaskController extends BaseController
return $this->create(array('project_id' => $task['project_id'], 'task_id' => $task['id'], 'another_subtask' => 1));
}
- return $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id']), 'subtasks'), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id']), 'subtasks'), true);
}
return $this->create($values, $errors);
@@ -87,8 +87,8 @@ class SubtaskController extends BaseController
$this->response->html($this->template->render('subtask/edit', array(
'values' => empty($values) ? $subtask : $values,
'errors' => $errors,
- 'users_list' => $this->projectUserRole->getAssignableUsersList($task['project_id']),
- 'status_list' => $this->subtask->getStatusList(),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($task['project_id']),
+ 'status_list' => $this->subtaskModel->getStatusList(),
'subtask' => $subtask,
'task' => $task,
)));
@@ -108,13 +108,13 @@ class SubtaskController extends BaseController
list($valid, $errors) = $this->subtaskValidator->validateModification($values);
if ($valid) {
- if ($this->subtask->update($values)) {
+ if ($this->subtaskModel->update($values)) {
$this->flash->success(t('Sub-task updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your sub-task.'));
}
- return $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
}
return $this->edit($values, $errors);
@@ -147,13 +147,13 @@ class SubtaskController extends BaseController
$task = $this->getTask();
$subtask = $this->getSubtask();
- if ($this->subtask->remove($subtask['id'])) {
+ if ($this->subtaskModel->remove($subtask['id'])) {
$this->flash->success(t('Sub-task removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this sub-task.'));
}
- $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
}
/**
@@ -168,7 +168,7 @@ class SubtaskController extends BaseController
$values = $this->request->getJson();
if (! empty($values) && $this->helper->user->hasProjectAccess('SubtaskController', 'movePosition', $project_id)) {
- $result = $this->subtask->changePosition($task_id, $values['subtask_id'], $values['position']);
+ $result = $this->subtaskModel->changePosition($task_id, $values['subtask_id'], $values['position']);
$this->response->json(array('result' => $result));
} else {
throw new AccessForbiddenException();
diff --git a/app/Controller/SubtaskConverterController.php b/app/Controller/SubtaskConverterController.php
index 829b937a..65bcd2da 100644
--- a/app/Controller/SubtaskConverterController.php
+++ b/app/Controller/SubtaskConverterController.php
@@ -26,7 +26,7 @@ class SubtaskConverterController extends BaseController
$project = $this->getProject();
$subtask = $this->getSubtask();
- $task_id = $this->subtask->convertToTask($project['id'], $subtask['id']);
+ $task_id = $this->subtaskModel->convertToTask($project['id'], $subtask['id']);
if ($task_id !== false) {
$this->flash->success(t('Subtask converted to task successfully.'));
@@ -34,6 +34,6 @@ class SubtaskConverterController extends BaseController
$this->flash->failure(t('Unable to convert the subtask.'));
}
- $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $project['id'], 'task_id' => $task_id)), true);
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $project['id'], 'task_id' => $task_id)), true);
}
}
diff --git a/app/Controller/SubtaskRestrictionController.php b/app/Controller/SubtaskRestrictionController.php
index 185371e7..084fc0d9 100644
--- a/app/Controller/SubtaskRestrictionController.php
+++ b/app/Controller/SubtaskRestrictionController.php
@@ -2,7 +2,7 @@
namespace Kanboard\Controller;
-use Kanboard\Model\Subtask as SubtaskModel;
+use Kanboard\Model\SubtaskModel;
/**
* Subtask Restriction
@@ -27,7 +27,7 @@ class SubtaskRestrictionController extends BaseController
SubtaskModel::STATUS_TODO => t('Todo'),
SubtaskModel::STATUS_DONE => t('Done'),
),
- 'subtask_inprogress' => $this->subtask->getSubtaskInProgress($this->userSession->getId()),
+ 'subtask_inprogress' => $this->subtaskModel->getSubtaskInProgress($this->userSession->getId()),
'subtask' => $subtask,
'task' => $task,
)));
@@ -45,17 +45,17 @@ class SubtaskRestrictionController extends BaseController
$values = $this->request->getValues();
// Change status of the previous "in progress" subtask
- $this->subtask->update(array(
+ $this->subtaskModel->update(array(
'id' => $values['id'],
'status' => $values['status'],
));
// Set the current subtask to "in progress"
- $this->subtask->update(array(
+ $this->subtaskModel->update(array(
'id' => $subtask['id'],
'status' => SubtaskModel::STATUS_INPROGRESS,
));
- $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
}
}
diff --git a/app/Controller/SubtaskStatusController.php b/app/Controller/SubtaskStatusController.php
index e24002dc..699951fe 100644
--- a/app/Controller/SubtaskStatusController.php
+++ b/app/Controller/SubtaskStatusController.php
@@ -20,7 +20,7 @@ class SubtaskStatusController extends BaseController
$task = $this->getTask();
$subtask = $this->getSubtask();
- $status = $this->subtask->toggleStatus($subtask['id']);
+ $status = $this->subtaskModel->toggleStatus($subtask['id']);
if ($this->request->getIntegerParam('refresh-table') === 0) {
$subtask['status'] = $status;
@@ -44,10 +44,10 @@ class SubtaskStatusController extends BaseController
$timer = $this->request->getStringParam('timer');
if ($timer === 'start') {
- $this->subtaskTimeTracking->logStartTime($subtask_id, $this->userSession->getId());
+ $this->subtaskTimeTrackingModel->logStartTime($subtask_id, $this->userSession->getId());
} elseif ($timer === 'stop') {
- $this->subtaskTimeTracking->logEndTime($subtask_id, $this->userSession->getId());
- $this->subtaskTimeTracking->updateTaskTimeTracking($task['id']);
+ $this->subtaskTimeTrackingModel->logEndTime($subtask_id, $this->userSession->getId());
+ $this->subtaskTimeTrackingModel->updateTaskTimeTracking($task['id']);
}
$this->response->html($this->renderTable($task));
@@ -64,9 +64,8 @@ class SubtaskStatusController extends BaseController
{
return $this->template->render('subtask/table', array(
'task' => $task,
- 'subtasks' => $this->subtask->getAll($task['id']),
+ 'subtasks' => $this->subtaskModel->getAll($task['id']),
'editable' => true,
- 'redirect' => 'task',
));
}
}
diff --git a/app/Controller/Swimlane.php b/app/Controller/SwimlaneController.php
index 4575e909..c7c20ce8 100644
--- a/app/Controller/Swimlane.php
+++ b/app/Controller/SwimlaneController.php
@@ -4,15 +4,15 @@ namespace Kanboard\Controller;
use Kanboard\Core\Controller\AccessForbiddenException;
use Kanboard\Core\Controller\PageNotFoundException;
-use Kanboard\Model\Swimlane as SwimlaneModel;
+use Kanboard\Model\SwimlaneModel;
/**
- * Swimlanes
+ * Swimlanes Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Swimlane extends BaseController
+class SwimlaneController extends BaseController
{
/**
* Get the swimlane (common method between actions)
@@ -23,7 +23,7 @@ class Swimlane extends BaseController
*/
private function getSwimlane()
{
- $swimlane = $this->swimlane->getById($this->request->getIntegerParam('swimlane_id'));
+ $swimlane = $this->swimlaneModel->getById($this->request->getIntegerParam('swimlane_id'));
if (empty($swimlane)) {
throw new PageNotFoundException();
@@ -42,9 +42,9 @@ class Swimlane extends BaseController
$project = $this->getProject();
$this->response->html($this->helper->layout->project('swimlane/index', array(
- 'default_swimlane' => $this->swimlane->getDefault($project['id']),
- 'active_swimlanes' => $this->swimlane->getAllByStatus($project['id'], SwimlaneModel::ACTIVE),
- 'inactive_swimlanes' => $this->swimlane->getAllByStatus($project['id'], SwimlaneModel::INACTIVE),
+ 'default_swimlane' => $this->swimlaneModel->getDefault($project['id']),
+ 'active_swimlanes' => $this->swimlaneModel->getAllByStatus($project['id'], SwimlaneModel::ACTIVE),
+ 'inactive_swimlanes' => $this->swimlaneModel->getAllByStatus($project['id'], SwimlaneModel::INACTIVE),
'project' => $project,
'title' => t('Swimlanes')
)));
@@ -81,9 +81,9 @@ class Swimlane extends BaseController
list($valid, $errors) = $this->swimlaneValidator->validateCreation($values);
if ($valid) {
- if ($this->swimlane->create($values)) {
+ if ($this->swimlaneModel->create($values) !== false) {
$this->flash->success(t('Your swimlane have been created successfully.'));
- return $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
+ return $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])));
} else {
$errors = array('name' => array(t('Another swimlane with the same name exists in the project')));
}
@@ -103,7 +103,7 @@ class Swimlane extends BaseController
public function editDefault(array $values = array(), array $errors = array())
{
$project = $this->getProject();
- $swimlane = $this->swimlane->getDefault($project['id']);
+ $swimlane = $this->swimlaneModel->getDefault($project['id']);
$this->response->html($this->helper->layout->project('swimlane/edit_default', array(
'values' => empty($values) ? $swimlane : $values,
@@ -125,9 +125,9 @@ class Swimlane extends BaseController
list($valid, $errors) = $this->swimlaneValidator->validateDefaultModification($values);
if ($valid) {
- if ($this->swimlane->updateDefault($values)) {
+ if ($this->swimlaneModel->updateDefault($values)) {
$this->flash->success(t('The default swimlane have been updated successfully.'));
- return $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])), true);
+ return $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])), true);
} else {
$this->flash->failure(t('Unable to update this swimlane.'));
}
@@ -169,9 +169,9 @@ class Swimlane extends BaseController
list($valid, $errors) = $this->swimlaneValidator->validateModification($values);
if ($valid) {
- if ($this->swimlane->update($values)) {
+ if ($this->swimlaneModel->update($values)) {
$this->flash->success(t('Swimlane updated successfully.'));
- return $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
+ return $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])));
} else {
$errors = array('name' => array(t('Another swimlane with the same name exists in the project')));
}
@@ -207,13 +207,13 @@ class Swimlane extends BaseController
$project = $this->getProject();
$swimlane_id = $this->request->getIntegerParam('swimlane_id');
- if ($this->swimlane->remove($project['id'], $swimlane_id)) {
+ if ($this->swimlaneModel->remove($project['id'], $swimlane_id)) {
$this->flash->success(t('Swimlane removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this swimlane.'));
}
- $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])));
}
/**
@@ -227,13 +227,13 @@ class Swimlane extends BaseController
$project = $this->getProject();
$swimlane_id = $this->request->getIntegerParam('swimlane_id');
- if ($this->swimlane->disable($project['id'], $swimlane_id)) {
+ if ($this->swimlaneModel->disable($project['id'], $swimlane_id)) {
$this->flash->success(t('Swimlane updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this swimlane.'));
}
- $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])));
}
/**
@@ -246,13 +246,13 @@ class Swimlane extends BaseController
$this->checkCSRFParam();
$project = $this->getProject();
- if ($this->swimlane->disableDefault($project['id'])) {
+ if ($this->swimlaneModel->disableDefault($project['id'])) {
$this->flash->success(t('Swimlane updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this swimlane.'));
}
- $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])));
}
/**
@@ -266,13 +266,13 @@ class Swimlane extends BaseController
$project = $this->getProject();
$swimlane_id = $this->request->getIntegerParam('swimlane_id');
- if ($this->swimlane->enable($project['id'], $swimlane_id)) {
+ if ($this->swimlaneModel->enable($project['id'], $swimlane_id)) {
$this->flash->success(t('Swimlane updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this swimlane.'));
}
- $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])));
}
/**
@@ -285,13 +285,13 @@ class Swimlane extends BaseController
$this->checkCSRFParam();
$project = $this->getProject();
- if ($this->swimlane->enableDefault($project['id'])) {
+ if ($this->swimlaneModel->enableDefault($project['id'])) {
$this->flash->success(t('Swimlane updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this swimlane.'));
}
- $this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
+ $this->response->redirect($this->helper->url->to('SwimlaneController', 'index', array('project_id' => $project['id'])));
}
/**
@@ -305,7 +305,7 @@ class Swimlane extends BaseController
$values = $this->request->getJson();
if (! empty($values) && isset($values['swimlane_id']) && isset($values['position'])) {
- $result = $this->swimlane->changePosition($project['id'], $values['swimlane_id'], $values['position']);
+ $result = $this->swimlaneModel->changePosition($project['id'], $values['swimlane_id'], $values['position']);
$this->response->json(array('result' => $result));
} else {
throw new AccessForbiddenException();
diff --git a/app/Controller/TaskHelper.php b/app/Controller/TaskAjaxController.php
index 2f14c0eb..f9feff15 100644
--- a/app/Controller/TaskHelper.php
+++ b/app/Controller/TaskAjaxController.php
@@ -9,12 +9,12 @@ use Kanboard\Filter\TaskTitleFilter;
use Kanboard\Formatter\TaskAutoCompleteFormatter;
/**
- * Task Ajax Helper
+ * Task Ajax Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class TaskHelper extends BaseController
+class TaskAjaxController extends BaseController
{
/**
* Task auto-completion (Ajax)
@@ -24,7 +24,7 @@ class TaskHelper extends BaseController
public function autocomplete()
{
$search = $this->request->getStringParam('term');
- $project_ids = $this->projectPermission->getActiveProjectIds($this->userSession->getId());
+ $project_ids = $this->projectPermissionModel->getActiveProjectIds($this->userSession->getId());
$exclude_task_id = $this->request->getIntegerParam('exclude_task_id');
if (empty($project_ids)) {
diff --git a/app/Controller/TaskBulkController.php b/app/Controller/TaskBulkController.php
index 4b4a2594..df7f589b 100644
--- a/app/Controller/TaskBulkController.php
+++ b/app/Controller/TaskBulkController.php
@@ -6,6 +6,7 @@ namespace Kanboard\Controller;
* Class TaskBulkController
*
* @package Kanboard\Controller
+ * @author Frederic Guillot
*/
class TaskBulkController extends BaseController
{
@@ -31,9 +32,9 @@ class TaskBulkController extends BaseController
'project' => $project,
'values' => $values,
'errors' => $errors,
- 'users_list' => $this->projectUserRole->getAssignableUsersList($project['id'], true, false, true),
- 'colors_list' => $this->color->getList(),
- 'categories_list' => $this->category->getList($project['id']),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id'], true, false, true),
+ 'colors_list' => $this->colorModel->getList(),
+ 'categories_list' => $this->categoryModel->getList($project['id']),
)));
}
@@ -49,7 +50,7 @@ class TaskBulkController extends BaseController
if ($valid) {
$this->createTasks($project, $values);
$this->response->redirect($this->helper->url->to(
- 'Board',
+ 'BoardViewController',
'show',
array('project_id' => $project['id']),
'swimlane-'. $values['swimlane_id']
@@ -73,7 +74,7 @@ class TaskBulkController extends BaseController
$title = trim($title);
if (! empty($title)) {
- $this->taskCreation->create(array(
+ $this->taskCreationModel->create(array(
'title' => $title,
'column_id' => $values['column_id'],
'swimlane_id' => $values['swimlane_id'],
diff --git a/app/Controller/TaskCreationController.php b/app/Controller/TaskCreationController.php
index 2a63ddcc..819de96e 100644
--- a/app/Controller/TaskCreationController.php
+++ b/app/Controller/TaskCreationController.php
@@ -21,13 +21,13 @@ class TaskCreationController extends BaseController
public function show(array $values = array(), array $errors = array())
{
$project = $this->getProject();
- $swimlanes_list = $this->swimlane->getList($project['id'], false, true);
+ $swimlanes_list = $this->swimlaneModel->getList($project['id'], false, true);
if (empty($values)) {
$values = array(
'swimlane_id' => $this->request->getIntegerParam('swimlane_id', key($swimlanes_list)),
'column_id' => $this->request->getIntegerParam('column_id'),
- 'color_id' => $this->color->getDefaultColor(),
+ 'color_id' => $this->colorModel->getDefaultColor(),
'owner_id' => $this->userSession->getId(),
);
@@ -39,10 +39,10 @@ class TaskCreationController extends BaseController
'project' => $project,
'errors' => $errors,
'values' => $values + array('project_id' => $project['id']),
- 'columns_list' => $this->column->getList($project['id']),
- 'users_list' => $this->projectUserRole->getAssignableUsersList($project['id'], true, false, true),
- 'colors_list' => $this->color->getList(),
- 'categories_list' => $this->category->getList($project['id']),
+ 'columns_list' => $this->columnModel->getList($project['id']),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id'], true, false, true),
+ 'colors_list' => $this->colorModel->getList(),
+ 'categories_list' => $this->categoryModel->getList($project['id']),
'swimlanes_list' => $swimlanes_list,
'title' => $project['name'].' &gt; '.t('New task')
)));
@@ -60,7 +60,7 @@ class TaskCreationController extends BaseController
list($valid, $errors) = $this->taskValidator->validateCreation($values);
- if ($valid && $this->taskCreation->create($values)) {
+ if ($valid && $this->taskCreationModel->create($values)) {
$this->flash->success(t('Task created successfully.'));
return $this->afterSave($project, $values);
}
@@ -82,6 +82,6 @@ class TaskCreationController extends BaseController
));
}
- return $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $project['id'])), true);
+ return $this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $project['id'])), true);
}
}
diff --git a/app/Controller/Taskduplication.php b/app/Controller/TaskDuplicationController.php
index ff60228e..6a475374 100644
--- a/app/Controller/Taskduplication.php
+++ b/app/Controller/TaskDuplicationController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Task Duplication controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Taskduplication extends BaseController
+class TaskDuplicationController extends BaseController
{
/**
* Duplicate a task
@@ -21,14 +21,14 @@ class Taskduplication extends BaseController
if ($this->request->getStringParam('confirmation') === 'yes') {
$this->checkCSRFParam();
- $task_id = $this->taskDuplication->duplicate($task['id']);
+ $task_id = $this->taskDuplicationModel->duplicate($task['id']);
if ($task_id > 0) {
$this->flash->success(t('Task created successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task_id)));
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task_id)));
} else {
$this->flash->failure(t('Unable to create this task.'));
- return $this->response->redirect($this->helper->url->to('taskduplication', 'duplicate', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskDuplicationController', 'duplicate', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
}
}
@@ -50,14 +50,14 @@ class Taskduplication extends BaseController
$values = $this->request->getValues();
list($valid, ) = $this->taskValidator->validateProjectModification($values);
- if ($valid && $this->taskDuplication->moveToProject($task['id'],
+ if ($valid && $this->taskDuplicationModel->moveToProject($task['id'],
$values['project_id'],
$values['swimlane_id'],
$values['column_id'],
$values['category_id'],
$values['owner_id'])) {
$this->flash->success(t('Task updated successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $values['project_id'], 'task_id' => $task['id'])));
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $values['project_id'], 'task_id' => $task['id'])));
}
$this->flash->failure(t('Unable to update your task.'));
@@ -80,14 +80,14 @@ class Taskduplication extends BaseController
list($valid, ) = $this->taskValidator->validateProjectModification($values);
if ($valid) {
- $task_id = $this->taskDuplication->duplicateToProject(
+ $task_id = $this->taskDuplicationModel->duplicateToProject(
$task['id'], $values['project_id'], $values['swimlane_id'],
$values['column_id'], $values['category_id'], $values['owner_id']
);
if ($task_id > 0) {
$this->flash->success(t('Task created successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $values['project_id'], 'task_id' => $task_id)));
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $values['project_id'], 'task_id' => $task_id)));
}
}
@@ -107,19 +107,19 @@ class Taskduplication extends BaseController
private function chooseDestination(array $task, $template)
{
$values = array();
- $projects_list = $this->projectUserRole->getActiveProjectsByUser($this->userSession->getId());
+ $projects_list = $this->projectUserRoleModel->getActiveProjectsByUser($this->userSession->getId());
unset($projects_list[$task['project_id']]);
if (! empty($projects_list)) {
$dst_project_id = $this->request->getIntegerParam('dst_project_id', key($projects_list));
- $swimlanes_list = $this->swimlane->getList($dst_project_id, false, true);
- $columns_list = $this->column->getList($dst_project_id);
- $categories_list = $this->category->getList($dst_project_id);
- $users_list = $this->projectUserRole->getAssignableUsersList($dst_project_id);
+ $swimlanes_list = $this->swimlaneModel->getList($dst_project_id, false, true);
+ $columns_list = $this->columnModel->getList($dst_project_id);
+ $categories_list = $this->categoryModel->getList($dst_project_id);
+ $users_list = $this->projectUserRoleModel->getAssignableUsersList($dst_project_id);
- $values = $this->taskDuplication->checkDestinationProjectValues($task);
+ $values = $this->taskDuplicationModel->checkDestinationProjectValues($task);
$values['project_id'] = $dst_project_id;
} else {
$swimlanes_list = array();
diff --git a/app/Controller/TaskExternalLink.php b/app/Controller/TaskExternalLinkController.php
index 9f040957..9c04eb00 100644
--- a/app/Controller/TaskExternalLink.php
+++ b/app/Controller/TaskExternalLinkController.php
@@ -8,10 +8,10 @@ use Kanboard\Core\ExternalLink\ExternalLinkProviderNotFound;
/**
* Task External Link Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class TaskExternalLink extends BaseController
+class TaskExternalLinkController extends BaseController
{
/**
* First creation form
@@ -76,9 +76,9 @@ class TaskExternalLink extends BaseController
$values = $this->request->getValues();
list($valid, $errors) = $this->externalLinkValidator->validateCreation($values);
- if ($valid && $this->taskExternalLink->create($values)) {
+ if ($valid && $this->taskExternalLinkModel->create($values) !== false) {
$this->flash->success(t('Link added successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
}
return $this->edit($values, $errors);
@@ -100,7 +100,7 @@ class TaskExternalLink extends BaseController
$link_id = $this->request->getIntegerParam('link_id');
if ($link_id > 0) {
- $values = $this->taskExternalLink->getById($link_id);
+ $values = $this->taskExternalLinkModel->getById($link_id);
}
if (empty($values)) {
@@ -128,9 +128,9 @@ class TaskExternalLink extends BaseController
$values = $this->request->getValues();
list($valid, $errors) = $this->externalLinkValidator->validateModification($values);
- if ($valid && $this->taskExternalLink->update($values)) {
+ if ($valid && $this->taskExternalLinkModel->update($values)) {
$this->flash->success(t('Link updated successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
}
return $this->edit($values, $errors);
@@ -145,7 +145,7 @@ class TaskExternalLink extends BaseController
{
$task = $this->getTask();
$link_id = $this->request->getIntegerParam('link_id');
- $link = $this->taskExternalLink->getById($link_id);
+ $link = $this->taskExternalLinkModel->getById($link_id);
if (empty($link)) {
throw new PageNotFoundException();
@@ -167,12 +167,12 @@ class TaskExternalLink extends BaseController
$this->checkCSRFParam();
$task = $this->getTask();
- if ($this->taskExternalLink->remove($this->request->getIntegerParam('link_id'))) {
+ if ($this->taskExternalLinkModel->remove($this->request->getIntegerParam('link_id'))) {
$this->flash->success(t('Link removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this link.'));
}
- $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
}
}
diff --git a/app/Controller/TaskFile.php b/app/Controller/TaskFileController.php
index 0fcd2d69..77c0c026 100644
--- a/app/Controller/TaskFile.php
+++ b/app/Controller/TaskFileController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Task File Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class TaskFile extends BaseController
+class TaskFileController extends BaseController
{
/**
* Screenshot
@@ -19,9 +19,9 @@ class TaskFile extends BaseController
{
$task = $this->getTask();
- if ($this->request->isPost() && $this->taskFile->uploadScreenshot($task['id'], $this->request->getValue('screenshot')) !== false) {
+ if ($this->request->isPost() && $this->taskFileModel->uploadScreenshot($task['id'], $this->request->getValue('screenshot')) !== false) {
$this->flash->success(t('Screenshot uploaded successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
}
return $this->response->html($this->template->render('task_file/screenshot', array(
@@ -53,11 +53,11 @@ class TaskFile extends BaseController
{
$task = $this->getTask();
- if (! $this->taskFile->uploadFiles($task['id'], $this->request->getFileInfo('files'))) {
+ if (! $this->taskFileModel->uploadFiles($task['id'], $this->request->getFileInfo('files'))) {
$this->flash->failure(t('Unable to upload the file.'));
}
- $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
}
/**
@@ -69,15 +69,15 @@ class TaskFile extends BaseController
{
$this->checkCSRFParam();
$task = $this->getTask();
- $file = $this->taskFile->getById($this->request->getIntegerParam('file_id'));
+ $file = $this->taskFileModel->getById($this->request->getIntegerParam('file_id'));
- if ($file['task_id'] == $task['id'] && $this->taskFile->remove($file['id'])) {
+ if ($file['task_id'] == $task['id'] && $this->taskFileModel->remove($file['id'])) {
$this->flash->success(t('File removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this file.'));
}
- $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
}
/**
@@ -88,7 +88,7 @@ class TaskFile extends BaseController
public function confirm()
{
$task = $this->getTask();
- $file = $this->taskFile->getById($this->request->getIntegerParam('file_id'));
+ $file = $this->taskFileModel->getById($this->request->getIntegerParam('file_id'));
$this->response->html($this->template->render('task_file/remove', array(
'task' => $task,
diff --git a/app/Controller/TaskGanttController.php b/app/Controller/TaskGanttController.php
new file mode 100644
index 00000000..868368e1
--- /dev/null
+++ b/app/Controller/TaskGanttController.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Filter\TaskProjectFilter;
+use Kanboard\Formatter\TaskGanttFormatter;
+use Kanboard\Model\TaskModel;
+
+/**
+ * Tasks Gantt Controller
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class TaskGanttController extends BaseController
+{
+ /**
+ * Show Gantt chart for one project
+ */
+ public function show()
+ {
+ $project = $this->getProject();
+ $search = $this->helper->projectHeader->getSearchQuery($project);
+ $sorting = $this->request->getStringParam('sorting', 'board');
+ $filter = $this->taskLexer->build($search)->withFilter(new TaskProjectFilter($project['id']));
+
+ if ($sorting === 'date') {
+ $filter->getQuery()->asc(TaskModel::TABLE.'.date_started')->asc(TaskModel::TABLE.'.date_creation');
+ } else {
+ $filter->getQuery()->asc('column_position')->asc(TaskModel::TABLE.'.position');
+ }
+
+ $this->response->html($this->helper->layout->app('task_gantt/show', array(
+ 'project' => $project,
+ 'title' => $project['name'],
+ 'description' => $this->helper->projectHeader->getDescription($project),
+ 'sorting' => $sorting,
+ 'tasks' => $filter->format(new TaskGanttFormatter($this->container)),
+ )));
+ }
+
+ /**
+ * Save new task start date and due date
+ */
+ public function save()
+ {
+ $this->getProject();
+ $values = $this->request->getJson();
+
+ $result = $this->taskModificationModel->update(array(
+ 'id' => $values['id'],
+ 'date_started' => strtotime($values['start']),
+ 'date_due' => strtotime($values['end']),
+ ));
+
+ if (! $result) {
+ $this->response->json(array('message' => 'Unable to save task'), 400);
+ } else {
+ $this->response->json(array('message' => 'OK'), 201);
+ }
+ }
+}
diff --git a/app/Controller/TaskGanttCreationController.php b/app/Controller/TaskGanttCreationController.php
new file mode 100644
index 00000000..c2998a3e
--- /dev/null
+++ b/app/Controller/TaskGanttCreationController.php
@@ -0,0 +1,71 @@
+<?php
+
+namespace Kanboard\Controller;
+
+/**
+ * Class TaskGanttCreationController
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class TaskGanttCreationController extends BaseController
+{
+ /**
+ * Simplified form to create a new task
+ *
+ * @access public
+ * @param array $values
+ * @param array $errors
+ * @throws \Kanboard\Core\Controller\PageNotFoundException
+ */
+ public function show(array $values = array(), array $errors = array())
+ {
+ $project = $this->getProject();
+
+ $values = $values + array(
+ 'project_id' => $project['id'],
+ 'column_id' => $this->columnModel->getFirstColumnId($project['id']),
+ 'position' => 1
+ );
+
+ $values = $this->hook->merge('controller:task:form:default', $values, array('default_values' => $values));
+ $values = $this->hook->merge('controller:gantt:task:form:default', $values, array('default_values' => $values));
+
+ $this->response->html($this->template->render('task_gantt_creation/show', array(
+ 'project' => $project,
+ 'errors' => $errors,
+ 'values' => $values,
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id'], true, false, true),
+ 'colors_list' => $this->colorModel->getList(),
+ 'categories_list' => $this->categoryModel->getList($project['id']),
+ 'swimlanes_list' => $this->swimlaneModel->getList($project['id'], false, true),
+ 'title' => $project['name'].' &gt; '.t('New task')
+ )));
+ }
+
+ /**
+ * Validate and save a new task
+ *
+ * @access public
+ */
+ public function save()
+ {
+ $project = $this->getProject();
+ $values = $this->request->getValues();
+
+ list($valid, $errors) = $this->taskValidator->validateCreation($values);
+
+ if ($valid) {
+ $task_id = $this->taskCreationModel->create($values);
+
+ if ($task_id !== false) {
+ $this->flash->success(t('Task created successfully.'));
+ return $this->response->redirect($this->helper->url->to('TaskGanttController', 'show', array('project_id' => $project['id'])));
+ } else {
+ $this->flash->failure(t('Unable to create your task.'));
+ }
+ }
+
+ return $this->show($values, $errors);
+ }
+}
diff --git a/app/Controller/TaskImport.php b/app/Controller/TaskImportController.php
index 5e37fb2f..aff2d390 100644
--- a/app/Controller/TaskImport.php
+++ b/app/Controller/TaskImportController.php
@@ -7,10 +7,10 @@ use Kanboard\Core\Csv;
/**
* Task Import controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class TaskImport extends BaseController
+class TaskImportController extends BaseController
{
/**
* Upload the file and ask settings
@@ -19,11 +19,11 @@ class TaskImport extends BaseController
* @param array $errors
* @throws \Kanboard\Core\Controller\PageNotFoundException
*/
- public function step1(array $values = array(), array $errors = array())
+ public function show(array $values = array(), array $errors = array())
{
$project = $this->getProject();
- $this->response->html($this->helper->layout->project('task_import/step1', array(
+ $this->response->html($this->helper->layout->project('task_import/show', array(
'project' => $project,
'values' => $values,
'errors' => $errors,
@@ -31,36 +31,35 @@ class TaskImport extends BaseController
'delimiters' => Csv::getDelimiters(),
'enclosures' => Csv::getEnclosures(),
'title' => t('Import tasks from CSV file'),
- )));
+ ), 'task_import/sidebar'));
}
/**
* Process CSV file
- *
*/
- public function step2()
+ public function save()
{
$project = $this->getProject();
$values = $this->request->getValues();
$filename = $this->request->getFilePath('file');
if (! file_exists($filename)) {
- $this->step1($values, array('file' => array(t('Unable to read your file'))));
- }
+ $this->show($values, array('file' => array(t('Unable to read your file'))));
+ } else {
+ $this->taskImport->projectId = $project['id'];
- $this->taskImport->projectId = $project['id'];
+ $csv = new Csv($values['delimiter'], $values['enclosure']);
+ $csv->setColumnMapping($this->taskImport->getColumnMapping());
+ $csv->read($filename, array($this->taskImport, 'import'));
- $csv = new Csv($values['delimiter'], $values['enclosure']);
- $csv->setColumnMapping($this->taskImport->getColumnMapping());
- $csv->read($filename, array($this->taskImport, 'import'));
+ if ($this->taskImport->counter > 0) {
+ $this->flash->success(t('%d task(s) have been imported successfully.', $this->taskImport->counter));
+ } else {
+ $this->flash->failure(t('Nothing have been imported!'));
+ }
- if ($this->taskImport->counter > 0) {
- $this->flash->success(t('%d task(s) have been imported successfully.', $this->taskImport->counter));
- } else {
- $this->flash->failure(t('Nothing have been imported!'));
+ $this->response->redirect($this->helper->url->to('TaskImportController', 'show', array('project_id' => $project['id'])));
}
-
- $this->response->redirect($this->helper->url->to('taskImport', 'step1', array('project_id' => $project['id'])));
}
/**
diff --git a/app/Controller/TaskInternalLink.php b/app/Controller/TaskInternalLinkController.php
index 6ff20252..a140f1ff 100644
--- a/app/Controller/TaskInternalLink.php
+++ b/app/Controller/TaskInternalLinkController.php
@@ -7,11 +7,11 @@ use Kanboard\Core\Controller\PageNotFoundException;
/**
* TaskInternalLink Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Olivier Maridat
* @author Frederic Guillot
*/
-class TaskInternalLink extends BaseController
+class TaskInternalLinkController extends BaseController
{
/**
* Get the current link
@@ -22,7 +22,7 @@ class TaskInternalLink extends BaseController
*/
private function getTaskLink()
{
- $link = $this->taskLink->getById($this->request->getIntegerParam('link_id'));
+ $link = $this->taskLinkModel->getById($this->request->getIntegerParam('link_id'));
if (empty($link)) {
throw new PageNotFoundException();
@@ -48,7 +48,7 @@ class TaskInternalLink extends BaseController
'values' => $values,
'errors' => $errors,
'task' => $task,
- 'labels' => $this->link->getList(0, false),
+ 'labels' => $this->linkModel->getList(0, false),
)));
}
@@ -65,9 +65,9 @@ class TaskInternalLink extends BaseController
list($valid, $errors) = $this->taskLinkValidator->validateCreation($values);
if ($valid) {
- if ($this->taskLink->create($values['task_id'], $values['opposite_task_id'], $values['link_id'])) {
+ if ($this->taskLinkModel->create($values['task_id'], $values['opposite_task_id'], $values['link_id'])) {
$this->flash->success(t('Link added successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
}
$errors = array('title' => array(t('The exact same link already exists')));
@@ -92,7 +92,7 @@ class TaskInternalLink extends BaseController
$task_link = $this->getTaskLink();
if (empty($values)) {
- $opposite_task = $this->taskFinder->getById($task_link['opposite_task_id']);
+ $opposite_task = $this->taskFinderModel->getById($task_link['opposite_task_id']);
$values = $task_link;
$values['title'] = '#'.$opposite_task['id'].' - '.$opposite_task['title'];
}
@@ -102,7 +102,7 @@ class TaskInternalLink extends BaseController
'errors' => $errors,
'task_link' => $task_link,
'task' => $task,
- 'labels' => $this->link->getList(0, false)
+ 'labels' => $this->linkModel->getList(0, false)
)));
}
@@ -119,9 +119,9 @@ class TaskInternalLink extends BaseController
list($valid, $errors) = $this->taskLinkValidator->validateModification($values);
if ($valid) {
- if ($this->taskLink->update($values['id'], $values['task_id'], $values['opposite_task_id'], $values['link_id'])) {
+ if ($this->taskLinkModel->update($values['id'], $values['task_id'], $values['opposite_task_id'], $values['link_id'])) {
$this->flash->success(t('Link updated successfully.'));
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])).'#links');
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])).'#links');
}
$this->flash->failure(t('Unable to update your link.'));
@@ -156,12 +156,12 @@ class TaskInternalLink extends BaseController
$this->checkCSRFParam();
$task = $this->getTask();
- if ($this->taskLink->remove($this->request->getIntegerParam('link_id'))) {
+ if ($this->taskLinkModel->remove($this->request->getIntegerParam('link_id'))) {
$this->flash->success(t('Link removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this link.'));
}
- $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
}
}
diff --git a/app/Controller/Listing.php b/app/Controller/TaskListController.php
index 93a7b836..c6d1fa92 100644
--- a/app/Controller/Listing.php
+++ b/app/Controller/TaskListController.php
@@ -3,15 +3,15 @@
namespace Kanboard\Controller;
use Kanboard\Filter\TaskProjectFilter;
-use Kanboard\Model\Task as TaskModel;
+use Kanboard\Model\TaskModel;
/**
- * List view controller
+ * Task List Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Listing extends BaseController
+class TaskListController extends BaseController
{
/**
* Show list view for projects
@@ -24,7 +24,7 @@ class Listing extends BaseController
$search = $this->helper->projectHeader->getSearchQuery($project);
$paginator = $this->paginator
- ->setUrl('listing', 'show', array('project_id' => $project['id']))
+ ->setUrl('TaskListController', 'show', array('project_id' => $project['id']))
->setMax(30)
->setOrder(TaskModel::TABLE.'.id')
->setDirection('DESC')
@@ -35,7 +35,7 @@ class Listing extends BaseController
)
->calculate();
- $this->response->html($this->helper->layout->app('listing/show', array(
+ $this->response->html($this->helper->layout->app('task_list/show', array(
'project' => $project,
'title' => $project['name'],
'description' => $this->helper->projectHeader->getDescription($project),
diff --git a/app/Controller/Taskmodification.php b/app/Controller/TaskModificationController.php
index e8eafe20..fc9113dd 100644
--- a/app/Controller/Taskmodification.php
+++ b/app/Controller/TaskModificationController.php
@@ -7,10 +7,10 @@ use Kanboard\Core\DateParser;
/**
* Task Modification controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Taskmodification extends BaseController
+class TaskModificationController extends BaseController
{
/**
* Set automatically the start date
@@ -20,8 +20,8 @@ class Taskmodification extends BaseController
public function start()
{
$task = $this->getTask();
- $this->taskModification->update(array('id' => $task['id'], 'date_started' => time()));
- $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])));
+ $this->taskModificationModel->update(array('id' => $task['id'], 'date_started' => time()));
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])));
}
/**
@@ -61,13 +61,13 @@ class Taskmodification extends BaseController
list($valid, $errors) = $this->taskValidator->validateDescriptionCreation($values);
if ($valid) {
- if ($this->taskModification->update($values)) {
+ if ($this->taskModificationModel->update($values)) {
$this->flash->success(t('Task updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your task.'));
}
- return $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
}
return $this->description($values, $errors);
@@ -85,7 +85,7 @@ class Taskmodification extends BaseController
public function edit(array $values = array(), array $errors = array())
{
$task = $this->getTask();
- $project = $this->project->getById($task['project_id']);
+ $project = $this->projectModel->getById($task['project_id']);
if (empty($values)) {
$values = $task;
@@ -93,17 +93,17 @@ class Taskmodification extends BaseController
$values = $this->hook->merge('controller:task-modification:form:default', $values, array('default_values' => $values));
}
- $values = $this->dateParser->format($values, array('date_due'), $this->config->get('application_date_format', DateParser::DATE_FORMAT));
- $values = $this->dateParser->format($values, array('date_started'), $this->config->get('application_datetime_format', DateParser::DATE_TIME_FORMAT));
+ $values = $this->dateParser->format($values, array('date_due'), $this->configModel->get('application_date_format', DateParser::DATE_FORMAT));
+ $values = $this->dateParser->format($values, array('date_started'), $this->configModel->get('application_datetime_format', DateParser::DATE_TIME_FORMAT));
$this->response->html($this->template->render('task_modification/edit_task', array(
'project' => $project,
'values' => $values,
'errors' => $errors,
'task' => $task,
- 'users_list' => $this->projectUserRole->getAssignableUsersList($task['project_id']),
- 'colors_list' => $this->color->getList(),
- 'categories_list' => $this->category->getList($task['project_id']),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($task['project_id']),
+ 'colors_list' => $this->colorModel->getList(),
+ 'categories_list' => $this->categoryModel->getList($task['project_id']),
)));
}
@@ -119,9 +119,9 @@ class Taskmodification extends BaseController
list($valid, $errors) = $this->taskValidator->validateModification($values);
- if ($valid && $this->taskModification->update($values)) {
+ if ($valid && $this->taskModificationModel->update($values)) {
$this->flash->success(t('Task updated successfully.'));
- $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
+ $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
} else {
$this->flash->failure(t('Unable to update your task.'));
$this->edit($values, $errors);
diff --git a/app/Controller/TaskPopover.php b/app/Controller/TaskPopoverController.php
index 0e47cffe..bf4e23d5 100644
--- a/app/Controller/TaskPopover.php
+++ b/app/Controller/TaskPopoverController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Task Popover
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class TaskPopover extends BaseController
+class TaskPopoverController extends BaseController
{
/**
* Change a task assignee directly from the board
@@ -18,11 +18,11 @@ class TaskPopover extends BaseController
public function changeAssignee()
{
$task = $this->getTask();
- $project = $this->project->getById($task['project_id']);
+ $project = $this->projectModel->getById($task['project_id']);
$this->response->html($this->template->render('task_popover/change_assignee', array(
'values' => $task,
- 'users_list' => $this->projectUserRole->getAssignableUsersList($project['id']),
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id']),
'project' => $project,
)));
}
@@ -38,13 +38,13 @@ class TaskPopover extends BaseController
list($valid,) = $this->taskValidator->validateAssigneeModification($values);
- if ($valid && $this->taskModification->update($values)) {
+ if ($valid && $this->taskModificationModel->update($values)) {
$this->flash->success(t('Task updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your task.'));
}
- $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $values['project_id'])), true);
+ $this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $values['project_id'])), true);
}
/**
@@ -55,11 +55,11 @@ class TaskPopover extends BaseController
public function changeCategory()
{
$task = $this->getTask();
- $project = $this->project->getById($task['project_id']);
+ $project = $this->projectModel->getById($task['project_id']);
$this->response->html($this->template->render('task_popover/change_category', array(
'values' => $task,
- 'categories_list' => $this->category->getList($project['id']),
+ 'categories_list' => $this->categoryModel->getList($project['id']),
'project' => $project,
)));
}
@@ -75,13 +75,13 @@ class TaskPopover extends BaseController
list($valid,) = $this->taskValidator->validateCategoryModification($values);
- if ($valid && $this->taskModification->update($values)) {
+ if ($valid && $this->taskModificationModel->update($values)) {
$this->flash->success(t('Task updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your task.'));
}
- $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $values['project_id'])), true);
+ $this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $values['project_id'])), true);
}
/**
diff --git a/app/Controller/TaskRecurrence.php b/app/Controller/TaskRecurrenceController.php
index 72dce3a5..dc7a0e1b 100644
--- a/app/Controller/TaskRecurrence.php
+++ b/app/Controller/TaskRecurrenceController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Task Recurrence controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class TaskRecurrence extends BaseController
+class TaskRecurrenceController extends BaseController
{
/**
* Edit recurrence form
@@ -31,10 +31,10 @@ class TaskRecurrence extends BaseController
'values' => $values,
'errors' => $errors,
'task' => $task,
- 'recurrence_status_list' => $this->task->getRecurrenceStatusList(),
- 'recurrence_trigger_list' => $this->task->getRecurrenceTriggerList(),
- 'recurrence_timeframe_list' => $this->task->getRecurrenceTimeframeList(),
- 'recurrence_basedate_list' => $this->task->getRecurrenceBasedateList(),
+ 'recurrence_status_list' => $this->taskModel->getRecurrenceStatusList(),
+ 'recurrence_trigger_list' => $this->taskModel->getRecurrenceTriggerList(),
+ 'recurrence_timeframe_list' => $this->taskModel->getRecurrenceTimeframeList(),
+ 'recurrence_basedate_list' => $this->taskModel->getRecurrenceBasedateList(),
)));
}
@@ -51,13 +51,13 @@ class TaskRecurrence extends BaseController
list($valid, $errors) = $this->taskValidator->validateEditRecurrence($values);
if ($valid) {
- if ($this->taskModification->update($values)) {
+ if ($this->taskModificationModel->update($values)) {
$this->flash->success(t('Task updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your task.'));
}
- return $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])), true);
}
return $this->edit($values, $errors);
diff --git a/app/Controller/Taskstatus.php b/app/Controller/TaskStatusController.php
index eeaf8513..82b4f9c4 100644
--- a/app/Controller/Taskstatus.php
+++ b/app/Controller/TaskStatusController.php
@@ -5,10 +5,10 @@ namespace Kanboard\Controller;
/**
* Task Status controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Taskstatus extends BaseController
+class TaskStatusController extends BaseController
{
/**
* Close a task
@@ -46,13 +46,13 @@ class Taskstatus extends BaseController
if ($this->request->getStringParam('confirmation') === 'yes') {
$this->checkCSRFParam();
- if ($this->taskStatus->$method($task['id'])) {
+ if ($this->taskStatusModel->$method($task['id'])) {
$this->flash->success($success_message);
} else {
$this->flash->failure($failure_message);
}
- return $this->response->redirect($this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
+ return $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), true);
}
return $this->response->html($this->template->render($template, array(
diff --git a/app/Controller/TaskSuppressionController.php b/app/Controller/TaskSuppressionController.php
new file mode 100644
index 00000000..600107c9
--- /dev/null
+++ b/app/Controller/TaskSuppressionController.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Core\Controller\AccessForbiddenException;
+
+/**
+ * Class TaskSuppressionController
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class TaskSuppressionController extends BaseController
+{
+ /**
+ * Confirmation dialog box before to remove the task
+ */
+ public function confirm()
+ {
+ $task = $this->getTask();
+
+ if (! $this->helper->user->canRemoveTask($task)) {
+ throw new AccessForbiddenException();
+ }
+
+ $this->response->html($this->template->render('task_suppression/remove', array(
+ 'task' => $task,
+ 'redirect' => $this->request->getStringParam('redirect'),
+ )));
+ }
+
+ /**
+ * Remove a task
+ */
+ public function remove()
+ {
+ $task = $this->getTask();
+ $this->checkCSRFParam();
+
+ if (! $this->helper->user->canRemoveTask($task)) {
+ throw new AccessForbiddenException();
+ }
+
+ if ($this->taskModel->remove($task['id'])) {
+ $this->flash->success(t('Task removed successfully.'));
+ } else {
+ $this->flash->failure(t('Unable to remove this task.'));
+ }
+
+ $redirect = $this->request->getStringParam('redirect') === '';
+ $this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $task['project_id'])), $redirect);
+ }
+}
diff --git a/app/Controller/Task.php b/app/Controller/TaskViewController.php
index 1ce13f69..2a79ee45 100644
--- a/app/Controller/Task.php
+++ b/app/Controller/TaskViewController.php
@@ -7,12 +7,12 @@ use Kanboard\Core\Controller\PageNotFoundException;
use Kanboard\Core\DateParser;
/**
- * Task controller
+ * Task Controller
*
- * @package controller
+ * @package Kanboard\Controller
* @author Frederic Guillot
*/
-class Task extends BaseController
+class TaskViewController extends BaseController
{
/**
* Public access (display a task)
@@ -21,14 +21,14 @@ class Task extends BaseController
*/
public function readonly()
{
- $project = $this->project->getByToken($this->request->getStringParam('token'));
+ $project = $this->projectModel->getByToken($this->request->getStringParam('token'));
// Token verification
if (empty($project)) {
throw AccessForbiddenException::getInstance()->withoutLayout();
}
- $task = $this->taskFinder->getDetails($this->request->getIntegerParam('task_id'));
+ $task = $this->taskFinderModel->getDetails($this->request->getIntegerParam('task_id'));
if (empty($task)) {
throw PageNotFoundException::getInstance()->withoutLayout();
@@ -40,12 +40,12 @@ class Task extends BaseController
$this->response->html($this->helper->layout->app('task/public', array(
'project' => $project,
- 'comments' => $this->comment->getAll($task['id']),
- 'subtasks' => $this->subtask->getAll($task['id']),
- 'links' => $this->taskLink->getAllGroupedByLabel($task['id']),
+ 'comments' => $this->commentModel->getAll($task['id']),
+ 'subtasks' => $this->subtaskModel->getAll($task['id']),
+ 'links' => $this->taskLinkModel->getAllGroupedByLabel($task['id']),
'task' => $task,
- 'columns_list' => $this->column->getList($task['project_id']),
- 'colors_list' => $this->color->getList(),
+ 'columns_list' => $this->columnModel->getList($task['project_id']),
+ 'colors_list' => $this->colorModel->getList(),
'title' => $task['title'],
'no_layout' => true,
'auto_refresh' => true,
@@ -61,7 +61,7 @@ class Task extends BaseController
public function show()
{
$task = $this->getTask();
- $subtasks = $this->subtask->getAll($task['id']);
+ $subtasks = $this->subtaskModel->getAll($task['id']);
$values = array(
'id' => $task['id'],
@@ -70,19 +70,19 @@ class Task extends BaseController
'time_spent' => $task['time_spent'] ?: '',
);
- $values = $this->dateParser->format($values, array('date_started'), $this->config->get('application_datetime_format', DateParser::DATE_TIME_FORMAT));
+ $values = $this->dateParser->format($values, array('date_started'), $this->configModel->get('application_datetime_format', DateParser::DATE_TIME_FORMAT));
$this->response->html($this->helper->layout->task('task/show', array(
'task' => $task,
- 'project' => $this->project->getById($task['project_id']),
+ 'project' => $this->projectModel->getById($task['project_id']),
'values' => $values,
- 'files' => $this->taskFile->getAllDocuments($task['id']),
- 'images' => $this->taskFile->getAllImages($task['id']),
- 'comments' => $this->comment->getAll($task['id'], $this->userSession->getCommentSorting()),
+ 'files' => $this->taskFileModel->getAllDocuments($task['id']),
+ 'images' => $this->taskFileModel->getAllImages($task['id']),
+ 'comments' => $this->commentModel->getAll($task['id'], $this->userSession->getCommentSorting()),
'subtasks' => $subtasks,
- 'internal_links' => $this->taskLink->getAllGroupedByLabel($task['id']),
- 'external_links' => $this->taskExternalLink->getAll($task['id']),
- 'link_label_list' => $this->link->getList(0, false),
+ 'internal_links' => $this->taskLinkModel->getAllGroupedByLabel($task['id']),
+ 'external_links' => $this->taskExternalLinkModel->getAll($task['id']),
+ 'link_label_list' => $this->linkModel->getList(0, false),
)));
}
@@ -97,10 +97,10 @@ class Task extends BaseController
$this->response->html($this->helper->layout->task('task/analytics', array(
'task' => $task,
- 'project' => $this->project->getById($task['project_id']),
- 'lead_time' => $this->taskAnalytic->getLeadTime($task),
- 'cycle_time' => $this->taskAnalytic->getCycleTime($task),
- 'time_spent_columns' => $this->taskAnalytic->getTimeSpentByColumn($task),
+ 'project' => $this->projectModel->getById($task['project_id']),
+ 'lead_time' => $this->taskAnalyticModel->getLeadTime($task),
+ 'cycle_time' => $this->taskAnalyticModel->getCycleTime($task),
+ 'time_spent_columns' => $this->taskAnalyticModel->getTimeSpentByColumn($task),
)));
}
@@ -114,16 +114,16 @@ class Task extends BaseController
$task = $this->getTask();
$subtask_paginator = $this->paginator
- ->setUrl('task', 'timetracking', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'pagination' => 'subtasks'))
+ ->setUrl('TaskViewController', 'timetracking', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'pagination' => 'subtasks'))
->setMax(15)
->setOrder('start')
->setDirection('DESC')
- ->setQuery($this->subtaskTimeTracking->getTaskQuery($task['id']))
+ ->setQuery($this->subtaskTimeTrackingModel->getTaskQuery($task['id']))
->calculateOnlyIf($this->request->getStringParam('pagination') === 'subtasks');
$this->response->html($this->helper->layout->task('task/time_tracking_details', array(
'task' => $task,
- 'project' => $this->project->getById($task['project_id']),
+ 'project' => $this->projectModel->getById($task['project_id']),
'subtask_paginator' => $subtask_paginator,
)));
}
@@ -139,38 +139,8 @@ class Task extends BaseController
$this->response->html($this->helper->layout->task('task/transitions', array(
'task' => $task,
- 'project' => $this->project->getById($task['project_id']),
- 'transitions' => $this->transition->getAllByTask($task['id']),
- )));
- }
-
- /**
- * Remove a task
- *
- * @access public
- */
- public function remove()
- {
- $task = $this->getTask();
-
- if (! $this->helper->user->canRemoveTask($task)) {
- throw new AccessForbiddenException();
- }
-
- if ($this->request->getStringParam('confirmation') === 'yes') {
- $this->checkCSRFParam();
-
- if ($this->task->remove($task['id'])) {
- $this->flash->success(t('Task removed successfully.'));
- } else {
- $this->flash->failure(t('Unable to remove this task.'));
- }
-
- return $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $task['project_id'])), true);
- }
-
- return $this->response->html($this->template->render('task/remove', array(
- 'task' => $task,
+ 'project' => $this->projectModel->getById($task['project_id']),
+ 'transitions' => $this->transitionModel->getAllByTask($task['id']),
)));
}
}
diff --git a/app/Controller/Twofactor.php b/app/Controller/TwoFactorController.php
index 118613b2..d02c8950 100644
--- a/app/Controller/Twofactor.php
+++ b/app/Controller/TwoFactorController.php
@@ -7,10 +7,10 @@ use Kanboard\Core\Controller\AccessForbiddenException;
/**
* Two Factor Auth controller
*
- * @package controller
+ * @package Kanboard/Controller
* @author Frederic Guillot
*/
-class Twofactor extends UserViewController
+class TwoFactorController extends UserViewController
{
/**
* Only the current user can access to 2FA settings
@@ -91,7 +91,7 @@ class Twofactor extends UserViewController
if ($provider->authenticate()) {
$this->flash->success(t('The two factor authentication code is valid.'));
- $this->user->update(array(
+ $this->userModel->update(array(
'id' => $user['id'],
'twofactor_activated' => 1,
'twofactor_secret' => $this->authenticationManager->getPostAuthenticationProvider()->getSecret(),
@@ -100,10 +100,10 @@ class Twofactor extends UserViewController
unset($this->sessionStorage->twoFactorSecret);
$this->userSession->disablePostAuthentication();
- $this->response->redirect($this->helper->url->to('twofactor', 'index', array('user_id' => $user['id'])));
+ $this->response->redirect($this->helper->url->to('TwoFactorController', 'index', array('user_id' => $user['id'])));
} else {
$this->flash->failure(t('The two factor authentication code is not valid.'));
- $this->response->redirect($this->helper->url->to('twofactor', 'show', array('user_id' => $user['id'])));
+ $this->response->redirect($this->helper->url->to('TwoFactorController', 'show', array('user_id' => $user['id'])));
}
}
@@ -117,7 +117,7 @@ class Twofactor extends UserViewController
$user = $this->getUser();
$this->checkCurrentUser($user);
- $this->user->update(array(
+ $this->userModel->update(array(
'id' => $user['id'],
'twofactor_activated' => 0,
'twofactor_secret' => '',
@@ -127,7 +127,7 @@ class Twofactor extends UserViewController
$this->userSession->disablePostAuthentication();
$this->flash->success(t('User updated successfully.'));
- $this->response->redirect($this->helper->url->to('twofactor', 'index', array('user_id' => $user['id'])));
+ $this->response->redirect($this->helper->url->to('TwoFactorController', 'index', array('user_id' => $user['id'])));
}
/**
@@ -152,7 +152,7 @@ class Twofactor extends UserViewController
$this->response->redirect($this->helper->url->to('DashboardController', 'show'));
} else {
$this->flash->failure(t('The two factor authentication code is not valid.'));
- $this->response->redirect($this->helper->url->to('twofactor', 'code'));
+ $this->response->redirect($this->helper->url->to('TwoFactorController', 'code'));
}
}
@@ -186,7 +186,7 @@ class Twofactor extends UserViewController
if ($this->request->getStringParam('disable') === 'yes') {
$this->checkCSRFParam();
- $this->user->update(array(
+ $this->userModel->update(array(
'id' => $user['id'],
'twofactor_activated' => 0,
'twofactor_secret' => '',
diff --git a/app/Controller/UserAjaxController.php b/app/Controller/UserAjaxController.php
index 7b365667..ed180471 100644
--- a/app/Controller/UserAjaxController.php
+++ b/app/Controller/UserAjaxController.php
@@ -4,7 +4,7 @@ namespace Kanboard\Controller;
use Kanboard\Filter\UserNameFilter;
use Kanboard\Formatter\UserAutoCompleteFormatter;
-use Kanboard\Model\User as UserModel;
+use Kanboard\Model\UserModel;
/**
* User Ajax Controller
@@ -36,7 +36,7 @@ class UserAjaxController extends BaseController
{
$project_id = $this->request->getStringParam('project_id');
$query = $this->request->getStringParam('q');
- $users = $this->projectPermission->findUsernames($project_id, $query);
+ $users = $this->projectPermissionModel->findUsernames($project_id, $query);
$this->response->json($users);
}
diff --git a/app/Controller/UserCreationController.php b/app/Controller/UserCreationController.php
index 49f9db54..9c873f85 100644
--- a/app/Controller/UserCreationController.php
+++ b/app/Controller/UserCreationController.php
@@ -3,7 +3,7 @@
namespace Kanboard\Controller;
use Kanboard\Core\Security\Role;
-use Kanboard\Notification\Mail as MailNotification;
+use Kanboard\Notification\MailNotification;
/**
* Class UserCreationController
@@ -26,10 +26,10 @@ class UserCreationController extends BaseController
$template = $isRemote ? 'user_creation/remote' : 'user_creation/local';
$this->response->html($this->template->render($template, array(
- 'timezones' => $this->timezone->getTimezones(true),
- 'languages' => $this->language->getLanguages(true),
+ 'timezones' => $this->timezoneModel->getTimezones(true),
+ 'languages' => $this->languageModel->getLanguages(true),
'roles' => $this->role->getApplicationRoles(),
- 'projects' => $this->project->getList(),
+ 'projects' => $this->projectModel->getList(),
'errors' => $errors,
'values' => $values + array('role' => Role::APP_USER),
)));
@@ -62,15 +62,15 @@ class UserCreationController extends BaseController
$project_id = empty($values['project_id']) ? 0 : $values['project_id'];
unset($values['project_id']);
- $user_id = $this->user->create($values);
+ $user_id = $this->userModel->create($values);
if ($user_id !== false) {
if ($project_id !== 0) {
- $this->projectUserRole->addUser($project_id, $user_id, Role::PROJECT_MEMBER);
+ $this->projectUserRoleModel->addUser($project_id, $user_id, Role::PROJECT_MEMBER);
}
if (! empty($values['notifications_enabled'])) {
- $this->userNotificationType->saveSelectedTypes($user_id, array(MailNotification::TYPE));
+ $this->userNotificationTypeModel->saveSelectedTypes($user_id, array(MailNotification::TYPE));
}
$this->flash->success(t('User created successfully.'));
diff --git a/app/Controller/UserCredentialController.php b/app/Controller/UserCredentialController.php
index 3310aaa8..4021dc37 100644
--- a/app/Controller/UserCredentialController.php
+++ b/app/Controller/UserCredentialController.php
@@ -44,9 +44,9 @@ class UserCredentialController extends BaseController
list($valid, $errors) = $this->userValidator->validatePasswordModification($values);
if ($valid) {
- if ($this->user->update($values)) {
+ if ($this->userModel->update($values)) {
$this->flash->success(t('Password modified successfully.'));
- $this->userLocking->resetFailedLogin($user['username']);
+ $this->userLockingModel->resetFailedLogin($user['username']);
} else {
$this->flash->failure(t('Unable to change the password.'));
}
@@ -95,7 +95,7 @@ class UserCredentialController extends BaseController
list($valid, $errors) = $this->userValidator->validateModification($values);
if ($valid) {
- if ($this->user->update($values)) {
+ if ($this->userModel->update($values)) {
$this->flash->success(t('User updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your user.'));
diff --git a/app/Controller/UserListController.php b/app/Controller/UserListController.php
index 685746fb..31fcdd44 100644
--- a/app/Controller/UserListController.php
+++ b/app/Controller/UserListController.php
@@ -21,7 +21,7 @@ class UserListController extends BaseController
->setUrl('UserListController', 'show')
->setMax(30)
->setOrder('username')
- ->setQuery($this->user->getQuery())
+ ->setQuery($this->userModel->getQuery())
->calculate();
$this->response->html($this->helper->layout->app('user_list/show', array(
diff --git a/app/Controller/UserModificationController.php b/app/Controller/UserModificationController.php
index 0a50eb5b..d339fd9a 100644
--- a/app/Controller/UserModificationController.php
+++ b/app/Controller/UserModificationController.php
@@ -32,8 +32,8 @@ class UserModificationController extends BaseController
'values' => $values,
'errors' => $errors,
'user' => $user,
- 'timezones' => $this->timezone->getTimezones(true),
- 'languages' => $this->language->getLanguages(true),
+ 'timezones' => $this->timezoneModel->getTimezones(true),
+ 'languages' => $this->languageModel->getLanguages(true),
'roles' => $this->role->getApplicationRoles(),
)));
}
@@ -55,7 +55,7 @@ class UserModificationController extends BaseController
list($valid, $errors) = $this->userValidator->validateModification($values);
if ($valid) {
- if ($this->user->update($values)) {
+ if ($this->userModel->update($values)) {
$this->flash->success(t('User updated successfully.'));
} else {
$this->flash->failure(t('Unable to update your user.'));
diff --git a/app/Controller/UserStatusController.php b/app/Controller/UserStatusController.php
index bc40a7dd..070fb6fc 100644
--- a/app/Controller/UserStatusController.php
+++ b/app/Controller/UserStatusController.php
@@ -34,7 +34,7 @@ class UserStatusController extends BaseController
$user = $this->getUser();
$this->checkCSRFParam();
- if ($this->user->remove($user['id'])) {
+ if ($this->userModel->remove($user['id'])) {
$this->flash->success(t('User removed successfully.'));
} else {
$this->flash->failure(t('Unable to remove this user.'));
@@ -67,7 +67,7 @@ class UserStatusController extends BaseController
$user = $this->getUser();
$this->checkCSRFParam();
- if ($this->user->enable($user['id'])) {
+ if ($this->userModel->enable($user['id'])) {
$this->flash->success(t('User activated successfully.'));
} else {
$this->flash->failure(t('Unable to enable this user.'));
@@ -100,7 +100,7 @@ class UserStatusController extends BaseController
$user = $this->getUser();
$this->checkCSRFParam();
- if ($this->user->disable($user['id'])) {
+ if ($this->userModel->disable($user['id'])) {
$this->flash->success(t('User disabled successfully.'));
} else {
$this->flash->failure(t('Unable to disable this user.'));
diff --git a/app/Controller/UserViewController.php b/app/Controller/UserViewController.php
index b299e35b..a73c5c51 100644
--- a/app/Controller/UserViewController.php
+++ b/app/Controller/UserViewController.php
@@ -3,7 +3,7 @@
namespace Kanboard\Controller;
use Kanboard\Core\Controller\PageNotFoundException;
-use Kanboard\Model\Project as ProjectModel;
+use Kanboard\Model\ProjectModel;
/**
* Class UserViewController
@@ -21,7 +21,7 @@ class UserViewController extends BaseController
*/
public function profile()
{
- $user = $this->user->getById($this->request->getIntegerParam('user_id'));
+ $user = $this->userModel->getById($this->request->getIntegerParam('user_id'));
if (empty($user)) {
throw new PageNotFoundException();
@@ -43,8 +43,8 @@ class UserViewController extends BaseController
$user = $this->getUser();
$this->response->html($this->helper->layout->user('user_view/show', array(
'user' => $user,
- 'timezones' => $this->timezone->getTimezones(true),
- 'languages' => $this->language->getLanguages(true),
+ 'timezones' => $this->timezoneModel->getTimezones(true),
+ 'languages' => $this->languageModel->getLanguages(true),
)));
}
@@ -62,7 +62,7 @@ class UserViewController extends BaseController
->setMax(20)
->setOrder('start')
->setDirection('DESC')
- ->setQuery($this->subtaskTimeTracking->getUserQuery($user['id']))
+ ->setQuery($this->subtaskTimeTrackingModel->getUserQuery($user['id']))
->calculateOnlyIf($this->request->getStringParam('pagination') === 'subtasks');
$this->response->html($this->helper->layout->user('user_view/timesheet', array(
@@ -80,7 +80,7 @@ class UserViewController extends BaseController
{
$user = $this->getUser();
$this->response->html($this->helper->layout->user('user_view/password_reset', array(
- 'tokens' => $this->passwordReset->getAll($user['id']),
+ 'tokens' => $this->passwordResetModel->getAll($user['id']),
'user' => $user,
)));
}
@@ -94,7 +94,7 @@ class UserViewController extends BaseController
{
$user = $this->getUser();
$this->response->html($this->helper->layout->user('user_view/last', array(
- 'last_logins' => $this->lastLogin->getAll($user['id']),
+ 'last_logins' => $this->lastLoginModel->getAll($user['id']),
'user' => $user,
)));
}
@@ -108,7 +108,7 @@ class UserViewController extends BaseController
{
$user = $this->getUser();
$this->response->html($this->helper->layout->user('user_view/sessions', array(
- 'sessions' => $this->rememberMeSession->getAll($user['id']),
+ 'sessions' => $this->rememberMeSessionModel->getAll($user['id']),
'user' => $user,
)));
}
@@ -122,7 +122,7 @@ class UserViewController extends BaseController
{
$this->checkCSRFParam();
$user = $this->getUser();
- $this->rememberMeSession->remove($this->request->getIntegerParam('id'));
+ $this->rememberMeSessionModel->remove($this->request->getIntegerParam('id'));
$this->response->redirect($this->helper->url->to('UserViewController', 'sessions', array('user_id' => $user['id'])));
}
@@ -137,16 +137,16 @@ class UserViewController extends BaseController
if ($this->request->isPost()) {
$values = $this->request->getValues();
- $this->userNotification->saveSettings($user['id'], $values);
+ $this->userNotificationModel->saveSettings($user['id'], $values);
$this->flash->success(t('User updated successfully.'));
return $this->response->redirect($this->helper->url->to('UserViewController', 'notifications', array('user_id' => $user['id'])));
}
return $this->response->html($this->helper->layout->user('user_view/notifications', array(
- 'projects' => $this->projectUserRole->getProjectsByUser($user['id'], array(ProjectModel::ACTIVE)),
- 'notifications' => $this->userNotification->readSettings($user['id']),
- 'types' => $this->userNotificationType->getTypes(),
- 'filters' => $this->userNotificationFilter->getFilters(),
+ 'projects' => $this->projectUserRoleModel->getProjectsByUser($user['id'], array(ProjectModel::ACTIVE)),
+ 'notifications' => $this->userNotificationModel->readSettings($user['id']),
+ 'types' => $this->userNotificationTypeModel->getTypes(),
+ 'filters' => $this->userNotificationFilterModel->getFilters(),
'user' => $user,
)));
}
@@ -162,14 +162,14 @@ class UserViewController extends BaseController
if ($this->request->isPost()) {
$values = $this->request->getValues();
- $this->userMetadata->save($user['id'], $values);
+ $this->userMetadataModel->save($user['id'], $values);
$this->flash->success(t('User updated successfully.'));
$this->response->redirect($this->helper->url->to('UserViewController', 'integrations', array('user_id' => $user['id'])));
}
$this->response->html($this->helper->layout->user('user_view/integrations', array(
'user' => $user,
- 'values' => $this->userMetadata->getAll($user['id']),
+ 'values' => $this->userMetadataModel->getAll($user['id']),
)));
}
@@ -182,7 +182,7 @@ class UserViewController extends BaseController
{
$user = $this->getUser();
$this->response->html($this->helper->layout->user('user_view/external', array(
- 'last_logins' => $this->lastLogin->getAll($user['id']),
+ 'last_logins' => $this->lastLoginModel->getAll($user['id']),
'user' => $user,
)));
}
@@ -200,7 +200,7 @@ class UserViewController extends BaseController
if ($switch === 'enable' || $switch === 'disable') {
$this->checkCSRFParam();
- if ($this->user->{$switch . 'PublicAccess'}($user['id'])) {
+ if ($this->userModel->{$switch . 'PublicAccess'}($user['id'])) {
$this->flash->success(t('User updated successfully.'));
} else {
$this->flash->failure(t('Unable to update this user.'));
diff --git a/app/Controller/WebNotification.php b/app/Controller/WebNotification.php
deleted file mode 100644
index a62da0e3..00000000
--- a/app/Controller/WebNotification.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-namespace Kanboard\Controller;
-
-/**
- * Web notification controller
- *
- * @package controller
- * @author Frederic Guillot
- */
-class WebNotification extends BaseController
-{
- /**
- * Mark all notifications as read
- *
- * @access public
- */
- public function flush()
- {
- $user_id = $this->getUserId();
-
- $this->userUnreadNotification->markAllAsRead($user_id);
- $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id)));
- }
-
- /**
- * Mark a notification as read
- *
- * @access public
- */
- public function remove()
- {
- $user_id = $this->getUserId();
- $notification_id = $this->request->getIntegerParam('notification_id');
-
- $this->userUnreadNotification->markAsRead($user_id, $notification_id);
- $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id)));
- }
-
- private function getUserId()
- {
- $user_id = $this->request->getIntegerParam('user_id');
-
- if (! $this->userSession->isAdmin() && $user_id != $this->userSession->getId()) {
- $user_id = $this->userSession->getId();
- }
-
- return $user_id;
- }
-}
diff --git a/app/Controller/WebNotificationController.php b/app/Controller/WebNotificationController.php
new file mode 100644
index 00000000..46a42063
--- /dev/null
+++ b/app/Controller/WebNotificationController.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace Kanboard\Controller;
+
+/**
+ * Web notification controller
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class WebNotificationController extends BaseController
+{
+ /**
+ * Mark all notifications as read
+ *
+ * @access public
+ */
+ public function flush()
+ {
+ $user_id = $this->getUserId();
+
+ $this->userUnreadNotificationModel->markAllAsRead($user_id);
+ $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id)));
+ }
+
+ /**
+ * Mark a notification as read
+ *
+ * @access public
+ */
+ public function remove()
+ {
+ $user_id = $this->getUserId();
+ $notification_id = $this->request->getIntegerParam('notification_id');
+
+ $this->userUnreadNotificationModel->markAsRead($user_id, $notification_id);
+ $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id)));
+ }
+
+ /**
+ * Redirect to the task and mark notification as read
+ */
+ public function redirect()
+ {
+ $user_id = $this->getUserId();
+ $notification_id = $this->request->getIntegerParam('notification_id');
+
+ $notification = $this->userUnreadNotificationModel->getById($notification_id);
+ $this->userUnreadNotificationModel->markAsRead($user_id, $notification_id);
+
+ if (empty($notification)) {
+ $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id)));
+ } elseif ($this->helper->text->contains($notification['event_name'], 'comment')) {
+ $this->response->redirect($this->helper->url->to(
+ 'TaskViewController',
+ 'show',
+ array('task_id' => $notification['event_data']['task']['id'], 'project_id' => $notification['event_data']['task']['project_id']),
+ 'comment-'.$notification['event_data']['comment']['id']
+ ));
+ } else {
+ $this->response->redirect($this->helper->url->to(
+ 'TaskViewController',
+ 'show',
+ array('task_id' => $notification['event_data']['task']['id'], 'project_id' => $notification['event_data']['task']['project_id'])
+ ));
+ }
+ }
+
+ private function getUserId()
+ {
+ $user_id = $this->request->getIntegerParam('user_id');
+
+ if (! $this->userSession->isAdmin() && $user_id != $this->userSession->getId()) {
+ $user_id = $this->userSession->getId();
+ }
+
+ return $user_id;
+ }
+}