Stat

Как использовать класс Stat?

Класс \Bxmaker\ShortLink\Stat используется в только для  того, чтобы поставить отметку что совершен переход пользователем по ссылке используя метод setView(), при этом если пропустить 2 параметр метода, то в методе автоматически будет проверено наличие соответствующей куки.  Таким образом, если кука установлена, значит переход повторный, иначе переход уникальные, первый за сегодня и будет установлена кука. Время жизник куки - до конца текущего дня.

$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1; /* идентификатор короткой ссылки, получить можно используя \Bxmaker\ShortLink\Manager::getIntance()->GetList() */

$oStat->setView($linkId);

/* если же нужен полный контроль над уникальностью, устанавливаем второй параметр
в этом случае если 2 параметр == true в базе будет зафиксирован уникальный переход,
если false - то не уникальный, кука при этом не устанавливается */
$oStat->setView($linkId, true); 

Какие существуют поля у классa \Bxmaker\ShortLink\StatTable?

array(
    'ID' => 'int primary autocomplete',
    'LINK_ID' => 'int ID ссылки',
    'DATE' => 'date, объект \Bitrix\Main\Type\Date()',
    'COUNT' => 'int на текущую дату',
    'COUNT_UNIQ' => 'int на текущую дату'
);

/* доп поля для выборки */
CNT - для подсчета количества записей по ссылке в таблице со статистикой
AMOUNT - для подсчета суммарного количества переходов по ссылке
AMOUNT - для подсчета суммарного количества УНИКАЛЬНЫХ переходов по ссылке

Как получить статистику по ссылке?

Чтобы получить статистику, существует метод getList(), это стандартный метод для работы с таблицей статистики в базе данных нового ядра битрикса.$oStat = new \Bxmaker\ShortLink\StatTable();
$dbr = $oStat->getList(array(
    'filter' => array('LINK_ID' => 1),
    'select' => array('*')
));
while($arStat = $dbr->fetch())
{
   /* в статистике хранятся данные по переходам для каждого дня, 
     если для 1 и 3 числа есть переходы, а для 2 числа месяца нет
     то будут возвращены данные только по 1 и 3 числам */
   echo '<pre>';
   print_r($arStat);
   echo '</pre>';
}

Получение статистики за вчерашний и сегодняшний день

/* Получение статистики за вчерашний и сегодняшний день*/
$dbResult = $oStatTable->getList(array(
    'select' => array('*'),
    'filter' => array(
        'LINK_ID' => 1,
        '>DATE' => new \Bitrix\Main\Type\Date(date("Y-m-d", strtotime("-1 day")), 'Y-m-d')
    ),
    'order' => array('DATE' => 'ASC')
));
while ($arResult = $dbResult->Fetch()) {
   echo '<pre>';
   print_r($arStat);
   echo '</pre>';
}