File: /var/www/html/wpmuhibbah_err/wp-content/themes/goodwish/framework/lib/edgt.framework.php
<?php
/*
Class: GoodwishEdgeFramework
A class that initializes Edge Framework
*/
class GoodwishEdgeFramework {
private static $instance;
public $edgtOptions;
public $edgtMetaBoxes;
private $skin;
private function __construct() {
$this->edgtOptions = GoodwishEdgeOptions::get_instance();
$this->edgtMetaBoxes = GoodwishEdgeMetaBoxes::get_instance();
}
public static function get_instance() {
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
public function getSkin() {
return $this->skin;
}
public function setSkin(GoodwishEdgeSkinAbstract $skinObject) {
$this->skin = $skinObject;
}
}
/**
* Class GoodwishEdgeSkinManager
*
* Class that used like a factory for skins.
* It loads required skin file and instantiates skin class
*/
class GoodwishEdgeSkinManager {
/**
* @var this will be an instance of skin
*/
private $skin;
/**
* @see EdgeSkinManager::setSkin()
*/
public function __construct() {
$this->setSkin();
}
/**
* Loads wanted skin, instantiates skin class and stores it in $skin attribute
* @param string $skinName skin to load. Must match skin folder name
*/
private function setSkin($skinName = 'edge') {
if($skinName !== '') {
if(file_exists(get_template_directory().'/framework/admin/skins/'.$skinName.'/skin.php')) {
require_once get_template_directory().'/framework/admin/skins/'.$skinName.'/skin.php';
$skinName = ucfirst($skinName).'Skin';
$this->skin = new $skinName();
}
} else {
$this->skin = false;
}
}
/**
* Returns current skin object. It $skin attribute isn't set it calls setSkin method
*
* @return mixed
*
* @see EdgeSkinManager::setSkin()
*/
public function getSkin() {
if(empty($this->skin)) {
$this->setSkin();
}
return $this->skin;
}
}
/**
* Class GoodwishEdgeSkinAbstract
*
* Abstract class that each skin class must extend
*/
abstract class GoodwishEdgeSkinAbstract {
/**
* @var string
*/
protected $skinName;
/**
* @var array of styles that skin will be including
*/
protected $styles;
/**
* @var array of scripts that skin will be including
*/
protected $scripts;
/**
* @var array of icons names for each menu item that theme is adding
*/
protected $icons;
/**
* @var array of menu items positions of each menu item that theme is adding
*/
protected $itemPosition;
/**
* Returns skin name attribute whenever skin is used in concatenation
* @return mixed
*/
public function __toString() {
return $this->skinName;
}
/**
* @return mixed
*/
public function getSkinName() {
return $this->skinName;
}
/**
* Loads template part with params. Uses locate_template function which is child theme friendly
* @param $template string template to load
* @param array $params parameters to pass to template
*/
public function loadTemplatePart($template, $params = array()) {
if(is_array($params) && count($params)) {
extract($params);
}
if($template !== '') {
include(goodwish_edge_find_template_path('framework/admin/skins/'.$this->skinName.'/templates/'.$template.'.php'));
}
}
/**
* Goes through each added scripts and enqueus it
*/
public function enqueueScripts() {
if(is_array($this->scripts) && count($this->scripts)) {
foreach ($this->scripts as $scriptHandle => $scriptPath) {
wp_enqueue_script($scriptHandle);
}
}
}
/**
* Goes through each added styles and enqueus it
*/
public function enqueueStyles() {
if(is_array($this->styles) && count($this->styles)) {
foreach ($this->styles as $styleHandle => $stylePath) {
wp_enqueue_style($styleHandle);
}
}
}
/**
* Returns menu item icon based on first param
* @param $icon
* @return string
*/
public function getMenuIcon($icon) {
if($icon !== '' && array_key_exists($icon, $this->icons)) {
return $this->icons[$icon];
}
return goodwish_edge_get_skin_uri().'/assets/img/admin-logo-icon.png';
}
/**
* Returns item position for menu item
* @param $itemPosition
* @return int
*/
public function getMenuItemPosition($itemPosition) {
if($itemPosition !== '' && array_key_exists($itemPosition, $this->itemPosition)) {
return $this->itemPosition[$itemPosition];
}
return 4;
}
/**
* Echoes script tag that generates global variable that will be used in TinyMCE
*/
public function setShortcodeJSParams() { ?>
<script>
window.edgtSCIcon = '<?php echo goodwish_edge_get_skin_uri().'/assets/img/admin-logo-icon.png'; ?>';
window.edgtSCLabel = '<?php echo esc_html(ucfirst($this->skinName)); ?> Shortcodes';
</script>
<?php }
/**
* Formates skin name so it can be used in concatenation
* @return string
*/
public function getSkinLabel() {
return ucfirst($this->skinName);
}
/**
* Returns URI to skin folder
* @return string
*/
public function getSkinURI() {
return get_template_directory_uri().'/framework/admin/skins/'.$this->skinName;
}
/**
* Here options page content will be generated
* @return mixed
*/
public abstract function renderOptions();
/**
* Here import page will be generated
* @return mixed
*/
public abstract function renderImport();
/**
* Here all scripts will be registered
* @return mixed
*/
public abstract function registerScripts();
/**
* Here all styles will be registered
* @return mixed
*/
public abstract function registerStyles();
/**
* Here all icons will be set
* @return mixed
*/
public abstract function setIcons();
}
/*
Class: GoodwishEdgeOptions
A class that initializes Edge Options
*/
class GoodwishEdgeOptions {
private static $instance;
public $adminPages;
public $options;
public $optionsByType;
private function __construct() {
$this->adminPages = array();
$this->options = array();
$this->optionsByType = array();
}
public static function get_instance() {
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
public function addAdminPage($key, $page) {
$this->adminPages[$key] = $page;
}
public function getAdminPage($key) {
return $this->adminPages[$key];
}
public function adminPageExists($key) {
return array_key_exists($key, $this->adminPages);
}
public function getAdminPageFromSlug($slug) {
foreach ($this->adminPages as $key=>$page ) {
if ($page->slug == $slug)
return $page;
}
return;
}
public function addOption($key, $value, $type = '') {
$this->options[$key] = $value;
$this->addOptionByType($type, $key);
}
public function getOption($key) {
if(isset($this->options[$key])) {
return $this->options[$key];
}
return;
}
public function addOptionByType($type, $key) {
$this->optionsByType[$type][] = $key;
}
public function getOptionsByType($type) {
if(array_key_exists($type, $this->optionsByType)) {
return $this->optionsByType[$type];
}
return false;
}
public function getOptionValue($key) {
global $goodwish_edge_options;
if(array_key_exists($key, $goodwish_edge_options)) {
return $goodwish_edge_options[$key];
} elseif(array_key_exists($key, $this->options)) {
return $this->getOption($key);
}
return false;
}
}
/*
Class: GoodwishEdgeAdminPage
A class that initializes Edge Admin Page
*/
class GoodwishEdgeAdminPage implements iGoodwishEdgeLayoutNode {
public $layout;
private $factory;
public $slug;
public $title;
public $icon;
function __construct($slug="", $title="", $icon = "") {
$this->layout = array();
$this->factory = new GoodwishEdgeFieldFactory();
$this->slug = $slug;
$this->title = $title;
$this->icon = $icon;
}
public function hasChidren() {
return (count($this->layout) > 0)?true:false;
}
public function getChild($key) {
return $this->layout[$key];
}
public function addChild($key, $value) {
$this->layout[$key] = $value;
}
function render() {
foreach ($this->layout as $child) {
$this->renderChild($child);
}
}
public function renderChild(iGoodwishEdgeRender $child) {
$child->render($this->factory);
}
}
/*
Class: GoodwishEdgeMetaBoxes
A class that initializes Edge Meta Boxes
*/
class GoodwishEdgeMetaBoxes {
private static $instance;
public $metaBoxes;
public $options;
private function __construct() {
$this->metaBoxes = array();
$this->options = array();
}
public static function get_instance() {
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
public function addMetaBox($key, $box) {
$this->metaBoxes[$key] = $box;
}
public function getMetaBox($key) {
return $this->metaBoxes[$key];
}
public function addOption($key, $value) {
$this->options[$key] = $value;
}
public function getOption($key) {
if(isset($this->options[$key])) {
return $this->options[$key];
}
return;
}
public function getMetaBoxesByScope($scope) {
$boxes = array();
if(is_array($this->metaBoxes) && count($this->metaBoxes)) {
foreach($this->metaBoxes as $metabox) {
if(is_array($metabox->scope) && in_array($scope, $metabox->scope)) {
$boxes[] = $metabox;
} elseif($metabox->scope !== '' && $metabox->scope === $scope) {
$boxes[] = $metabox;
}
}
}
return $boxes;
}
}
/*
Class: GoodwishEdgeMetaBox
A class that initializes Edge Meta Box
*/
class GoodwishEdgeMetaBox implements iGoodwishEdgeLayoutNode {
public $layout;
private $factory;
public $scope;
public $title;
public $hidden_property;
public $hidden_values = array();
public $name;
function __construct($scope="", $title="",$hidden_property="", $hidden_values = array(), $name = '') {
$this->layout = array();
$this->factory = new GoodwishEdgeFieldFactory();
$this->scope = $scope;
$this->title = $this->setTitle($title);
$this->hidden_property = $hidden_property;
$this->hidden_values = $hidden_values;
$this->name = $name;
}
public function hasChidren() {
return (count($this->layout) > 0)?true:false;
}
public function getChild($key) {
return $this->layout[$key];
}
public function addChild($key, $value) {
$this->layout[$key] = $value;
}
function render() {
foreach ($this->layout as $child) {
$this->renderChild($child);
}
}
public function renderChild(iGoodwishEdgeRender $child) {
$child->render($this->factory);
}
public function setTitle($label) {
global $goodwish_edge_Framework;
return $goodwish_edge_Framework->getSkin()->getSkinLabel().' '.$label;
}
}
global $goodwish_edge_Framework;
$goodwish_edge_Framework = GoodwishEdgeFramework::get_instance();
$edgtSkinManager = new GoodwishEdgeSkinManager();
$goodwish_edge_Framework->setSkin($edgtSkinManager->getSkin());
?>