Current File : /home/pacjaorg/public_html/nsa/libraries/src/MVC/Model/BaseModel.php
<?php
/**
 * Joomla! Content Management System
 *
 * @copyright  (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\CMS\MVC\Model;

\defined('JPATH_PLATFORM') or die;

use Joomla\CMS\Filesystem\Path;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Object\CMSObject;

/**
 * Base class for a Joomla Model
 *
 * @since  4.0.0
 */
abstract class BaseModel extends CMSObject implements ModelInterface, StatefulModelInterface
{
	use StateBehaviorTrait;
	use LegacyModelLoaderTrait;

	/**
	 * The model (base) name
	 *
	 * @var    string
	 * @since  4.0.0
	 */
	protected $name;

	/**
	 * The include paths
	 *
	 * @var   array
	 * @since  4.0.0
	 */
	protected static $paths;

	/**
	 * Constructor
	 *
	 * @param   array  $config  An array of configuration options (name, state, ignore_request).
	 *
	 * @since   4.0.0
	 * @throws  \Exception
	 */
	public function __construct($config = array())
	{
		// Set the view name
		if (empty($this->name))
		{
			if (\array_key_exists('name', $config))
			{
				$this->name = $config['name'];
			}
			else
			{
				$this->name = $this->getName();
			}
		}

		// Set the model state
		if (\array_key_exists('state', $config))
		{
			$this->state = $config['state'];
		}

		// Set the internal state marker - used to ignore setting state from the request
		if (!empty($config['ignore_request']))
		{
			$this->__state_set = true;
		}
	}

	/**
	 * Add a directory where \JModelLegacy should search for models. You may
	 * either pass a string or an array of directories.
	 *
	 * @param   mixed   $path    A path or array[sting] of paths to search.
	 * @param   string  $prefix  A prefix for models.
	 *
	 * @return  array  An array with directory elements. If prefix is equal to '', all directories are returned.
	 *
	 * @since       3.0
	 * @deprecated  5.0 See LegacyModelLoaderTrait\getInstance
	 */
	public static function addIncludePath($path = '', $prefix = '')
	{
		if (!isset(self::$paths))
		{
			self::$paths = array();
		}

		if (!isset(self::$paths[$prefix]))
		{
			self::$paths[$prefix] = array();
		}

		if (!isset(self::$paths['']))
		{
			self::$paths[''] = array();
		}

		if (!empty($path))
		{
			foreach ((array) $path as $includePath)
			{
				if (!\in_array($includePath, self::$paths[$prefix]))
				{
					array_unshift(self::$paths[$prefix], Path::clean($includePath));
				}

				if (!\in_array($includePath, self::$paths['']))
				{
					array_unshift(self::$paths[''], Path::clean($includePath));
				}
			}
		}

		return self::$paths[$prefix];
	}

	/**
	 * Method to get the model name
	 *
	 * The model name. By default parsed using the classname or it can be set
	 * by passing a $config['name'] in the class constructor
	 *
	 * @return  string  The name of the model
	 *
	 * @since   4.0.0
	 * @throws  \Exception
	 */
	public function getName()
	{
		if (empty($this->name))
		{
			$r = null;

			if (!preg_match('/Model(.*)/i', \get_class($this), $r))
			{
				throw new \Exception(Text::sprintf('JLIB_APPLICATION_ERROR_GET_NAME', __METHOD__), 500);
			}

			$this->name = str_replace(['\\', 'model'], '', strtolower($r[1]));
		}

		return $this->name;
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!