diff options
-rw-r--r-- | include/attach.php | 2 | ||||
-rw-r--r-- | include/bb2diaspora.php | 76 | ||||
-rw-r--r-- | include/sharedwithme.php | 32 | ||||
-rw-r--r-- | mod/sharedwithme.php | 30 |
4 files changed, 86 insertions, 54 deletions
diff --git a/include/attach.php b/include/attach.php index 04fd25ace..1daa42aef 100644 --- a/include/attach.php +++ b/include/attach.php @@ -1078,7 +1078,7 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid, $arr['deny_cid'] = perms2str($u_arr_deny_cid); $arr['deny_gid'] = perms2str($u_arr_deny_gid); $arr['item_restrict'] = ITEM_HIDDEN; - $arr['item_private'] = 0; + $arr['item_private'] = $private; $arr['verb'] = ACTIVITY_UPDATE; $arr['obj_type'] = $objtype; $arr['object'] = $u_jsonobject; diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index fa3aa3aa2..118e78639 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -1,4 +1,8 @@ -<?php /** @file */ +<?php +/** + * @file include/bb2diaspora.php + * @brief Some functions for BB conversions for Diaspora protocol. + */ require_once("include/oembed.php"); require_once("include/event.php"); @@ -107,14 +111,19 @@ function diaspora_mention_callback($matches) { } - -// we don't want to support a bbcode specific markdown interpreter -// and the markdown library we have is pretty good, but provides HTML output. -// So we'll use that to convert to HTML, then convert the HTML back to bbcode, -// and then clean up a few Diaspora specific constructs. - -function diaspora2bb($s,$use_zrl = false) { - +/** + * @brief + * + * We don't want to support a bbcode specific markdown interpreter + * and the markdown library we have is pretty good, but provides HTML output. + * So we'll use that to convert to HTML, then convert the HTML back to bbcode, + * and then clean up a few Diaspora specific constructs. + * + * @param string $s + * @param boolean $use_zrl default false + * @return string + */ +function diaspora2bb($s, $use_zrl = false) { $s = str_replace("
","\r",$s); $s = str_replace("
\n>","",$s); @@ -150,7 +159,6 @@ function diaspora2bb($s,$use_zrl = false) { } else { $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3]$2$3[/url]',$s); - } //$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s); @@ -217,18 +225,33 @@ function diaspora_ol($s) { ////////////////////// // Non-Markdownify versions of "diaspora_ol" and "diaspora_ul" ////////////////////// +/** + * @brief + * + * Replace "[\\*]" followed by any number (including zero) of + * spaces by "* " to match Diaspora's list format. + * + * @param string $s + * @return string + */ function diaspora_ul($s) { - // Replace "[\\*]" followed by any number (including zero) of - // spaces by "* " to match Diaspora's list format return preg_replace("/\[\\\\\*\]( *)/", "* ", $s[1]); } +/** + * @brief + * + * A hack: Diaspora will create a properly-numbered ordered list even + * if you use '1.' for each element of the list, like: + * \code + * 1. First element + * 1. Second element + * 1. Third element + * \endcode + * @param string $s + * @return string + */ function diaspora_ol($s) { - // A hack: Diaspora will create a properly-numbered ordered list even - // if you use '1.' for each element of the list, like: - // 1. First element - // 1. Second element - // 1. Third element return preg_replace("/\[\\\\\*\]( *)/", "1. ", $s[1]); } @@ -240,8 +263,8 @@ function bb2dmention_callback($match) { if($r) return '@{' . $match[3] . ' ; ' . $r[0]['xchan_addr'] . '}'; - return '@' . $match[3]; + return '@' . $match[3]; } @@ -272,14 +295,15 @@ function bb2diaspora_itemwallwall(&$item) { } // $item['author'] might cause a surprise further down the line if it wasn't expected to be here. - - if(! $author_exists) - $unset($item['author']); + if(! $author_exists) + unset($item['author']); } -function bb2diaspora_itembody($item,$force_update = false) { +function bb2diaspora_itembody($item, $force_update = false) { + + $matches = array(); if(($item['diaspora_meta']) && (! $force_update)) { $diaspora_meta = json_decode($item['diaspora_meta'],true); @@ -344,8 +368,8 @@ function bb2diaspora_itembody($item,$force_update = false) { $body = "## " . $title . "\n\n" . $body; if($item['attach']) { - $cnt = preg_match_all('/href=\"(.*?)\"(.*?)title=\"(.*?)\"/ism',$item['attach'],$matches,PREG_SET_ORDER); - if(cnt) { + $cnt = preg_match_all('/href=\"(.*?)\"(.*?)title=\"(.*?)\"/ism', $item['attach'], $matches, PREG_SET_ORDER); + if($cnt) { $body .= "\n" . t('Attachments:') . "\n"; foreach($matches as $mtch) { $body .= '[' . $mtch[3] . '](' . $mtch[1] . ')' . "\n"; @@ -356,7 +380,6 @@ function bb2diaspora_itembody($item,$force_update = false) { // logger('bb2diaspora_itembody : ' . $body, LOGGER_DATA); return html_entity_decode($body); - } function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) { @@ -365,7 +388,7 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) { // The bbcode parser now handles youtube-links (and the other stuff) correctly. // Additionally the html code is now fixed so that lists are now working. - /** + /* * Transform #tags, strip off the [url] and replace spaces with underscore */ $Text = preg_replace_callback('/#\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/[(zu)]rl\]/i', create_function('$match', @@ -451,5 +474,6 @@ function format_event_diaspora($ev) { . "\n"; $o .= "\n"; + return $o; } diff --git a/include/sharedwithme.php b/include/sharedwithme.php new file mode 100644 index 000000000..3936dc90f --- /dev/null +++ b/include/sharedwithme.php @@ -0,0 +1,32 @@ +<?php + +function apply_updates() { + + //check for updated items and remove them + $x = q("SELECT mid, object FROM item WHERE verb = '%s' AND obj_type = '%s' GROUP BY mid", + dbesc(ACTIVITY_UPDATE), + dbesc(ACTIVITY_OBJ_FILE) + ); + + if($x) { + + foreach($x as $xx) { + + $object = json_decode($xx['object'],true); + + $d_mid = $object['d_mid']; + $u_mid = $xx['mid']; + + $y = q("DELETE FROM item WHERE obj_type = '%s' AND (verb = '%s' AND mid = '%s') OR (verb = '%s' AND mid = '%s')", + dbesc(ACTIVITY_OBJ_FILE), + dbesc(ACTIVITY_POST), + dbesc($d_mid), + dbesc(ACTIVITY_UPDATE), + dbesc($u_mid) + ); + + } + + } + +} diff --git a/mod/sharedwithme.php b/mod/sharedwithme.php index d91987027..b77c9dad1 100644 --- a/mod/sharedwithme.php +++ b/mod/sharedwithme.php @@ -12,33 +12,9 @@ function sharedwithme_content(&$a) { $is_owner = (local_channel() && (local_channel() == $channel['channel_id'])); - //maintenance - see if a file got dropped and remove it systemwide - this should possibly go to include/poller - $x = q("SELECT * FROM item WHERE verb = '%s' AND obj_type = '%s' AND uid = %d", - dbesc(ACTIVITY_UPDATE), - dbesc(ACTIVITY_OBJ_FILE), - intval(local_channel()) - ); - - if($x) { - - foreach($x as $xx) { - - $object = json_decode($xx['object'],true); - - $d_mid = $object['d_mid']; - $u_mid = $xx['mid']; - - $y = q("DELETE FROM item WHERE obj_type = '%s' AND (verb = '%s' AND mid = '%s') OR (verb = '%s' AND mid = '%s')", - dbesc(ACTIVITY_OBJ_FILE), - dbesc(ACTIVITY_POST), - dbesc($d_mid), - dbesc(ACTIVITY_UPDATE), - dbesc($u_mid) - ); - - } - - } + //check for updated items and remove them + require_once('include/sharedwithme.php'); + apply_updates(); //drop single file - localuser if((argc() > 2) && (argv(2) === 'drop')) { |