File: /var/www/agighana.org_backup/shapes.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 UniteShapeManagerUC extends HtmlOutputBaseUC{
private static $arrShapeDividersCache = array();
private static $arrShapesCache = array();
/**
* get output shapes by type
*/
private function getShapesOutputByType($arrAddons, $getType){
$arrOutput = array();
foreach($arrAddons as $addon){
$alias = $addon->getAlias();
switch($getType){
case "picker":
$title = $addon->getTitle();
$arrOutput[$alias] = $title;
break;
case "short":
$title = $addon->getTitle();
$arrOutput[$title] = $alias;
break;
case "data":
$svgContent = $addon->getHtml();
$svgEncoded = base64_encode($svgContent);
$arrOutput[$alias] = $svgEncoded;
break;
case "bgurl":
$svgContent = $addon->getHtml();
$svgEncoded = UniteFunctionsUC::encodeSVGForBGUrl($svgContent);
$arrOutput[$alias] = $svgEncoded;
break;
case "svg":
$svgContent = $addon->getHtml();
$arrOutput[$alias] = $svgContent;
break;
}
}
return($arrOutput);
}
/**
* get shape deviders array
* getType - short / html
*/
public function getArrShapeDividers($getType = null){
if(empty(self::$arrShapeDividersCache)){
$objAddons = new UniteCreatorAddons();
$params = array();
$params["addontype"] = GlobalsUC::ADDON_TYPE_SHAPE_DEVIDER;
self::$arrShapeDividersCache = $objAddons->getArrAddons("", $params);
}
if(empty($getType))
return(self::$arrShapeDividersCache);
$arrOutput = $this->getShapesOutputByType(self::$arrShapeDividersCache, $getType);
return($arrOutput);
}
/**
* get shape deviders array
* getType - short / html
*/
public function getArrShapes($getType = null){
if(empty(self::$arrShapesCache)){
$objAddons = new UniteCreatorAddons();
$params = array();
$params["addontype"] = GlobalsUC::ADDON_TYPE_SHAPES;
self::$arrShapesCache = $objAddons->getArrAddons("", $params);
}
if(empty($getType))
return(self::$arrShapesCache);
$arrOutput = self::getShapesOutputByType(self::$arrShapesCache, $getType);
return($arrOutput);
}
/**
* get element shape evider html
*/
private function getElementShapeDividerHtml($position, $settings, $elementID){
$enableKey = "enable_shape_devider_".$position;
if(isset($settings[$enableKey])){
$isEnable = UniteFunctionsUC::getVal($settings, "enable_shape_devider_".$position);
$isEnable = UniteFunctionsUC::strToBool($isEnable);
if($isEnable == false)
return("");
}
$shapeType = UniteFunctionsUC::getVal($settings, "shape_devider_{$position}_type");
if(empty($shapeType))
return("");
$class = "uc-shape-devider-{$position}";
$selector = "#{$elementID} > .{$class}";
$shapeColor = UniteFunctionsUC::getVal($settings, "shape_devider_{$position}_color");
$isflip = UniteFunctionsUC::getVal($settings, "shape_devider_{$position}_flip");
$isflip = UniteFunctionsUC::strToBool($isflip);
$height = UniteFunctionsUC::getVal($settings, "shape_devider_{$position}_height");
$placement = UniteFunctionsUC::getVal($settings, "shape_devider_{$position}_placement");
$repeat = UniteFunctionsUC::getVal($settings, "shape_devider_{$position}_repeat");
$arrShapes = self::getArrShapeDividers("svg");
$shapeSVG = UniteFunctionsUC::getVal($arrShapes, $shapeType);
if(empty($shapeSVG))
return("");
//replace color
if(!empty($shapeColor)){
$shapeSVG = str_replace('g fill="#ffffff"', 'g fill="'.$shapeColor.'"', $shapeSVG);
}
$shapeContent = UniteFunctionsUC::encodeSVGForBGUrl($shapeSVG);
$arrCss = array();
$arrCss["background-image"] = "url('{$shapeContent}')";
//add rotation
$rotation = "";
if($isflip == true){
if($position == "top")
$arrCss["transform"] = "rotateY(180deg)";
else
$arrCss["transform"] = "rotateX(180deg) rotateY(180deg)";
}
//set repeat
$percentRepeat = 100;
if(is_numeric($repeat)){
if($repeat <= 0)
$repeat = 1;
if($repeat > 1)
$percentRepeat = 100 / $repeat;
$decimal = $percentRepeat - (int)$percentRepeat;
if($decimal > 0)
$percentRepeat = number_format($percentRepeat, 2);
}
if(!empty($height)){
$height = UniteFunctionsUC::normalizeSize($height);
$arrCss["height"] = $height;
$arrCss["background-size"] = $percentRepeat."% ".$height;
}
//get mobile size css
$arrCssSizes = array();
foreach(GlobalsUC::$arrSizes as $size){
$settingName = "shape_devider_{$position}_height_$size";
$heightSize = UniteFunctionsUC::getVal($settings, $settingName);
$arrCssSize = array();
if(empty($heightSize))
continue;
$heightSize = UniteFunctionsUC::normalizeSize($heightSize);
$arrCssSize["height"] = $heightSize;
$arrCssSize["background-size"] = $percentRepeat."% ".$heightSize;
$cssSize = UniteFunctionsUC::arrStyleToStrStyle($arrCssSize, $selector);
$arrCssSizes[$size] = $cssSize;
}
if($placement == "beneath"){
$arrCss["z-index"] = "0";
}
//--- output
$css = UniteFunctionsUC::arrStyleToStrStyle($arrCss, $selector);
HelperUC::putInlineStyle(self::BR2.$css);
//put mobile size css
if(!empty($arrCssSizes)){
$cssMobileSize = HelperUC::getCssMobileSize($arrCssSizes);
HelperUC::putInlineStyle(self::BR2.$cssMobileSize);
}
$html = "";
$class = esc_attr($class);
$html .= "<div class='uc-shape-devider {$class}'></div> \n";
return($html);
}
/**
* get shpae devider addons from grid settings
*/
public function getShapeDividerNameFromSettings($settings, $position){
//preserve old way
$enableKey = "enable_shape_devider_".$position;
if(isset($settings[$enableKey])){
$isEnable = $settings[$enableKey];
$isEnable = UniteFunctionsUC::strToBool($isEnable);
if($isEnable == false)
return(null);
}
$shapeType = UniteFunctionsUC::getVal($settings, "shape_devider_{$position}_type");
if(empty($shapeType))
return(null);
return($shapeType);
}
/**
* get element shape deviders
*/
public function getElementShapeDividersHtml($settings, $elementID){
$html = "";
$html .= self::getElementShapeDividerHtml("top", $settings, $elementID);
$html .= self::getElementShapeDividerHtml("bottom", $settings, $elementID);
return($html);
}
/**
* output shapes css
*/
public function outputCssShapes(){
header("Content-type: text/css");
$arrShapes = self::getArrShapes("bgurl");
$css = "";
foreach($arrShapes as $name=>$urlShape)
$css .= ".unite-shapecontent-{$name}{background-image:url({$urlShape})}".self::BR2;
s_echo($css);
}
/**
* get json shapes array for the picker
*/
public function getJsonShapes(){
try{
$arrShapes = $this->getArrShapes("picker");
}catch(Exception $e){
$arrShapes = array();
}
$jsonShapes = json_encode($arrShapes);
return($jsonShapes);
}
/**
* get shape svg content
*/
public function getShapeSVGContent($shapeName){
try{
$addon = new UniteCreatorAddon();
$addon->initByAlias($shapeName, GlobalsUC::ADDON_TYPE_SHAPES);
$svgContent = $addon->getHtml();
return($svgContent);
}catch(Exception $e){
return($shapeName." not found");
}
}
/**
* get shape content by id
*/
public function getShapeBGContentBYAddonID($addonID){
$objAddon = new UniteCreatorAddon();
$objAddon->initByID($addonID);
$objAddonType = $objAddon->getObjAddonType();
if($objAddonType->isSVG == false)
UniteFunctionsUC::throwError("The addon is not svg");
$svgContent = $objAddon->getHtml();
$encodedContent = base64_encode($svgContent);
return($encodedContent);
}
/**
* get devider content by data
*/
public static function getShapeDividerBGContentByData($data){
$name = UniteFunctionsUC::getVal($data, "name");
$SVGcontent = $this->getShapeSVGContent($name);
$encodedContent = UniteFunctionsUC::encodeSVGForBGUrl($SVGcontent);
$response = array();
$response["content"] = $encodedContent;
return($response);
}
}