From 1c8e89bd032d15cdabca98d5ae9c8032ed3dd497 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 20 Sep 2011 16:31:45 -0700 Subject: [PATCH] social bookmark API, oexchange enhancements --- include/text.php | 57 +++++++++++++++++++++++++++++++++++++++++++++++ mod/parse_url.php | 25 ++++++++++++++++----- 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/include/text.php b/include/text.php index 501121c802..9ed6d23bfb 100644 --- a/include/text.php +++ b/include/text.php @@ -922,3 +922,60 @@ function base64url_decode($s) { function cc_license() { return '
' . t('Shared content is covered by the Creative Commons Attribution 3.0 license.') . '
'; } + +if (!function_exists('str_getcsv')) { + function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = '\\', $eol = '\n') { + if (is_string($input) && !empty($input)) { + $output = array(); + $tmp = preg_split("/".$eol."/",$input); + if (is_array($tmp) && !empty($tmp)) { + while (list($line_num, $line) = each($tmp)) { + if (preg_match("/".$escape.$enclosure."/",$line)) { + while ($strlen = strlen($line)) { + $pos_delimiter = strpos($line,$delimiter); + $pos_enclosure_start = strpos($line,$enclosure); + if ( + is_int($pos_delimiter) && is_int($pos_enclosure_start) + && ($pos_enclosure_start < $pos_delimiter) + ) { + $enclosed_str = substr($line,1); + $pos_enclosure_end = strpos($enclosed_str,$enclosure); + $enclosed_str = substr($enclosed_str,0,$pos_enclosure_end); + $output[$line_num][] = $enclosed_str; + $offset = $pos_enclosure_end+3; + } else { + if (empty($pos_delimiter) && empty($pos_enclosure_start)) { + $output[$line_num][] = substr($line,0); + $offset = strlen($line); + } else { + $output[$line_num][] = substr($line,0,$pos_delimiter); + $offset = ( + !empty($pos_enclosure_start) + && ($pos_enclosure_start < $pos_delimiter) + ) + ?$pos_enclosure_start + :$pos_delimiter+1; + } + } + $line = substr($line,$offset); + } + } else { + $line = preg_split("/".$delimiter."/",$line); + + /* + * Validating against pesky extra line breaks creating false rows. + */ + if (is_array($line) && !empty($line[0])) { + $output[$line_num] = $line; + } + } + } + return $output; + } else { + return false; + } + } else { + return false; + } + } +} \ No newline at end of file diff --git a/mod/parse_url.php b/mod/parse_url.php index 89ef24f876..a238ecb2f9 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -3,9 +3,14 @@ require_once('library/HTML5/Parser.php'); require_once('library/HTMLPurifier.auto.php'); +function arr_add_hashes(&$item,$k) { + $item = '#' . $item; +} + function parse_url_content(&$a) { $text = null; + $str_tags = ''; if(x($_GET,'binurl')) $url = trim(hex2bin($_GET['binurl'])); @@ -15,8 +20,16 @@ function parse_url_content(&$a) { if($_GET['title']) $title = strip_tags(trim($_GET['title'])); - if($_GET['desc']) - $text = strip_tags(trim($_GET['desc'])); + if($_GET['description']) + $text = strip_tags(trim($_GET['description'])); + + if($_GET['tags']) { + $arr_tags = str_getcsv($_GET['tags']); + if(count($arr_tags)) { + array_walk($arr_tags,'arr_add_hashes'); + $str_tags = '
' . implode(' ',$arr_tags) . '
'; + } + } logger('parse_url: ' . $url); @@ -38,7 +51,7 @@ function parse_url_content(&$a) { $text = '

' . $text . '

'; $title = str_replace(array("\r","\n"),array('',''),$title); - $result = sprintf($template,$url,($title) ? $title : $url,$text); + $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags; logger('parse_url (unparsed): returns: ' . $result); @@ -57,7 +70,7 @@ function parse_url_content(&$a) { logger('parse_url: data: ' . $s, LOGGER_DATA); if(! $s) { - echo sprintf($template,$url,$url,''); + echo sprintf($template,$url,$url,'') . $str_tags; killme(); } @@ -80,7 +93,7 @@ function parse_url_content(&$a) { $dom = @HTML5_Parser::parse($s); if(! $dom) { - echo sprintf($template,$url,$url,''); + echo sprintf($template,$url,$url,'') . $str_tags; killme(); } @@ -148,7 +161,7 @@ function parse_url_content(&$a) { $title = str_replace(array("\r","\n"),array('',''),$title); - $result = sprintf($template,$url,($title) ? $title : $url,$text); + $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags; logger('parse_url: returns: ' . $result);