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 = ''.$image_title.''; 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"; $ddl_class .= ($post->width > 1920 || $post->height > 1080 )? " largeimg":" smallimg"; if (!empty($options['similarity'])) { $icon = ''.$post->service().''; $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; } }