示例#1
0
/**
 * Filter activity permalink and make it point to single media if the activity has an associated media
 * 
 * @param string $link
 * @param type $activity
 * @return string
 */
function mpp_filter_activity_permalink($link, $activity)
{
    $activity_id = $activity->id;
    //get parent activity id
    if ('activity_comment' == $activity->type) {
        $activity_id = $activity->item_id;
        $activity = new BP_Activity_Activity($activity_id);
    }
    if ($activity->type != 'mpp_media_upload') {
        return $link;
    }
    $context = mpp_activity_get_context($activity_id);
    $gallery_id = mpp_activity_get_gallery_id($activity->id);
    if (!$gallery_id) {
        return $link;
    }
    //make sure that gallery exists
    $gallery = mpp_get_gallery($gallery_id);
    if (!$gallery) {
        return $link;
    }
    //if we are here, It is a gallery/media activity
    $media_id = mpp_activity_get_media_id($activity_id);
    if ($media_id && ($media = mpp_get_media($media_id))) {
        $link = mpp_get_media_permalink($media) . "#activity-{$activity_id}";
    } else {
        $link = mpp_get_gallery_permalink($gallery) . "#activity-{$activity_id}";
    }
    return $link;
}
示例#2
0
/**
 * Filter activity permalink and make it point to single media if the activity has an associated media
 * 
 * @param string $link
 * @param type $activity
 * @return string
 */
function mpp_filter_activity_permalink($link, $activity)
{
    $activity_id = $activity->id;
    if ('activity_comment' == $activity->type) {
        $activity_id = $activity->item_id;
    }
    if ($media_id = mpp_activity_get_media_id($activity_id)) {
        $link = mpp_get_media_permalink($media_id) . "#activity-{$activity_id}";
    } elseif ($gallery_id = mpp_activity_get_gallery_id($activity->id)) {
        $link = mpp_get_gallery_permalink($gallery_id) . "#activity-{$activity_id}";
    }
    return $link;
}
function mpp_get_adjacent_media_link($format, $link, $media_id = null, $previous = false)
{
    if (!$media_id) {
        $media_id = mpp_get_current_media_id();
    }
    if (!$previous) {
        $next_media_id = mpp_get_next_media_id($media_id);
    } else {
        $next_media_id = mpp_get_previous_media_id($media_id);
    }
    if (!$next_media_id) {
        return;
    }
    $media = mpp_get_media($next_media_id);
    if (empty($media)) {
        return;
    }
    $title = mpp_get_media_title($media);
    $css_class = $previous ? 'mpp-previous' : 'mpp-next';
    //css class
    if (empty($title)) {
        $title = $previous ? __('Previous', 'mediapress') : __('Next', 'mediapress');
    }
    $date = mysql2date(get_option('date_format'), $media->date_created);
    $rel = $previous ? 'prev' : 'next';
    $string = '<a href="' . mpp_get_media_permalink($media) . '" rel="' . $rel . '" class="' . $css_class . '">';
    $inlink = str_replace('%title', $title, $link);
    $inlink = str_replace('%date', $date, $inlink);
    $inlink = $string . $inlink . '</a>';
    $output = str_replace('%link', $inlink, $format);
    return $output;
}
示例#4
0
/**
 * Prepare Media for JSON
 *  this is a copy from send json for attachment, we will improve it in our 1.1 release
 * @todo refactor
 * @param type $attachment
 * @return type
 */
function mpp_media_to_json($attachment)
{
    if (!($attachment = get_post($attachment))) {
        return;
    }
    if ('attachment' != $attachment->post_type) {
        return;
    }
    //the attachment can be either a media or a cover
    //in case of media, if it is non photo, we need the thumb.url to point to the cover(or generated cover)
    //in case of cover, we don't care
    $media = mpp_get_media($attachment->ID);
    $meta = wp_get_attachment_metadata($attachment->ID);
    if (false !== strpos($attachment->post_mime_type, '/')) {
        list($type, $subtype) = explode('/', $attachment->post_mime_type);
    } else {
        list($type, $subtype) = array($attachment->post_mime_type, '');
    }
    $attachment_url = wp_get_attachment_url($attachment->ID);
    $response = array('id' => $media->id, 'title' => $media->title, 'filename' => wp_basename($attachment->guid), 'url' => $attachment_url, 'link' => mpp_get_media_permalink($media), 'alt' => $media->title, 'author' => $media->user_id, 'description' => $media->description, 'caption' => $media->excerpt, 'name' => $media->slug, 'status' => $media->status, 'parent_id' => $media->gallery_id, 'date' => strtotime($attachment->post_date_gmt) * 1000, 'modified' => strtotime($attachment->post_modified_gmt) * 1000, 'menuOrder' => $attachment->menu_order, 'mime' => $attachment->post_mime_type, 'type' => $media->type, 'subtype' => $subtype, 'dateFormatted' => mysql2date(get_option('date_format'), $attachment->post_date), 'meta' => false);
    if ($attachment->post_parent) {
        $post_parent = get_post($attachment->post_parent);
        $parent_type = get_post_type_object($post_parent->post_type);
        if ($parent_type && $parent_type->show_ui && current_user_can('edit_post', $attachment->post_parent)) {
            $response['uploadedToLink'] = get_edit_post_link($attachment->post_parent, 'raw');
        }
        $response['uploadedToTitle'] = $post_parent->post_title ? $post_parent->post_title : __('(no title)');
    }
    $attached_file = get_attached_file($attachment->ID);
    if (file_exists($attached_file)) {
        $bytes = filesize($attached_file);
        $response['filesizeInBytes'] = $bytes;
        $response['filesizeHumanReadable'] = size_format($bytes);
    }
    if ($meta && 'image' === $type) {
        $sizes = array();
        /** This filter is documented in wp-admin/includes/media.php */
        $possible_sizes = apply_filters('image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')));
        unset($possible_sizes['full']);
        // Loop through all potential sizes that may be chosen. Try to do this with some efficiency.
        // First: run the image_downsize filter. If it returns something, we can use its data.
        // If the filter does not return something, then image_downsize() is just an expensive
        // way to check the image metadata, which we do second.
        foreach ($possible_sizes as $size => $label) {
            /** This filter is documented in wp-includes/media.php */
            if ($downsize = apply_filters('image_downsize', false, $attachment->ID, $size)) {
                if (!$downsize[3]) {
                    continue;
                }
                $sizes[$size] = array('height' => $downsize[2], 'width' => $downsize[1], 'url' => $downsize[0], 'orientation' => $downsize[2] > $downsize[1] ? 'portrait' : 'landscape');
            } elseif (isset($meta['sizes'][$size])) {
                if (!isset($base_url)) {
                    $base_url = str_replace(wp_basename($attachment_url), '', $attachment_url);
                }
                // Nothing from the filter, so consult image metadata if we have it.
                $size_meta = $meta['sizes'][$size];
                // We have the actual image size, but might need to further constrain it if content_width is narrower.
                // Thumbnail, medium, and full sizes are also checked against the site's height/width options.
                list($width, $height) = image_constrain_size_for_editor($size_meta['width'], $size_meta['height'], $size, 'edit');
                $sizes[$size] = array('height' => $height, 'width' => $width, 'url' => $base_url . $size_meta['file'], 'orientation' => $height > $width ? 'portrait' : 'landscape');
            }
        }
        $sizes['full'] = array('url' => $attachment_url);
        if (isset($meta['height'], $meta['width'])) {
            $sizes['full']['height'] = $meta['height'];
            $sizes['full']['width'] = $meta['width'];
            $sizes['full']['orientation'] = $meta['height'] > $meta['width'] ? 'portrait' : 'landscape';
        }
        $response = array_merge($response, array('sizes' => $sizes), $sizes['full']);
    } elseif ($meta && 'video' === $type) {
        if (isset($meta['width'])) {
            $response['width'] = (int) $meta['width'];
        }
        if (isset($meta['height'])) {
            $response['height'] = (int) $meta['height'];
        }
    }
    if ($meta && ('audio' === $type || 'video' === $type)) {
        if (isset($meta['length_formatted'])) {
            $response['fileLength'] = $meta['length_formatted'];
        }
        $response['meta'] = array();
        foreach (wp_get_attachment_id3_keys($attachment, 'js') as $key => $label) {
            $response['meta'][$key] = false;
            if (!empty($meta[$key])) {
                $response['meta'][$key] = $meta[$key];
            }
        }
        $id = mpp_get_media_cover_id($attachment->ID);
        if (!empty($id)) {
            list($url, $width, $height) = wp_get_attachment_image_src($id, 'full');
            $response['image'] = compact('url', 'width', 'height');
            list($url, $width, $height) = wp_get_attachment_image_src($id, 'thumbnail');
            $response['thumb'] = compact('url', 'width', 'height');
        } else {
            $url = mpp_get_media_cover_src('thumbnail', $media->id);
            $width = 48;
            $height = 64;
            $response['image'] = compact('url', 'width', 'height');
            $response['thumb'] = compact('url', 'width', 'height');
        }
    }
    if (!in_array($type, array('image', 'audio', 'video'))) {
        //inject thumbnail
        $url = mpp_get_media_cover_src('thumbnail', $media->id);
        $width = 48;
        $height = 64;
        $response['image'] = compact('url', 'width', 'height');
        $response['thumb'] = compact('url', 'width', 'height');
    }
    return apply_filters('mpp_prepare_media_for_js', $response, $attachment, $meta);
}
/**
 * Record a new upload activity if auto publishing is enabled in the 
 * @param type $media_id
 */
function mpp_action_record_new_media_activity($media_id)
{
    if (!mpp_is_auto_publish_to_activity_enabled('add_media') || apply_filters('mpp_do_not_record_add_media_activity', false)) {
        return;
    }
    $media = mpp_get_media($media_id);
    //if media is upload from activity, do not publish it again to activity
    if ($media->context == 'activity') {
        return;
    }
    $user_link = mpp_get_user_link($media->user_id);
    $link = mpp_get_media_permalink($media);
    mpp_media_record_activity(array('media_id' => $media_id, 'type' => 'add_media', 'content' => '', 'action' => sprintf(__('%s added a new <a href="%s">%s</a>', 'mediapress'), $user_link, $link, $media->type)));
}
/**
 * Get the Edit media URL
 * 
 * @param type $media
 */
function mpp_get_media_edit_url($media = null)
{
    //change
    $permalink = mpp_get_media_permalink($media);
    return $permalink . '/edit/';
}
/**
 * Generate/Display breadcrumb 
 * @param array $args
 * @return string|null
 */
function mpp_gallery_breadcrumb($args = null)
{
    $default = array('separator' => '/', 'before' => '', 'after' => '', 'show_home' => false);
    $args = wp_parse_args($args, $default);
    extract($args);
    $crumbs = array();
    $component = mpp_get_current_component();
    $component_id = mpp_get_current_component_id();
    if (mediapress()->is_bp_active() && bp_is_active('groups') && bp_is_group()) {
        $name = bp_get_group_name(groups_get_current_group());
    } elseif (mediapress()->is_bp_active() && bp_is_user()) {
        $name = bp_get_displayed_user_fullname();
    } elseif ($component == 'sitewide') {
        $name = '';
    }
    $my_or_his_gallery = '';
    if ($name) {
        $my_or_his_gallery = sprintf(__("%s's gallery", 'mediapress'), $name);
    }
    if (function_exists('bp_is_my_profile') && bp_is_my_profile()) {
        $my_or_his_gallery = __('Your Galleries', 'mediapress');
    }
    if (mpp_is_media_management()) {
        $crumbs[] = ucwords(mediapress()->get_edit_action());
    }
    if (mpp_is_single_media()) {
        $media = mpp_get_current_media();
        if (mpp_is_media_management()) {
            $crumbs[] = sprintf('<a href="%s">%s</a>', mpp_get_media_permalink($media), mpp_get_media_title($media));
        } else {
            $crumbs[] = sprintf('<span>%s</span>', mpp_get_media_title($media));
        }
    }
    if (mpp_is_gallery_management()) {
        $crumbs[] = ucwords(mediapress()->get_edit_action());
    }
    if (mpp_is_single_gallery()) {
        $gallery = mpp_get_current_gallery();
        if (mpp_is_gallery_management() || mpp_is_single_media()) {
            $crumbs[] = sprintf('<a href="%s">%s</a>', mpp_get_gallery_permalink($gallery), mpp_get_gallery_title($gallery));
        } else {
            $crumbs[] = sprintf('<span>%s</span>', mpp_get_gallery_title($gallery));
        }
    }
    if ($my_or_his_gallery) {
        $crumbs[] = sprintf('<a href="%s">%s</a>', mpp_get_gallery_base_url($component, $component_id), $my_or_his_gallery);
    }
    if (count($crumbs) <= 1 && !$show_home) {
        return;
    }
    $crumbs = array_reverse($crumbs);
    echo join($separator, $crumbs);
}
示例#8
0
/**
 * Action links like view/edit/dele/upload to show on indiavidula media
 * 
 * @param type $media
 * @return type
 */
function mpp_get_media_action_links($media = null)
{
    $links = array();
    $media = mpp_get_media($media);
    $links['view'] = sprintf('<a href="%1$s" title="view %2$s" class="mpp-view-media">%3$s</a>', mpp_get_media_permalink($media), esc_attr($media->title), __('view', 'mediapress'));
    //upload?
    if (mpp_user_can_edit_media($media->id)) {
        $links['edit'] = sprintf('<a href="%s" alt="' . __('Edit %s', 'mediapress') . '">%s</a>', mpp_get_media_edit_url($media), $media->title, __('edit', 'mediapress'));
    }
    //delete
    if (mpp_user_can_delete_media($media)) {
        $links['delete'] = sprintf('<a href="%s" alt="' . __('delete %s', 'mediapress') . '" class="confirm mpp-confirm mpp-delete mpp-delete-media">%s</a>', mpp_get_media_delete_url($media), $media->title, __('delete', 'mediapress'));
    }
    return apply_filters('mpp_media_actions_links', join(' ', $links), $links, $media);
}