Новости Joomla

Вышли релизы безопасности Joomla 6.1.3 и Joomla 5.4.8

Релиз безопасности Joomla 6.1.3 и Joomla 5.4.8

Проект Joomla! рад сообщить о выходе Joomla 6.1.3 и Joomla 5.4.8. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

Joomla 5+ пакет для интеграции с API Почты России: нормализация данных, расчёт доставки, создание отправлений, партии, документы, возвраты, поиск отделений, справочники и SOAP-отслеживание.

v.3.0.0. Что нового?
Это дальнейшее развитие ранее закрытой Joomla-библиотеки для работы с API сервиса Отправка (для бизнеса) Почты России. Поэтому версия не 1.0.0, а 3.0.0.

Сейчас эта библиотека ушла от собственных реализаций и стала Joomla-обёрткой известного PHP SDK от Lapay Group.

Возможности библиотеки.
- получение настроек аккаунта, точек сдачи и текущего остатка запросов к API;
- нормализация адресов, ФИО и телефонов перед созданием отправления;
- расчёт тарифа и срока доставки;
- создание, поиск, изменение, удаление и возврат заказов в состояние «Новые»;
- проверка надёжности получателя;
- создание партий, просмотр партий и заказов внутри партии;
- генерация пакета печатных документов и формы Ф103;
- создание, изменение и удаление возвратных отправлений;
- поиск отделений по индексу, адресу и координатам, получение сервисов отделения;
- локальный список стран;
- SOAP-отслеживание операций по РПО и работа с билетами пакетного трекинга.

👩‍💻 Joomla-возможности.
В пакете библиотеки WT Otpravkapochtaru есть поля Joomla Form для расширений. Они позволяют работать в интерфейсе Joomla с некоторыми типами данных, получаемых по API из вашего личного кабинета в ЛК Почты России для бизнеса.
На данный момент в библиотеке доступны 3 поля списков, которые отображают доступные в аккаунте ОПС, типы и категории отправлений.
Поддерживаются зависимые списки: значение одного поля обновляется при изменении другого.

Системные требования.
Системные требования в основном связаны с системными требованиями апстрима библиотеки - LapayGroup PHP SDK.
- Joomla 5+
- PHP 8.3+
- Расширения PHP:
-- ext-mbstring
-- ext-simplexml
-- ext-soap (опционально, для трекинга)
-- ext-zip

Ссылки:
- Страница расширения
- GitHub библиотеки и документация

@joomlafeed

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

Светлана

  • Захожу иногда
  • 99
  • 7 / 0
Модуль mod_topauthors
« : 11.03.2010, 13:12:24 »
Модуль mod_topauthors выводит авторов сайта, сколько их читают, сколько публикаций и сколько их комментируют. Нужно во втором поле свободном вывести аватар автора, он выводится из таблицы jos_community_users компонента JomSocial из поля thumb, там хранится путь к картинке. В файле mod_topauthors.php нужно сделать запрос к таблице, помогите пож никогда не работала с БД
*

Светлана

  • Захожу иногда
  • 99
  • 7 / 0
Re: Модуль mod_topauthors
« Ответ #1 : 11.03.2010, 13:15:46 »
Вот код файла mod_topauthors.php
Код
<?php
/*
* Top Authors Module 2.0.2
* @ Copyright (C) 2006 - Ryan Rhode http://www.ty2u.com
* @ All rights reserved
* @ Joomla is Free Software
* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
*/
defined('_VALID_MOS') or die('Direct Access to this location is not allowed.');

$numauthors = $params->def('numauth',10);
$displayname = $params->def('displayname','name');
$sortby = $params->def('sortby','articles');
$order = $params->def('order','DESC');
$articletext = $params->def('articletext','Articles');
$hideempty = $params->def('hideempty','hide');
$class_sfx = $params->get('class_sfx');

$num = 50;
$pages = $_GET['pages'];
$pages=htmlspecialchars(stripslashes($pages));
if(empty($pages) or $pages < 0) {$pages = 1; }

if ($numauthors > 0) {

$query = "SELECT *"
. "\n FROM #__users"
. "\n WHERE block = '0' AND usertype<>'Registered'";

$database->setQuery($query);
$rows = $database->loadObjectList();

$i = 0;
$noarticles = 0;

foreach($rows as $row){

if ($i==$numauthors+$noarticles) break;

if($displayname == "name") {
$users[$i]['displayname'] = $row->name;
} else {
$users[$i]['displayname'] = $row->username;
}

$query = "SELECT *"
. "\n FROM #__content"
. "\n WHERE state = '1'"
. "\n AND sectionid <> '0'"
. "\n AND created_by = ". $row->id
. "\n AND LOCATE('show_author=0',attribs)=0";

$database->setQuery($query);
$articles = $database->query();
$art_count=$database->getNumRows($articles);
$users[$i]['articles'] = $art_count;

$art=$database->loadResultArray();

$comments_sum=0;
for ($j=0;$j<$art_count;$j++)
{

$query = "SELECT COUNT(*)"
. "\n FROM #__jcomments"
. "\n WHERE object_id=".$art[$j];

$database->setQuery($query);
$comments = $database->loadResult();
$comments_sum+=$comments;
}

$users[$i]['comments'] = $comments_sum;

$query = "SELECT SUM(hits)"
. "\n FROM #__content"
. "\n WHERE state = '1'"
. "\n AND sectionid <> '0'"
. "\n AND created_by = ". $row->id
. "\n AND LOCATE('show_author=0',attribs)=0";

$database->setQuery($query);
$hits = $database->loadResult();

$users[$i]['hits'] = $hits;


/* if ($userlist[$i]['articles'] == 0 && $hideempty=="hide") $noarticles++;*/

$i++;

  }

$userlist = sortdata($users, $sortby, $order);

$posts=count($userlist);

$total = intval(($posts - 1) / $num) + 1;
$pages = intval($pages); 
if($pages > $total) {$pages = $total; }
$start = $pages * $num - $num+1;
$finish=$start+$num-1;
//echo $start;exit;

echo "</br><div class=\"topauthors". $class_sfx ."\">
<table style='border:1px solid #cccccc;white-space: nowrap;'>
<tr><th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>#</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>&nbsp;</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>Автор</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;'>Меня<br>читают</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>Мои<br>публикации</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>Меня<br>комментируют</th>
<th align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;background-color: #c6e7f8;''>&nbsp;</th></tr>
";

$y = 0;
$shown = 0;
$num = 1;

foreach ($users as $user) {
if ($userlist[$y]['displayname'] == "NewsGrabberJC.Pro") {$y++;continue;}
if ($userlist[$y]['displayname'] == "admin") {$y++;continue;}
if ($userlist[$y]['displayname'] == "ipjack") {$y++;continue;}
if (($num<$start) || ($num>$finish)) {$y++;$num++;continue;}
if ($hideempty == "hide" && $userlist[$y]['articles'] > 0) {

echo "<tr><td style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$num."</td>
<td align='left' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td>
<td align='left' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['displayname']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['hits']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['articles']." ".$articletext."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['comments']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td></tr>";

$shown++;
if ($shown==$numauthors) break;

} elseif ($hideempty == "show" ) {

echo "<tr><td style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$num."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td>
<td align='left' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['displayname']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['hits']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['articles']." ".$articletext."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>".$userlist[$y]['comments']."</td>
<td align='center' style='border:1px solid #cccccc;padding:5px;white-space: nowrap;'>&nbsp;</td></tr>";

$shown++;
if ($shown==$numauthors) break;
}

$y++;
$num++;
}

echo "</table></div>";
echo "<br/>";

$component="authors";
if ($pages != 1) { $pervpage = "<a href=/$component?pages=1><<</a> 
                               <a href=/authors?pages=". ($pages - 1)."><</a> "; }

if ($pages != $total){ $nextpage = " <a href=/$component?pages=".($pages + 1).">></a>
                                   <a href=/$component?pages=".$total.">>></a>"; }
                                   
if($pages - 2 > 0){ $page2left = "<a href=/$component?pages=".($pages - 2).">". ($pages - 2)."</a> | "; }
if($pages - 1 > 0){ $page1left = "<a href=/$component?pages=". ($pages - 1).">". ($pages - 1)."</a> | "; }
if($pages + 2 <= $total){ $page2right = " | <a href=/$component?pages=". ($pages + 2).">". ($pages + 2)."</a>"; }
if($pages + 1 <= $total){ $page1right = " | <a href=/$component?pages=". ($pages + 1).">". ($pages + 1)."</a>";}

echo $pervpage.$page2left.$page1left."<b>".$pages."</b>".$page1right.$page2right.$nextpage; 


}

function sortdata($array, $by, $order){

foreach ($array as $key => $row) {
   $displayname[$key]  = $row['displayname'];
   $articles[$key] = $row['hits'];
}

$displayname_lowercase = array_map('strtolower', $displayname);

if ($by == "author") {

if ($order == "DESC") {
array_multisort($displayname_lowercase, SORT_DESC, SORT_STRING, $array);
} elseif ($order == "ASC"){
array_multisort($displayname_lowercase, SORT_ASC, SORT_STRING, $array);
}

} elseif ($by == "articles") {

if ($order == "DESC"){
array_multisort($articles, SORT_DESC, SORT_NUMERIC, $array);
} elseif ($order == "ASC"){
array_multisort($articles, SORT_ASC, SORT_NUMERIC, $array);
}

}

return $array;
}
?>

А это код файла mod_topauthors.xml
Код
<?xml version="1.0" ?>
<mosinstall type="module">
<name>Top Authors</name>
<creationDate>2 June 2006</creationDate>
<author>Ryan Rhode</author>
<copyright>This module is released under the GNU/GPL License.</copyright>
<authorEmail>admin@ty2u.com</authorEmail>
<authorUrl>http://www.ty2u.com</authorUrl>
<version>2.0.2</version>
<description>
<![CDATA[
<p>This module displays how many articles users have posted.  You can choose how many authors to display and choose to display their real name or their username.</p>
<p>New Features Added in 2.0!</p>
<p>Now you can also choose to sort by the author name, or the number articles they have published.  You can choose to sort the list in ascending or descending order.  You also can change the "Articles" text which shows.  There is the ability to set a class suffix and choose whether to show users who have no articles published.</p>
<p>Changelog:</p>
<p>2.0.2 - Added "Enable Cache" parameter.</p>
<p>2.0.1 - Fixed bug where it wouldn't show number of authors properly when some had no articles.</p>
<p>2.0 - Added many new features and rewrote the whole thing.</p>
<p>Visit <a href="http://www.ty2u.com/" target="_blank">TY2U.com</a> for more Joomla related downloads.</p>
]]>
</description>

<files>
<filename module="mod_topauthors">mod_topauthors.php</filename>
</files>
<params>
<param name="cache" type="radio" default="0" label="Enable Cache" description="Select whether to cache the content of this module">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
<param name="class_sfx" type="text" default="" label="Div Class Suffix" description="A suffix to be applied to the CSS class of the div tag (div.topauthors), this allows individual module styling" />
<param name="numauth" type="text" default="10" label="Number to show" description="How many authors to show." />
<param name="displayname" type="list" default="name" label="Display username or real name" description="Whether to display the Joomla username or if they entered their real name when registering you can display this.">
<option value="username">Username</option>
<option value="name">Real Name</option>
</param>
<param name="articletext" type="text" default="Articles" label="Article text" description="The text that comes after the number of articles." />
<param name="sortby" type="list" default="articles" label="Sort by" description="What to sort the list by.">
<option value="articles">Articles</option>
<option value="author">Author</option>
</param>
<param name="order" type="list" default="DESC" label="Sort order" description="The order in which to sort the list.">
<option value="ASC">Ascending</option>
<option value="DESC">Descending</option>
</param>
<param name="hideempty" type="list" default="true" label="Users with 0 articles" description="Whether to show or hide users who have no articles published.">
<option value="hide">Hide</option>
<option value="show">Show</option>
</param>
</params>
<images>
</images>
</mosinstall>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль расширенных результатов ARI Quiz Results

Автор Beer

Ответов: 0
Просмотров: 5631
Последний ответ 03.02.2025, 15:27:35
от Beer
Модуль для отображения курсов валют

Автор Геон

Ответов: 2
Просмотров: 7126
Последний ответ 03.02.2024, 22:19:02
от Геон
Модуль «Image Show gk4», не отображается ни картинка, ни текст

Автор kaasin

Ответов: 1
Просмотров: 8188
Последний ответ 13.05.2023, 15:42:15
от anastasya96
Стандартный модуль случайного изображения не выводит фотографии

Автор strix

Ответов: 8
Просмотров: 16310
Последний ответ 19.10.2022, 16:07:11
от Andrej_777
Модуль тегов Joes Word Cloud для Joomla 3

Автор ecolora

Ответов: 1
Просмотров: 7159
Последний ответ 05.05.2022, 19:04:44
от ecolora