From 01c1f57a772ed1719cb636dd4834c38c7510e681 Mon Sep 17 00:00:00 2001 From: Mitsukarenai Date: Wed, 13 Feb 2013 11:06:30 +0100 Subject: [PATCH] deleted: 0.2/automicroblog.php (techniquement c'est du VVB 0.1) --- 0.2/automicroblog.php | 284 ------------------------------------------ 1 file changed, 284 deletions(-) delete mode 100755 0.2/automicroblog.php diff --git a/0.2/automicroblog.php b/0.2/automicroblog.php deleted file mode 100755 index 20de272..0000000 --- a/0.2/automicroblog.php +++ /dev/null @@ -1,284 +0,0 @@ - src="?m=http://toto.com/..." -*/ - - -/* updateFeed(): Update articles database from a RSS2.0 feed. - Articles deleted from the feed are not deleted from the database. - You can force the refresh by passing ?force_the_refresh in URL. -*/ -function updateFeed() -{ - global $CONFIG; - // Only update feed if last check was > 60 minutes - // but you can force it with force_the_refresh in GET parameters. - if (@filemtime('store.bin')>time()-(3600) && !isset($_GET['force_the_refresh'])) { return; } - - // Read database from disk - $feed_items=(file_exists('store.bin') ? unserialize(gzuncompress(file_get_contents('store.bin'))) : array() ); - - // Read the feed and update the database. - $xml = simplexml_load_file($CONFIG['FEED_URL']); - if (isset($xml->entry)) // ATOM feed. - { - foreach ($xml->entry as $item) - { - $pubDate=$item->published; if (!$pubDate) { $pubDate=$item->updated; } - $i=array('title'=>strval($item->title),'link'=>strval($item->link['href']),'guid'=>strval($item->id),'pubDate'=>strval($pubDate), - 'description'=>'','content'=>''); - $i['dateiso'] = date('Ymd_His', strtotime($i['pubDate'])); - $feed_items[$i['dateiso']] = $i; - } - } - elseif (isset($xml->item)) // RSS 1.0 /RDF - { - foreach ($xml->item as $item) - { - $guid =$item->attributes('http://www.w3.org/1999/02/22-rdf-syntax-ns#')->about; - $date =$item->children('http://purl.org/dc/elements/1.1/')->date; - $content = $item->children('http://purl.org/rss/1.0/modules/content/'); - $i=array('title'=>strval($item->title),'link'=>strval($item->link),'guid'=>strval($guid),'pubDate'=>strval($date), - 'description'=>'','content'=>''); - $i['dateiso'] = date('Ymd_His', strtotime($i['pubDate'])); - $feed_items[$i['dateiso']] = $i; - } - } - elseif (isset($xml->channel->item)) // RSS 2.0 - { - foreach ($xml->channel->item as $item) - { - $content = strval($item->children('http://purl.org/rss/1.0/modules/content/')); // Get - if (!$content) { $content = strval($item->description); } // Some feeds put content in the description. - $pubDate = $item->pubDate; - if (!$pubDate) { $pubDate=$item->children('http://purl.org/dc/elements/1.1/')->date; } // To read the tag content. - $i=array('title'=>strval($item->title),'link'=>strval($item->link),'guid'=>strval($item->guid),'pubDate'=>strval($pubDate), - 'description'=>'','content'=>''); - $i['dateiso'] = date('Ymd_His', strtotime($i['pubDate'])); - $feed_items[$i['dateiso']] = $i; - } - } - krsort($feed_items); // Sort array, latest articles first. - file_put_contents('store.bin', gzcompress(serialize($feed_items), 9)); // Write database to disk -} - -/* feed(): Returns the feed as an associative array (latest articles first). - Key is timestamp in compact iso format (eg. '20110628_073208') - Value is an associative array (title,link,content,pubDate...) -*/ -function feed() -{ - $data=gzuncompress(file_get_contents('store.bin')); - if ($data===FALSE) { $feed_items=array(); } else { $feed_items = unserialize($data); } - return $feed_items; -} - -/* Remove accents (é-->e) */ -function replace_accents($str) { - $str = htmlentities($str, ENT_COMPAT, "UTF-8"); - $str = preg_replace('/&([a-zA-Z])(uml|acute|grave|circ|tilde);/','$1',$str); - return html_entity_decode($str); -} - -// Sanitize strings for use in filename or URLs -function sanitize($name) -{ - $fname=replace_accents($name); - $replace="_"; - $pattern="/([[:alnum:]_\.-]*)/"; // The autorized characters. - $fname=str_replace(str_split(preg_replace($pattern,$replace,$fname)),$replace,$fname); - return $fname; -} - -// Tells if a string start with a substring or not. -function startsWith($haystack,$needle,$case=true) { - if($case){return (strcmp(substr($haystack, 0, strlen($needle)),$needle)===0);} - return (strcasecmp(substr($haystack, 0, strlen($needle)),$needle)===0); -} -// Tells if a string ends with a substring or not. -function endsWith($haystack,$needle,$case=true) { - if($case){return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0);} - return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0); -} - -/* Returns the CSS stylesheet to include in HTML document */ -function css() -{ - return << - - -HTML; -} - -/* Render a single article - $article : the article itself (associative array with title,pubDate,content,dateiso keys.) -*/ -function renderArticle($article) -{ - echo '
'; - echo '

'.$article['title'].'

'.$article['pubDate']; - if ($article['link']!='') { echo ' - (source)'; } - echo '
'.$article['content'].'
'; - echo '
'; -} - -function rssHeaderLink() { return ''; } -function searchForm() { return ''; } -function powered() { return '
Powered by VroumVroum-µBlog 0.1.31x - ATOM Feed
Download config articles
'; } -function canonical_metatag($url) { return ''; } - -/* Show a single article - $articleid = article identifier (eg.'20110629_010334') -*/ -function showArticle($articleid) -{ - global $CONFIG; - header('Content-Type: text/html; charset=utf-8'); - $feed=feed();if (!array_key_exists($articleid,$feed)) { die('Article not found.'); } - $a=$feed[$articleid]; - echo ''.$a['title'].' - '.$CONFIG['SITE_TITLE'].''.canonical_metatag($a['link']).css().rssHeaderLink().''; - echo '

'.$CONFIG['SITE_TITLE'].'

'.$CONFIG['SITE_DESCRIPTION'].$CONFIG['SITE_URL'].searchForm().'
'; - renderArticle($a); - echo ''.powered().''; -} - -/* Show a list of articles, starting at a specific page. - $page = start page. First page is page 1. -*/ -function showArticles($page) -{ - global $CONFIG; - header('Content-Type: text/html; charset=utf-8'); - $feed=feed(); - $keys=array_keys($feed); - echo ''.$CONFIG['SITE_TITLE'].''.canonical_metatag($CONFIG['SITE_URL']).css().rssHeaderLink().''; - echo '

'.$CONFIG['SITE_TITLE'].'

'.$CONFIG['SITE_DESCRIPTION'].$CONFIG['SITE_URL'].searchForm().'
'; - $i = ($page-1)*$CONFIG['ARTICLES_PER_PAGE']; // Start index. - $end = $i+$CONFIG['ARTICLES_PER_PAGE']; - while ($i<$end && $i
'; - if ($i!=count($keys)) { echo ''; } - echo ''; - if ($page>1) { echo ''; } - echo '
'.powered().''; -} - -/* Search for text in articles content and title. - $textpage = text to search. -*/ -function search($text) -{ - global $CONFIG; - header('Content-Type: text/html; charset=utf-8'); - $txt = urldecode($text); - echo ''.$CONFIG['SITE_TITLE'].''.css().rssHeaderLink().''; - echo '

'.$CONFIG['SITE_TITLE'].'

'.$CONFIG['SITE_DESCRIPTION'].$CONFIG['SITE_URL'].searchForm().'
'; - echo '
Search for '.htmlspecialchars($txt).' :
'; - $feed=feed(); - foreach($feed as $article) - { - if (stripos($article['content'],$txt) || stripos($article['title'],$txt)) { renderArticle($article); } - } - echo ''.powered().''; -} - - - - -/* Output the whole feed in RSS 2.0 format with article content (BIG!) */ -function outputFeed() -{ - global $CONFIG; - header('Content-Type: application/atom+xml; charset=utf-8'); - echo ''.htmlspecialchars($CONFIG['SITE_TITLE']).''.date('c').''.htmlspecialchars($CONFIG['SITE_URL']).''; - echo ''."\n\n"; - $feed=feed(); - foreach($feed as $a) - { - echo ''.$a['title'].''.$a['link'].''.$a['pubDate'].''; - echo 'Auto-microblog'.$_SERVER['SERVER_NAME'].''; - echo ' '."\n\n"; - } - echo ''; -} - -// ================================================================================================== -// Update feed if necessary. (you can force refresh with ?force_the_refresh in URL) -updateFeed(); - -// Handle media download requests (eg. http://myserver.com/?m=http___anotherserver.net_images_myimage.jpg) -if (startswith($_SERVER["QUERY_STRING"],'m=')) { showMedia(substr($_SERVER["QUERY_STRING"],2)); } - -// Handle single article URI (eg. http://myserver.com/?20110506_224455-chit-chat) -elseif (preg_match('/^(\d{8}_\d{6})/',$_SERVER["QUERY_STRING"],$matches)) { showArticle($matches[1]); } - -// Handle page URI (eg. http://myserver.com/?page5) -elseif (preg_match('/^page(\d+)/',$_SERVER["QUERY_STRING"],$matches)) { showArticles($matches[1]); } - -// Handle RSS 2.0 feed request (http://myserver.com/?feed) -elseif (startswith($_SERVER["QUERY_STRING"],'feed')) { outputFeed(); } - -// Handle search request (eg. http://myserver.com/?s=tuto4pc) -elseif (startswith($_SERVER["QUERY_STRING"],'s=')) { search(substr($_SERVER["QUERY_STRING"],2)); } - -// Nothing ? Then render page1. -else { showArticles(1); } - -// Force flush, rendered page is fully sent to browser. -flush(); - -// Now we've finised rendering the page and sending to the user, -// it's time for some background tasks: Are there media to download ? - - -exit; -?>