File "menuitem.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/vikbooking/libraries/adapter/form/fields/menuitem.php
File size: 2.11 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* @package VikWP - Libraries
* @subpackage adapter.form
* @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!');
JLoader::import('adapter.form.fields.list');
/**
* Form field class to handle dropdown fields containing
* the pages assigned to a specific shortcode of the plugin.
*
* @since 10.0
*/
class JFormFieldMenuItem extends JFormFieldList
{
/**
* Cache the available shortcodes to prevent duplicate queries.
*
* @var array
* @since 10.1.51
*/
protected static $shortcodes = [];
/**
* @override
* Method to get the options to populate list.
*
* @return array The field option objects.
*
* @since 10.1.51
*/
public function getOptions()
{
// obtain the default options defined by the parent
$options = parent::getOptions();
if (!$options)
{
// placeholder not specified, use the default one
$options[''] = '--';
}
if (!empty($this->prefix))
{
// set modowner with custom prefix
$this->modowner = $this->prefix;
}
// check whether the same results have been already cached
if (!isset(static::$shortcodes[$this->modowner]))
{
// init the cache
static::$shortcodes[$this->modowner] = [];
/**
* Force the client path because we need to load the shortcodes model
* always from the back-end folder.
*
* An issue occurred since WP 5.8, after the refactoring of the widgets
* management page, where the client now results to be "site" in place
* of "admin".
*
* @since 10.1.34
*/
$model = JModel::getInstance($this->modowner, 'shortcodes', 'admin');
if ($model)
{
foreach ($model->all() as $item)
{
if ($item->post_id)
{
static::$shortcodes[$this->modowner][$item->post_id] = get_the_title($item->post_id) . " - {$item->type}";
}
}
}
}
// join the default options with the cached values
return $options + static::$shortcodes[$this->modowner];
}
}