<?php
/**
* Flippercode Wordpress Widget Builder Class.
* @author Flipper Code <hello@flippercode.com>
* @package CORE
*/
if ( ! class_exists( 'Flippercode_Widget_Builder' ) ) {
/**
* Initilize Widget Builder.
*
* @author Flipper Code <hello@flippercode.com>
* @version 1.0.0
* @package Core
*/
class Flippercode_Widget_Builder extends WP_Widget {
/**
* [plugin class]
*
* @var [type]
*/
private $pluginClass;
/**
* [widget registering class]
*
* @var [type]
*/
private $widgetClass;
/**
* [$widget_label description]
*
* @var [type]
*/
private $widget_label;
/**
* [$applicable_filters description]
*
* @var [type]
*/
private $applicable_filters;
/**
* WP widgets description
*
* @var [description]
*/
private $description;
/**
* FormElements description
*
* @var formElements
*/
private $formElements;
/**
* Is Shortcode Boolean
*
*/
private $widgets_shortcode;
/**
* Is Shortcode Field Value.
*
*/
private $widgets_shortcode_field;
public function __construct( $widget_params ) {
if ( ! empty( $widget_params ) ) {
foreach( $widget_params as $param => $value ) {
$this->$param = $value;
}
parent::__construct( $this->widgetClass,
$this->widget_label,
array( 'description' => $this->description ) );
}
}
/**
* Display widget at frontend.
*
* @param array $args Widget Arguments.
* @param int $instance Instance of Widget.
*/
function widget( $args, $instance ) {
global $wpdb,$map;
extract( $args );
foreach ( $this->applicable_filters as $key => $values ) {
$instance[ $values ] = apply_filters( $key, $instance[ $values ], $instance );
}
if ( class_exists( $this->pluginClass ) and method_exists( $this->pluginClass, 'widget_output') ) {
call_user_func( $this->pluginClass.'::widget_output');
}else {
if ( $this->widgets_shortcode and ! empty( $this->widgets_shortcode_field ) ) {
$instance[$this->widgets_shortcode_field] = apply_filters( 'shortcode_main_content_output_'.$this->plugin_prefix, $instance[$this->widgets_shortcode_field] , $instance,$this->id_base );
echo do_shortcode( $instance[$this->widgets_shortcode_field] );
}
}
}
/**
* Update widget options.
*
* @param array $new_instance New Options values.
* @param array $old_instance Old Options values.
* @return array Modified Options values.
*/
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
foreach ( $this->formElements as $key => $value ) {
$instance[ $key ] = strip_tags( $new_instance[ $key ] );
}
return $instance;
}
/**
* Backend Widget Form.
*
* @param array $instance Widget options values.
*/
function form( $instance ) {
foreach ( $this->formElements as $key => $element ) {
$elementCurrentValue = $element;
?><span class="wpgmp_widgets" style="font-size: 13px;font-weight: 500; margin-top:6px;">
<?php echo $element['label'];?></span><?php
if ( class_exists( 'FlipperCode_HTML_Markup' ) ) {
$atts = array(
'class' => 'widefat',
'value' => $instance[ $element['name'] ],
'id' => $this->get_field_id( $element['name'] ),
);
if(array_key_exists('options', $element))
$atts['options'] = $element['options'];
$functionName = 'field_' . $element['type'];
echo FlipperCode_HTML_Markup::$functionName( $this->get_field_name( $element['name'] ), $atts ) ;
}
}
}
}
}