| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- /**
- * Adds compatibility methods between WP_Widget and scbForms.
- */
- abstract class scbWidget extends WP_Widget {
-
- /**
- * Widget defaults.
- * @var array
- */
- protected $defaults = array();
-
- /**
- * Widgets to register.
- * @var array
- */
- private static $scb_widgets = array();
-
- /**
- * Initializes widget.
- *
- * @param string $class
- * @param string $file (optional)
- * @param string $base (optional)
- *
- * @return void
- */
- public static function init( $class, $file = '', $base = '' ) {
- self::$scb_widgets[] = $class;
-
- add_action( 'widgets_init', array( __CLASS__, '_scb_register' ) );
-
- // for auto-uninstall
- if ( $file && $base && class_exists( 'scbOptions' ) ) {
- new scbOptions( "widget_$base", $file );
- }
- }
-
- /**
- * Registers widgets.
- *
- * @return void
- */
- public static function _scb_register() {
- foreach ( self::$scb_widgets as $widget ) {
- register_widget( $widget );
- }
- }
-
- /**
- * Displays widget content.
- *
- * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
- * @param array $instance The settings for the particular instance of the widget.
- *
- * @return void
- */
- public function widget( $args, $instance ) {
- $instance = wp_parse_args( $instance, $this->defaults );
-
- extract( $args );
-
- echo $before_widget;
-
- $title = apply_filters( 'widget_title', isset( $instance['title'] ) ? $instance['title'] : '', $instance, $this->id_base );
-
- if ( ! empty( $title ) ) {
- echo $before_title . $title . $after_title;
- }
-
- $this->content( $instance );
-
- echo $after_widget;
- }
-
- /**
- * This is where the actual widget content goes.
- *
- * @param array $instance The settings for the particular instance of the widget.
- *
- * @return void
- */
- protected function content( $instance ) { }
-
-
- //_____HELPER METHODS_____
-
-
- /**
- * Generates a input form field.
- *
- * @param array $args
- * @param array $formdata (optional)
- *
- * @return string
- */
- protected function input( $args, $formdata = array() ) {
- $prefix = array( 'widget-' . $this->id_base, $this->number );
-
- $form = new scbForm( $formdata, $prefix );
-
- // Add default class
- if ( ! isset( $args['extra'] ) && 'text' == $args['type'] ) {
- $args['extra'] = array( 'class' => 'widefat' );
- }
-
- // Add default label position
- if ( ! in_array( $args['type'], array( 'checkbox', 'radio' ) ) && empty( $args['desc_pos'] ) ) {
- $args['desc_pos'] = 'before';
- }
-
- $name = $args['name'];
-
- if ( ! is_array( $name ) && '[]' == substr( $name, -2 ) ) {
- $name = array( substr( $name, 0, -2 ), '' );
- }
-
- $args['name'] = $name;
-
- return $form->input( $args );
- }
-
- }
|