| Server IP : 195.130.67.5 / Your IP : 216.73.217.154 Web Server : Microsoft-IIS/10.0 System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586 User : IUSR ( 0) PHP Version : 7.4.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Old Sites/rescommittee/modules/mod_aridatatables/includes/kernel/DataTables/ |
Upload File : |
<?php
/*
* ARI Data Tables
*
* @package ARI Data Tables
* @version 1.0.0
* @author ARI Soft
* @copyright Copyright (c) 2010 www.ari-soft.com. All rights reserved
* @license GNU/GPL (http://www.gnu.org/copyleft/gpl.html)
*
*/
defined('ARI_FRAMEWORK_LOADED') or die('Direct Access to this location is not allowed.');
AriKernel::import('Utils.Utils');
AriKernel::import('Document.DocumentHelper');
jimport('joomla.filter.filterinput');
jimport('joomla.utilities.arrayhelper');
class AriDataTablesHelper
{
public static function getProtocol()
{
static $protocol;
if (is_null($protocol))
{
$uri = JURI::getInstance();
$protocol = $uri->toString(array('scheme'));
}
return $protocol;
}
public static function includeGoogleAPI()
{
static $loaded;
if ($loaded)
return ;
AriDocumentHelper::includeJsFile(self::getProtocol() . 'www.google.com/jsapi');
$loaded = true;
}
public static function includeJQuery($loadJQuery, $noConflict, $params)
{
static $loaded;
if ($loaded)
return ;
$baseUri = JURI::root(true) . '/modules/mod_aridatatables/includes/js/';
if ($loadJQuery)
{
$loadJQueryMethod = AriUtils::getParam($params, 'loadJQueryMethod', 'google_cdn');
if ($loadJQueryMethod == 'local')
{
if (J3_0)
JHtml::_('jquery.framework', $noConflict);
else
AriDocumentHelper::includeJsFile($baseUri . 'jquery.min.js');
}
else
{
AriDocumentHelper::includeJsFile('//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js');
}
if ($noConflict)
{
if (!J3_0 || $loadJQueryMethod != 'local')
AriDocumentHelper::includeJsFile($baseUri . 'jquery.noconflict.js');
}
$loaded = true;
}
}
public static function includeJQueryUITheme($theme = 'smoothness')
{
static $loadedThemes = array();
$filter = JFilterInput::getInstance();
$theme = $filter->clean($theme, 'WORD');
if (empty($theme))
$theme = 'smoothness';
if (in_array($theme, $loadedThemes))
return ;
$themeUri = JURI::root(true) . '/modules/mod_aridatatables/includes/assets/jui/' . $theme . '/style.css';
AriDocumentHelper::includeCssFile($themeUri);
$loadedThemes[] = $theme;
}
public static function includeAssets()
{
static $loaded;
if ($loaded)
return ;
$baseUri = JURI::root(true) . '/modules/mod_aridatatables/includes/assets/';
AriDocumentHelper::includeCssFile($baseUri . 'style.css');
AriDocumentHelper::includeJsFile($baseUri . 'common.js');
$loaded = true;
}
public static function includeSpecificStyles($params, $columnsSettings, $disableColumnsWidth = false)
{
$tableParams = $params['table'];
$id = $tableParams['id'];
$cssStyles = sprintf('#%1$s { width: %2$s; border-collapse: %3$s; border-width: %4$spx; border-spacing: %6$spx;} #%1$s th, #%1$s td { padding: %5$dpx; }',
$id,
!empty($tableParams['width']) ? $tableParams['width'] : '100%',
!empty($tableParams['borderCollapse']) ? $tableParams['borderCollapse'] : 'separate',
intval($tableParams['border'], 10),
intval($tableParams['padding'], 10),
intval($tableParams['spacing'], 10)
);
if ($columnsSettings)
{
foreach ($columnsSettings as $colParam)
{
$colStyle = '';
if (!empty($colParam['align']) && $colParam['align'] != 'none')
$colStyle .= 'text-align:' . $colParam['align'] . ';';
if (!$disableColumnsWidth && !empty($colParam['width']))
{
$width = $colParam['width'];
if ($width == '' . intval($width, 10))
$width .= 'px';
$colStyle .= 'width:' . $width . ';';
}
if ($colStyle)
{
$colClassName = self::getColClass($colParam['id']);
$cssStyles .= sprintf('#%1$s TBODY TD.%2$s,#%1$s TBODY TH.%2$s,#%1$s TBODY TD DIV.%2$s {%3$s}',
$id,
$colClassName,
$colStyle);
}
}
}
$customStyles = $params['_default']['styles'];
if ($customStyles)
$cssStyles .= ' ' . str_replace('{$id}', '#' . $id, $customStyles);
$document = JFactory::getDocument();
$document->addStyleDeclaration($cssStyles);
}
public static function getColumnsSettings($colParams, $dataRow = array())
{
$colParams = $colParams ? json_decode($colParams, true) : null;
if (is_null($colParams))
return $colParams;
$fixedParams = array();
$keys = is_array($dataRow) ? array_keys($dataRow) : array();
foreach ($colParams as $colParam)
{
if (!isset($colParam['id']) || is_null($colParam['id']) || strlen($colParam['id']) == 0)
continue ;
$idx = -1;
$id = $colParam['id'];
if ($id == '' . intval($id, 10))
{
$idx = $colParam['id'] = intval($id, 10);
}
else
{
$idx = array_search($colParam['id'], $keys);
if ($idx === false)
$idx = -1;
}
$colParam['idx'] = $idx;
if (empty($colParam['class']))
$colParam['class'] = '';
if (!empty($colParam['format']))
$colParam['format'] = trim($colParam['format']);
$colParam['class'] .= ' ' . self::getColClass($colParam['id']);
$fixedParams[$colParam['id']] = $colParam;
}
return count($fixedParams) > 0 ? $fixedParams : null;
}
public static function getHiddenColumns($dataRow, $columnsSettings)
{
$hiddenColumns = array();
if (empty($dataRow) || empty($columnsSettings))
return $hiddenColumns;
$keys = array_keys($dataRow);
foreach ($columnsSettings as $key => $colSettings)
{
if (empty($colSettings['hidden']))
continue ;
if (is_int($key))
$hiddenColumns[] = $key;
else
{
$idx = array_search($key, $keys);
if ($idx !== false)
$hiddenColumns[] = $idx;
}
}
$hiddenColumns = array_unique($hiddenColumns);
sort($hiddenColumns);
return $hiddenColumns;
}
public static function recalculateIndex($index, $hiddenColumns)
{
if (!is_array($hiddenColumns) || count($hiddenColumns) == 0)
return $index;
$diff = 0;
foreach ($hiddenColumns as $hiddenColumn)
{
if ($hiddenColumn >= $index)
break ;
++$diff;
}
return $index - $diff;
}
public static function getColumnSettings($columnsSettings, $key, $idx)
{
$colSettings = null;
if (empty($columnsSettings))
return $colSettings;
if (array_key_exists($key, $columnsSettings))
$colSettings = $columnsSettings[$key];
else if (array_key_exists($idx, $columnsSettings))
$colSettings = $columnsSettings[$idx];
return $colSettings;
}
public static function getColClass($id)
{
return 'col_' . substr(md5($id), 0, 8);
}
public static function getDataModel($model, $params)
{
return self::getModel($model, $params, 'DataTablesData');
}
public static function getWidgetModel($model, $params)
{
return self::getModel($model, $params, 'DataTablesWidget');
}
public static function getModel($model, $params, $prefix = 'DataTables')
{
$modelInstance = null;
$modelParams = isset($params[$model]) ? $params[$model] : null;
$filter = JFilterInput::getInstance();
$model = ucfirst($filter->clean($model, 'WORD'));
if (empty($model))
{
return $modelInstance;
}
else
{
$modelName = $prefix . $model . 'Model';
$modelPath = dirname(__FILE__) . '/Models/class.' . $modelName . '.php';
if (!@file_exists($modelPath))
{
return $modelInstance;
}
else
{
AriKernel::import('DataTables.Models.' . $modelName);
$modelClass = 'Ari' . $modelName;
$modelInstance = new $modelClass();
}
}
return $modelInstance;
}
public static function getCacheFolder()
{
$cacheDir = JPATH_ROOT . '/cache/mod_aridatatables';
$extCacheDir = $cacheDir . '/mod_aridatatables';
return (@file_exists($extCacheDir) && is_dir($extCacheDir))
? $extCacheDir
: $cacheDir;
}
public static function cleanValue($value)
{
if (strpos($value, '_') === false)
return $value;
$value = explode('_', $value);
return $value[count($value) - 1];
}
}