Коллеги, объясните смысл кода:
\classes\ConnectionsSource.php
public static function logHttpReferer()
{
... [вырезал] ...
$source->id_connections = (int)($cookie->id_connections);
$source->request_uri = Tools::getHttpHost(false, false);
if (isset($_SERVER['REDIRECT_URL']))
$source->request_uri .= strval($_SERVER['REDIRECT_URL']);
elseif (isset($_SERVER['REQUEST_URI']))
$source->request_uri .= strval($_SERVER['REQUEST_URI']);
if (!Validate::isUrl($source->request_uri))
$source->request_uri = '';
return $source->add();
}
Код записывает входящие соединения в БД. Если задан REDIRECT_URL, то записывается он, иначе, если задан REQUEST_URI, то записывается он.
Теперь, если в магазине включить ЧПУ и зайти по ссылке
http://shop/ЧПУ?param1=1
то в базу параметр записан не будет, так как переадресация с ЧПУ есть, и будет использоваться 'REDIRECT_URL', который query не содержит. Если же задать путь в нативном виде, то параметр запишется в базу.
Запись параметров в базу нужна для реферальной программы, это все помнят, я думаю.
Вопрос: для чего здесь используется 'REDIRECT_URL', и как разработчики планировали работу этого механизма?
P.S. Конечно, при включенных ЧПУ, можно использовать ссылки вида
http://shop/ЧПУ/param, но включение переадресации на канонические URL положит этому конец.