| Current Path : /home/p/o/n/poneycluc/www/plugins/system/t4/src/t4/Helper/ |
| Current File : /home/p/o/n/poneycluc/www/plugins/system/t4/src/t4/Helper/Path.php |
<?php
namespace T4\Helper;
use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
use Joomla\Filesystem\File;
use Joomla\Filesystem\Folder;
class Path {
public static function findInTheme($which, $getUri = false, $relative = false) {
// clean $file
$arr = preg_split('/\?|\#/', $which);
$file = $arr[0];
$path = T4PATH_LOCAL . '/' . $file;
$uri = T4PATH_LOCAL_URI . '/' . $which;
if (is_file($path)) return $getUri ? self::getUri($uri, $relative) : $path;
$path = T4PATH_TPL . '/' . $file;
$uri = T4PATH_TPL_URI . '/' . $which;
if (is_file($path)) return $getUri ? self::getUri($uri, $relative) : $path;
$path = T4PATH_BASE . '/' . $file;
$uri = T4PATH_BASE_URI . '/' . $which;
if (is_file($path)) return $getUri ? self::getUri($uri, $relative) : $path;
$path = JPATH_ROOT . '/' . $file;
$uri = Uri::root(true) . '/' . $which;
if (is_file($path)) return $getUri ? self::getUri($uri, $relative) : $path;
return null;
}
public static function findInBase($which, $getUri = false, $relative = false) {
// clean $file
$arr = preg_split('/\?|\#/', $which);
$file = $arr[0];
$path = T4PATH_TPL . '/' . $file;
$uri = T4PATH_TPL_URI . '/' . $which;
if (is_file($path)) return $getUri ? self::getUri($uri, $relative) : $path;
$path = T4PATH_BASE . '/' . $file;
$uri = T4PATH_BASE_URI . '/' . $which;
if (is_file($path)) return $getUri ? self::getUri($uri, $relative) : $path;
$path = JPATH_ROOT . '/' . $file;
$uri = Uri::root(true) . '/' . $which;
if (is_file($path)) return $getUri ? self::getUri($uri, $relative) : $path;
return null;
}
public static function getUri($uri, $rel = false) {
if ($rel) $uri = substr($uri, strlen(Uri::root(true) . '/'));
return $uri;
}
public static function findT4Layout($layout_file) {
return self::findInTheme('html/layouts/t4/' . $layout_file);
}
public static function getFileContent($path, $local = true) {
$file = $local ? self::findInTheme($path) : self::findInBase($path);
return $file ? file_get_contents($file) : '';
}
public static function getBaseContent($path) {
$file = self::findInBase($path);
return $file ? file_get_contents($file) : '';
}
public static function getLocalContent($path) {
$file = defined('T4PATH_LOCAL') ? T4PATH_LOCAL . '/' . $path : $path;
return is_file($file) ? file_get_contents($file) : '';
}
public static function removeLocalContent($path) {
$file = T4PATH_LOCAL . '/' . $path;
if(is_file($file)) unlink($file);
return is_file($file) ? false : true;
}
public static function saveLocalContent($path, $value) {
$file = defined('T4PATH_LOCAL') ? T4PATH_LOCAL . '/' . $path : $path;
$dir = dirname($file);
if (!is_dir($dir)) Folder::create($dir);
if (is_array($value)) $value = json_encode($value);
return File::write($file, $value);
}
public static function addIncludePath (&$path) {
//JPATH_THEMES
$template_path = str_replace('\\', '/', T4PATH_TPL);
for($i = count($path)-1; $i >= 0; $i--) {
$p = str_replace('\\', '/', $path[$i]);
if (strpos($p, $template_path) === 0) {
$file = substr($p, strlen($template_path));
// add base path theme after template path
$base_path = T4PATH_BASE . $file;
array_splice($path, $i+1, 0, $base_path);
// add template local path before template path
$local_path = T4PATH_LOCAL . $file;
array_splice($path, $i, 0, $local_path);
}
}
return $path;
}
public static function getLayoutPath($path, $layout) {
// Do 3rd party stuff to detect layout path for the module
// onGetLayoutPath should return the path to the $layoutFile of $module or false
// $results holds an array of results returned from plugins, 1 from each plugin.
// if a path to the $layoutFile is found and it is a file, return that path
$app = Factory::getApplication();
$result = $app->triggerEvent( 'onGetLayoutPath', array( $path, $layout ) );
if (is_array($result))
{
foreach ($result as $file)
{
if ($file !== false && is_file ($file))
{
return $file;
}
}
}
return false;
}
// get file $type in $dir from local, template, base
public static function files($dir, $ext = 'json') {
$files = [];
$path = T4PATH_LOCAL . '/' . $dir;
$tmp = is_dir($path) ? Folder::files($path, '.' . $ext) : [];
if (!empty($tmp)) $files = array_merge($files, $tmp);
$path = T4PATH_TPL . '/' . $dir;
$tmp = is_dir($path) ? Folder::files($path, '.' . $ext) : [];
if (!empty($tmp)) $files = array_merge($files, $tmp);
$path = T4PATH_BASE . '/' . $dir;
$tmp = is_dir($path) ? Folder::files($path, '.' . $ext) : [];
if (!empty($tmp)) $files = array_merge($files, $tmp);
// remove duplicate and sort
$files = array_unique($files);
asort($files);
// put default on top
$output = ['default' => 'default'];
foreach ($files as $i => $file) {
$val = substr($file, 0, -strlen($ext) - 1);
$output[$val] = $val;
}
return array_values($output);
}
}