Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
vikbooking
/
libraries
/
adapter
/
pathway
:
pathway.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * @package VikWP - Libraries * @subpackage adapter.application * @author E4J s.r.l. * @copyright Copyright (C) 2023 E4J s.r.l. All Rights Reserved. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL * @link https://vikwp.com */ // No direct access defined('ABSPATH') or die('No script kiddies please!'); /** * Class to maintain a pathway. * * The user's navigated path within the application. * * @since 10.1.19 */ class JPathway { /** * JPathway instances container. * * @var array */ protected static $instances = array(); /** * Array to hold the pathway item objects. * * @var array */ protected $pathway = array(); /** * Class constructor. * * @param array $options The class options. */ public function __construct($options = array()) { } /** * Returns a Pathway object. * * @param string $client The name of the client. * @param array $options An associative array of options. * * @return self A Pathway object. * * @throws RuntimeException */ public static function getInstance($client, $options = array()) { $client = strtolower($client); if (empty(self::$instances[$client])) { // try to load file if (!JLoader::import('adapter.pathway.classes.' . $client)) { throw new Exception(sprintf('Pathway [%s] not found', $client), 404); } // create a Pathway object $classname = 'JPathway' . ucfirst($client); // make sure the class exists and it is valid if (!class_exists($classname) || !is_subclass_of($classname, 'JPathway')) { throw new Exception(sprintf('Invalid pathway [%s] class', $classname), 500); } // instantiate the class and cache it self::$instances[$client] = new $classname($options); } return self::$instances[$client]; } /** * Returns the Pathway items array. * * @return array Array of pathway items. */ public function getPathway() { $pw = $this->pathway; // use array_values to reset the array keys numerically return array_values($pw); } /** * Sets the Pathway items array. * * @param array $pathway An array of pathway objects. * * @return array The previous pathway data. */ public function setPathway($pathway) { $oldPathway = $this->pathway; // set the new pathway $this->pathway = array_values((array) $pathway); return array_values($oldPathway); } /** * Creates and return an array of the pathway names. * * @return array Array of names of pathway items. */ public function getPathwayNames() { $names = array(); // build the names array using just the names of each pathway item foreach ($this->pathway as $item) { $names[] = $item->name; } // use array_values to reset the array keys numerically return array_values($names); } /** * Creates and adds an item to the pathway. * * @param string $name The name of the item. * @param string $link The link to the item. * * @return boolean True on success. */ public function addItem($name, $link = '') { $item = $this->makeItem($name, $link); if ($item) { $this->pathway[] = $item; return true; } return false; } /** * Sets the item name. * * @param integer $id The id of the item on which to set the name. * @param string $name The name to set. * * @return boolean True on success */ public function setItemName($id, $name) { if (isset($this->pathway[$id])) { $this->pathway[$id]->name = $name; return true; } return false; } /** * Creates and returns a new pathway object. * * @param string $name Name of the item. * @param string $link Link to the item. * * @return object Pathway item object. */ protected function makeItem($name, $link) { $item = new stdClass; $item->name = html_entity_decode($name, ENT_COMPAT, 'UTF-8'); $item->link = $link; return $item; } }