Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom spout not displayed in drop down menu #1450

Open
noiret opened this issue Jul 24, 2023 · 2 comments
Open

Custom spout not displayed in drop down menu #1450

noiret opened this issue Jul 24, 2023 · 2 comments

Comments

@noiret
Copy link

noiret commented Jul 24, 2023

Hello,

I have copied src/spouts/rss/feed.php to create a new spout inside src/spouts/rss/ directory but this spout is not available in the spout menu.

Am I missing something?

ls -al src/spouts/rss
drwxr-xr-x  2 www-data www-data 4096 Jul 24 09:58 .
drwxr-xr-x 10 www-data www-data 4096 Oct 16  2022 ..
-rwxr-xr-x  1 www-data www-data 1215 Oct 16  2022 enclosures.php
-rwxr-xr-x  1 www-data www-data 8096 Oct 16  2022 feed.php
-rwxr-xr-x  1 www-data www-data 3475 Oct 16  2022 fulltextrss.php
-rwxr-xr-x  1 www-data www-data 5853 Oct 16  2022 golem.php
-rwxr-xr-x  1 www-data www-data 6848 Oct 16  2022 heise.php
-rwxr-xr-x  1 www-data www-data 2538 Oct 16  2022 images.php
-rwxr-xr-x  1 www-data www-data 3369 Oct 16  2022 instapaper.php
-rwxr-xr-x  1 www-data www-data 4228 Oct 16  2022 lightreading.php
-rwxr-xr-x  1 www-data www-data 1951 Oct 16  2022 mmospy.php
-rwxr-xr-x  1 www-data www-data 3028 Oct 16  2022 prolinux.php
-rwxr-xr-x  1 www-data www-data 8157 Jul 24 10:14 customspout.php
-rwxr-xr-x  1 www-data www-data 2066 Oct 16  2022 teltarif.php
<?php

namespace spouts\rss;

class customspout extends \spouts\spout {
    /** @var string name of source */
    public $name = 'My custom spout';

    /** @var string description of this source type */
    public $description = 'test';

    <...>
    

image

Selfoss: 2.19
PHP: 8.1.2

@jtojnar
Copy link
Member

jtojnar commented Jul 24, 2023

Weird. I do not see why that would not work.

I tried just copying feed.php into customspout.php, replacing the class name. (The file name needs to match the class name – but that is already the case in your example, unless the file name ends with a space that was not copied or something.)

Maybe try opening http://localhost/selfoss/sources/spouts (replace http://localhost/selfoss with your selfoss address) and pressing Ctrl-F5 to clear out browser cache (though web server will usually send headers to prevent caching for PHP scripts so I do not think it would be cached).

You can also try to apply the following patch and then opening the aforementioned URL just to verify selfoss sees the file:

--- a/src/helpers/SpoutLoader.php
+++ b/src/helpers/SpoutLoader.php
@@ -95,6 +95,7 @@ class SpoutLoader {
             if (is_dir($location . '/' . $dir) && substr($dir, 0, 1) !== '.') {
                 // search for spouts
                 foreach (scandir($location . '/' . $dir) as $file) {
+                    var_dump($file);
                     // only scan visible .php files
                     if (is_file($location . '/' . $dir . '/' . $file) && substr($file, 0, 1) !== '.' && strpos($file, '.php') !== false) {
                         // create reflection class

@noiret
Copy link
Author

noiret commented Jul 26, 2023

Hello,

I have added this code in the SpoutLoader with the var_dump call :

foreach (scandir($location . '/' . $dir) as $file) {
  // only scan visible .php files
  ini_set('display_errors', 1);
  ini_set('display_startup_errors', 1);
  error_reporting(E_ALL);
  $fp = fopen('/var/www/html/selfoss/vardump.txt', 'a+');
  fwrite($fp, serialize($file))
  fclose($fp);
  var_dump($file);
<...>

But nothing appears on the screen & the dump file is not created.

I've disabled OpCache, forced a client-side refresh, restarted the Apache server and PHP-FPM without improvement.
I've also disabled caching by commenting out the mod_header directive and adding the following block to the .htcaccess file:

# DISABLE CACHING
<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>

For testing, i removed the Golem spout (src/spouts/rss/golem.php), and it's still visible on the /selfoss/sources/spouts page. 🤯

It's probably a problem with my environment, not with Selfoss.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants