Новости Joomla

Astroid обновился до версии 3.3.7!

Astroid обновился до версии 3.3.7!

Astroid — это мощный фреймворк для дизайнеров и разработчиков, позволяющий создавать адаптивные, быстрые и надежные веб-сайты и шаблоны на базе Joomla.

Главное в новой версии:

-   Исправлена загрузка файлов макетов

В предыдущем крупном релизе Astroid 3.3.6 были сделаны важные улучшения:

Основные моменты:

  • Улучшенный UI/UX в ключевых областях конфигурации
  • Повышенная стабильность и согласованность в Layout Builder и Form Builder
  • Исправления ошибок на основе отзывов сообщества
  • Улучшенная обработка визуальных эффектов, границ и шрифтов

Улучшения:

  • Обновленный UX Layout Builder
  • Улучшенный эффект предзагрузчика
  • Улучшенный стиль границ
  • Улучшенный UI/UX вкладки «Layout» в Template Options

Исправления ошибок:

  • Решены проблемы с некорректными динамическими значениями
  • Исправлен Color Transform при прокрутке
  • Устранены проблемы с работой Form Builder в Article Layout и Module Layout Builder
  • Исправлена проблема с созданием ненужных временных файлов при обработке шрифтов

Скачать: https://github.com/templaza/astroid-framework/releases/tag/v3.3.7

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

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

bespalov

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Выдает вот такую ошибку
Warning: Invalid argument supplied for foreach() in /home/bespalov/slet.volga-orur.ru/docs/modules/mod_dwhosonline/helper.php on line 82
DWO Total members

Код
<?php
/**
 * @package DWhosOnline
 * @version 1.7.0
 * @author Darkick <darkick@darkick.ru>
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
 */

// no direct access
defined('_JEXEC') or die;

jimport('joomla.filesystem.file');


class modDWhosOnlineHelper
{
/**
*
*
* @param object Parameters
* @return array Information about online users in format array($members, $robots, $guests_count)
*/
public static function getOnlineUsers(&$params)
{
if (!$params->get('detect_whosonline', true)) {
return array(array(), array(), 0);
}

$db = &JFactory::getDBO();

// Timeout
$from_time = time() - abs((int)$params->get('timeout', 15)) * 60 - 1;

// Robots signatures list
$robots_sigs = array();
$robots_sigs_text = $params->get('robots_sigs', '[Bot]=bot');
if ($params->get('robots_from_file')) {
if (JFile::exists(dirname(__FILE__).DS.'assets'.DS.'robots.txt') && ($robots_txt = JFile::read(dirname(__FILE__).DS.'assets'.DS.'robots.txt'))) {
$robots_sigs_text = $robots_txt."\n".$robots_sigs_text;
}
}
$robots_groups = explode("\n", $robots_sigs_text);
foreach ($robots_groups as $robo_group)
{
$robo_group = trim($robo_group);
@list($robo_name, $robo_sigs) = explode('=', $robo_group, 2);
$robo_sigs = explode(',', $robo_sigs);
if (trim($robo_name) && count($robo_sigs)) {
$robots_sigs[$robo_name] = $robo_sigs;
}
}
if (!$robots_sigs) {
$robots_sigs['[Bot]'] = array('bot');
}

$guests_count = 0;
// Members
if ($params->get('extra_support_agora', false)) {
$query = 'SELECT DISTINCT u.id, u.username, u.name, u.email, u.usertype, u.gid, s.time, au.id AS agora_user_id
FROM #__session s, #__users u, #__agora_users au
WHERE s.userid = u.id AND u.id = au.jos_id ';
} else {
$query = 'SELECT DISTINCT u.id, u.username, u.name, u.email, u.usertype, u.gid, s.time, 0 AS agora_user_id
FROM #__session s, #__users u
WHERE s.userid = u.id ';
}
$query .= ' AND s.client_id = 0 AND s.time >= '.$from_time;
if ($params->get('where_condition'))
{
$user = &JFactory::getUser();
$query .= ' AND ('.JString::str_ireplace(array('$user->id', '$user->username', '$user->name', '$user->email'), array((int)$user->id, $db->Quote($user->username), $db->Quote($user->name), $db->Quote($user->email)), $params->get('where_condition')).')';
}
$query .= ' ORDER BY s.time ASC';
$db->setQuery($query);
$members = $db->loadObjectList('username');

// Check for hidden members
$hide_usergroups = $params->get('hide_usergroups');
JArrayHelper::toInteger($hide_usergroups, $params->get('hide_usergroups'));
$hide_users = explode(',', $params->get('hide_users'));
JArrayHelper::toInteger($hide_users);
foreach ($members as $key => $member)
{
if (in_array((int)$member->gid, $hide_usergroups) || in_array((int)$member->id, $hide_users))
{
unset($members[$key]);
if ($params->get('count_hidden', true)) {
$guests_count++;
}
}
}

// Guests and Robots
$config = &JFactory::getConfig();
$session_handler = $config->getValue('config.session_handler', 'database');
$query = 'SELECT ';
if ($session_handler == 'database') {
$query .= ' DISTINCT ';
}
$query .= ' '.$db->nameQuote('data').
' FROM #__session
WHERE '.$db->nameQuote('guest').' <> 0 AND '.$db->nameQuote('client_id').' = 0 AND '.$db->nameQuote('time').' >= '.$from_time.'
ORDER BY '.$db->nameQuote('time').' DESC';
$db->setQuery($query);
$guests_robots = $db->loadResultArray();

// Detect Robots and count Guests
$robots = array();
foreach ($guests_robots as $data)
{
@list($tmp, $_default) = explode('|', $data, 2);
if (!($_default = unserialize($_default))) {
$guests_count++;
continue;
};

$browser = JArrayHelper::getValue($_default, 'session.client.browser', '', 'string');
if (!($robo_name = modDWhosOnlineHelper::checkBrowser($browser, $robots_sigs, $params->get('robots_sig_empty', true)))) {
$guests_count++;
continue;
}
if (!array_key_exists($robo_name, $robots))
{
$robots[$robo_name] = new JObject();
$robots[$robo_name]->setProperties(array('id' => 0, 'username' => $robo_name, 'name' => $robo_name, 'email' => '', 'usertype' => 'robot', 'time' => JArrayHelper::getValue($_default, 'session.timer.now', 0, 'int'), 'agora_user_id' => 0));
}
}

return array($members, $robots, $guests_count);
}


/**
*
*
* @param string Browser agent string
* @param array Named array of robots signatures
* @return string Name of Robot for the Browser or empty string
*/
protected static function checkBrowser($browser, $robots_sigs, $robots_sig_empty = true)
{
if (!$browser)
{
if ($robots_sig_empty) {
return '[Bot]';
} else {
return '';
}
}
foreach ($robots_sigs as $robo_name => $robo_sigs)
{
foreach ($robo_sigs as $robo_sig)
{
if (stripos($browser, $robo_sig)!== false) {
return $robo_name;
}
}
}
return '';
}


/**
*
*
* @param object Parameters
* @return array Information about total and latest members
*/
public static function getTotalLatestMembers(&$params)
{
if (($params->get('total_members_position') == 'none') && ((int)$params->get('latest_members_count', 2) == 0) && ($params->get('latest_members_show_mode') == 'none')) {
return array(0, array());
}

$db = &JFactory::getDBO();

// Blocked Members
if (!$params->get('latest_members_show_blocked')) {
$where_blocked = ' AND u.block = 0 ';
} else {
$where_blocked = '';
}
// Hidden members
$hide_usergroups = $params->get('hide_usergroups');
JArrayHelper::toInteger($hide_usergroups, $params->get('hide_usergroups'));
$hide_usergroups = implode(', ', $hide_usergroups);
$hide_users = explode(',', $params->get('hide_users'));
JArrayHelper::toInteger($hide_users);
$hide_users = implode(', ', $hide_users);
$where_hidden = '';
if ($hide_usergroups) {
$where_hidden .= ' AND u.gid NOT IN ('.$hide_usergroups.') ';
}
if ($hide_users) {
$where_hidden .= ' AND u.id NOT IN ('.$hide_users.') ';
}


// Total Members count
if (($params->get('total_members_position', 'bottom') == 'top') || ($params->get('total_members_position', 'bottom') == 'bottom'))
{
$query = 'SELECT COUNT(*) FROM #__users u WHERE 1 '.$where_blocked;
if (!$params->get('count_hidden', true)) {
$query .= $where_hidden;
}
$db->setQuery($query);
$total_members_count = (int)$db->loadResult();
} else {
$total_members_count = 0;
}

// Latest Members
if ((int)$params->get('latest_members_count', 2) && ($params->get('latest_members_show_mode')!= 'none'))
{
if ($params->get('extra_support_agora')) {
$query = 'SELECT u.id, u.username, u.name, u.email, u.usertype, u.gid, u.registerDate, au.id AS agora_user_id
FROM #__users u, #__agora_users au
WHERE u.id = au.jos_id ';
} else {
$query = 'SELECT u.id, u.username, u.name, u.email, u.usertype, u.gid, u.registerDate, 0 AS agora_user_id
FROM #__users u
WHERE 1 ';
}
$query .= $where_blocked;
$query .= $where_hidden;
if ($params->get('where_condition'))
{
$user = &JFactory::getUser();
$query .= ' AND ('.JString::str_ireplace(array('$user->id', '$user->username', '$user->name', '$user->email'), array($db->Quote($user->id), $db->Quote($user->username), $db->Quote($user->name), $db->Quote($user->email)), $params->get('where_condition')).')';
}
// Latest Members
if ($params->get('latest_members_show_mode')!= 'random')
{
$query .= ' ORDER BY u.registerDate DESC';
$db->setQuery($query, 0, abs((int)$params->get('latest_members_count', 2)));
$latest_members = $db->loadObjectList('username');
}
// Random Members
else
{
$db->setQuery($query);
$all_members = $db->loadObjectList('username');
$latest_members = array();
$rand_keys = array_rand($all_members, abs((int)$params->get('latest_members_count', 2)));
foreach ($rand_keys as $key) {
$latest_members[$key] = $all_members[$key];
}
}
} else {
$latest_members = array();
}

return array($total_members_count, $latest_members);
}


/**
* Include (overriden) style.css
*/
public static function includeStyle()
{
$document = &JFactory::getDocument();
if (JFile::exists(JPATH_THEMES.DS.$document->template.DS.'html'.DS.'mod_dwhosonline'.DS.'style.css')) {
$document->addStyleSheet(JURI::base().'templates/'.$document->template.'/html/mod_dwhosonline/style.css');
} else if (JFile::exists(JPATH_BASE.DS.'modules'.DS.'mod_dwhosonline'.DS.'tmpl'.DS.'style.css')) {
$document->addStyleSheet(JURI::base().'modules/mod_dwhosonline/tmpl/style.css');
}
}

}

Как решить проблему? или подскажите как мне вывести на сайте количество зарегистрированных пользователей на сайте ... очень надо....
*

bespalov

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Warning: Invalid argument supplied for foreach() in
« Ответ #1 : 25.04.2013, 13:31:24 »
Как решить проблему? или подскажите как мне вывести на сайте количество зарегистрированных пользователей на сайте ... очень надо....
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
<?php
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('count(*)');
$query->from('#__users');
//Закомментируйте строку снизу если надо считать и не активированных
$query->where('activation=""');
$db->setQuery($query);
echo  $db->loadResult();
?>
*

bespalov

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Спасибо. Это просто вставить в index.php шабла?
*

bespalov

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Вставил.

Код
<?php
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('count(*)');
$query->from('eo7ul_users');
//Закомментируйте строку снизу если надо считать и не активированных
$query->where('activation=""');
$db->setQuery($query);
$result= $db->loadResult();
echo $result;
?>

Выводит ноль. Префикс таблицы заменил
*

bespalov

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
все. вроде получилось. Поставил "+" тебе.

А как сделать, чтобы в зависимости от числа менялось окончание слова.

например
1 участник
2 участника
10 участников
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться