65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
<?php
|
|
function sort_by_completion($a, $b)
|
|
{
|
|
// Ensure $a and $b are arrays before proceeding
|
|
if (!is_array($a) || !is_array($b)) {
|
|
// Handle the case where one or both are not arrays.
|
|
// This shouldn't ideally happen with uasort on your $categories array,
|
|
// but adding a safeguard is good practice.
|
|
return 0; // Maintain original order if not arrays
|
|
}
|
|
|
|
$a_completed = true;
|
|
foreach ($a as $todo) {
|
|
if (isset($todo['status']) && $todo['status'] !== 'completed') {
|
|
$a_completed = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$b_completed = true;
|
|
foreach ($b as $todo) {
|
|
if (isset($todo['status']) && $todo['status'] !== 'completed') {
|
|
$b_completed = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($a_completed && $b_completed) {
|
|
return 0;
|
|
} elseif ($a_completed && !$b_completed) {
|
|
return 1;
|
|
} elseif (!$a_completed && $b_completed) {
|
|
return -1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
function todo_display($todos)
|
|
{
|
|
$categories = [];
|
|
while ($row = $todos->fetch_assoc())
|
|
$categories[$row['category']][] = $row;
|
|
|
|
foreach ($categories as $c)
|
|
uasort($c, 'sort_by_completion');
|
|
|
|
$display = '
|
|
<div class="todo_display">
|
|
' . todo_actions() . '
|
|
<div class="todo_category_window">
|
|
';
|
|
|
|
foreach (array_keys($categories) as $key)
|
|
$display .= todo_category($key, $categories[$key]);
|
|
|
|
$display .= '
|
|
</div>
|
|
' . todo_modal(null, 'new_todo_item') . '
|
|
</div>
|
|
';
|
|
|
|
return $display;
|
|
}
|