<?php
  ///////////////////////////////////////////////////
  // Система учёта посещаемости сайта - PowerCounter
  // 2003-2006 (C) IT-студия SoftTime (http://www.softtime.ru)
  // Поддержка: http://www.softtime.ru/forum/
  // Симдянов И.В. (simdyanov@softtime.ru)
  // Кузнецов М.В. (kuznetsov@softtime.ru)
  // Голышев С.В. (softtime@softtime.ru)
  ///////////////////////////////////////////////////
  // Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
  Error_Reporting(E_ALL & ~E_NOTICE); 

  // Данные переменные определяют название страницы и подсказку.
  $title = 'Посуточный отчёт'; 
  $pageinfo = '';    
  // Заголовок страницы
  include "topcounter.php";

  // $min_date - это самая ранняя дата, за которую
  // можно выбирать суточную статистику, за более ранний
  // период она попросту отсутствует
  $query = "SELECT UNIX_TIMESTAMP(MIN(putdate)) as putdate 
            FROM $tbl_arch_refferer";
  $arh = mysql_query($query);
  if(!$arh) exit(mysql_error());
  $min_date = mysql_result($arh,0);
  if(empty($min_date)) $min_date = time();

  // Выводим календарь за текущий месяц
  calendar(time(), $min_date);
  echo "<br><br>";
  // Выводим календарь за прошедщий месяц
  calendar(time() - 3600*24*date('j'), $min_date);
  echo "<br><br>";

  // Если параметр $_GET['date'] не пуст, запрашиваем реффереры
  // за этот день
  if(!empty($_GET['date']))
  {
    if(!preg_match("|^[\d]+$|",$_GET['date'])) puterror("Недопустимый формат параметра");
    $query = "SELECT * FROM $tbl_arch_refferer WHERE putdate = '".date("Y-m-d 23:59:59",$_GET['date'])."'";
    $ipt = mysql_query($query);
    if(!$ipt) exit(mysql_error());
    if(mysql_num_rows($ipt) > 0)
    {
      echo "<table class=table width=100% border=0 cellpadding=0 cellspacing=0>
              <tr class=header align=center>
                <td>Реферер</td>
                <td>Число обращений</td>
              </tr>";
      while($refferer = mysql_fetch_array($ipt))
      {
        echo "<tr><td>".htmlspecialchars($refferer['name'])."</td>";
        echo "<td>$refferer[total]</td></tr>";
      }
      echo "</table>";
    }
  }

    
  // Завершаем вывод страницы
  include "bottomcounter.php";

  // Фунция выводящая календарь, в качестве параметра принимает время
  // в виде числа секунд, прошедших с полуночи 1 января 1970 года. Выводит
  // календарь для месяца даты
  function calendar($date, $min_date)
  {
    $eng = array("Mon","Tue","Wed","Thu","Fri","Sat","Sun");
    $rus = array("Пн","Вт","Ср","Чт","Пт","Сб","Вс");
  
    // Вычисляем число дней в текущем месяце
    $dayofmonth = date('t',$date);
    // Счётчик для дней месяца
    $day_count = 1;
  
    // Первая неделя
    $num = 0;
    for($i = 0; $i < 7; $i++)
    {
      // Вычисляем номер дня недели для числа
      $dayofweek = date('w',mktime(0, 0, 0, date('m',$date), $day_count, date('Y',$date)));
      // Приводим к числа к формату 1 - понедельник, ..., 6 - суббота
      $dayofweek = $dayofweek - 1;
      if($dayofweek == -1) $dayofweek = 6;
  
      if($dayofweek == $i)
      {
        // Если дни недели совпадают,
        // заполняем массив $week
        // числами месяца
        $week[$num][$i] = $day_count;
        $day_count++;
      }
      else
      {
        $week[$num][$i] = "";
      }
    }
  
    // Последующие недели месяца
    while(true)
    {
      $num++;
      for($i = 0; $i < 7; $i++)
      {
        $week[$num][$i] = $day_count;
        $day_count++;
        // Если достигли конца месяца - выходим
        // из цикла
        if($day_count > $dayofmonth) break;
      }
      // Если достигли конца месяца - выходим
      // из цикла
      if($day_count > $dayofmonth) break;
    }
  
    // Выводим содержимое массива $week
    // в виде календаря
    // Выводим таблицу
    echo "<table class=table width=100% border=0 cellpadding=0 cellspacing=0>
            <tr class=header align=center><td align=center colspan=".(count($week) + 1).">Наиболее распространённые реффереры за ".date("Y.m", $date)."</td></tr>";
    for($j = 0; $j < 7; $j++)
    {
      if($j == 5 || $j == 6)
      {
        echo "<tr class=red>";
      }
      else
      {
        echo "<tr>";
      }
      echo "<td width=".(100/(count($week) + 1))."%>".$rus[$j]."</td>";
      for($i = 0; $i < count($week); $i++)
      {
        if(!empty($week[$i][$j]))
        {
          $dayofweek = mktime(0, 0, 0, date('m',$date), $week[$i][$j], date('Y',$date));
          if($dayofweek > $min_date && $dayofweek < time())
          {
            echo "<td width=".(100/(count($week) + 1))."% align=center>
                    <a href=$_SERVER[PHP_SELF]?date=$dayofweek>".$week[$i][$j]."</a>
                  </td>";
          }
          else
          {
            echo "<td width=".(100/(count($week) + 1))."%  align=center>".$week[$i][$j]."</td>";
          }
        }
        else echo "<td> </td>";
      }
      echo "</tr>";
    } 
    echo "</table>";
  }
?>
