From 4dcd00cf4b80d6cbbb2ee5456ed7d7599ccc33ef Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 19 Jul 2013 23:38:23 +0200 Subject: [PATCH 1/5] Lockfile for onepoll, removing old smarty3 cache files. --- include/onepoll.php | 14 ++++++++++++-- include/poller.php | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/onepoll.php b/include/onepoll.php index bd20cfdb5..ccf9b3836 100644 --- a/include/onepoll.php +++ b/include/onepoll.php @@ -42,7 +42,7 @@ function onepoll_run(&$argv, &$argc){ load_hooks(); logger('onepoll: start'); - + $manual_id = 0; $generation = 0; $hub_update = false; @@ -56,7 +56,17 @@ function onepoll_run(&$argv, &$argc){ logger('onepoll: no contact'); return; } - + + // Test + $lockpath = get_config('system','lockpath'); + if ($lockpath != '') { + $pidfile = new pidfile($lockpath, 'onepoll'.$contact_id.'.lck'); + if($pidfile->is_already_running()) { + logger("onepoll: Already running for contact ".$contact_id); + exit; + } + } + $d = datetime_convert(); diff --git a/include/poller.php b/include/poller.php index e85a4555d..e927430ea 100644 --- a/include/poller.php +++ b/include/poller.php @@ -122,6 +122,9 @@ function poller_run(&$argv, &$argc){ // clear cache for photos clear_cache($a->get_basepath(), $a->get_basepath()."/photo"); + // clear smarty cache + clear_cache($a->get_basepath()."/view/smarty3/compiled", $a->get_basepath()."/view/smarty3/compiled"); + set_config('system','cache_last_cleared', time()); } From 7770317f1ede7a0d429262b1fa288e861bd8c879 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 28 Jul 2013 20:38:48 +0200 Subject: [PATCH 2/5] Preparations for a more visible reshare when exporting to twitter, statusnet or facebook. The oauth-parts are some experimental stuff for the statusnet API - but they don't hurt. --- include/bbcode.php | 63 +++++++++++++++++++++++++++++++++++++--- include/html2plain.php | 3 ++ library/OAuth1.php | 7 +++-- library/twitteroauth.php | 2 ++ 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index eaf412c35..62759d192 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -262,9 +262,9 @@ function bb_ShareAttributes($match) { preg_match('/posted="(.*?)"/ism', $attributes, $matches); if ($matches[1] != "") $posted = $matches[1]; - $reldate = (($posted) ? " " . relative_date($posted) : ''); + $reldate = (($posted) ? " " . relative_date($posted) : ''); - $headline = '
'; + $headline = '
'; if ($avatar != "") $headline .= ''; @@ -300,10 +300,63 @@ function bb_ShareAttributesSimple($match) { if ($matches[1] != "") $profile = $matches[1]; - $text = "
".html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$author.":
»".$match[2]."«"; + $userid = GetProfileUsername($profile,$author); + + $text = "
".html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$userid.":
»".$match[2]."«"; return($text); } +function bb_ShareAttributesSimple2($match) { + + $attributes = $match[1]; + + $author = ""; + preg_match("/author='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $author = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8'); + + preg_match('/author="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $author = $matches[1]; + + $profile = ""; + preg_match("/profile='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + preg_match('/profile="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + $userid = GetProfileUsername($profile,$author); + + $text = "
".html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$userid.":
".$match[2]; + + return($text); +} + +function GetProfileUsername($profile, $username) { + $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile); + if ($friendica != $profile) + return($friendica); + + $diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); + if ($diaspora != $profile) + return($diaspora); + + $StatusnetHost = preg_replace("=https?://(.*)/user/(.*)=ism", "$1", $profile); + if ($StatusnetHost != $profile) { + $StatusnetUser = preg_replace("=https?://(.*)/user/(.*)=ism", "$2", $profile); + if ($StatusnetUser != $profile) { + $UserData = fetch_url("http://".$StatusnetHost."/api/users/show.json?user_id=".$StatusnetUser); + $user = json_decode($UserData); + if ($user) + return($user->screen_name."@".$StatusnetHost); + } + } + + return($username); +} // BBcode 2 HTML was written by WAY2WEB.net // extended to work with Mistpark/Friendica - Mike Macgirvin @@ -553,8 +606,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal // Shared content if (!$simplehtml) $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributes",$Text); - else + elseif ($simplehtml == 1) $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesSimple",$Text); + elseif ($simplehtml == 2) + $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesSimple2",$Text); $Text = preg_replace("/\[crypt\](.*?)\[\/crypt\]/ism",'
' . t('Encrypted content') . '
', $Text); $Text = preg_replace("/\[crypt=(.*?)\](.*?)\[\/crypt\]/ism",'
' . t('Encrypted content') . '
', $Text); diff --git a/include/html2plain.php b/include/html2plain.php index 677faa9d5..07de82965 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -220,6 +220,9 @@ function html2plain($html, $wraplength = 75, $compact = false) //$message .= "\n[".($counter++)."] ".$url; } + $message = str_replace("\n«", "«\n", $message); + $message = str_replace("»\n", "\n»", $message); + do { $oldmessage = $message; $message = str_replace("\n\n\n", "\n\n", $message); diff --git a/library/OAuth1.php b/library/OAuth1.php index 53b905e77..994962a85 100644 --- a/library/OAuth1.php +++ b/library/OAuth1.php @@ -423,8 +423,11 @@ class OAuthRequest { /** * builds the data one would send in a POST request */ - public function to_postdata() { - return OAuthUtil::build_http_query($this->parameters); + public function to_postdata($raw = false) { + if ($raw) + return($this->parameters); + else + return OAuthUtil::build_http_query($this->parameters); } /** diff --git a/library/twitteroauth.php b/library/twitteroauth.php index 009ad56bd..24e831a92 100644 --- a/library/twitteroauth.php +++ b/library/twitteroauth.php @@ -184,6 +184,8 @@ class TwitterOAuth { switch ($method) { case 'GET': return $this->http($request->to_url(), 'GET'); + case 'UPLOAD': + return $this->http($request->get_normalized_http_url(), 'POST', $request->to_postdata(true)); default: return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata()); } From f70a80bbe56c87406799b66fae82b500ceae9646 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 5 Aug 2013 20:31:08 +0200 Subject: [PATCH 3/5] Changed the tag search. This hopefully speeds it up on larger systems. --- mod/search.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mod/search.php b/mod/search.php index f7d235d45..ebb7dc70d 100644 --- a/mod/search.php +++ b/mod/search.php @@ -141,12 +141,13 @@ function search_content(&$a) { if($tag) { //$sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d", - // dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG)); - //$sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` "; - - $sql_extra = sprintf(" AND EXISTS (SELECT * FROM `term` WHERE `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d) GROUP BY `item`.`uri` ", + $sql_extra = sprintf(" AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d group by `item`.`uri` ", dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG)); - $sql_table = "`item` FORCE INDEX (`uri`) "; + $sql_table = "`term` LEFT JOIN `item` ON `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` "; + + //$sql_extra = sprintf(" AND EXISTS (SELECT * FROM `term` WHERE `item`.`id` = `term`.`oid` AND `item`.`uid` = `term`.`uid` AND `term`.`term` = '%s' AND `term`.`otype` = %d AND `term`.`type` = %d) GROUP BY `item`.`uri` ", + // dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG)); + //$sql_table = "`item` FORCE INDEX (`uri`) "; } else { if (get_config('system','use_fulltext_engine')) { $sql_extra = sprintf(" AND MATCH (`item`.`body`, `item`.`title`) AGAINST ('%s' in boolean mode) ", dbesc(protect_sprintf($search))); From e40bcbb4bc2b122615203d1b1ea860f1a4d7b873 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 5 Aug 2013 23:06:40 +0200 Subject: [PATCH 4/5] Some debugging information added --- mod/community.php | 2 ++ mod/receive.php | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/mod/community.php b/mod/community.php index 84fc15deb..1f8adf890 100644 --- a/mod/community.php +++ b/mod/community.php @@ -84,6 +84,8 @@ function community_content(&$a, $update = 0) { ); // group by `item`.`uri` +// AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `item`.`id` = `item`.`parent` +// AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self` if(! count($r)) { info( t('No results.') . EOL); diff --git a/mod/receive.php b/mod/receive.php index 0523fd9cc..ee15ebe8a 100644 --- a/mod/receive.php +++ b/mod/receive.php @@ -42,6 +42,8 @@ function receive_post(&$a) { // It is an application/x-www-form-urlencoded + logger('mod-diaspora: receiving post', LOGGER_DEBUG); + $xml = urldecode($_POST['xml']); logger('mod-diaspora: new salmon ' . $xml, LOGGER_DATA); @@ -49,13 +51,19 @@ function receive_post(&$a) { if(! $xml) http_status_exit(500); + logger('mod-diaspora: message is okay', LOGGER_DEBUG); + $msg = diaspora_decode($importer,$xml); + logger('mod-diaspora: decoded', LOGGER_DEBUG); + logger('mod-diaspora: decoded msg: ' . print_r($msg,true), LOGGER_DATA); if(! is_array($msg)) http_status_exit(500); + logger('mod-diaspora: dispatching', LOGGER_DEBUG); + $ret = 0; if($public) diaspora_dispatch_public($msg); From 6576aae938dcfba7322ec0f9f6e293f5ddf293b5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 6 Aug 2013 00:20:16 +0200 Subject: [PATCH 5/5] If APC is enabled then store config data there --- include/config.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/include/config.php b/include/config.php index d138d2053..af44f6cc2 100644 --- a/include/config.php +++ b/include/config.php @@ -62,6 +62,15 @@ function get_config($family, $key, $instore = false) { return $a->config[$family][$key]; } } + + // If APC is enabled then fetch the data from there + if (function_exists("apc_fetch") AND function_exists("apc_exists")) + if (apc_exists($family."|".$key)) { + $val = apc_fetch($family."|".$key); + $a->config[$family][$key] = $val; + return $val; + } + $ret = q("SELECT `v` FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1", dbesc($family), dbesc($key) @@ -117,6 +126,10 @@ function set_config($family,$key,$value) { $a->config[$family][$key] = $value; + // If APC is enabled then store the data there + if (function_exists("apc_store")) + apc_store($family."|".$key, $value, 600); + if($ret) return $value; return $ret; @@ -164,6 +177,14 @@ function get_pconfig($uid,$family, $key, $instore = false) { } } + // If APC is enabled then fetch the data from there + if (function_exists("apc_fetch") AND function_exists("apc_exists")) + if (apc_exists($uid."|".$family."|".$key)) { + $val = apc_fetch($uid."|".$family."|".$key); + $a->config[$uid][$family][$key] = $val; + return $val; + } + $ret = q("SELECT `v` FROM `pconfig` WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s' LIMIT 1", intval($uid), dbesc($family), @@ -191,6 +212,10 @@ function del_config($family,$key) { dbesc($family), dbesc($key) ); + // If APC is enabled then store the data there + if (function_exists("apc_delete")) + apc_delete($family."|".$key); + return $ret; }} @@ -228,6 +253,11 @@ function set_pconfig($uid,$family,$key,$value) { $a->config[$uid][$family][$key] = $value; + // If APC is enabled then store the data there + if (function_exists("apc_store")) + apc_store($uid."|".$family."|".$key, $value, 600); + + if($ret) return $value; return $ret;