plugins\hits\hits.admin.php

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=tools
[END_COT_EXT]
==================== */
/**
 * Administration panel - Hits
 *
 * @package Cotonti
 * @copyright (c) Cotonti Team
 * @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
 */
 
(defined('COT_CODE') && defined('COT_ADMIN')) or die('Wrong URL.');
 
list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('plug', 'hits');
cot_block($usr['auth_read']);
 
require_once cot_langfile('hits', 'plug');
require_once cot_incfile('hits', 'plug');
$tt = new XTemplate(cot_tplfile('hits.admin', 'plug', true));
 
$adminhelp = $L['adm_help_hits'];
$adminsubtitle = $L['hits_hits'];
 
$f = cot_import('f', 'G', 'TXT');
$v = cot_import('v', 'G', 'TXT');
 
/* === Hook === */
foreach (cot_getextplugins('hits.admin.first') as $pl)
{
	include $pl;
}
/* ===== */
 
if($f == 'year' || $f == 'month')
{
    $adminpath[] = array(cot_url('admin', 'm=other&p=hits&f='.$f.'&v='.$v), '('.$v.')');
    $sql = $db->query("SELECT * FROM $db_stats WHERE stat_name LIKE '".$db->prep($v)."%' ORDER BY stat_name DESC");
 
    while($row = $sql->fetch())
    {
        $y = mb_substr($row['stat_name'], 0, 4);
        $m = mb_substr($row['stat_name'], 5, 2);
        $d = mb_substr($row['stat_name'], 8, 2);
        $dat = cot_date('date_full', mktime(0, 0, 0, $m, $d, $y));
        $hits_d[$dat] = $row['stat_value'];
    }
	$sql->closeCursor();
 
    $hits_d_max = max($hits_d);
    $ii = 0;
    /* === Hook - Part1 : Set === */
    $extp = cot_getextplugins('hits.admin.loop');
    /* ===== */
    foreach($hits_d as $day => $hits)
    {
        $percentbar = floor(($hits / $hits_d_max) * 100);
        $tt->assign(array(
            'ADMIN_HITS_ROW_DAY' => $day,
            'ADMIN_HITS_ROW_HITS' => $hits,
            'ADMIN_HITS_ROW_PERCENTBAR' => $percentbar,
            'ADMIN_HITS_ROW_ODDEVEN' => cot_build_oddeven($ii)
            ));
 
        /* === Hook - Part2 : Include === */
        foreach ($extp as $pl)
        {
        	include $pl;
        }
        /* ===== */
 
        $tt->parse('MAIN.YEAR_OR_MONTH.ROW');
        $ii++;
    }
 
    $tt->parse('MAIN.YEAR_OR_MONTH');
}
else
{
	$sqlmax = $db->query("SELECT * FROM $db_stats WHERE stat_name LIKE '20%' ORDER BY stat_value DESC LIMIT 1");
	if ($sqlmax->rowCount() > 0)
	{
		$rowmax = $sqlmax->fetch();
		$sqlmax->closeCursor();
	}
    $sql = $db->query("SELECT * FROM $db_stats WHERE stat_name LIKE '20%' ORDER BY stat_name DESC");
 
	if ($sql->rowCount() > 0 && $rowmax)
	{
		$max_date = $rowmax['stat_name'];
		$max_hits = $rowmax['stat_value'];
 
		$ii = 0;
		$hits_m = array();
		$hits_w = array();
 
		while ($row = $sql->fetch())
		{
			$y = mb_substr($row['stat_name'], 0, 4);
			$m = mb_substr($row['stat_name'], 5, 2);
			$d = mb_substr($row['stat_name'], 8, 2);
			$w = cot_date('W', mktime(0, 0, 0, $m, $d, $y));
			$hits_w[$y . '-W' . $w] += $row['stat_value'];
			$hits_m[$y . '-' . $m] += $row['stat_value'];
			$hits_y[$y] += $row['stat_value'];
		}
		$sql->closeCursor();
 
		$hits_w_max = max($hits_w);
		$hits_m_max = max($hits_m);
		$hits_y_max = max($hits_y);
		/* === Hook - Part1 : Set === */
		$extp = cot_getextplugins('hits.admin.loop');
		/* ===== */
		$ii = 0;
		foreach ($hits_y as $year => $hits)
		{
			$percentbar = floor(($hits / $hits_y_max) * 100);
			$tt->assign(array(
				'ADMIN_HITS_ROW_YEAR_URL' => cot_url('admin', 'm=other&p=hits&f=year&v=' . $year),
				'ADMIN_HITS_ROW_YEAR' => $year,
				'ADMIN_HITS_ROW_YEAR_HITS' => $hits,
				'ADMIN_HITS_ROW_YEAR_PERCENTBAR' => $percentbar
			));
			/* === Hook - Part2 : Include === */
			foreach ($extp as $pl) {
				include $pl;
			}
			/* ===== */
			$tt->parse('MAIN.DEFAULT.ROW_YEAR');
			$ii++;
		}
		$ii = 0;
		foreach ($hits_m as $month => $hits)
		{
			$percentbar = floor(($hits / $hits_m_max) * 100);
			$tt->assign(array(
				'ADMIN_HITS_ROW_MONTH_URL' => cot_url('admin', 'm=other&p=hits&f=month&v=' . $month),
				'ADMIN_HITS_ROW_MONTH' => $month,
				'ADMIN_HITS_ROW_MONTH_HITS' => $hits,
				'ADMIN_HITS_ROW_MONTH_PERCENTBAR' => $percentbar
			));
			/* === Hook - Part2 : Include === */
			foreach ($extp as $pl) {
				include $pl;
			}
			/* ===== */
			$tt->parse('MAIN.DEFAULT.ROW_MONTH');
			$ii++;
		}
		$ii = 0;
		foreach ($hits_w as $week => $hits)
		{
			$ex = explode('-W', $week);
			$percentbar = floor(($hits / $hits_w_max) * 100);
			$tt->assign(array(
				'ADMIN_HITS_ROW_WEEK' => $week,
				'ADMIN_HITS_ROW_WEEK_HITS' => $hits,
				'ADMIN_HITS_ROW_WEEK_PERCENTBAR' => $percentbar
			));
			/* === Hook - Part2 : Include === */
			foreach ($extp as $pl) {
				include $pl;
			}
			/* ===== */
			$tt->parse('MAIN.DEFAULT.ROW_WEEK');
			$ii++;
		}
 
		$tt->assign(array(
			'ADMIN_HITS_MAXHITS' => sprintf($L['hits_maxhits'], $max_date, $max_hits)
		));
	}
    $tt->parse('MAIN.DEFAULT');
}
 
/* === Hook  === */
foreach (cot_getextplugins('hits.admin.tags') as $pl)
{
	include $pl;
}
/* ===== */
 
$tt->parse('MAIN');
$plugin_body = $tt->text('MAIN');