An Si

An Si

Был в сети 13 мая 2021, 09:45
Заказы не принимаю
Хотел кинуть issuse на GitHub, но проблема видимо не в Tickets. Прокомментируй пожалуйста, как думаешь, на чьей стороне проблема и корректно ли я её устраняю:

У Tickets не получается работать с Selectel потому что в файле /core/components/tickets/model/tickets/ticketfile.class.php в функции save(); не отрабатывает
$this->mediaSource->moveObject(); Зависает и всё. Пробовал заменить её на $this->mediaSource->renameObject(); Результат тот же.
И из консоли эти функции не отрабатывают с источником Selectel.

Пришлось делать такую конструкцию для загрузки файлов в облако из TicketForm:

if ($old_path!=$new_path) {
	
	// замена $this->mediaSource->moveObject();
	$fContent = $this->mediaSource->getObjectContents($old_path . $file);
	$this->mediaSource->createObject($new_path, $file, $fContent['content']);
	$this->mediaSource->removeObject($old_path . $file);

	$this->set('path', $new_path);
	$this->set('url', $this->mediaSource->getObjectUrl($new_path . $file));
}
Так Tickets работает как надо с Selectel.

PS Сравниваю старый путь и новый не просто так, я не углублялся почему так происходит, но при формировании превьюшки в форме создания тикета по логам видно что $old_path и $new_path совпадают — '0/'.
Я этот компонент нигде не выкладывал, да и написан он был на коленке, так что зря тут спрашиваешь. Посмотри в сторону Яндекс капчи или смотри файл /assets/components/realcaptcha/kcaptcha/index.php Мне кажется там класс modx.class.php не подключается по каким-то причинам. Проверь правильность пути к нему.
Ты про то, что если в течении месяца на сайте не будет посетителя, а потом бац и кто-то зашел в день последнего обновления месяц назад? Поправить не сложно, хотя имхо вероятность такого события очень мала. Даже если постетителей на сайте действительно не бывает, то поисковые боты постоянно будут заходить ;)
мда, логично… затупил с утра. В общем, чтобы обновлять раз в день без крона можно создать плагин на событие OnLoadWebDocument. В плагине просто сравнивать день последнего обновления и сегодняшний день. Если они отличаются, то обновляем, иначе нет.

$lastDayUpdate = strftime('%d',strtotime($modx->getOption('currencyrate_last_date')));
if ($lastDayUpdate!=date('d')) {
    $currencyrate = $modx->getService('currencyrate', 'currencyrate', $modx->getOption('currencyrate_core_path', null, $modx->getOption('core_path') . 'components/currencyrate/') . 'model/currencyrate/');
    if (!($currencyrate instanceof currencyrate)) return '';
    $currencyrate->rateIntoDb();
}
return;