linkTo($text, $source, ['rel' => 'nofollow']);
} else {
return $this->h($source);
}
}
public function print_preview($post, $options = array())
{
$is_post = $post instanceof Post;
if ($is_post && !CONFIG()->can_see_post(current_user(), $post))
return "";
$image_class = "preview";
!isset($options['url_params']) && $options['url_params'] = null;
$image_id = isset($options['image_id']) ? 'id="'.$options['image_id'].'"' : null;
$image_title = $is_post ? $this->h("Rating: ".$post->pretty_rating()." / Score: ".$post->score." / Tags: ".$this->h($post->cached_tags." / User: ".$post->author())) : null;
$link_onclick = isset($options['onclick']) ? 'onclick="'.$options['onclick'].'"' : null;
$link_onmouseover = isset($options['onmouseover']) ? ' onmouseover="'.$options['onmouseover'].'"' : null;
$link_onmouseout = isset($options['onmouseout']) ? ' onmouseout="'.$options['onmouseout'].'"' : null;
if (isset($options['display']) && $options['display'] == 'block') {
# Show the thumbnail at its actual resolution, and crop it with northern orientation
# to a smaller size.
list($width, $height) = $post->raw_preview_dimensions();
$block_size = array(200, 200);
$visible_width = min(array($block_size[0], $width));
$crop_left = ($width - $visible_width) / 2;
} elseif (isset($options['display']) && $options['display'] == 'large') {
list($width, $height) = $post->raw_preview_dimensions();
$block_size = array($width, $height);
$crop_left = 0;
} else {
# Scale it down to a smaller size. This is exactly one half the actual size, to improve
# resizing quality.
list($width, $height) = $post->preview_dimensions();
$block_size = array(150, 150);
$crop_left = 0;
}
$image = '';
if ($is_post) {
$plid = '#pl http://'.CONFIG()->server_host.'/post/show/'.$post->id.'';
$target_url = '/post/show/' . $post->id . '/' . $post->tag_title() . $options['url_params'];
} else {
$plid = "";
$target_url = $post->url;
}
$link_class = "thumb";
!$is_post && $link_class .= " no-browser-link";
$link = ''.$image.$plid.'';
$div = '
'.$link.'
';
if ($post->use_jpeg(current_user()) && empty($options['disable_jpeg_direct_links'])) {
$dl_width = $post->jpeg_width;
$dl_height = $post->jpeg_height;
$dl_url = $post->jpeg_url();
} else {
$dl_width = $post->width;
$dl_height = $post->height;
$dl_url = $post->file_url();
}
$directlink_info = '
';
$li_class = "";
$ddl_class = "directlink";
if ($post->width >= 3500 || $post->height >= 2600 )
$ddl_class .= " extremeimg";
else
$ddl_class .= ($post->width > 1920 || $post->height > 1500 )? " largeimg":" smallimg";
if ($post->file_ext == "jpg" || $post->file_ext == "jpeg")
$ddl_class .= " file-jpg";
if ($post->file_ext == "png")
$ddl_class .= " file-png";
if ($post->file_ext == "gif")
$ddl_class .= " file-gif";
if ($post->file_ext == "flv")
$ddl_class .= " file-flv";
if ($post->file_ext == "mp4")
$ddl_class .= " file-mp4";
if ($post->file_ext == "webm")
$ddl_class .= " file-webm";
if ($post->rating == "s")
$ddl_class .= " rating-s";
if ($post->rating == "q")
$ddl_class .= " rating-q";
if ($post->rating == "e")
$ddl_class .= " rating-e";
if (!empty($options['similarity'])) {
$icon = '';
$ddl_class .= " similar similar-directlink";
is_numeric($options['similarity']) && $options['similarity'] >= 90 && $li_class .= " similar-match";
is_string($options['similarity']) && $options['similarity'] == 'Original' && $li_class .= " similar-original";
$directlink_info = ''.$icon.''.$directlink_info;
}
if (!empty($options['hide_directlink']))
$directlink = "";
else {
$directlink_res = ''.$dl_width.' x '.$dl_height.'';
if (current_user()->can_see_posts())
$directlink = ''.$directlink_info.$directlink_res.'';
else
$directlink = ''.$directlink_info.$directlink_res.'';
}
if ($is_post) {
# Hide regular posts by default. They'll be unhidden by the scripts once the
# blacklists are loaded. Don't do this for ExternalPost, which don't support
# blacklists.
!empty($options['blacklisting']) && $li_class .= " javascript-hide";
$li_class .= " creator-id-".$post->user_id;
}
$post->is_flagged() && $li_class .= " flagged";
$post->has_children && $li_class .= " has-children";
$post->parent_id && $li_class .= " has-parent";
$post->is_pending() && $li_class .= " pending";
# We need to specify a width on the , since IE7 won't figure it out on its own.
$item = ''.$div.$directlink.'';
return $item;
}
public function auto_discovery_link_tag_with_id($type = 'rss', $url_options = array(), $tag_options = array())
{
if (is_array($url_options)) {
$url = array_shift($url_options);
$url_options['only_path'] = false;
$href = $this->urlFor($url, $url_options);
} else {
$href = $url_options;
}
return $this->tag(
"link", array(
"rel" => isset($tag_options['rel']) ? $tag_options['rel'] : "alternate",
"type" => isset($tag_options['type']) ? $tag_options['type'] : "application/".$type."+xml",
"title" => isset($tag_options['title']) ? $tag_options['title'] : strtoupper($type),
"id" => $tag_options['id'],
"href" => $href
));
}
public function vote_tooltip_widget()
{
return '';
}
public function vote_widget($user = null, $className = "standard-vote-widget")
{
if (!$user)
$user = current_user();
$html = '';
if (!$user->is_anonymous()) {
foreach(range(0, 3) as $vote)
$html .= '';
$html .= '';
}
$html .= '';
return $html;
}
public function get_service_icon($service)
{
return ExternalPost::get_service_icon($service);
}
/* Import uses this */
public function import_file_detail_name($name)
{
if (is_int(strpos($name, '/'))) {
$parts = explode('/', $name);
$last_part = array_pop($parts);
$name = ''.implode('/', $parts).'/'.$last_part;
} else {
$name = substr(stripslashes($name), 0, 100);
strlen($name) > 100 && $name .= '...';
}
return $name;
}
}