davidbadura/taskwarrior
最新稳定版本:3.0.1
Composer 安装命令:
composer require davidbadura/taskwarrior
包简介
a php lib for taskwarrior
关键字:
README 文档
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()
统计信息
- 总下载量: 217
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 17
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-02-08