HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/mailing.wb-cloud.nl/public_html/admin/plugins/Common/Model.php
<?php

namespace phpList\plugin\Common;

/**
 * CommonPlugin for phplist.
 *
 * This file is a part of CommonPlugin.
 *
 * @category  phplist
 *
 * @author    Duncan Cameron
 * @copyright 2011-2018 Duncan Cameron
 * @license   http://www.gnu.org/licenses/gpl.html GNU General Public License, Version 3
 */

/**
 * This is a base class providing common functionality for all models.
 */
abstract class Model
{
    /*
     *    Private variables
     */
    private $config;
    /*
     *    Protected variables
     */
    protected $properties = array();
    protected $persist = array();

    /*
     *    Protected methods
     */
    protected function __construct($configItem = null)
    {
        if ($configItem) {
            $admin = $_SESSION['logindetails']['id'];
            $item = "$configItem|$admin";
            $this->config = new Config($item);
            $properties = $this->config->get('properties');

            if (!is_null($properties)) {
                $this->properties = array_merge($this->properties, $properties);
            }
        }
    }

    /*
     *    Public methods
     */
    public function setProperties(array $new)
    {
        $dirty = false;

        foreach ($this->properties as $key => &$value) {
            if (isset($new[$key])) {
                $v = $new[$key];
                /*
                 * unselected check-boxes come as zero values in a numerically indexed array
                 * remove and re-index array
                 */
                if (is_array($v) && isset($v[0])) {
                    $v = array_values(array_filter($v));
                }

                if ($v !== $value) {
                    $value = $v;
                    $dirty = $dirty || isset($this->persist[$key]);
                }
            }
        }
        unset($value);

        if ($dirty) {
            $p = array_intersect_key($this->properties, $this->persist);
            $this->config->set('properties', $p);
        }
    }

    public function getProperties()
    {
        return $this->properties;
    }

    public function __get($name)
    {
        return $this->properties[$name];
    }

    public function __set($name, $value)
    {
        $this->properties[$name] = $value;
    }

    public function __isset($name)
    {
        return isset($this->properties[$name]);
    }
}