Новости Joomla

Перевод и публикация интервью на греческом портале Joomla Утро, просматриваешь входящие письма и...

Перевод и публикация интервью на греческом портале Joomla 🇬🇷Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции.Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью. Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент. 🇬🇷 Интервью на греческом портале (joomla.gr)🌐 Оригинальное интервью (на английском)Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 1881 Просмотров
*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Всем здравствуйте. Подскажите пожалуйста как в Joomla 3.2.1  вести лог действий авторизированных пользователей. Т.е. когда user1 авторизовался на сайте, какие странички он посещал, что скачивал. Модуль для авторизации использую стандартный. Нашел в интернете следующее для записи логов:

jimport('joomla.log.log');
define('ERROR_LOG', 'com_record.'.date('Y_m_d').'.php');
JLog::addLogger(
   array('text_file' => ERROR_LOG),
   JLog::ALL,
   array('com_record')
);
JError::$legacy = false;
JLog::Add("тест!!");

в примере в лог файл выводится сообщение тест!, как вывести нужную информацию?
Спасибо ^-^
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Это Вам придется всю Joomla таким кодом наполонить. Поищите расширение, что-то похожее скорее всего есть. Но учтите, что в Joomla нельзя все контролировать и логировать соответственно.
*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Спасибо попробую поискать.
*

DiabloZet

  • Захожу иногда
  • 151
  • 5 / 1
  • Честь превыше всего!
Для просмотра каких страничек посещал человек вроде liveinternet.ru не плохо помогает...
Счетчик установите, там детальная инфа про пользователей, но уже что люди качают итд... нужно ставить код логов
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
вести лог действий авторизированных пользователей.
что значит лог действий?)
нужно контролировать все get и post запросы?
в корне есть index.php, если все проходит через него, а через него типа по стандартам должно все происходить, то вот простой код
Код
$user = JFactory::getUser();
if (!$user->guest) {
$data = date('d.m.Y H:i:s'). ' - ' . $user->name . "\n";
ob_start();
var_dump($_REQUEST);
$data .= ob_end_clean();
file_put_contents(dirname(__FILE__).'/my.log', $data, FILE_APPEND, PHP_EOL);
}
нужно разметить в нем после
Код
$app = JFactory::getApplication('site');

но не факт что все происходить именное через него :)
расширения и ситуации бывают разные

*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Спасибо Вам за ответы. У меня сайт крутиться в локальной сети, где мне надо отследить что авторизованные пользователи посетили страничку, в какой день, тем самым узнать что Иванов Иван Иванович ознакомился со данными на страничке. 

SmokerMan я вставляю Ваш код index файл при авторизации у меня исчезает кириллица и ругается на строку: file_put_contents(dirname(__FILE__).'/my.log', $data, FILE_APPEND, PHP_EOL);

Если можете помочь еще советами подскажите пожалуйста.
Спасибо.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Тогда может проще внешние системы статистики интегрировать?
Типа или еще чего нагуглить (on english)
*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Спасибо но у меня компьютеры только в локальной сети работают.
*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
$user = JFactory::getUser();
if (!$user->guest) {
   $data = date('d.m.Y H:i:s'). ' - ' . $user->name . "\n";
   ob_start();
   var_dump($_REQUEST);
   $data .= ob_end_clean();
   file_put_contents(dirname(__FILE__)."/my.log", $data);
Спасибо тебе SmokerMan! Лог авторизации пользователей теперь собирается! В коде убрал то что не могла понять Joomla и я тоже)))), а нажатие ссылок возможно сюда же записать данным пользователем?
*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Ребята проблему решил тема закрыта. В index файл прописал следующее

    $file="base_user";        //имя файла с логами пользователей
    $col_zap=3499;          //записей в логе пользователей
    $bot=htmlspecialchars(substr($xxx,0,80));//обрезаем USER-AGENT до 80 символов
$user = JFactory::getUser();
$datauser = $user->name ;
//записываем логи в файл с блокировкой
$l_cash='';
$fh=fopen($file,"a+");
flock($fh,LOCK_EX);
fseek($fh,0);
while (!feof($fh)) $l_cash.= fread($fh,8192);
$lines=explode("\n",$l_cash);
while(count($lines)>$col_zap) array_shift($lines);
$l_cash=implode("\n",$lines);
$l_cash.=date("H:i:s d.m")."|" .$datauser ."|".$_SERVER['REMOTE_ADDR']."|".
    htmlspecialchars($_SERVER['REQUEST_URI'])."\n";
ftruncate($fh,0);
fwrite($fh,$l_cash);
flock($fh,LOCK_UN);
fclose($fh);


Всем спасибо!
*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Вот код для отображения статистика через браузер, создаете php файл в корне сайта и заходите в него для просмотра.
Код:
<?php
if (isset($_GET["col"])) $col=$_GET["col"]; else $col=50;
$lines_cashe=file_get_contents("base_user", LOCK_EX);
$file=explode("\n",$lines_cashe);
$size_f=count($file)-1;
?>

<html>
<head>
<style type='text/css'>
 td.zz {PADDING-LEFT: 3px; FONT-SIZE: 9pt; PADDING-TOP: 2px; FONT-FAMILY: Arial;}
</style>
</head>

<body>
<center>
<?php
if ($col>$size_f) $col=$size_f;
echo 'Последние <b>'.$col.'</b> посетившие сайт:';
?>

<table width="750" cellspacing="1" cellpadding="1" border="0"
    style="table-layout:fixed">
<tr bgcolor="#eeeeee">
 <td class="zz" width="100"><b>Время, дата</b></td>
 <td class="zz" width="250"><b>Кто посещал</b></td>
 <td class="zz" width="100"><b>IP, прокси</b></td>
 <td class="zz" width="300"><b>Посещенный URL</b></td>
</tr>

<?php
for ($si=$size_f-1; $si>=$size_f-$col; $si--) {
$str=explode("|",$file[$si]);
echo '<tr bgcolor=#eeeeee><td class=zz>'.$str[0].'</td>';
echo '<td class=zz>'.$str[1].'</td>';
echo '<td class=zz>'.$str[2].'</td>';
echo '<td class=zz><a href="http://usefulscript.ru'.$str[3].'">'.$str[3];
echo '</a></td></tr>';
}
echo '</table>';
echo '<br>Просмотреть последние <a href=?col=100>100</a> <a href=?col=500>500</a> ';
echo '<a href=?col=1000>1000</a> посещений.';
echo '<br>Просмотреть <a href=?col='.sizeof($file).'>все посещения</a>.';
echo '</center></body></html>';
?>
*

Ilja93

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Товарищи, а может кто подсказать как в этом коде еще добавить выборку по дате?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Список материалов категории открыт, полные тексты для зарегистрированных - как?

Автор Аня

Ответов: 0
Просмотров: 510
Последний ответ 13.04.2022, 18:37:43
от Аня
Посещение сайта только для зарегистрированных пользователей

Автор FlexNL

Ответов: 9
Просмотров: 2079
Последний ответ 05.11.2021, 20:57:59
от FlexNL
Права доступа для отдельных пользователей

Автор vladmor

Ответов: 3
Просмотров: 847
Последний ответ 28.07.2021, 09:51:35
от ShopES
Как организовать регистрацию пользователей 18+?

Автор inkvizitr

Ответов: 1
Просмотров: 591
Последний ответ 07.01.2021, 11:15:19
от wishlight
Как скрыть часть кода от неавторизованных пользователей?

Автор UFO_hA

Ответов: 10
Просмотров: 2261
Последний ответ 04.11.2020, 23:18:31
от Kokshetau