/
functions.php
129 lines (109 loc) · 2.76 KB
/
functions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
date_default_timezone_set("America/Sao_Paulo");
$TASKS_DIR = 'tasks';
$TASKS = opendir($TASKS_DIR);
//Retorna um JSON array com todas as tarefas salvas
function getAllTasks()
{
global $TASKS;
global $TASKS_DIR;
while (($entry = readdir($TASKS))) {
if ($entry != "." && $entry != "..") { //Ignora o diretório atual e o anterior (um nivel acima)
$response[] = json_decode(file_get_contents("$TASKS_DIR/$entry"));
}
}
return json_encode($response, JSON_PRETTY_PRINT);
}
function getTask($id) {
global $TASKS_DIR;
$content = file_get_contents("$TASKS_DIR/$id.json");
if($content) {
return json_decode($content);
}
return false;
}
//Adiciona uma tarefa e retorna o objeto adicionado em caso de sucesso
function addTask($name, $description = "")
{
global $TASKS_DIR;
if (!findTask($name)) {
$id = generateId();
$date = date("Y-m-d");
$task = new stdClass();
$task->id = $id;
$task->nome = $name;
$task->descricao = $description;
$task->concluida = false;
$task->criacao = $date;
$task->modificada = $date;
try {
writeJson("$TASKS_DIR/$id.json", $task);
} catch (Exception $e) {
echo "Erro ao serializar";
echo $e;
return false;
}
return $task;
}
return false;
}
//Salva um arquivo em disco no formato JSON
function writeJson($filename, $obj)
{
$fh = fopen($filename, "w");
fwrite($fh, json_encode($obj, JSON_UNESCAPED_UNICODE));
fclose($fh);
}
function removeTask($id)
{
global $TASKS_DIR;
unlink("$TASKS_DIR/$id.json");
return true;
}
function editTask($taskName, $description = "")
{
global $TASKS_DIR;
$task = findTask($taskName);
if ($task) {
$task->descricao = $description;
$task->modificada = date("Y-m-d");
$filename = $TASKS_DIR . '/' . $task->id . '.json';
writeJson($filename, $task);
return $task;
}
return false;
}
function findTask($taskName)
{
global $TASKS_DIR;
$tasks = json_decode(getAllTasks());
foreach ($tasks as $k => $v) {
if ($tasks[$k]->nome == $taskName) {
return $tasks[$k];
}
}
return false;
}
/**
* Marca uma tarefa como concluida
* @param $id Id da tarefa
* @return mixed A tarefa modificada, ou false em caso de falha
*/
function taskDone($id)
{
global $TASKS_DIR;
$filename = "$TASKS_DIR/$id.json";
$task = getTask($id);
if($task) {
$task->concluida = true;
$task->modificada = date("Y-m-d");
writeJson($filename, $task);
return $task;
}
return false;
}
//Gera um ID para as tasks
function generateId()
{
return date("YmdHis");
}