при работе с опенкартом всегда возникает необходимость обновлять модифы, после ряда совершенных правок.
делается это для того, чтобы получить актуальный контент
давным давно я решил этот вопрос программно, что избавило меня от кучи головной боли в виде открытия вкладки и нажатия кнопки обновления модифов раз за разом
я решил этот вопрос программно следующим образом. пришло время делиться
1. авторизация по ссылке
быстрая авторизация в админке по ссылке.
перед использованием модификатора обязательно изменить эти значения на свои
$secret_key = 'secret_key64587967';
$secret_val = 'eret345dfgc342';
ссылку в админку для обновления модификаторов выглядит следующим образом
https://site.com/admin/index.php?route=extension/modification/refresh
добавим к этой ссылке нашу секретную пару
https://site.com/admin/index.php?route=extension/modification/refresh&secret_key64587967=eret345dfgc342
в вашем случае ссылка должна отличаться
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>fast admin auth fix</name>
<code>fast admin auth fix</code>
<version>1.3</version>
<author>kJluk</author>
<link>cleanphp.ru</link>
<file path="admin/controller/common/login.php">
<operation>
<search><![CDATA[public function index() {]]></search>
<add position="after"><![CDATA[
//обязательно измените эти значения!
$secret_key = 'secret_key64587967';
$secret_val = 'eret345dfgc342';
if(isset($this->request->get[$secret_key]) && $this->request->get[$secret_key]==$secret_val)
{
$this->session->data['user_id'] = 1;
$token = token(32);
$this->session->data['token'] = $token;
$url=HTTPS_SERVER.'index.php?';
$params = array('token' => $token);
if(!empty($this->request->get['route']))
$params['route']=$this->request->get['route'];
$this->response->redirect($url.http_build_query($params));
}
]]></add>
</operation>
</file>
</modification>
2. Запрос к обновлению модифов используя авторизацию по ссылке
эта функция, которые прекрасно скушает 302 редирект, после успешной авторизации
путь к куки должен быть ваш. куки должен лежать в какой-то закрытой папке
ее необходимо разместить в system/library/helper.php. возможно это правильно сделать модификатором, но мне лень
function curlWihteRedir($url)
{
//путь к куки должен быть ваш
$path_to_cookie = '/path_to_cookie/cookies.rip';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $path_to_cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $path_to_cookie);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch );
curl_close($ch);
return $response;
}
3. Использование
вызываем функцию с ссылкой, которую получили в 1п для быстрой авторизации.
обычно вызывать функцию нужно в начале метода контроллера
curlWihteRedir(HTTPS_SERVER."index.php?route=extension/modification/refresh&secret_key64587967=eret345dfgc342");