Go to file
DavidBadura da2d664f58 rewrite 2015-04-23 21:28:57 +00:00
src rewrite 2015-04-23 21:28:57 +00:00
tests rewrite 2015-04-23 21:28:57 +00:00
.gitignore first draft 2015-02-05 20:41:03 +01:00
.travis.yml fix complex filter 2015-04-22 14:33:35 +00:00
LICENSE Initial commit 2015-02-05 14:24:24 +01:00
README.md rewrite 2015-04-23 21:28:57 +00:00
composer.json add doctrine array collection 2015-04-22 10:44:11 +00:00
phpunit.xml.dist first draft 2015-02-05 20:41:03 +01:00

README.md

Taskwarrior PHP lib

Build Status

WOW

Install

composer require 'davidbadura/taskwarrior'

Requirements: Taskwarrior >=2.4

Usage

use DavidBadura\Taskwarrior\TaskManager;
use DavidBadura\Taskwarrior\Task;
use DavidBadura\Taskwarrior\Recurring;

$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);

$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[]
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);

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']);

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);

QueryBuilder

example:

$tasks = $taskManager->createQueryBuilder()
    ->whereProject('hobby')
    ->orderBy(['entry' => 'DESC'])
    ->getResult()