Plugin Directory

source: event-post/tags/5.9.5/inc/class-multisite.php @ 3087067

Last change on this file since 3087067 was 3087067, checked in by bastho, 2 months ago

Deploy v5.9.5 - Set stable tag to 5.9.5

File size: 2.6 KB
Line 
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
12if(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 */
21class 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}
Note: See TracBrowser for help on using the repository browser.