davidbadura / taskwarrior
This package is abandoned and no longer maintained.
No replacement package was suggested.
a php lib for taskwarrior
3.0.1
2016-07-13 07:39 UTC
Requires
- php: >=5.5
- doctrine/collections: ^1.3
- jms/serializer: ^1.0
- nesbot/carbon: ^1.14
- ocramius/proxy-manager: ^1.0
- phpoption/phpoption: ^1.3
- symfony/filesystem: ^2.3
- symfony/process: ^2.5
- webmozart/assert: ^1.0.1
- webmozart/path-util: ^2.1
Requires (Dev)
- phpunit/phpunit: ^4.0
- symfony/var-dumper: ^2.6
This package is auto-updated.
Last update: 2022-07-26 10:20:14 UTC
README
used by doThings - a Taskwarrior web-ui.
Install
composer require 'davidbadura/taskwarrior'
Unfortunately, the annotation reader is not automatically registered on composer. So you should add following line if you have [Semantical Error] The annotation "@JMS\Serializer\Annotation\Type" in property [...] does not exist, or could not be auto-loaded.
exception:
\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader('class_exists');
Requirements
Taskwarrior changes its behavior by patch level updates and it is very difficult to support all versions. The current supported versions are:
PHP Lib | Taskwarrior | PHP Version |
---|---|---|
2.x | >=2.4.3 | >=5.4 |
3.x | >=2.5.0 | >=5.5 |
Usage
use DavidBadura\Taskwarrior\TaskManager; use DavidBadura\Taskwarrior\Task; use DavidBadura\Taskwarrior\Recurring; use DavidBadura\Taskwarrior\Annotation; $tm = TaskManager::create(); $task = new Task(); $task->setDescription('program this lib'); $task->setProject('hobby'); $task->setDue('tomorrow'); $task->setPriority(Task::PRIORITY_HIGH); $task->addTag('next'); $task->setRecurring(Recurring::DAILY); $task->addAnnotation(new Annotation("and add many features")); $tm->save($task); $tasks = $tm->filterPending('project:hobby'); // one task $tm->done($task); $tasks = $tm->filterPending('project:hobby'); // empty $tasks = $tm->filter('project:hobby'); // one task $tasks = $tm->filterByReport('waiting'); // and sorting
API
Task
attr | writeable | type |
---|---|---|
uuid | false | string |
description | true | string |
priority | true | string |
project | true | string |
due | true | DateTime |
wait | true | DateTime |
tags | true | string[] |
annotations | true | Annotation[] |
urgency | false | float |
entry | false | DateTime |
start | false | DateTime |
recur | true | Recurring |
unti | true | DateTime |
modified | false | DateTime |
end | false | DateTime |
status | false | string |
Example:
$task = new Task(); $task->setDescription('program this lib'); $task->setProject('hobby'); $task->setDue('tomorrow'); $task->setPriority(Task::PRIORITY_HIGH); $task->addTag('next'); $task->setRecurring(Recurring::DAILY);
Taskwarrior
create TaskManager:
$tm = TaskManager::create();
save a task:
$task = new Task(); $task->setDescription('foo'); $tm->save($task);
find a task:
$task = $tm->find('b1d46c75-63cc-4753-a20f-a0b376f1ead0');
filter tasks:
$tasks = $tm->filter('status:pending'); $tasks = $tm->filter('status:pending +home'); $tasks = $tm->filter('status:pending and +home'); $tasks = $tm->filter(['status:pending', '+home']);
filter pending tasks:
$tasks = $tm->filterPending('+home'); $tasks = $tm->filterPending('project:hobby +home'); $tasks = $tm->filterPending('project:hobby and +home'); $tasks = $tm->filterPending(['project:hobby', '+home']);
count tasks:
$tasks = $tm->count('status:pending'); $tasks = $tm->count('status:pending +home'); $tasks = $tm->count('status:pending and +home'); $tasks = $tm->count(['status:pending', '+home']);
delete task:
$tm->delete($task);
done task:
$tm->done($task);
start task:
$tm->start($task);
stop task:
$tm->stop($task);
reopen task:
$tm->reopen($task);
dependencies:
$task1 = new Task(); $task1->setDescription('a'); $task2 = new Task(); $task2->setDescription('b'); $task1->addDependency($task2); // the order is important! $tm->save($task2); $tm->save($task1); $tm->clear(); // clear object cache $task1 = $tm->find('uuid-from-task1'); $task2 = $task1->getDependencies()[0]; echo $task2->getDesciption(); // "b" <- lazy loading
annotations:
$task = new Task(); $task->setDescription('a'); $task->addAnnotation(new Annotation("foobar")); $tm->save($task); $tm->clear(); // clear object cache $task = $tm->find('uuid-from-task1'); $annotation = $task->getAnnotations()[0]; echo $annotation->getDesciption(); // "foobar"
QueryBuilder
example:
$tasks = $taskManager->createQueryBuilder() ->whereProject('hobby') ->orderBy(['entry' => 'DESC']) ->getResult()