File "widgets-class.php"

Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/plugins/sneeit-framework/includes/widgets/widgets-class.php
File size: 4.92 KB
MIME-type: text/x-php
Charset: utf-8

<?php
class WP_Sneeit_Widget extends WP_Widget {
	var $widget_declaration;
	var $widget_id;
	function __construct($widget_id, $widget_declaration) {
		$this->widget_declaration = $widget_declaration;
		$this->widget_id = $widget_id;
		parent::__construct(
			$widget_id, // Base ID
			$widget_declaration['title'], // Name
			array( 
				'description' => $widget_declaration['description']
			)
		);
	}


	/** use this function to decide how the widget settings 
	will display in your admin dashboard */
	public function form( $instance ) {
		include_once sneeit_framework_plugin_path('/includes/controls/controls.php');
		
		// validate instance first
		foreach ($this->widget_declaration['fields'] as $widget_field_id => $widget_field_declaration) :
			if (!isset($instance[$widget_field_id]) && isset($widget_field_declaration['default'])) {
				$instance[$widget_field_id] = $widget_field_declaration['default'];
			}
		endforeach;
		
		// show title fields
		$title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; 
		?><div class="sneeit-widget-title"><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'sneeit' ); ?></label><input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></div><?php
		
		// show other fields
		// remember skip title
		foreach ($this->widget_declaration['fields'] as $widget_field_id => $widget_field_declaration) :
			if ('title' == $widget_field_id) {
				continue;
			}
			$widget_field_declaration['id'] = $this->get_field_id($widget_field_id);
			$widget_field_declaration['name'] = $this->get_field_name($widget_field_id);
			
			if (in_array($widget_field_declaration['type'], array(
				'categories', 'tags', 'users', 'sidebars', 'selects'
			))) {
				$widget_field_declaration['name'] .= '[]';
			}
			
			$field_value = $widget_field_declaration['default'];
			if (isset( $instance[$widget_field_id] )) {
				$field_value = $instance[$widget_field_id];
			}
			
			?><p><?php
			new Sneeit_Controls($widget_field_id, $widget_field_declaration, $field_value);
			?></p><?php			
		endforeach;
	}

	/** use this function to decide the way widget data will
	be saved after admin update widget data */
	public function update( $new_instance, $old_instance ) {
		$instance = $old_instance;
		$instance['title'] = strip_tags($new_instance['title']);
		$debug = array(
			$new_instance
		);
		foreach ($this->widget_declaration['fields'] as $widget_field_id => $widget_field_declaration) :
			$field_type = $widget_field_declaration['type'];
			$field_value = $widget_field_declaration['default'];
			array_push($debug,$field_type);
			if (isset( $new_instance[$widget_field_id] )) {
				switch ($field_type) {					
					case 'categories':		
					case 'selects':					
					case 'tags':
					case 'users':
					case 'sidebars':
						$field_value = '';
						if (!empty($new_instance[$widget_field_id])) {
							$field_value = implode(',', $new_instance[$widget_field_id]);
						}
						break;
					
					case 'content':						
					default:
						$field_value = $new_instance[$widget_field_id];
						break;
				}
				$instance[$widget_field_id] = $field_value;
			} else {
				$instance[$widget_field_id] = '';
			}
			
		endforeach;
		
//		set_transient('debug', $debug);

		return $instance;
	}
	
	
	/** use this function to decide how the widget
	will display in your theme */
	public function widget( $args, $instance ) {
		
		if (isset($this->widget_declaration['display_callback']) && function_exists($this->widget_declaration['display_callback'])) {
			// validate fields before delevring
			foreach ($this->widget_declaration['fields'] as $widget_field_id => $widget_field_declaration) :
				if (!isset($instance[$widget_field_id]) && isset($widget_field_declaration['default'])) {
					$instance[$widget_field_id] = $widget_field_declaration['default'];
				} else if (	is_array($instance[$widget_field_id]) && 
							count($instance[$widget_field_id]) == 1 && 
							$instance[$widget_field_id][0] == '' &&
					(	$widget_field_declaration['type'] == 'categories' ||
						$widget_field_declaration['type'] == 'tags' ||
						$widget_field_declaration['type'] == 'users' ||
						$widget_field_declaration['type'] == 'selects'
					)
				) {
					$instance[$widget_field_id] = '';
				}
			endforeach;
			
			// add some base things, so user can easy work on it
			$args['sneeit_widget_header'] = '';
			$title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );

			$args['sneeit_widget_header'] .= $args['before_widget'];
			if ( $title ) {
				$args['sneeit_widget_header'] .= ($args['before_title'] . $title . $args['after_title']);
			}
			
			$args['sneeit_widget_footer'] = $args['after_widget'];
			
			call_user_func($this->widget_declaration['display_callback'], $args, $instance, $this->widget_id, $this->widget_declaration);
			return;
		}		
	}
}