/wp-content/plugins/fusion-core/shortcodes/class-counters-box.php
https://gitlab.com/woxiprogrammers/infinia-wordpress · PHP · 262 lines · 166 code · 75 blank · 21 comment · 25 complexity · 8b90b4abe3e35b482d70b692ba1707e2 MD5 · raw file
- <?php
- class FusionSC_CountersBox {
- public static $parent_args;
- public static $child_args;
- /**
- * Initiate the shortcode
- */
- public function __construct() {
- add_filter( 'fusion_attr_counters-box-shortcode', array( $this, 'parent_attr' ) );
- add_filter( 'fusion_attr_counter-box-container', array( $this, 'container_attr' ) );
- add_shortcode( 'counters_box', array( $this, 'render_parent' ) );
- add_filter( 'fusion_attr_counter-box-shortcode', array( $this, 'child_attr' ) );
- add_filter( 'fusion_attr_counter-box-shortcode-icon', array( $this, 'icon_attr' ) );
- add_filter( 'fusion_attr_counter-box-shortcode-unit', array( $this, 'unit_attr' ) );
- add_filter( 'fusion_attr_counter-box-shortcode-counter', array( $this, 'counter_attr' ) );
- add_filter( 'fusion_attr_counter-box-shortcode-counter-container', array( $this, 'counter_container_attr' ) );
- add_filter( 'fusion_attr_counter-box-shortcode-content', array( $this, 'content_attr' ) );
- add_shortcode( 'counter_box', array( $this, 'render_child' ) );
- }
- /**
- * Render the shortcode
- *
- * @param array $args Shortcode paramters
- * @param string $content Content between shortcode
- * @return string HTML output
- */
- function render_parent( $args, $content = '' ) {
- global $smof_data;
- $defaults = FusionCore_Plugin::set_shortcode_defaults(
- array(
- 'class' => '',
- 'id' => '',
- 'body_color' => strtolower( $smof_data['counter_box_body_color'] ),
- 'body_size' => strtolower( $smof_data['counter_box_body_size'] ),
- 'border_color' => strtolower( $smof_data['counter_box_border_color'] ),
- 'color' => strtolower( $smof_data['counter_box_color'] ),
- 'columns' => '',
- 'icon_size' => strtolower( $smof_data['counter_box_icon_size'] ),
- 'icon_top' => strtolower( $smof_data['counter_box_icon_top'] ),
- 'title_size' => strtolower( $smof_data['counter_box_title_size'] ),
- ), $args
- );
- extract( $defaults );
-
- self::$parent_args = $defaults;
-
- if( self::$parent_args['columns'] > 6 ) {
- self::$parent_args['columns'] = 6;
- }
-
- $this->set_num_of_columns( $content );
- $html = sprintf( '<div %s>%s</div><div class="clearfix"></div>', FusionCore_Plugin::attributes( 'counters-box-shortcode' ), do_shortcode( $content ) );
- return $html;
- }
- function parent_attr() {
- $attr['class'] = sprintf( 'fusion-counters-box counters-box row fusion-clearfix fusion-columns-%s', self::$parent_args['columns'] );
- if( self::$parent_args['class'] ) {
- $attr['class'] .= ' ' . self::$parent_args['class'];
- }
- if( self::$parent_args['id'] ) {
- $attr['id'] = self::$parent_args['id'];
- }
- return $attr;
- }
- function container_attr() {
- $attr['class'] = 'counter-box-container';
- $attr['style'] = sprintf( 'border: 1px solid %s;', self::$parent_args['border_color'] );
- return $attr;
- }
- /**
- * Render the child shortcode
- *
- * @param array $args Shortcode paramters
- * @param string $content Content between shortcode
- * @return string HTML output
- */
- function render_child( $args, $content = '' ) {
- global $smof_data;
- $defaults = FusionCore_Plugin::set_shortcode_defaults(
- array(
- 'class' => '',
- 'id' => '',
- 'delimiter' => '',
- 'direction' => 'up',
- 'icon' => '',
- 'unit' => '',
- 'unit_pos' => 'suffix',
- 'value' => '20'
- ), $args
- );
- extract( $defaults );
- self::$child_args = $defaults;
- self::$child_args['value'] = intval( $value );
- $unit_output = '';
- if( $unit ) {
- $unit_output = sprintf( '<span %s>%s</span>', FusionCore_Plugin::attributes( 'counter-box-shortcode-unit' ), $unit );
- }
- if( $direction == 'up' ) {
- $init_value = 0;
- } else {
- $init_value = self::$child_args['value'];
- }
- $counter = sprintf( '<span %s>%s</span>', FusionCore_Plugin::attributes( 'counter-box-shortcode-counter' ), $init_value );
- $icon_output = '';
- if( $icon ) {
- $icon_output = sprintf( '<i %s></i>', FusionCore_Plugin::attributes( 'counter-box-shortcode-icon' ) );
- }
- if( $unit_pos == 'prefix' ) {
- $counter = $icon_output . $unit_output . $counter;
- } else {
- $counter = $icon_output . $counter . $unit_output;
- }
- $counter_wrapper = sprintf( '<div %s>%s</div>', FusionCore_Plugin::attributes( 'counter-box-shortcode-counter-container' ), $counter );
- $content_output = sprintf( '<div %s>%s</div>', FusionCore_Plugin::attributes( 'counter-box-shortcode-content' ), do_shortcode( $content ) );
- $html = sprintf( '<div %s><div %s>%s</div></div>', FusionCore_Plugin::attributes( 'counter-box-shortcode' ), FusionCore_Plugin::attributes( 'counter-box-container' ),
- $counter_wrapper . $content_output );
- return $html;
- }
- function child_attr() {
- if( self::$parent_args['columns'] &&
- ! empty( self::$parent_args['columns'] )
- ) {
- $columns = 12 / self::$parent_args['columns'];
- } else {
- $columns = 1;
- }
- $attr['class'] = 'fusion-counter-box fusion-column col-counter-box counter-box-wrapper col-lg-' . $columns . ' col-md-' . $columns . ' col-sm-' . $columns;
-
- if( self::$parent_args['columns'] == '5' ) {
- $attr['class'] = 'fusion-counter-box fusion-column col-counter-box counter-box-wrapper col-lg-2 col-md-2 col-sm-2';
- }
-
- if( self::$child_args['class'] ) {
- $attr['class'] .= ' ' . self::$child_args['class'];
- }
-
- if( self::$child_args['id'] ) {
- $attr['id'] = self::$child_args['id'];
- }
- return $attr;
- }
-
- function icon_attr() {
- $attr['class'] = sprintf( 'counter-box-icon fa fontawesome-icon %s', FusionCore_Plugin::font_awesome_name_handler( self::$child_args['icon'] ) );
- $attr['style'] = sprintf( 'font-size:%spx;', self::$parent_args['icon_size'] );
- if( self::$parent_args['icon_top'] == 'yes' ) {
- $attr['style'] .= 'display:block;';
- }
- return $attr;
- }
- function unit_attr() {
- $attr['class'] = 'unit';
- return $attr;
- }
- function counter_attr() {
- $attr['class'] = 'display-counter';
- $attr['data-value'] = self::$child_args['value'];
- $attr['data-delimiter'] = self::$child_args['delimiter'];
- $attr['data-direction'] = self::$child_args['direction'];
- return $attr;
- }
- function counter_container_attr() {
- $attr['class'] = 'content-box-percentage content-box-counter';
-
- $attr['style'] = sprintf( 'color:%s;font-size:%spx;line-height:%s;', self::$parent_args['color'], self::$parent_args['title_size'], 'normal' );
- return $attr;
- }
- function content_attr() {
- $attr['class'] = 'counter-box-content';
- $attr['style'] = sprintf( 'color:%s;font-size:%spx;', self::$parent_args['body_color'], self::$parent_args['body_size'] );
- return $attr;
- }
-
- /**
- * Calculate the number of columns automatically
- * @param string $content Content to be parsed
- */
- function set_num_of_columns( $content ) {
- if( ! self::$parent_args['columns'] ) {
- preg_match_all( '/(\[counter_box (.*?)\](.*?)\[\/counter_box\])/s', $content, $matches );
- if( is_array( $matches ) &&
- ! empty( $matches )
- ) {
- self::$parent_args['columns'] = count( $matches[0] );
- if( self::$parent_args['columns'] > 6 ) {
- self::$parent_args['columns'] = 6;
- }
- } else {
- self::$parent_args['columns'] = 1;
- }
- } elseif( self::$parent_args['columns'] > 6 ) {
- self::$parent_args['columns'] = 6;
- }
- }
- }
- new FusionSC_CountersBox();