Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
CRAP | |
0.00% |
0 / 58 |
UnsortedTaskList | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
306 | |
0.00% |
0 / 58 |
getTasks | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getNonCompletedTasks | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getShowMoreCompletedTasks | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getCompletedTasks | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
moveItemIndex | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 28 |
|||
getTasksByStatus | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
isHideIfCompleted | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getId | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getTitle | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getColor | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getContainer | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
<?php | |
namespace humhub\modules\tasks\models\lists; | |
use humhub\modules\content\components\ActiveQueryContent; | |
use humhub\modules\tasks\models\Sortable; | |
use humhub\modules\tasks\models\Task; | |
use Yii; | |
use yii\base\Model; | |
class UnsortedTaskList extends Model implements TaskListInterface, Sortable | |
{ | |
public $contentContainer; | |
/** | |
* @return ActiveQueryContent | |
*/ | |
public function getTasks() | |
{ | |
return Task::findUnsorted($this->contentContainer); | |
} | |
/** | |
* @return ActiveQueryContent | |
*/ | |
public function getNonCompletedTasks() | |
{ | |
return $this->getTasks()->where(['!=', 'task.status', Task::STATUS_COMPLETED])->orderBy(['sort_order' => SORT_ASC, 'task.updated_at' => SORT_DESC]); | |
} | |
/** | |
* @param $offset int | |
* @param $limit int | |
* @return static[] | |
*/ | |
public function getShowMoreCompletedTasks($offset, $limit) | |
{ | |
return $this->getCompletedTasks()->orderBy(['task.updated_at' => SORT_DESC])->offset($offset)->limit($limit)->all(); | |
} | |
/** | |
* @return ActiveQueryContent | |
*/ | |
public function getCompletedTasks() | |
{ | |
return $this->getTasksByStatus(Task::STATUS_COMPLETED)->orderBy(['task.updated_at' => SORT_DESC]); | |
} | |
public function moveItemIndex($taskId, $newIndex) | |
{ | |
/** @var $task Task */ | |
$transaction = Task::getDb()->beginTransaction(); | |
try { | |
$task = Task::findOne(['id' => $taskId]); | |
$oldListId = $task->task_list_id; | |
$task->updateAttributes(['task_list_id' => null]); | |
$tasks = $this->getTasks()->all(); | |
// make sure no invalid index is given | |
if ($newIndex < 0) { | |
$newIndex = 0; | |
} else if ($newIndex >= count($tasks) + 1) { | |
$newIndex = count($tasks) - 1; | |
} | |
if($oldListId === null) { | |
array_splice($tasks, $task->sort_order, 1); | |
} | |
array_splice($tasks, $newIndex, 0, [$task]); | |
foreach ($tasks as $index => $item) { | |
$item->updateAttributes(['sort_order' => $index]); | |
} | |
$transaction->commit(); | |
} catch (\Exception $e) { | |
$transaction->rollBack(); | |
throw $e; | |
} catch (\Throwable $e) { | |
$transaction->rollBack(); | |
throw $e; | |
} | |
} | |
/** | |
* @param $status | |
* @return ActiveQueryContent | |
*/ | |
public function getTasksByStatus($status) | |
{ | |
return $this->getTasks()->where(['task.status' => $status]); | |
} | |
public function isHideIfCompleted() | |
{ | |
return true; | |
} | |
public function getId() | |
{ | |
return null; | |
} | |
public function getTitle() | |
{ | |
return Yii::t('TasksModule.base', 'Other Tasks'); | |
} | |
public function getColor() | |
{ | |
return '#708fa0'; | |
} | |
public function getContainer() | |
{ | |
return $this->contentContainer; | |
} | |
} |