1: <?php
2: /**
3: * Multisite management
4: *
5: * @package event-post
6: * @version 5.10.1
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: }
104: