HEX
Server: Apache
System: Linux outside 5.4.8_Algonet_ZeroMAC_0.9.4.8 #6 SMP Mon Feb 3 20:36:07 CET 2020 x86_64
User: server (1002)
PHP: 8.3.20
Disabled: exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source
Upload Files
File: /home/muoapartman/www/wp-content/plugins/shortpixel-image-optimiser/class/db/wp-shortpixel-db.php
<?php
use ShortPixel\ShortPixelLogger\ShortPixelLogger as Log;
use ShortPixel\Notices\NoticeController as Notice;

class WpShortPixelDb implements ShortPixelDb {

    protected $prefix;
    protected $defaultShowErrors;

    // mostly unimplemented.
    const QTYPE_INSERT = 1;
    const QTYPE_DELETE = 2;
    const QTYPE_UPDATE = 3;
    const QTYPE_QUERY = 4;

    public function __construct($prefix = null) {
        $this->prefix = $prefix;
    }

    public static function createUpdateSchema($tableDefinitions) {
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        $res = array();
        foreach($tableDefinitions as $tableDef) {
            array_merge($res, dbDelta( $tableDef ));
        }
        return $res;
    }

    public static function checkCustomTables() {
        global $wpdb;

        /*$slug = \wpSPIO()->env()->getRelativePluginSlug();
        $network_active = \wpSPIO()->env()->is_multisite && function_exists('is_plugin_active_for_network') && is_plugin_active_for_network($slug) ? true : false;

        if($network_active)
        {
          if (! function_exists("get_sites") )
          { exit('get_sites fail'); return null;  }

            $sites = get_sites();
            foreach($sites as $site) {
                  $site_id = $site->blog_id;
                  $prefix = $wpdb->get_blog_prefix($site_id);


                  $spMetaDao = new ShortPixelCustomMetaDao(new WpShortPixelDb($prefix));
                  $spMetaDao->createUpdateShortPixelTables();
            }

        } else { */

      /*  if (! $spMetaDao->tablesExist())
        {

        } */
        /* **** **** **** **** **** **** **** **** **** ***** **** **** **** ****
        * Check why database is not created like this.
        */
        $spMetaDao = new ShortPixelCustomMetaDao(new WpShortPixelDb());

        $spMetaDao->createUpdateShortPixelTables();
        //}
    }

    private static function activeOnBlog($site, $slug)
    {
      $option = get_blog_option($site, 'active_plugins');

      var_dump($option);
      foreach($option as $active_slug)
      {
         if ($active_slug == $slug)
          return true;
      }

      return false;
    }

    public function getCharsetCollate() {
        global $wpdb;
        return $wpdb->get_charset_collate();
    }

    public function getPrefix() {
        global $wpdb;
      //  return $this->prefix ? $this->prefix : $wpdb->prefix;
       return $wpdb->prefix;
    }

    public function getDbName() {
        global $wpdb;
        return $wpdb->dbname;
    }

    public function query($sql, $params = false) {
        global $wpdb;
        if($params) {
            $sql = $wpdb->prepare($sql, $params);
        }
        $result = $wpdb->get_results($sql);

        if (count($result) == 0 && strlen($wpdb->last_error) > 0)
        {
           $this->handleError(self::QTYPE_QUERY);
        }

        return $result;
    }

    public function insert($table, $params, $format = null) {
        global $wpdb;

        $num_inserted = $wpdb->insert($table, $params, $format);
        if ($num_inserted === false)
        {
            $this->handleError(self::QTYPE_INSERT);
            return false;
        }

        return $wpdb->insert_id;
    }

    public function update($table, $params, $where, $format = null, $where_format = null)
    {
      global $wpdb;
      $updated = $wpdb->update($table, $params, $where, $format, $where_format);
      return $updated;

    }

    public function prepare($query, $args) {
        global $wpdb;
        return $wpdb->prepare($query, $args);
    }

    public function handleError($error_type)
    {
        global $wpdb;

        Log::addError('WP Database error: ' . $wpdb->last_error, $wpdb->last_query );
        self::checkCustomTables(); // on error, test if tables are fine.

        if (strlen($wpdb->last_error) > 0)
        {    $wpdb->last_error = ''; }

        switch($error_type)
        {
            case self::QTYPE_INSERT:
              Notice::addError('Shortpixel tried to run a database query, but it failed. See the logs for details', 'shortpixel-image-optimiser');
            break;
        }

    }

    public function hideErrors() {
        global $wpdb;
        $this->defaultShowErrors = $wpdb->show_errors;
        $wpdb->show_errors = false;
    }

    public function restoreErrors() {
        global $wpdb;
        $wpdb->show_errors = $this->defaultShowErrors;
    }
}