Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla5/administrator/components/com_fabrik/helpers/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* Fabrik Component Helper
*
* @package Joomla.Administrator
* @subpackage Fabrik
* @copyright Copyright (C) 2005-2020 Media A-Team, Inc. - All rights
reserved.
* @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
* @since 1.6
*/
// No direct access
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Text;
use Joomla\CMS\Access\Access;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Version;
use Joomla\CMS\Filter\InputFilter;
use Joomla\CMS\Factory;
use Joomla\CMS\Object\CMSObject;
use Joomla\String\StringHelper;
/**
* Fabrik Component Helper
*
* @package Joomla
* @subpackage Fabrik
* @since 1.5
*/
class FabrikAdminHelper
{
/**
* Prepare the date for saving
* DATES SHOULD BE SAVED AS UTC
*
* @param string $strdate publish down date
*
* @return string
*/
public static function prepareSaveDate($strdate)
{
$config = Factory::getApplication()->getConfig();
$tzoffset = $config->get('offset');
$db = FabrikWorker::getDbo(true);
// Handle never unpublish date
if (trim($strdate) == Text::_('Never') || trim($strdate) ==
'' || trim($strdate) == $db->getNullDate())
{
$strdate = $db->getNullDate();
}
else
{
if (StringHelper::strlen(trim($strdate)) <= 10)
{
$strdate .= ' 00:00:00';
}
$date = Factory::getDate($strdate, $tzoffset);
$strdate = $date->toSql();
}
return $strdate;
}
/**
* Gets a list of the actions that can be performed.
*
* @param int $categoryId The category ID.
*
* @since 1.6
*
* @return CMSObject
*/
public static function getActions($categoryId = 0)
{
$user = Factory::getUser();
$result = new CMSObject;
if (empty($categoryId))
{
$assetName = 'com_fabrik';
}
else
{
$assetName = 'com_fabrik.category.' . (int) $categoryId;
}
$actions = array('core.admin', 'core.manage',
'core.create', 'core.edit',
'core.edit.state', 'core.delete');
foreach ($actions as $action)
{
$result->set($action, $user->authorise($action, $assetName));
}
return $result;
}
/**
* Configure the Linkbar.
*
* @param string $vName The name of the active view.
*
* @since 1.6
*
* @return void
*/
public static function addSubmenu($vName)
{
/*
$vizUrl =
'index.php?option=com_fabrik&view=visualizations';
// if (FabrikWorker::j3())
// {
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_HOME'),
'index.php?option=com_fabrik', $vName == 'home');
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_LISTS'),
'index.php?option=com_fabrik&view=lists', $vName ==
'lists');
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_FORMS'),
'index.php?option=com_fabrik&view=forms', $vName ==
'forms');
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_GROUPS'),
'index.php?option=com_fabrik&view=groups', $vName ==
'groups');
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_ELEMENTS'),
'index.php?option=com_fabrik&view=elements', $vName ==
'elements');
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_VISUALIZATIONS'),
$vizUrl, $vName == 'visualizations');
// JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_PACKAGES'),
'index.php?option=com_fabrik&view=packages', $vName ==
'packages');
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_CONNECTIONS'),
'index.php?option=com_fabrik&view=connections', $vName ==
'connections');
JHtmlSidebar::addEntry(Text::_('COM_FABRIK_SUBMENU_CRONS'),
'index.php?option=com_fabrik&view=crons', $vName ==
'crons');
/*
}
else
{
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_LISTS'),
'index.php?option=com_fabrik&view=lists', $vName ==
'lists');
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_FORMS'),
'index.php?option=com_fabrik&view=forms', $vName ==
'forms');
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_GROUPS'),
'index.php?option=com_fabrik&view=groups', $vName ==
'groups');
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_ELEMENTS'),
'index.php?option=com_fabrik&view=elements', $vName ==
'elements');
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_VISUALIZATIONS'),
$vizUrl, $vName == 'visualizations');
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_PACKAGES'),
'index.php?option=com_fabrik&view=packages', $vName ==
'packages');
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_CONNECTIONS'),
'index.php?option=com_fabrik&view=connections', $vName ==
'connections');
JSubMenuHelper::addEntry(Text::_('COM_FABRIK_SUBMENU_CRONS'),
'index.php?option=com_fabrik&view=crons', $vName ==
'crons');
}
*/
}
/**
* Applies the content tag filters to arbitrary text as per settings for
current user group
*
* @param string $text The string to filter
*
* @return string The filtered string
*/
public static function filterText($text)
{
// Filter settings
jimport('joomla.application.component.helper');
$config = ComponentHelper::getParams('com_config');
$user = Factory::getUser();
$userGroups = Access::getGroupsByUser($user->get('id'));
$filters = $config->get('filters');
$blackListTags = array();
$blackListAttributes = array();
$whiteListTags = array();
$whiteListAttributes = array();
$noHtml = false;
$whiteList = false;
$blackList = false;
$unfiltered = false;
// Cycle through each of the user groups the user is in.
// Remember they are include in the Public group as well.
foreach ($userGroups as $groupId)
{
// May have added a group by not saved the filters.
if (!isset($filters->$groupId))
{
continue;
}
// Each group the user is in could have different filtering properties.
$filterData = $filters->$groupId;
$filterType = StringHelper::strtoupper($filterData->filter_type);
if ($filterType == 'NH')
{
// Maximum HTML filtering.
$noHtml = true;
}
elseif ($filterType == 'NONE')
{
// No HTML filtering.
$unfiltered = true;
}
else
{
// Black or white list.
// Preprocess the tags and attributes.
$tags = explode(',', $filterData->filter_tags);
$attributes = explode(',',
$filterData->filter_attributes);
$tempTags = array();
$tempAttributes = array();
foreach ($tags as $tag)
{
$tag = trim($tag);
if ($tag)
{
$tempTags[] = $tag;
}
}
foreach ($attributes as $attribute)
{
$attribute = trim($attribute);
if ($attribute)
{
$tempAttributes[] = $attribute;
}
}
// Collect the black or white list tags and attributes.
// Each list is cumulative.
if ($filterType == 'BL')
{
$blackList = true;
$blackListTags = array_merge($blackListTags, $tempTags);
$blackListAttributes = array_merge($blackListAttributes,
$tempAttributes);
}
elseif ($filterType == 'WL')
{
$whiteList = true;
$whiteListTags = array_merge($whiteListTags, $tempTags);
$whiteListAttributes = array_merge($whiteListAttributes,
$tempAttributes);
}
}
}
// Remove duplicates before processing (because the black list uses both
sets of arrays).
$blackListTags = array_unique($blackListTags);
$blackListAttributes = array_unique($blackListAttributes);
$whiteListTags = array_unique($whiteListTags);
$whiteListAttributes = array_unique($whiteListAttributes);
// Unfiltered assumes first priority.
if ($unfiltered)
{
// Don't apply filtering.
}
else
{
// Black lists take second precedence.
if ($blackList)
{
// Remove the white-listed attributes from the black-list.
$tags = array_diff($blackListTags, $whiteListTags);
$attrs = array_diff($blackListAttributes, $whiteListAttributes);
$filter = InputFilter::getInstance($tags, $attrs, 1, 1);
}
// White lists take third precedence.
elseif ($whiteList)
{
$filter = InputFilter::getInstance($whiteListTags,
$whiteListAttributes, 0, 0, 0);
}
// No HTML takes last place.
else
{
$filter = InputFilter::getInstance();
}
$text = $filter->clean($text, 'html');
}
return $text;
}
/**
* Set the layout based on Joomla version
* Allows for loading of new bootstrap admin templates in J3.0+
*
* @param JView &$view current view to setLayout for
*
* @return void
*/
public static function setViewLayout(&$view)
{
// If rendering a list inside a form and viewing in admin - there were
layout name conflicts (so renamed bootstrap to admin_bootstrap)
$layout = $view->getName() === 'list' ?
'admin_bootstrap' : 'bootstrap';
$view->setLayout($layout);
}
}