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