Advertisement
Guest User

Untitled

a guest
Feb 14th, 2020
420
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.03 KB | None | 0 0
  1. <?php
  2.  
  3. /******************************************************************************/
  4. /******************************************************************************/
  5.  
  6. class Autoride_ThemeWidgetArea
  7. {
  8.     /**************************************************************************/
  9.  
  10.     function __construct()
  11.     {
  12.         $this->widgetAreaData=array
  13.         (
  14.             0=>array(__('[None]','autoride'),'theme-page-sidebar-disable'),
  15.             1=>array(__('Left sidebar','autoride'),'theme-page-sidebar-enable theme-page-sidebar-left'),
  16.             2=>array(__('Right sidebar','autoride'),'theme-page-sidebar-enable theme-page-sidebar-right')
  17.         );     
  18.     }
  19.    
  20.     /**************************************************************************/
  21.    
  22.     function register()
  23.     {
  24.         if(!function_exists('register_sidebar')) return;
  25.        
  26.         register_sidebar(array
  27.         (
  28.             'id'=>'autoride_default',
  29.             'name'=>__('Default','autoride'),
  30.             'description'=>__('Built-in default sidebar.','autoride'),
  31.             'before_widget'=>'<div id="%1$s" class="%2$s theme-clear-fix theme-widget">',
  32.             'after_widget'=>'</div>',
  33.             'before_title'=>'<h5 class="theme-widget-header">',
  34.             'after_title'=>'<span></span></h5>'
  35.         ));
  36.        
  37.         if(!class_exists('WAWidgetArea'))
  38.         {  
  39.             $argument=array
  40.             (
  41.                 'post_type'=>'wa_widget_area',
  42.                 'posts_per_page'=>-1,
  43.                 'orderby'=>'title',
  44.                 'order'=>'asc'
  45.             );
  46.  
  47.             $query=new WP_Query($argument);
  48.             if($query===false) return;
  49.            
  50.             foreach($query->posts as $value)
  51.                 register_sidebar(array('id'=>'wa_'.$value->ID,'name'=>$value->post_title));
  52.         }
  53.     }
  54.    
  55.     /**************************************************************************/
  56.  
  57.     function getWidgetAreaByPost($post,$widgetArea,$location=false)
  58.     {
  59.         $data=array('id'=>0,'location'=>0);
  60.        
  61.         if((is_front_page()) && ($location))
  62.         {
  63.             $data=array('id'=>'autoride_default','location'=>2);
  64.             return($data);
  65.         }
  66.        
  67.         if(!is_object($post)) return($data);
  68.  
  69.         $id=Autoride_ThemeOption::getGlobalOption($post,$widgetArea,Autoride_ThemeOption::getOptionPrefix($post));
  70.        
  71.         if($location) $location=Autoride_ThemeOption::getGlobalOption($post,$widgetArea.'_location',Autoride_ThemeOption::getOptionPrefix($post)); 
  72.         else $location=3;
  73.        
  74.         if(strcmp($id,'0')==0) return($data);
  75.         if(strcmp($location,'0')==0) return($data);
  76.        
  77.         if(empty($id)) $location=0;
  78.        
  79.         return(array('id'=>$id,'location'=>$location));
  80.     }
  81.    
  82.     /**************************************************************************/
  83.    
  84.     function getWidgetAreaCSSClass($data)
  85.     {
  86.         if(isset($this->widgetAreaData[$data['location']]))
  87.             return($this->widgetAreaData[$data['location']][1]);
  88.         else return($this->widgetAreaData[0][1]);
  89.     }
  90.    
  91.     /**************************************************************************/
  92.    
  93.     function getWidgetAreaDictionary($useNone=true,$useGlobal=true,$useLeftUnchanged=false)
  94.     {
  95.         global $wp_registered_sidebars;
  96.  
  97.         $data=array();
  98.         $temp=array();
  99.        
  100.         if($useNone) $data[0]=array(__('[None]','autoride'));
  101.         if($useGlobal) $data[-1]=array(__('[Use global settings]','autoride'));
  102.         if($useLeftUnchanged) $data[-10]=array(__('[Left unchanged]','autoride'));
  103.        
  104.         foreach($wp_registered_sidebars as $value)
  105.             $temp[$value['id']]=$value['name'];
  106.        
  107.         asort($temp);
  108.        
  109.         foreach($temp as $index=>$value)
  110.             $data[$index]=array($value);
  111.        
  112.         return($data);
  113.     }
  114.    
  115.     /**************************************************************************/
  116.    
  117.     function getWidgetAreaLocationDictionary($useNone=true,$useGlobal=true,$useLeftUnchanged=false)
  118.     {
  119.         $data=array();
  120.        
  121.         if($useNone) $data[0]=array(__('[None]','autoride'));
  122.         if($useGlobal) $data[-1]=array(__('[Use global settings]','autoride'));
  123.         if($useLeftUnchanged) $data[-10]=array(__('[Left unchanged]','autoride'));
  124.        
  125.         foreach($this->widgetAreaData as $index=>$value)
  126.         {
  127.             if($index==0) continue;
  128.             $data[$index]=array($value[0]);
  129.         }
  130.        
  131.         return($data);
  132.     }
  133.    
  134.     /**************************************************************************/
  135.  
  136.     function create($widgetArea,$echo=true)
  137.     {
  138.         if(!function_exists('dynamic_sidebar')) return;
  139.         if(is_active_sidebar($widgetArea['id']))
  140.         {
  141.             if($widgetArea['location']==3)
  142.             {
  143.                 $this->widgetAreaCounter=0;
  144.                
  145.                 $this->setWidgetAreaLayout($widgetArea['id']);
  146.                
  147.                 $html=$this->dynamicSidebar($widgetArea['id']);
  148.                
  149.                 if($this->widgetAreaCounter!=0) $html.='[/vc_row]';
  150.                
  151.                 $this->unsetWidgetAreaLayout($widgetArea['id']);
  152.                
  153.                 if($echo) echo do_shortcode($html);
  154.                 else return(do_shortcode($html));
  155.             }
  156.             else
  157.             {
  158.                 if($echo) echo do_shortcode($this->dynamicSidebar($widgetArea['id']));
  159.                 else return(do_shortcode($this->dynamicSidebar($widgetArea['id'])));
  160.             }
  161.         }
  162.     }
  163.    
  164.     /**************************************************************************/
  165.    
  166.     static function createS($widgetArea)
  167.     {
  168.         $WidgetArea=new Autoride_ThemeWidgetArea();
  169.         return($WidgetArea->create($widgetArea,false));
  170.     }
  171.  
  172.     /**************************************************************************/
  173.    
  174.     function dynamicSidebar($widgetAreaId)
  175.     {
  176.         ob_start();
  177.         dynamic_sidebar($widgetAreaId);
  178.         $content=ob_get_clean();
  179.         return($content);      
  180.     }
  181.    
  182.     /**************************************************************************/
  183.    
  184.     function setWidgetAreaLayout($widgetAreaId)
  185.     {
  186.         $Plugin=new Autoride_ThemePlugin();    
  187.        
  188.         $this->widgetAreaCounter=0;
  189.        
  190.         if($Plugin->isActive('WAWidgetArea'))
  191.         {
  192.             $postId=0;
  193.            
  194.             $data=explode('_',$widgetAreaId);
  195.             if(isset($data[1])) $postId=(int)$data[1];
  196.    
  197.             $meta=get_post_meta($postId,PLUGIN_WIDGET_AREA_CONTEXT,false);
  198.             if(isset($meta[0])) $meta=$meta[0];    
  199.            
  200.             WAHelper::removeUIndex($meta,'layout');
  201.             $this->widgetAreaLayout=$meta['layout'];
  202.         }
  203.         else $this->widgetAreaLayout='1/1';
  204.        
  205.         add_filter('dynamic_sidebar_params',array($this,'setWidgetLayout'));
  206.     }
  207.    
  208.     /**************************************************************************/
  209.    
  210.     function unsetWidgetAreaLayout()
  211.     {
  212.         remove_filter('dynamic_sidebar_params',array($this,'setWidgetLayout'),10);
  213.     }
  214.    
  215.     /**************************************************************************/
  216.    
  217.     function setWidgetLayout($parameter)
  218.     {
  219.         $Layout=new Autoride_ThemeLayout();
  220.        
  221.         $before=$after=null;
  222.        
  223.         if($this->widgetAreaCounter==0) $before='[vc_row gap="'.$Layout->getLayoutGap($this->widgetAreaLayout).'"]';
  224.         $before.='[vc_column width="'.$Layout->getLayoutColumnWidth($this->widgetAreaLayout,$this->widgetAreaCounter).'"]';
  225.        
  226.         $this->widgetAreaCounter++;
  227.        
  228.         $after='[/vc_column]';
  229.         if($this->widgetAreaCounter==$Layout->getLayoutColumnCount($this->widgetAreaLayout))
  230.         {
  231.             $after.='[/vc_row]';
  232.             $this->widgetAreaCounter=0;
  233.         }
  234.        
  235.         $parameter[0]['before_widget']=$before.$parameter[0]['before_widget'];
  236.         $parameter[0]['after_widget']=$parameter[0]['after_widget'].$after;
  237.  
  238.         return($parameter);
  239.     }
  240.    
  241.     /**************************************************************************/
  242. }
  243.  
  244. /******************************************************************************/
  245. /******************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement