function activity_privacy($sql, $select_sql, $from_sql, $where_sql, $sort, $pag_sql = '')
 {
     if (is_rt_admin()) {
         return $sql;
     }
     $sql = '';
     $where = '';
     global $bp, $wpdb;
     $rtmedia_model = new RTMediaModel();
     if (is_user_logged_in()) {
         $user = get_current_user_id();
     } else {
         $user = 0;
     }
     $activity_upgrade_done = rtmedia_get_site_option('rtmedia_activity_done_upgrade');
     // admin has upgraded rtmedia activity so we can use rt_rtm_activity table for rtmedia related activity filters
     if ($activity_upgrade_done) {
         $rtmedia_activity_model = new RTMediaActivityModel();
         $where .= " (ra.privacy is NULL OR ra.privacy <= 0) ";
         if ($user) {
             $where .= "OR ((ra.privacy=20)";
             $where .= " OR (a.user_id={$user} AND ra.privacy >= 40)";
             if (class_exists('BuddyPress')) {
                 if (bp_is_active('friends')) {
                     $friendship = new RTMediaFriends();
                     $friends = $friendship->get_friends_cache($user);
                     if (isset($friends) && !empty($friends) != "") {
                         $where .= " OR (ra.privacy=40 AND a.user_id IN ('" . implode("','", $friends) . "'))";
                     }
                 }
             }
             $where .= ')';
         }
         if (function_exists("bp_core_get_table_prefix")) {
             $bp_prefix = bp_core_get_table_prefix();
         } else {
             $bp_prefix = "";
         }
         if (strpos($select_sql, "SELECT DISTINCT") === false) {
             $select_sql = str_replace("SELECT", "SELECT DISTINCT", $select_sql);
         }
         $from_sql = " FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID LEFT JOIN {$rtmedia_model->table_name} m ON ( a.id = m.activity_id AND m.blog_id = '" . get_current_blog_id() . "' ) LEFT JOIN {$rtmedia_activity_model->table_name} ra ON ( a.id = ra.activity_id and ra.blog_id = '" . get_current_blog_id() . "' ) ";
         $where_sql = $where_sql . " AND (NOT EXISTS (SELECT m.activity_id FROM {$bp_prefix}bp_activity_meta m WHERE m.meta_key='rtmedia_privacy' AND m.activity_id=a.id) OR ( {$where} ) )";
         $newsql = "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}";
     } else {
         $where .= " (m.max_privacy is NULL OR m.max_privacy <= 0) ";
         if ($user) {
             $where .= "OR ((m.max_privacy=20)";
             $where .= " OR (a.user_id={$user} AND m.max_privacy >= 40)";
             if (class_exists('BuddyPress')) {
                 if (bp_is_active('friends')) {
                     $friendship = new RTMediaFriends();
                     $friends = $friendship->get_friends_cache($user);
                     if (isset($friends) && !empty($friends) != "") {
                         $where .= " OR (m.max_privacy=40 AND a.user_id IN ('" . implode("','", $friends) . "'))";
                     }
                 }
             }
             $where .= ')';
         }
         if (function_exists("bp_core_get_table_prefix")) {
             $bp_prefix = bp_core_get_table_prefix();
         } else {
             $bp_prefix = "";
         }
         if (strpos($select_sql, "SELECT DISTINCT") === false) {
             $select_sql = str_replace("SELECT", "SELECT DISTINCT", $select_sql);
         }
         $media_table = "SELECT *, max( privacy ) as max_privacy from {$rtmedia_model->table_name} group by activity_id";
         $from_sql = " FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID LEFT JOIN ( {$media_table} ) m ON ( a.id = m.activity_id AND m.blog_id = '" . get_current_blog_id() . "' ) ";
         $where_sql = $where_sql . " AND (NOT EXISTS (SELECT m.activity_id FROM {$bp_prefix}bp_activity_meta m WHERE m.meta_key='rtmedia_privacy' AND m.activity_id=a.id) OR ( {$where} ) )";
         $newsql = "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}";
     }
     return $newsql;
 }
示例#2
0
 function activity_privacy($sql, $select_sql, $from_sql, $where_sql, $sort, $pag_sql = '')
 {
     if (is_rt_admin()) {
         return $sql;
     }
     $sql = '';
     $where = '';
     global $bp, $wpdb;
     $rtmedia_model = new RTMediaModel();
     if (is_user_logged_in()) {
         $user = get_current_user_id();
     } else {
         $user = 0;
     }
     // admin has upgraded rtmedia activity so we can use rt_rtm_activity table for rtmedia related activity filters
     if ($this->can_use_rtm_ac_privacy()) {
         $rtmedia_activity_model = new RTMediaActivityModel();
         $where .= " ({$this->rtm_activity_table_alias}.privacy is NULL OR {$this->rtm_activity_table_alias}.privacy <= 0) ";
         if ($user) {
             $where .= "OR (({$this->rtm_activity_table_alias}.privacy=20)";
             $where .= " OR (a.user_id={$user} AND {$this->rtm_activity_table_alias}.privacy >= 40)";
             if (class_exists('BuddyPress')) {
                 if (bp_is_active('friends')) {
                     $friendship = new RTMediaFriends();
                     $friends = $friendship->get_friends_cache($user);
                     if (isset($friends) && !empty($friends)) {
                         $in_str_arr = array_fill(0, count($friends), '%d');
                         $in_str = join(',', $in_str_arr);
                         $where .= $wpdb->prepare(" OR ({$this->rtm_activity_table_alias}.privacy=40 AND a.user_id IN ({$in_str}) )", $friends);
                         // @codingStandardsIgnoreLine
                     }
                 }
             }
             $where .= ')';
         }
         if (strpos($select_sql, 'SELECT DISTINCT') === false) {
             $select_sql = str_replace('SELECT', 'SELECT DISTINCT', $select_sql);
         }
         $select_sql .= " ,{$this->rtm_activity_table_alias}.privacy ";
         $from_sql = $wpdb->prepare(" FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID LEFT JOIN {$rtmedia_activity_model->table_name} {$this->rtm_activity_table_alias} ON ( a.id = {$this->rtm_activity_table_alias}.activity_id and ra.blog_id = %d ) ", get_current_blog_id());
         // @codingStandardsIgnoreLine
         // removed NOT EXISTS check for `rtmedia_privacy` activty meta value.
         // check git history for more details ;)
         $where_sql = $where_sql . " AND ({$where})";
         $newsql = "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}";
     } else {
         $where .= ' (m.max_privacy is NULL OR m.max_privacy <= 0) ';
         if ($user) {
             $where .= 'OR ((m.max_privacy=20)';
             $where .= " OR (a.user_id={$user} AND m.max_privacy >= 40)";
             if (class_exists('BuddyPress')) {
                 if (bp_is_active('friends')) {
                     $friendship = new RTMediaFriends();
                     $friends = $friendship->get_friends_cache($user);
                     if (isset($friends) && !empty($friends)) {
                         $where .= " OR (m.max_privacy=40 AND a.user_id IN ('" . implode("','", $friends) . "'))";
                     }
                 }
             }
             $where .= ')';
         }
         if (function_exists('bp_core_get_table_prefix')) {
             $bp_prefix = bp_core_get_table_prefix();
         } else {
             $bp_prefix = '';
         }
         if (strpos($select_sql, 'SELECT DISTINCT') === false) {
             $select_sql = str_replace('SELECT', 'SELECT DISTINCT', $select_sql);
         }
         $media_table = "SELECT *, max( privacy ) as max_privacy from {$rtmedia_model->table_name} group by activity_id";
         $from_sql = $wpdb->prepare(" FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID LEFT JOIN ( {$media_table} ) m ON ( a.id = m.activity_id AND m.blog_id = %d ) ", get_current_blog_id());
         // @codingStandardsIgnoreLine
         $where_sql = $where_sql . " AND (NOT EXISTS (SELECT m.activity_id FROM {$bp_prefix}bp_activity_meta m WHERE m.meta_key='rtmedia_privacy' AND m.activity_id=a.id) OR ( {$where} ) )";
         $newsql = "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}";
     }
     return $newsql;
 }