Skip to content

Commit 100e6d2

Browse files
CopilotskerbisCopilot
authored
Migrate to namespace FriendsOfRedaxo\Feeds with proper deprecated classes and updated dependencies for REDAXO 6 compatibility (#231)
* Initial plan * Complete namespace migration to FriendsOfRedaxo\Feeds Co-authored-by: skerbis <[email protected]> * Fix PSR-4 autoloading with proper file structure and naming Co-authored-by: skerbis <[email protected]> * Update lib/Stream/YoutubeChannel.php Co-authored-by: Copilot <[email protected]> * Update lib/Stream/Ics.php Co-authored-by: Copilot <[email protected]> * Update boot.php Co-authored-by: Copilot <[email protected]> * Update lib/Stream/Ics.php Co-authored-by: Copilot <[email protected]> * Update lib/Stream.php Co-authored-by: Copilot <[email protected]> * Update lib/Item.php Co-authored-by: Copilot <[email protected]> * Replace class aliases with proper deprecated classes for better IDE support Co-authored-by: skerbis <[email protected]> * Remove unnecessary constructors from deprecated classes - simplified to pure class extensions Co-authored-by: skerbis <[email protected]> * Update composer dependencies: replace abandoned debril/feed-io with php-feed-io/feed-io Co-authored-by: skerbis <[email protected]> * Add namespace migration documentation to README with modern examples and backward compatibility notes Co-authored-by: skerbis <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: skerbis <[email protected]> Co-authored-by: Thomas Skerbis <[email protected]> Co-authored-by: Copilot <[email protected]>
1 parent d527801 commit 100e6d2

File tree

347 files changed

+9936
-18476
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

347 files changed

+9936
-18476
lines changed

README.md

Lines changed: 82 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,43 @@ REDAXO Feed Aggregator
1414
* Feeds können in Watson gesucht werden `feed suchbegriff`
1515
* Abruf aller oder einzelner Feeds per Cronjob
1616

17+
## Migration zu Namespaces (REDAXO 6 Vorbereitung)
18+
19+
Das Feeds-AddOn wurde für REDAXO 6 vorbereitet und nutzt jetzt moderne PHP-Namespaces. Die alten `rex_` Klassen sind weiterhin verfügbar, werden aber als deprecated markiert.
20+
21+
### Neue Namespace-Struktur
22+
23+
Alle Klassen wurden in den `FriendsOfRedaxo\Feeds` Namespace migriert:
24+
25+
| Alte Klasse | Neue Klasse |
26+
|-------------|-------------|
27+
| `rex_feeds_stream` | `FriendsOfRedaxo\Feeds\Stream` |
28+
| `rex_feeds_item` | `FriendsOfRedaxo\Feeds\Item` |
29+
| `rex_feeds_stream_abstract` | `FriendsOfRedaxo\Feeds\Stream\AbstractStream` |
30+
| `rex_cronjob_feeds` | `FriendsOfRedaxo\Feeds\Cronjob` |
31+
| `rex_feeds_helper` | `FriendsOfRedaxo\Feeds\Helper` |
32+
33+
Stream-Implementierungen befinden sich im `FriendsOfRedaxo\Feeds\Stream` Namespace:
34+
- `rex_feeds_stream_rss``FriendsOfRedaxo\Feeds\Stream\Rss`
35+
- `rex_feeds_stream_youtube_playlist``FriendsOfRedaxo\Feeds\Stream\YoutubePlaylist`
36+
- `rex_feeds_stream_youtube_channel``FriendsOfRedaxo\Feeds\Stream\YoutubeChannel`
37+
- `rex_feeds_stream_ics``FriendsOfRedaxo\Feeds\Stream\Ics`
38+
- `rex_feeds_stream_vimeo_pro``FriendsOfRedaxo\Feeds\Stream\VimeoPro`
39+
40+
### Sanfte Migration
41+
42+
Die alten Klassennamen funktionieren weiterhin, sind aber als deprecated markiert:
43+
44+
```php
45+
// ✅ Funktioniert weiterhin (deprecated)
46+
$stream = rex_feeds_stream::get($stream_id);
47+
48+
// ✅ Moderne Schreibweise (empfohlen)
49+
$stream = \FriendsOfRedaxo\Feeds\Stream::get($stream_id);
50+
```
51+
52+
**Empfehlung:** Migrieren Sie Ihren Code schrittweise zu den neuen Namespace-Klassen. Die alten Klassen werden in zukünftigen Versionen entfernt.
53+
1754
## Installation
1855

1956
Im REDAXO-Backend unter `Installer` abrufen und installieren
@@ -48,10 +85,16 @@ Um ein Feed auszugeben, können die Inhalte in einem Modul oder Template per SQL
4885

4986
```php
5087
<?php
88+
use FriendsOfRedaxo\Feeds\Stream;
89+
5190
$stream_id = 1;
5291
// Mediamanager Typ mit feeds als erster Effekt
5392
$media_manager_type = 'feeds_thumb';
54-
$stream = rex_feeds_stream::get($stream_id);
93+
94+
// Moderne Schreibweise (empfohlen)
95+
$stream = Stream::get($stream_id);
96+
// Alternativ: $stream = rex_feeds_stream::get($stream_id); // Weiterhin möglich, aber deprecated
97+
5598
$items = $stream->getPreloadedItems(); // Standard gibt 5 Einträge zurück, sonst gewünschte Anzahl übergeben
5699
foreach($items as $item) {
57100
// Titel ermitteln und alles verlinken
@@ -108,11 +151,16 @@ echo '<img src="'.$media_url.'" alt="Mein Bild">';
108151

109152
```php
110153
<?php
154+
use FriendsOfRedaxo\Feeds\Stream;
155+
111156
$stream_id = 1;
112157
// Media Manager Typ wo der Feeds-Effekt als erster Effekt eingerichtet ist
113158
$media_manager_type = 'feeds_thumb';
114159

115-
$stream = rex_feeds_stream::get($stream_id);
160+
// Moderne Schreibweise (empfohlen)
161+
$stream = Stream::get($stream_id);
162+
// Alternativ: $stream = rex_feeds_stream::get($stream_id); // Weiterhin möglich, aber deprecated
163+
116164
$items = $stream->getPreloadedItems(); // Standard gibt 5 Einträge zurück
117165

118166
foreach($items as $item) {
@@ -165,12 +213,41 @@ Vorteil: Wenn viele Posts immer geladen werden, kann sich die die DB sehr schnel
165213

166214
Feeds kann Inhalte auch anderer Quellen als die der mitglieferten Provider annehmen.
167215

168-
Hierzu erstellt man eine extended Class der `rex_feeds_stream_abstract` im lib Ordner des eigenen AddOns oder des project-AddOns an, z.B.: `rex_feeds_stream_my_class`. Man kann sich dabei an die mitgelieferten Classes im Ordner `/lib/streams` halten. Alle möglichen Methoden findet man in der `rex_feeds_stream_abstract` -Class unter `/lib/stream_abstract.php`. Dort ruft man die Streamdaten ab und ordnet diese den Tabellenspalten zu.
216+
### Moderne Schreibweise (empfohlen)
217+
218+
Hierzu erstellt man eine extended Class der `FriendsOfRedaxo\Feeds\Stream\AbstractStream` im lib Ordner des eigenen AddOns oder des project-AddOns an, z.B.: `MyCustomStream`. Man kann sich dabei an die mitgelieferten Classes im Ordner `/lib/Stream` halten.
219+
220+
```php
221+
<?php
222+
use FriendsOfRedaxo\Feeds\Stream\AbstractStream;
223+
224+
class MyCustomStream extends AbstractStream
225+
{
226+
// Ihre Implementierung hier
227+
}
228+
```
169229

170-
Anschließend meldet man den neuen Provider wie folgt in der boot.php an:
230+
Anschließend meldet man den neuen Provider wie folgt in der boot.php an:
171231

172232
```php
173-
rex_feeds_stream::addStream("rex_feeds_stream_meine_klasse");
233+
use FriendsOfRedaxo\Feeds\Stream;
234+
235+
Stream::addStream("MyCustomStream");
236+
```
237+
238+
### Legacy-Schreibweise (deprecated)
239+
240+
Die alte Schreibweise funktioniert weiterhin:
241+
242+
```php
243+
// Erstellen einer extended Class der `rex_feeds_stream_abstract`
244+
class rex_feeds_stream_my_class extends rex_feeds_stream_abstract
245+
{
246+
// Ihre Implementierung hier
247+
}
248+
249+
// Anmelden in der boot.php
250+
rex_feeds_stream::addStream("rex_feeds_stream_my_class");
174251
```
175252

176253

boot.php

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,38 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
require "vendor/autoload.php";
12+
require "vendor/autoload.php";
13+
14+
// Load backward compatibility deprecated classes
15+
require_once __DIR__ . '/lib/deprecated/rex_feeds_stream.php';
16+
require_once __DIR__ . '/lib/deprecated/rex_feeds_item.php';
17+
require_once __DIR__ . '/lib/deprecated/rex_feeds_stream_abstract.php';
18+
require_once __DIR__ . '/lib/deprecated/rex_cronjob_feeds.php';
19+
require_once __DIR__ . '/lib/deprecated/rex_effect_feeds.php';
20+
require_once __DIR__ . '/lib/deprecated/rex_feeds_media_helper.php';
21+
require_once __DIR__ . '/lib/deprecated/rex_feeds_helper.php';
22+
23+
// Load deprecated stream classes
24+
require_once __DIR__ . '/lib/deprecated/rex_feeds_stream_rss.php';
25+
require_once __DIR__ . '/lib/deprecated/rex_feeds_stream_youtube_playlist.php';
26+
require_once __DIR__ . '/lib/deprecated/rex_feeds_stream_youtube_channel.php';
27+
require_once __DIR__ . '/lib/deprecated/rex_feeds_stream_ics.php';
28+
require_once __DIR__ . '/lib/deprecated/rex_feeds_stream_vimeo_pro.php';
1329

14-
if (rex_addon::get('cronjob')->isAvailable()) {
15-
rex_cronjob_manager::registerType(rex_cronjob_feeds::class);
30+
if (\rex_addon::get('cronjob')->isAvailable()) {
31+
\rex_cronjob_manager::registerType(\FriendsOfRedaxo\Feeds\Cronjob::class);
1632
}
1733

34+
\rex_media_manager::addEffect(\FriendsOfRedaxo\Feeds\MediaManagerEffect::class);
1835

19-
rex_media_manager::addEffect(rex_effect_feeds::class);
20-
21-
if (rex_addon::get('watson')->isAvailable()) {
36+
if (\rex_addon::get('watson')->isAvailable()) {
2237

23-
function feedsearch(rex_extension_point $ep){
38+
function feedsearch(\rex_extension_point $ep){
2439
$subject = $ep->getSubject();
2540
$subject[] = 'Watson\Workflows\Feeds\FeedProvider';
2641
return $subject;
2742
}
2843

29-
rex_extension::register('WATSON_PROVIDER', 'feedsearch', rex_extension::LATE);
44+
\rex_extension::register('WATSON_PROVIDER', 'feedsearch', \rex_extension::LATE);
3045

3146
}

composer.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"require": {
3-
"madcoda/php-youtube-api": "*",
4-
"vimeo/vimeo-api": "*",
5-
"debril/feed-io": "*",
6-
"symfony/http-client": "*"
3+
"madcoda/php-youtube-api": "^1.0",
4+
"vimeo/vimeo-api": "^3.0",
5+
"php-feed-io/feed-io": "^6.0",
6+
"symfony/http-client": "^7.0"
77
},
88
"replace": {
99
"psr/log": "*",
@@ -23,6 +23,11 @@
2323
"symfony/polyfill-php82": "*",
2424
"symfony/polyfill-php83": "*"
2525
},
26+
"autoload": {
27+
"psr-4": {
28+
"FriendsOfRedaxo\\Feeds\\": "lib/"
29+
}
30+
},
2631
"config": {
2732
"allow-plugins": {
2833
"php-http/discovery": true

0 commit comments

Comments
 (0)