first commit

This commit is contained in:
2025-06-17 11:53:18 +02:00
commit 9f0f7ba12b
8804 changed files with 1369176 additions and 0 deletions

View File

@ -0,0 +1,21 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_feed
*
* @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
\defined('_JEXEC') or die;
use Joomla\CMS\Helper\ModuleHelper;
use Joomla\Module\Feed\Site\Helper\FeedHelper;
$rssurl = $params->get('rssurl', '');
$rssrtl = $params->get('rssrtl', 0);
$feed = FeedHelper::getFeed($params);
require ModuleHelper::getLayoutPath('mod_feed', $params->get('layout', 'default'));

View File

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="module" client="site" method="upgrade">
<name>mod_feed</name>
<author>Joomla! Project</author>
<creationDate>2005-07</creationDate>
<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>3.0.0</version>
<description>MOD_FEED_XML_DESCRIPTION</description>
<namespace path="src">Joomla\Module\Feed</namespace>
<files>
<filename module="mod_feed">mod_feed.php</filename>
<folder>src</folder>
<folder>tmpl</folder>
</files>
<languages>
<language tag="en-GB">language/en-GB/mod_feed.ini</language>
<language tag="en-GB">language/en-GB/mod_feed.sys.ini</language>
</languages>
<help key="Site_Modules:_Feed_Display" />
<config>
<fields name="params">
<fieldset name="basic">
<field
name="rssurl"
type="url"
label="MOD_FEED_FIELD_RSSURL_LABEL"
filter="url"
required="true"
validate="url"
/>
<field
name="rssrtl"
type="radio"
layout="joomla.form.field.radio.switcher"
label="MOD_FEED_FIELD_RTL_LABEL"
default="0"
filter="integer"
>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field
name="rsstitle"
type="radio"
layout="joomla.form.field.radio.switcher"
label="MOD_FEED_FIELD_RSSTITLE_LABEL"
default="1"
filter="integer"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="rssdesc"
type="radio"
layout="joomla.form.field.radio.switcher"
label="MOD_FEED_FIELD_DESCRIPTION_LABEL"
default="1"
filter="integer"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="rssdate"
type="radio"
label="MOD_FEED_FIELD_DATE_LABEL"
layout="joomla.form.field.radio.switcher"
default="0"
>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field
name="rssimage"
type="radio"
layout="joomla.form.field.radio.switcher"
label="MOD_FEED_FIELD_IMAGE_LABEL"
default="1"
filter="integer"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="rssitems"
type="number"
label="MOD_FEED_FIELD_ITEMS_LABEL"
default="3"
filter="integer"
min="1"
validate="number"
/>
<field
name="rssitemdesc"
type="radio"
layout="joomla.form.field.radio.switcher"
label="MOD_FEED_FIELD_ITEMDESCRIPTION_LABEL"
default="1"
filter="integer"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="rssitemdate"
type="radio"
label="MOD_FEED_FIELD_ITEMDATE_LABEL"
layout="joomla.form.field.radio.switcher"
default="0"
filter="integer"
>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field
name="word_count"
type="text"
label="MOD_FEED_FIELD_WORDCOUNT_LABEL"
description="MOD_FEED_FIELD_WORDCOUNT_DESC"
default="0"
filter="integer"
/>
</fieldset>
<fieldset name="advanced">
<field
name="layout"
type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
class="form-select"
validate="moduleLayout"
/>
<field
name="moduleclass_sfx"
type="textarea"
label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
rows="3"
validate="CssIdentifier"
/>
<field
name="cache"
type="list"
label="COM_MODULES_FIELD_CACHING_LABEL"
default="1"
filter="integer"
validate="options"
>
<option value="1">JGLOBAL_USE_GLOBAL</option>
<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
</field>
<field
name="cache_time"
type="number"
label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
default="900"
filter="integer"
/>
</fieldset>
</fields>
</config>
</extension>

View File

@ -0,0 +1,55 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_feed
*
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\Module\Feed\Site\Helper;
use Joomla\CMS\Feed\FeedFactory;
use Joomla\CMS\Language\Text;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* Helper for mod_feed
*
* @since 1.5
*/
class FeedHelper
{
/**
* Retrieve feed information
*
* @param \Joomla\Registry\Registry $params module parameters
*
* @return \Joomla\CMS\Feed\Feed|string
*/
public static function getFeed($params)
{
// Module params
$rssurl = $params->get('rssurl', '');
// Get RSS parsed object
try {
$feed = new FeedFactory();
$rssDoc = $feed->getFeed($rssurl);
} catch (\Exception $e) {
return Text::_('MOD_FEED_ERR_FEED_NOT_RETRIEVED');
}
if (empty($rssDoc)) {
return Text::_('MOD_FEED_ERR_FEED_NOT_RETRIEVED');
}
if ($rssDoc) {
return $rssDoc;
}
}
}

View File

@ -0,0 +1,120 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_feed
*
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\Filter\OutputFilter;
// Check if feed URL has been set
if (empty($rssurl)) {
echo '<div>' . Text::_('MOD_FEED_ERR_NO_URL') . '</div>';
return;
}
if (!empty($feed) && is_string($feed)) {
echo $feed;
} else {
$lang = $app->getLanguage();
$myrtl = $params->get('rssrtl', 0);
$direction = ' ';
$isRtl = $lang->isRtl();
if ($isRtl && $myrtl == 0) {
$direction = ' redirect-rtl';
} elseif ($isRtl && $myrtl == 1) {
// Feed description
$direction = ' redirect-ltr';
} elseif ($isRtl && $myrtl == 2) {
$direction = ' redirect-rtl';
} elseif ($myrtl == 0) {
$direction = ' redirect-ltr';
} elseif ($myrtl == 1) {
$direction = ' redirect-ltr';
} elseif ($myrtl == 2) {
$direction = ' redirect-rtl';
}
if ($feed !== false) {
?>
<div style="direction: <?php echo $rssrtl ? 'rtl' : 'ltr'; ?>;" class="text-<?php echo $rssrtl ? 'right' : 'left'; ?> feed">
<?php
// Feed title
if ($feed->title !== null && $params->get('rsstitle', 1)) {
?>
<h2 class="<?php echo $direction; ?>">
<a href="<?php echo htmlspecialchars($rssurl, ENT_COMPAT, 'UTF-8'); ?>" target="_blank" rel="noopener">
<?php echo $feed->title; ?></a>
</h2>
<?php
}
// Feed date
if ($params->get('rssdate', 1)) : ?>
<h3>
<?php echo HTMLHelper::_('date', $feed->publishedDate, Text::_('DATE_FORMAT_LC3')); ?>
</h3>
<?php endif;
// Feed description
if ($params->get('rssdesc', 1)) {
?>
<?php echo $feed->description; ?>
<?php
}
// Feed image
if ($feed->image && $params->get('rssimage', 1)) :
?>
<?php echo HTMLHelper::_('image', $feed->image->uri, $feed->image->title); ?>
<?php endif; ?>
<!-- Show items -->
<?php if (!empty($feed)) { ?>
<ul class="newsfeed">
<?php for ($i = 0, $max = min(count($feed), $params->get('rssitems', 3)); $i < $max; $i++) { ?>
<?php
$uri = $feed[$i]->uri || !$feed[$i]->isPermaLink ? trim($feed[$i]->uri) : trim($feed[$i]->guid);
$uri = !$uri || stripos($uri, 'http') !== 0 ? $rssurl : $uri;
$text = $feed[$i]->content !== '' ? trim($feed[$i]->content) : '';
?>
<li>
<?php if (!empty($uri)) : ?>
<span class="feed-link">
<a href="<?php echo htmlspecialchars($uri, ENT_COMPAT, 'UTF-8'); ?>" target="_blank" rel="noopener">
<?php echo trim($feed[$i]->title); ?></a></span>
<?php else : ?>
<span class="feed-link"><?php echo trim($feed[$i]->title); ?></span>
<?php endif; ?>
<?php if ($params->get('rssitemdate', 0)) : ?>
<div class="feed-item-date">
<?php echo HTMLHelper::_('date', $feed[$i]->publishedDate, Text::_('DATE_FORMAT_LC3')); ?>
</div>
<?php endif; ?>
<?php if ($params->get('rssitemdesc', 1) && $text !== '') : ?>
<div class="feed-item-description">
<?php
// Strip the images.
$text = OutputFilter::stripImages($text);
$text = HTMLHelper::_('string.truncate', $text, $params->get('word_count', 0));
echo str_replace('&apos;', "'", $text);
?>
</div>
<?php endif; ?>
</li>
<?php } ?>
</ul>
<?php } ?>
</div>
<?php }
}