#!/usr/bin/env php <?php require_once '../URLResolver.php'; /******************************************************************************* * Copyright (c) 2011-2014 by Matt Wright * https://github.com/mattwright/URLResolver.php * * Licensed under The MIT License * See URLResolver.php for full license text *******************************************************************************/ if (count($argv) != 2 || !preg_match('/^https?:\\/\\//i', $argv[1])) { print "You must supply a URL:\n ./resolve_url.php http://goo.gl/0GMP1\n"; exit; } $resolver = new URLResolver(); $resolver->isDebugMode(true); $resolver->setUserAgent('Mozilla/5.0 (compatible; URLResolver.php/1.0; +https://github.com/mattwright/URLResolver.php)'); $resolver->resolveURL($argv[1]);
/** * Examine a URL and resolve it as needed. * * @since 3.4.5 * * @param string $url A web address URI. * @return bool True value for a submitted URL that matches an aggregation service. * */ public static function resolve_a_url($url) { $url_array = parse_url($url); if (empty($url_array['host'])) { return; } else { $check = self::url_is_aggregation_service($url); if ($check) { $resolver = new URLResolver(); $url = $resolver->resolveURL($url)->getURL(); } } return $url; }
private function construct_content($entry) { // lets make this a setting? $unshorten_urls = true; $post_content = $entry['text']; //$post_content = html_entity_decode($post_content); // ohne trim? $post_content = $post_content; // ohne trim? //replace t.co links if (count($entry['entities']['urls'])) { foreach ($entry['entities']['urls'] as $url) { if ($unshorten_urls) { $resolver = new URLResolver(); $expanded_url = $resolver->resolveURL($url['expanded_url'])->getURL(); $display_url = parse_url($expanded_url); // minus protocol, no longer that 30 chars $display_url = $display_url['host'] . $display_url['path']; if (strlen($display_url) > 30) { $display_url = substr($display_url, 0, 30) . "…"; } } else { $expanded_url = $url['expanded_url']; $display_url = $url['display_url']; } $post_content = str_replace($url['url'], '<a href="' . $expanded_url . '">' . $display_url . '</a>', $post_content); } } // any embeded media/images? $image_url = ""; $image_html = ""; if (isset($entry['entities']['media']) && $entry['entities']['media']) { foreach ($entry['entities']['media'] as $media) { $post_content = str_replace($media['url'], '<a href="' . $media['expanded_url'] . '">' . $media['display_url'] . '</a>', $post_content); if ($media['type'] == "photo") { $image_url = $media['media_url']; $image_html = '<div class="twitter-image">' . '[gallery size="large" columns="1" link="file"]' . '</div>'; } } } $post_content = preg_replace("/\\s((http|ftp)+(s)?:\\/\\/[^<>\\s]+)/i", " <a href=\"\\0\" target=\"_blank\">\\0</a>", $post_content); $post_content = preg_replace('/[@]+([A-Za-z0-9-_]+)/', '<a href="http://twitter.com/\\1" target="_blank">\\0</a>', $post_content); // Autolink hashtags (wordpress funktion) $post_content = preg_replace('/(^|[^0-9A-Z&\\/]+)(#|\\xef\\xbc\\x83)([0-9A-Z_]*[A-Z_]+[a-z0-9_\\xc0-\\xd6\\xd8-\\xf6\\xf8\\xff]*)/iu', '${1}<a href="http://twitter.com/search?q=%23${3}" title="#${3}">${2}${3}</a>', $post_content); // original twitter embed code (more or less), will be shown as native embed $embed_code_twitter = '<blockquote class="twitter-tweet imported"><p>' . $post_content . '</p>' . $image_html . '— ' . $entry['user']['name'] . ' (<a href="https://twitter.com/' . $entry['user']['screen_name'] . '/">@' . $entry['user']['screen_name'] . '</a>) <a href="http://twitter.com/' . get_option('twitter_username') . '/status/' . $entry["id_str"] . '">' . date('d.m.Y H:i', strtotime($entry["created_at"])) . '</a></blockquote><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>'; // if these are one's *own* tweets, there is no point to mark the username or blockqoue. also the date and time is supeficial. //$embedcode_reclaim = '<blockquote class="twitter-tweet imported"><p>'.$post_content.'</p><div class="twimage">'.$image_html.'</div><span style="display: none;">— '.$entry['user']['name'].' (<a href="https://twitter.com/'.$entry['user']['screen_name'].'/">@'.$entry['user']['screen_name'].'</a>) <a href="http://twitter.com/'.get_option('twitter_username').'/status/'.$entry["id_str"].'">'.date('d.m.Y H:i', strtotime($entry["created_at"])).'</a></span><p class="twviewpost-twitter">(<a href="http://twitter.com/'.get_option('twitter_username').'/status/'.$entry["id_str"].'">'.__('View on Twitter', 'reclaim').'</a>)</p></blockquote>'; $embed_code_reclaim = '<div class="twitter-tweet imported">' . $post_content . '<div class="twimage">' . $image_html . '</div><p class="twviewpost-twitter">(<a href="http://twitter.com/' . get_option('twitter_username') . '/status/' . $entry["id_str"] . '">' . __('View on Twitter', 'reclaim') . '</a>)</p></div>'; /* setlocale (LC_ALL, get_bloginfo ( 'language' ) ); $embedcode = sprintf( self::TWITTER_TWEET_TPL, $post_content, $image_html, $entry['user']['name'], $entry['user']['screen_name'], $entry['user']['screen_name'], get_option('twitter_username'), $entry["id_str"], date('d.m.Y H:i', strtotime($entry["created_at"])) date(get_option('date_format'), strtotime($entry["created_at"])) ); */ $content = array('original' => $post_content, 'embed_code_twitter' => $embed_code_twitter, 'embed_code' => $embed_code_reclaim, 'image' => $image_url); return $content; }