File: /var/www/agighana.org_backup/unitecreator_library.class.php
<?php
/**
* @package Unlimited Elements
* @author unlimited-elements.com
* @copyright (C) 2021 Unlimited Elements, All Rights Reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
* */
if ( ! defined( 'ABSPATH' ) ) exit;
class UniteCreatorLibraryWork{
private static $arrLibrary;
/**
* construct the library, load library array
*/
public function __construct(){
if(empty(self::$arrLibrary))
$this->loadLibrary();
}
/**
* check if condition ok
*/
private function isConditionOK($condition, $handle = null){
switch($condition){
case "fa5":
case "fa4":
$faVersion = "fa5";
if($faVersion == $condition)
return(true);
else
return(false);
break;
}
return(false);
}
/**
* get platform include by handle
* function for override
*/
protected function getUrlPlatformInclude($handle){
return(null);
}
/**
* get includes (js or css) from object
*/
private function loadLibrary_getIncludes($xmlIncludes){
$objIncludes = $xmlIncludes->include;
if(!@count($objIncludes))
$objIncludes = array($objIncludes);
$arrIncludes = array();
foreach($objIncludes as $objInclude){
$attribs = $objInclude->attributes();
$handle = (string)UniteFunctionsUC::getVal($attribs, "handle");
$local = (string)UniteFunctionsUC::getVal($attribs, "local");
$remote = (string)UniteFunctionsUC::getVal($attribs, "remote");
$condition = (string)UniteFunctionsUC::getVal($attribs, "condition");
if(empty($local) && empty($remote))
UniteFunctionsUC::throwError("Include: $handle must have some url");
if(!empty($local)){
$local = trim($local);
$urlInclude = GlobalsUC::$url_assets_libraries.$local;
}else if(!empty($remote)){
$urlInclude = $remote;
}
$urlPlatformInclude = $this->getUrlPlatformInclude($handle);
if(!empty($urlPlatformInclude))
$urlInclude = $urlPlatformInclude;
//include with condition
if(!empty($condition)){
$isCondition = $this->isConditionOK($condition, $handle);
if($isCondition == true)
$arrIncludes[$handle] = $urlInclude;
continue;
}
//just include
$arrIncludes[$handle] = $urlInclude;
}
return($arrIncludes);
}
/**
* load library from xml file
*/
private function loadLibrary(){
$filepathLibrary = GlobalsUC::$pathSettings."library.xml";
UniteFunctionsUC::validateFilepath($filepathLibrary);
$arrLibrary = array();
$obj = UniteFunctionsUC::loadXMLFile($filepathLibrary);
$items = $obj->item;
if(!@count($obj->item)){
$items = array($items);
}
foreach($items as $objItem){
$attribs = $objItem->attributes();
$name = (string)UniteFunctionsUC::getVal($attribs, "name");
$arrItem = array();
$arrItem["name"] = $name;
$arrItem["title"] = (string)UniteFunctionsUC::getVal($attribs, "title");
UniteFunctionsUC::validateNotEmpty($name, "item name");
UniteFunctionsUC::validateNotEmpty($arrItem["title"], "item title");
//get js includes
$arrJsIncludes = array();
if(isset($objItem->js))
$arrJsIncludes = $this->loadLibrary_getIncludes($objItem->js);
$arrCssIncludes = array();
if(isset($objItem->css))
$arrCssIncludes = $this->loadLibrary_getIncludes($objItem->css);
$arrItem["includes_js"] = $arrJsIncludes;
$arrItem["includes_css"] = $arrCssIncludes;
$arrLibrary[$name] = $arrItem;
}
self::$arrLibrary = $arrLibrary;
}
/**
* function for override, process provide library
* return true if library found and processed, and false if not
*/
public function processProviderLibrary($name){
return(false);
}
/**
* output urls in array of js and css separately
*/
public function getLibraryIncludes($name){
$urlBase = GlobalsUC::$url_assets_libraries;
$arrJs = array();
$arrCss = array();
$output = array("js"=>array(),"css"=>array());
if(!isset(self::$arrLibrary[$name]))
return($output);
$arrItem = self::$arrLibrary[$name];
$output["js"] = $arrItem["includes_js"];
$output["css"] = $arrItem["includes_css"];
return($output);
}
/**
* get library array
*/
public function getArrLibrary(){
return(self::$arrLibrary);
}
}