diff --git a/db/migrations/20260727102106_update_insight_menu.php b/db/migrations/20260727102106_update_insight_menu.php new file mode 100644 index 000000000..07e1dcc6f --- /dev/null +++ b/db/migrations/20260727102106_update_insight_menu.php @@ -0,0 +1,37 @@ +execute(" + UPDATE `cms_functions` SET `title_en` = 'Statistics', seq = 0 WHERE `id` = '128'; + "); + // Put "Sales report" below "Dashboard v2" + $this->execute(" + UPDATE `cms_functions` SET `seq` = 19 WHERE `id` = '96'; + "); + // Remove "Fancy graphs" + $this->execute(" + DELETE FROM `cms_functions` WHERE `id` = '102'; + "); + } + + public function down(): void + { + $this->execute(" + UPDATE `cms_functions` SET `title_en` = 'Insight', seq = 6 WHERE `id` = '128'; + "); + $this->execute(" + UPDATE `cms_functions` SET `seq` = 16 WHERE `id` = '96'; + "); + $this->execute(" + INSERT INTO `cms_functions` (`id`, `parent_id`, `title_en`, `include`, `seq`, `alert`, `adminonly`, `visible`, `allusers`, `allcamps`, `action_permissions`) VALUES (102,128,'Fancy Graphs (beta)','fancygraphs',17,0,0,1,0,0,'view_beneficiary_graph'); + "); + } +} diff --git a/include/fancygraphs.php b/include/fancygraphs.php deleted file mode 100644 index 00525cc8a..000000000 --- a/include/fancygraphs.php +++ /dev/null @@ -1,61 +0,0 @@ - $_SESSION['camp']['id']]); - -$data['women'] = db_simplearray('SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), date_of_birth)), "%Y")+0, COUNT(id) FROM people WHERE visible AND NOT deleted AND camp_id = :camp_id AND date_of_birth IS NOT NULL AND UNIX_TIMESTAMP(date_of_birth) != 0 AND gender = "F" GROUP BY DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), date_of_birth)), "%Y")+0', ['camp_id' => $_SESSION['camp']['id']]); - -$data['oldest'] = db_value('SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), date_of_birth)), "%Y")+0 FROM people WHERE visible AND NOT deleted AND date_of_birth IS NOT NULL AND UNIX_TIMESTAMP(date_of_birth) != 0 AND camp_id = :camp_id ORDER BY date_of_birth LIMIT 1', ['camp_id' => $_SESSION['camp']['id']]) ?? 0; - -if ($data['oldest'] > 0) { - $data['oldest'] = ceil($data['oldest'] / 10) * 10; -} -$array = db_array('SELECT lastname, -(SELECT COUNT(p2.id) FROM people AS p2 WHERE p2.visible AND NOT deleted AND p2.parent_id = p.id)+1 AS size, -(SELECT COUNT(p2.id) FROM people AS p2 WHERE p2.visible AND NOT deleted AND p2.parent_id = p.id AND gender = "M" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p2.date_of_birth)), "%Y")+0 >= '.$_SESSION['camp']['adult_age'].')+IF(p.gender="M" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p.date_of_birth)), "%Y")+0 >= '.$_SESSION['camp']['adult_age'].',1,0) AS male, -(SELECT COUNT(p2.id) FROM people AS p2 WHERE p2.visible AND NOT deleted AND p2.parent_id = p.id AND gender = "F" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p2.date_of_birth)), "%Y")+0 >= '.$_SESSION['camp']['adult_age'].')+IF(p.gender="F" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p.date_of_birth)), "%Y")+0 >= '.$_SESSION['camp']['adult_age'].',1,0) AS female, -(SELECT COUNT(p2.id) FROM people AS p2 WHERE p2.visible AND NOT deleted AND p2.parent_id = p.id AND gender = "M" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p2.date_of_birth)), "%Y")+0 < '.$_SESSION['camp']['adult_age'].')+IF(p.gender="M" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p.date_of_birth)), "%Y")+0 < '.$_SESSION['camp']['adult_age'].',1,0) AS boys, -(SELECT COUNT(p2.id) FROM people AS p2 WHERE p2.visible AND NOT deleted AND p2.parent_id = p.id AND gender = "F" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p2.date_of_birth)), "%Y")+0 < '.$_SESSION['camp']['adult_age'].')+IF(p.gender="F" AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), p.date_of_birth)), "%Y")+0 < '.$_SESSION['camp']['adult_age'].',1,0) AS girls -FROM people AS p WHERE camp_id = :camp_id AND UNIX_TIMESTAMP(date_of_birth) != 0 AND p.visible AND parent_id IS NULL AND NOT deleted AND container != "?"', ['camp_id' => $_SESSION['camp']['id']]); -$data['familysize'] = []; -foreach ($array as $a) { - ++$data['familysize'][$a['size']]['count']; - $data['familysize'][$a['size']]['male'] += $a['male']; - $data['familysize'][$a['size']]['female'] += $a['female']; - $data['familysize'][$a['size']]['boys'] += $a['boys']; - $data['familysize'][$a['size']]['girls'] += $a['girls']; -} -foreach ($data['familysize'] as $key => $d) { - $data['familysize'][$key]['male'] = intval($data['familysize'][$key]['male']); - $data['familysize'][$key]['female'] = intval($data['familysize'][$key]['female']); - $data['familysize'][$key]['boys'] = intval($data['familysize'][$key]['boys']); - $data['familysize'][$key]['girls'] = intval($data['familysize'][$key]['girls']); -} - -ksort($data['familysize']); - -$data['residents'] = (int) db_value('SELECT COUNT(id) FROM people WHERE visible AND NOT deleted AND camp_id = :camp_id', ['camp_id' => $_SESSION['camp']['id']]); - -if (0 === $data['residents']) { - $cmsmain->assign('include', 'no_graphs.tpl'); -} else { - $data['tip'] = db_row('SELECT * FROM tipofday ORDER BY RAND()'); - $data['families'] = db_value('SELECT COUNT(id) FROM people AS p WHERE visible AND parent_id IS NULL AND NOT deleted AND p.camp_id = :camp_id', ['camp_id' => $_SESSION['camp']['id']]); - $data['notregistered'] = db_value('SELECT COUNT(id) FROM people WHERE visible AND NOT deleted AND camp_id = :camp_id AND notregistered', ['camp_id' => $_SESSION['camp']['id']]); - $data['residentscamp'] = db_value('SELECT COUNT(id) FROM people WHERE visible AND NOT deleted AND camp_id = :camp_id AND LEFT(container,2) != "PK"', ['camp_id' => $_SESSION['camp']['id']]); - $data['residentsoutside'] = db_value('SELECT COUNT(id) FROM people WHERE visible AND NOT deleted AND camp_id = :camp_id AND LEFT(container,2) = "PK"', ['camp_id' => $_SESSION['camp']['id']]); - $data['totalmen'] = db_value('SELECT COUNT(id) FROM people WHERE visible AND NOT deleted AND gender = "M" AND camp_id = :camp_id', ['camp_id' => $_SESSION['camp']['id']]); - $data['menperc'] = $data['totalmen'] / $data['residents'] * 100; - $data['totalwomen'] = db_value('SELECT COUNT(id) FROM people WHERE visible AND NOT deleted AND gender = "F" AND camp_id = :camp_id', ['camp_id' => $_SESSION['camp']['id']]); - $data['womenperc'] = $data['totalwomen'] / $data['residents'] * 100; - $data['adults'] = db_value('SELECT COUNT(id) FROM people WHERE camp_id = :camp_id AND visible AND NOT deleted AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), date_of_birth)), "%Y")+0 >= '.$_SESSION['camp']['adult_age'], ['camp_id' => $_SESSION['camp']['id']]); - $data['children'] = db_value('SELECT COUNT(id) FROM people WHERE camp_id = :camp_id AND visible AND NOT deleted AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), date_of_birth)), "%Y")+0 < '.$_SESSION['camp']['adult_age'], ['camp_id' => $_SESSION['camp']['id']]); - $data['under18'] = db_value('SELECT COUNT(id) FROM people WHERE camp_id = :camp_id AND visible AND NOT deleted AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), date_of_birth)), "%Y")+0 < 18', ['camp_id' => $_SESSION['camp']['id']]); - - // open the template - $cmsmain->assign('include', 'fancygraphs.tpl'); - - // place the form elements and data in the template - $cmsmain->assign('data', $data); - $cmsmain->assign('formelements', $formdata); - $cmsmain->assign('formbuttons', $formbuttons); -} diff --git a/library/constants.php b/library/constants.php index f6ab9a89d..e86d5c963 100644 --- a/library/constants.php +++ b/library/constants.php @@ -187,19 +187,6 @@ 'list_sales', ], ], - [ - 'id' => 102, - 'module' => 'Report', - 'menu' => 'Fancy graphs (beta)', - 'action' => 'fancygraphs', - 'adminonly' => '0', - 'visible' => '1', - 'allusers' => '0', - 'allcamps' => '0', - 'action_permission' => [ - 'view_beneficiary_graph', - ], - ], [ 'id' => 167, 'module' => 'Report', diff --git a/templates/fancygraphs.tpl b/templates/fancygraphs.tpl deleted file mode 100644 index 1a15c0b43..000000000 --- a/templates/fancygraphs.tpl +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - -
-
-
-

-There {if $data['residents']==1} is {else} are {/if} currently {$data['residents']} {if $data['residents']==1} person {else} people {/if} living in {$currentcamp['name']}. - - -{($data['totalmen'])} of them {if $data['totalmen']==1} is {else} are {/if} male ({$data['menperc']|round}%) and {$data['totalwomen']} {if $data['totalwomen']==1} is {else} are {/if} female ({$data['womenperc']|round}%).
{$data['children']} {if $data['children']==1} person is {else} people are {/if} {$smarty.session.camp['adult_age']-1} or younger ({($data['children']/$data['residents']*100)|round}%).

-