Классы
В моделе имеется всего несколько основных классов с которыми ведется основная работа. Перед использованием классов модуля, нужно подключить модуль.
\Bitrix\Main\Loader::includeModule('bxmaker.shortlink');
ManagerTable
Работает с короткими ссылками хранящимися в базе данных.
$oManagerTable = new \Bxmaker\ShortLink\ManagerTable();
//или
\Bxmaker\ShortLink\Manager::getInstance()->getTable();
Поля для выборки и фильтрации:
- ID - автоинкримент, идентификатор ссылки
- SITE_ID - идентификатор сайта например s1
- FROM - код короткой ссылки, напр DfjOl
- TO - конечная ссылка, подготовленая методом
prepareLink() - HASH - md5 сумма от подготовленой ссылки методом
prepareLink() - TAG - тег для объединения ссылок в группы и удобства фильтрации
Дополнительные поля для выборки:
- CNT - для подсчета количества записей
- STAT - ReferenceField на \Bxmaker\ShortLink\StatTable
Пример использования доп полей
$dbrLink = $oManager->getTable()->getList(array(
'select' => array('*', 'AMOUNT' => 'STAT.AMOUNT', 'AMOUNT_UNIQ' => 'STAT.AMOUNT_UNIQ'),
'filter' => array('FROM' => 'DfjOl')
));
Manager
Используется для работы с короткими ссылками - подготовка короткой ссылки, подготовка ссылки для добавления в базу, доступ к таблице с с данными о коротких ссылках и прочее.
$oManager = \Bxmaker\ShortLink\Manager::getInstance();
getTable()
Добавлять записи напрямую не рекомендуется, так как для этого существуют специализированные методы под эти задачи, которые облегчат вам жизнь.
Если есть необходимость записи напрямую в базу или запроса данных по коротким ссылкам,
можно исопльзвоать метод getTable(), который возвращает экземпляр класса
\Bxmaker\ShortLink\ManagerTable
$oManagerTable = $oManager->getTable();
/* далее можно использовать методы соответствующего класса */
$dbr = $oManagertable->getList(array(
'filter' => array(
'ID' => 1 // ID короткой ссылки
)
));
if($ar = $dbr->fetch())
{
echo '<pre>';
print_r($ar);
echo '</pre>';
}
addLink()
Пример формирвоания короткой ссылки из конечного адреса страницы и получение кода короткой сылки.
/* ссылка на которую должна вести короткая ссылка */
$url = 'https://bxmaker.ru/promo_stranica/?utm-source=bxmaker.ru&utm-compaign=promo';
/* получение кода короткой ссылки */
$code = $oManager->addLink($url);
// или для конкретного сайта, не для текущего
$code = $oManager->addLink($url, 's1');
prepareShortLink()
Метод формирует из кода короткой ссылки полный url адрес короткой ссылки, включая схему подклчюения и домен.
$code = 'DfjOl';
$shortLink = $oManager->prepareShortLink($code); // https://bxmaker.ru/DfjOl
Получение информации по короткой ссылке
Для получения информации по ссылкам используется метод getList класса
\Bxmaker\ShortLink\ManagerTable. Также можно в одном запросе получить
суммарную статистику по переходам, запросив поле STAT.AMOUNT и STAT.AMOUNT_UNIQ.
/* инициализация объекта класса для работы со статистикой в базе данных */
$oStatTable = new \Bxmaker\ShortLink\StatTable();
$oManager = \Bxmaker\ShortLink\Manager::getInstance();
/* используйте $oStatTable->getList() или $oManager->getTable()->getList() */
$dbrLink = $oManager->getTable()->getList(array(
'select' => array('*', 'AMOUNT' => 'STAT.AMOUNT', 'AMOUNT_UNIQ' => 'STAT.AMOUNT_UNIQ'),
'filter' => array('FROM' => 'DfjOl') /* DfjOl - код короткой ссылки */
));
if($arLink = $dbrLink->fetch())
{
echo '<pre>';
print_r($arLink);
echo '</pre>';
}
StatTable
Работа c данными хранимыми в базе данных по статистике переходов по коротким сcылкам.
$oStatTable = new \Bxmaker\ShortLink\StatTable();
Поля таблицы:
- ID - автоинкримент, идентификтаор записи в статистике
- LINK_ID - ID ссылки
- DATE - дата фиксирвоания перехода объект \Bitrix\Main\Type\Date()
- COUNT - количество переходов на конкретную дату
- COUNT_UNIQ - количество уникальных переходов на конкретную дату
Дополнительные поля:
- NT - для подсчета количества записей по ссылке в таблице со статистикой
- AMOUNT - для подсчета суммарного количества переходов по ссылке
- AMOUNT - для подсчета суммарного количества УНИКАЛЬНЫХ переходов по ссылке
Stat
Используется только для работы со стотистикой и содержит методы готовые для испольвзоания и быстрого доабвления адже в своих реализацих, без лишних проверок.
setView()
Метод записывает переход по короткой ссылке. Если пропустить 2й параметр метода, то в методе автоматически будет проверено наличие соответствующей куки у пользователя.
Таким образом, если кука установлена, значит переход повторный, иначе переход уникальные, первый за сегодня и будет установлена кука для отслеживания уникальности переходов. Время жизник куки - до конца текущего дня.
$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1;
$oStat->setView($linkId);
// можно передать 2й парамтер со значением `true`, чтобы засчитать переход как уникальный.
$oStat->setView($linkId, true);
clear()
Метод используется для сброса статистики по конкретной ссылке
$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1;
$oStat->clear($linkId);
Получение статики за сегодня и вчера
$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1;
$dbr = $oStatTable->getList(array(
'select' => array('*'),
'filter' => array(
'LINK_ID' => $linkId,
'>DATE' => new \Bitrix\Main\Type\Date(date("Y-m-d", strtotime("-1 day")), 'Y-m-d')
),
'order' => array('DATE' => 'ASC')
));
while ($ar = $dbr->Fetch()) {
echo '<pre>';
print_r($ar);
echo '</pre>';
}