Subscribe By Email throws fatal error

Hello,

We've been using WordPress Multi-site for a while, and we keep on encountering one specific error that we can't seem to understand how it came to be.

The Subscribe By Email plugin is installed in all the network, but not activated by default. A lot of blog administrators on the network activate it without issue. But a lot of administrators find themselves greeted by a blank screen after activating it.

Every single time a user contacts us about a blank screen on their WP blog, once I deactivate the Subscribe By Email plugin in the database, the blog works fine again.

Here's the error it is throwing :

[15-Sep-2015 10:12:34] PHP Fatal error: Call to undefined method Incsub_Subscribe_By_Email_Model::get_email_list() in /space/www/blogs.sgdf.fr/data/htdocs/wp-content/plugins/subscribe-by-email/model/model.php on line 115

Indeed, when I look at the files of the plugin (downloaded directly from your website today (v 3.4.3), you can see that in function upgrade_247b() there is a $this->get_email_list() that does not match any function (neither in the plugin itself nor in wordpress core).

public function upgrade_247b() {
        global $wpdb;

        $results = $wpdb->get_results( "SELECT * FROM $this->subscriptions_log_table WHERE mail_settings != '' AND ( mails_list = '' OR mails_list IS NULL )");

        $emails_list = $this->get_email_list();
        foreach ( $emails_list as $key => $email_details ) {
            $emails_list[ $key ]['status'] = false;
        }
        foreach ( $results as $result ) {
            $new_emails_list = $emails_list;
            foreach ( $emails_list as $key => $email ) {
                $last_id = $key;
                if ( absint( $result->mail_recipients ) == absint( $key ) ) {
                    break;
                }
                else {
                    $new_emails_list[ $key ]['status'] = true;
                }
            }
            $this->update_log_emails_list( $result->id, $new_emails_list );
        }
        unset( $new_email_list );
        unset( $emails_list );
    }

However, what I found out, is that in some older version of your plugin (v 2.8.1.1 from 2014/07/08), this same function would call $this->get_email_list()
successfully on line 174, and the function get_email_list() exists in line 224.

Can we have a patch for this ? Right now, your platform is sending out broken builds to everyone.

Thanks.

  • Predrag Dubajic
    • Support

    Hey @sgdf,

    Hope you're doing well today :slight_smile:

    Thanks for posting this question and we appreciate all the details you have provided, I have checked the plugin files and indeed get_email_list() function is not defined anywhere, however I was unable to get the error to show up for me, I tried activating the plugin on about 5-6 of my sub-sites.

    Let me flag plugin developer in this thread so he can give some more info regarding this issue.

    Best regards,
    Predrag

  • Ignacio
    • HummingBird

    Hi @sgdf

    I think this may appear if the plugin has been upgraded from a very old version to the newest one but it's been impossible for me to replicate it. If the plugin is activated again this should not happen.

    Anyway, could you overwrite the model/model.php file with the attached one and test again?

    Regards.
    Ignacio.

  • sgdf
    • Flash Drive

    Hello again,

    thank you for replying that fast!

    I replaced the model.php with the one you provided and it works indeed. However, given that the plugin you distribute on the platform is missing the get_email_list() function, it will break at the next update again.

    Is there any long term solution for that ?

    Thanks

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.