В моделе имеется всего несколько основных классов с которыми ведется основная работа. Перед использованием классов модуля, нужно подключить модуль.
\Bitrix\Main\Loader::includeModule('bxmaker.shortlink');
Работает с короткими ссылками хранящимися в базе данных.
$oManagerTable = new \Bxmaker\ShortLink\ManagerTable();
//или
\Bxmaker\ShortLink\Manager::getInstance()->getTable();
Поля для выборки и фильтрации:
prepareLink()
prepareLink()
Дополнительные поля для выборки:
Пример использования доп полей
$dbrLink = $oManager->getTable()->getList(array(
'select' => array('*', 'AMOUNT' => 'STAT.AMOUNT', 'AMOUNT_UNIQ' => 'STAT.AMOUNT_UNIQ'),
'filter' => array('FROM' => 'DfjOl')
));
Используется для работы с короткими ссылками - подготовка короткой ссылки, подготовка ссылки для добавления в базу, доступ к таблице с с данными о коротких ссылках и прочее.
$oManager = \Bxmaker\ShortLink\Manager::getInstance();
Добавлять записи напрямую не рекомендуется, так как для этого существуют специализированные методы под эти задачи, которые облегчат вам жизнь.
Если есть необходимость записи напрямую в базу или запроса данных по коротким ссылкам,
можно исопльзвоать метод 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>';
}
Пример формирвоания короткой ссылки из конечного адреса страницы и получение кода короткой сылки.
/* ссылка на которую должна вести короткая ссылка */
$url = 'https://bxmaker.ru/promo_stranica/?utm-source=bxmaker.ru&utm-compaign=promo';
/* получение кода короткой ссылки */
$code = $oManager->addLink($url);
// или для конкретного сайта, не для текущего
$code = $oManager->addLink($url, 's1');
Метод формирует из кода короткой ссылки полный 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>';
}
Работа c данными хранимыми в базе данных по статистике переходов по коротким сcылкам.
$oStatTable = new \Bxmaker\ShortLink\StatTable();
Поля таблицы:
Дополнительные поля:
Используется только для работы со стотистикой и содержит методы готовые для испольвзоания и быстрого доабвления адже в своих реализацих, без лишних проверок.
Метод записывает переход по короткой ссылке. Если пропустить 2й параметр метода, то в методе автоматически будет проверено наличие соответствующей куки у пользователя.
Таким образом, если кука установлена, значит переход повторный, иначе переход уникальные, первый за сегодня и будет установлена кука для отслеживания уникальности переходов. Время жизник куки - до конца текущего дня.
$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1;
$oStat->setView($linkId);
// можно передать 2й парамтер со значением `true`, чтобы засчитать переход как уникальный.
$oStat->setView($linkId, true);
Метод используется для сброса статистики по конкретной ссылке
$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>';
}