function bp_media_shortcode_url($atts)
{
    extract(shortcode_atts(array('id' => '0'), $atts));
    try {
        $media = new BP_Media_Host_Wordpress($id);
        return $media->get_media_activity_url();
    } catch (Exception $e) {
        return home_url();
    }
}
function bp_media_activity_permalink_filter($link, $activity_obj = null)
{
    if ($activity_obj != null && 'media_upload' == $activity_obj->type) {
        add_shortcode('bp_media_url', 'bp_media_shortcode_url');
        $link = do_shortcode($activity_obj->primary_link);
        remove_shortcode('bp_media_url');
    }
    if ($activity_obj != null && 'activity_comment' == $activity_obj->type) {
        $parent = bp_activity_get_meta($activity_obj->item_id, 'bp_media_parent_post');
        if ($parent) {
            $parent = new BP_Media_Host_Wordpress($parent);
            $link = $parent->get_url();
        }
    }
    return $link;
}
function bp_media_upgrade_to_2_2()
{
    global $wpdb;
    remove_filter('bp_activity_get_user_join_filter', 'bp_media_activity_query_filter', 10);
    /* @var $wpdb wpdb */
    $media_files = new WP_Query(array('post_type' => 'bp_media', 'posts_per_page' => -1));
    $media_files = $media_files->posts;
    $wall_posts_album_ids = array();
    if (is_array($media_files) && count($media_files)) {
        foreach ($media_files as $media_file) {
            $attachment_id = get_post_meta($media_file->ID, 'bp_media_child_attachment', true);
            $child_activity = get_post_meta($media_file->ID, 'bp_media_child_activity', true);
            update_post_meta($attachment_id, 'bp_media_child_activity', $child_activity);
            $attachment = get_post($attachment_id, ARRAY_A);
            if (isset($wall_posts_album_ids[$media_file->post_author])) {
                $wall_posts_id = $wall_posts_album_ids[$media_file->post_author];
            } else {
                $wall_posts_id = $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE post_title = 'Wall Posts' AND post_author = '" . $media_file->post_author . "' AND post_type='bp_media_album'");
                if ($wall_posts_id == null) {
                    $album = new BP_Media_Album();
                    $album->add_album('Wall Posts', $media_file->post_author);
                    $wall_posts_id = $album->get_id();
                }
                if (!$wall_posts_id) {
                    continue;
                    //This condition should never be encountered
                }
                $wall_posts_album_ids[$media_file->post_author] = $wall_posts_id;
            }
            $attachment['post_parent'] = $wall_posts_id;
            wp_update_post($attachment);
            update_post_meta($attachment_id, 'bp-media-key', $media_file->post_author);
            $activity = bp_activity_get(array('in' => intval($child_activity)));
            if (isset($activity['activities'][0]->id)) {
                $activity = $activity['activities'][0];
            }
            $bp_media = new BP_Media_Host_Wordpress($attachment_id);
            $args = array('content' => $bp_media->get_media_activity_content(), 'id' => $child_activity, 'type' => 'media_upload', 'action' => apply_filters('bp_media_added_media', sprintf(__('%1$s added a %2$s', 'bp-media'), bp_core_get_userlink($media_file->post_author), '<a href="' . $bp_media->get_url() . '">' . $bp_media->get_media_activity_type() . '</a>')), 'primary_link' => $bp_media->get_url(), 'item_id' => $attachment_id, 'recorded_time' => $activity->date_recorded);
            $act_id = bp_media_record_activity($args);
            bp_activity_delete_meta($child_activity, 'bp_media_parent_post');
            wp_delete_post($media_file->ID);
        }
    }
    update_option('bp_media_db_version', BP_MEDIA_DB_VERSION);
    add_action('admin_notices', 'bp_media_database_updated_notice');
    wp_cache_flush();
}
function bp_media_delete_activity_handler_old($args)
{
    global $bp_media_count, $wpdb;
    if (!array_key_exists('id', $args)) {
        return;
    }
    $activity_id = $args['id'];
    $query = "SELECT post_id from {$wpdb->postmeta} WHERE meta_key='bp_media_child_activity' AND meta_value={$activity_id}";
    $result = $wpdb->get_results($query);
    if (!(is_array($result) && count($result) == 1)) {
        return;
    }
    $post_id = $result[0]->post_id;
    $media = new BP_Media_Host_Wordpress($post_id);
    $media->delete_media();
}
function bp_media_the_content($id = 0)
{
    if (is_object($id)) {
        $media = $id;
    } else {
        $media =& get_post($id);
    }
    if (empty($media->ID)) {
        return false;
    }
    if (!$media->post_type == 'bp_media') {
        return false;
    }
    $media = new BP_Media_Host_Wordpress($media->ID);
    echo $media->get_media_gallery_content();
}
function bp_media_shortcode_url($atts)
{
    extract(shortcode_atts(array('id' => '0'), $atts));
    $media = new BP_Media_Host_Wordpress($id);
    return $media->get_media_activity_url();
}
function bp_media_update_album_activity($album, $current_time = true, $delete_media_id = null)
{
    if (!is_object($album)) {
        $album = new BP_Media_Album($album);
    }
    $args = array('post_parent' => $album->get_id(), 'numberposts' => 4, 'post_type' => 'attachment');
    if ($delete_media_id) {
        $args['exclude'] = $delete_media_id;
    }
    $attachments = get_posts($args);
    if (is_array($attachments)) {
        $content = '<ul>';
        foreach ($attachments as $media) {
            $bp_media = new BP_Media_Host_Wordpress($media->ID);
            $content .= $bp_media->get_album_activity_content();
        }
        $content .= '</ul>';
        $activity_id = get_post_meta($album->get_id(), 'bp_media_child_activity');
        if ($activity_id) {
            $args = array('in' => $activity_id);
            $activity = @bp_activity_get($args);
            if (isset($activity['activities'][0]->id)) {
                $args = array('content' => $content, 'id' => $activity_id, 'type' => 'album_updated', 'user_id' => $activity['activities'][0]->user_id, 'action' => apply_filters('bp_media_filter_album_updated', sprintf(__('%1$s added new media in album %2$s', 'bp-media'), bp_core_get_userlink($activity['activities'][0]->user_id), '<a href="' . $album->get_url() . '">' . $album->get_title() . '</a>')), 'component' => BP_MEDIA_SLUG, 'primary_link' => $activity['activities'][0]->primary_link, 'item_id' => $activity['activities'][0]->item_id, 'secondary_item_id' => $activity['activities'][0]->secondary_item_id, 'recorded_time' => $current_time ? bp_core_current_time() : $activity['activities'][0]->date_recorded, 'hide_sitewide' => $activity['activities'][0]->hide_sitewide);
                bp_media_record_activity($args);
            }
        }
    }
}
function bp_media_entry_delete()
{
    global $bp;
    if (bp_loggedin_user_id() != bp_displayed_user_id()) {
        bp_core_no_access(array('message' => __('You do not have access to this page.', 'buddypress'), 'root' => bp_displayed_user_domain(), 'redirect' => false));
        exit;
    }
    if (!isset($bp->action_variables[1])) {
        @setcookie('bp-message', 'The requested url does not exist', time() + 60 * 60 * 24, COOKIEPATH);
        @setcookie('bp-message-type', 'error', time() + 60 * 60 * 24, COOKIEPATH);
        wp_redirect(trailingslashit(bp_displayed_user_domain() . BP_MEDIA_IMAGES_SLUG));
        exit;
    }
    global $bp_media_current_entry;
    try {
        $bp_media_current_entry = new BP_Media_Host_Wordpress($bp->action_variables[1]);
    } catch (Exception $e) {
        /* Send the values to the cookie for page reload display */
        @setcookie('bp-message', $e->getMessage(), time() + 60 * 60 * 24, COOKIEPATH);
        @setcookie('bp-message-type', 'error', time() + 60 * 60 * 24, COOKIEPATH);
        wp_redirect(trailingslashit(bp_displayed_user_domain() . BP_MEDIA_IMAGES_SLUG));
        exit;
    }
    $post_id = $bp_media_current_entry->get_id();
    $activity_id = get_post_meta($post_id, 'bp_media_child_activity', true);
    bp_activity_delete_by_activity_id($activity_id);
    $bp_media_current_entry->delete_media();
    @setcookie('bp-message', __('Media deleted successfully', 'bp-media'), time() + 60 * 60 * 24, COOKIEPATH);
    @setcookie('bp-message-type', 'success', time() + 60 * 60 * 24, COOKIEPATH);
    wp_redirect(trailingslashit(bp_displayed_user_domain() . BP_MEDIA_IMAGES_SLUG));
    exit;
}
/**
 * Function to return the media for the ajax requests
 */
function bp_media_load_more()
{
    global $bp, $bp_media_query;
    $page = isset($_POST['page']) ? $_POST['page'] : die;
    $current_action = isset($_POST['current_action']) ? $_POST['current_action'] : null;
    $action_variables = isset($_POST['action_variables']) ? $_POST['action_variables'] : null;
    $displayed_user = isset($_POST['displayed_user']) ? $_POST['displayed_user'] : null;
    $loggedin_user = isset($_POST['loggedin_user']) ? $_POST['loggedin_user'] : null;
    if (!$displayed_user || intval($displayed_user) == 0) {
        die;
    }
    $posts_per_page = 10;
    switch ($current_action) {
        case BP_MEDIA_IMAGES_SLUG:
            $args = array('post_type' => 'attachment', 'post_status' => 'any', 'post_mime_type' => 'image', 'author' => $bp->displayed_user->id, 'meta_key' => 'bp-media-key', 'meta_value' => $bp->displayed_user->id, 'meta_compare' => 'LIKE', 'paged' => $page, 'posts_per_page' => $posts_per_page);
            break;
        case BP_MEDIA_AUDIO_SLUG:
            $args = array('post_type' => 'attachment', 'post_status' => 'any', 'post_mime_type' => 'audio', 'author' => $bp->displayed_user->id, 'meta_key' => 'bp-media-key', 'meta_value' => $bp->displayed_user->id, 'meta_compare' => 'LIKE', 'paged' => $page, 'posts_per_page' => $posts_per_page);
            break;
        case BP_MEDIA_VIDEOS_SLUG:
            $args = array('post_type' => 'attachment', 'post_status' => 'any', 'post_mime_type' => 'video', 'author' => $bp->displayed_user->id, 'meta_key' => 'bp-media-key', 'meta_value' => $bp->displayed_user->id, 'meta_compare' => 'LIKE', 'paged' => $page, 'posts_per_page' => $posts_per_page);
            break;
        case BP_MEDIA_ALBUMS_SLUG:
            if (isset($action_variables) && is_array($action_variables) && isset($action_variables[0]) && isset($action_variables[1])) {
                $args = array('post_type' => 'attachment', 'post_status' => 'any', 'author' => $displayed_user, 'post_parent' => $action_variables[1], 'paged' => $page);
            } else {
                $args = array('post_type' => 'bp_media_album', 'author' => $displayed_user, 'paged' => $page);
            }
            break;
        default:
            die;
    }
    $bp_media_query = new WP_Query($args);
    if (isset($bp_media_query->posts) && is_array($bp_media_query->posts) && count($bp_media_query->posts)) {
        foreach ($bp_media_query->posts as $attachment) {
            try {
                $media = new BP_Media_Host_Wordpress($attachment->ID);
                echo $media->get_media_gallery_content();
            } catch (exception $e) {
                die;
            }
        }
    }
    die;
}
Esempio n. 10
0
    function widget($args, $instance)
    {
        extract($args);
        $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Media', 'bp-media') : $instance['title'], $instance, $this->id_base);
        if (empty($instance['number']) || !($number = absint($instance['number']))) {
            $number = 10;
        }
        echo $before_widget;
        echo $before_title . $title . $after_title;
        ?>
            <div id="popular-media-tabs" class="media-tabs-container">
<!--                <ul>
                    <li><a href="#popular-media-tabs-comments"><?php 
        _e('comments', 'bp-media');
        ?>
</a></li>
                    <li><a href="#popular-media-tabs-views"><?php 
        _e('Views', 'bp-media');
        ?>
</a></li>                    
                </ul>-->
                <div id="popular-media-tabs-comments" class="bp-media-tab-panel">                    
                    <?php 
        $args = array('post_type' => 'attachment', 'post_status' => 'any', 'posts_per_page' => $number, 'meta_key' => 'bp-media-key', 'meta_value' => 0, 'meta_compare' => '>', 'orderby' => 'comment_count');
        $bp_media_widget_query = new WP_Query($args);
        if ($bp_media_widget_query->have_posts()) {
            ?>
                    
                            <ul class="widget-item-listing"><?php 
            while ($bp_media_widget_query->have_posts()) {
                $bp_media_widget_query->the_post();
                $entry = new BP_Media_Host_Wordpress(get_the_ID());
                ?>

                                    <?php 
                echo $entry->get_media_gallery_content();
            }
            ?>
                                    
                            </ul><!-- .widget-item-listing --><?php 
        } else {
            _e('No popular media found', 'bp-media');
        }
        wp_reset_query();
        ?>
                    
                </div><!-- #popular-media-tabs-comments -->
            </div>
        <?php 
        echo $after_widget;
    }