1 | <?php |
---|
2 | /** |
---|
3 | * Multisite management |
---|
4 | * |
---|
5 | * @package event-post |
---|
6 | * @version 5.9.5 |
---|
7 | * @since 4.3 |
---|
8 | */ |
---|
9 | |
---|
10 | namespace EventPost; |
---|
11 | |
---|
12 | if(is_multisite()){ |
---|
13 | global $Multisite; |
---|
14 | $Multisite=new Multisite(); |
---|
15 | } |
---|
16 | |
---|
17 | /** |
---|
18 | * Event Post multisite support |
---|
19 | * Extends Event post to multisite networks |
---|
20 | */ |
---|
21 | class Multisite{ |
---|
22 | function __construct(){ |
---|
23 | add_filter('eventpost_params',array(&$this,'params'),1,2); |
---|
24 | add_filter('eventpost_get',array(&$this,'get'),1,3); |
---|
25 | } |
---|
26 | |
---|
27 | public function Multisite(){ |
---|
28 | $this->__construct(); |
---|
29 | } |
---|
30 | |
---|
31 | private function no_use(){ |
---|
32 | __('Extends Event post to multisite networks','event-post'); |
---|
33 | __('Event Post multisite support','event-post'); |
---|
34 | } |
---|
35 | |
---|
36 | /** |
---|
37 | * Adds "blogs" to params via `eventpost_params` filter |
---|
38 | * |
---|
39 | * @param array $param |
---|
40 | * @param string $context |
---|
41 | * |
---|
42 | * @see eventpost_params |
---|
43 | * |
---|
44 | * @return array |
---|
45 | */ |
---|
46 | public function params($param, $context){ |
---|
47 | $param['blogs']=''; |
---|
48 | return $param; |
---|
49 | } |
---|
50 | |
---|
51 | /** |
---|
52 | * Fetches events from all needed blogs |
---|
53 | * |
---|
54 | * @see eventpost_multisite_get |
---|
55 | * @see eventpost_multisite_blogids |
---|
56 | * |
---|
57 | * @return array of events |
---|
58 | */ |
---|
59 | public function get($empty,$arg,$requete){ |
---|
60 | $is_result=apply_filters('eventpost_multisite_get',$empty,$arg,$requete); |
---|
61 | if($is_result!=$empty) |
---|
62 | return $is_result; |
---|
63 | |
---|
64 | if(!is_array($arg) || !isset($arg['blogs']) || ''==$arg['blogs']) |
---|
65 | return $empty; |
---|
66 | //print_r($arg); |
---|
67 | $blog_ids=array(); |
---|
68 | if($arg['blogs']=='all'){ |
---|
69 | $blogs=get_sites(array('limit'=>0)); |
---|
70 | foreach ($blogs as $blog) { |
---|
71 | $blog_ids[]=$blog->blog_id; |
---|
72 | } |
---|
73 | } |
---|
74 | elseif(!empty($arg['blogs'])){ |
---|
75 | $blog_ids=apply_filters('eventpost_multisite_blogids',explode(',',$arg['blogs'])); |
---|
76 | } |
---|
77 | else{ |
---|
78 | return $empty; |
---|
79 | } |
---|
80 | |
---|
81 | |
---|
82 | global $EventPost,$wpdb; |
---|
83 | |
---|
84 | $all_events=array(); |
---|
85 | foreach ($blog_ids as $blog_id) { |
---|
86 | switch_to_blog($blog_id); |
---|
87 | $query = new WP_Query($requete); |
---|
88 | $events = $wpdb->get_col($query->request); |
---|
89 | foreach($events as $k=>$post){ |
---|
90 | $event = $EventPost->retreive($post); |
---|
91 | $aEvent = (array) $event; |
---|
92 | $all_events[($arg['orderby']!='meta_value' && isset($aEvent[$arg['orderby']])?$aEvent[$arg['orderby']]:$event->time_start).'-'.$blog_id.'-'.$event->ID]=$event; |
---|
93 | } |
---|
94 | restore_current_blog(); |
---|
95 | } |
---|
96 | if($arg['order']!=''){ |
---|
97 | $sort = $arg['order']=='DESC'?'krsort':'ksort'; |
---|
98 | $sort($all_events); |
---|
99 | } |
---|
100 | return $all_events; |
---|
101 | |
---|
102 | } |
---|
103 | } |
---|