Merge pull request #1042 from annando/master

Workaround for likes from Diaspora, disabling of the automatic reload of the network page
This commit is contained in:
Tobias Diekershoff 2014-07-10 07:45:27 +02:00
commit 829a92a10e
13 changed files with 197 additions and 312 deletions

View file

@ -381,245 +381,6 @@ function bb_replace_images($body, $images) {
return $newbody; return $newbody;
}} }}
/*
function bb_ShareAttributes($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];
$link = "";
preg_match("/link='(.*?)'/ism", $attributes, $matches);
if ($matches[1] != "")
$link = $matches[1];
preg_match('/link="(.*?)"/ism', $attributes, $matches);
if ($matches[1] != "")
$link = $matches[1];
$avatar = "";
preg_match("/avatar='(.*?)'/ism", $attributes, $matches);
if ($matches[1] != "")
$avatar = $matches[1];
preg_match('/avatar="(.*?)"/ism', $attributes, $matches);
if ($matches[1] != "")
$avatar = $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];
$posted = "";
$itemcache = get_itemcachepath();
// relative dates only make sense when they aren't cached
if ($itemcache == "") {
preg_match("/posted='(.*?)'/ism", $attributes, $matches);
if ($matches[1] != "")
$posted = $matches[1];
preg_match('/posted="(.*?)"/ism', $attributes, $matches);
if ($matches[1] != "")
$posted = $matches[1];
$reldate = (($posted) ? " " . relative_date($posted) : '');
}
$headline = '<div class="shared_header">';
//$headline = '<br /><div class="shared_header">';
if ($avatar != "")
$headline .= '<img src="'.$avatar.'" height="32" width="32" >';
$headline .= sprintf(t('<span><a href="%s" target="_blank">%s</a> wrote the following <a href="%s" target="_blank">post</a>'.$reldate.':</span>'), $profile, $author, $link);
$headline .= "</div>";
$text = $headline.'<blockquote class="shared_content">'.trim($match[2])."</blockquote>";
return($text);
}
// Escpecially for Diaspora (there mustn't be links in the share information)
function bb_ShareAttributesDiaspora($match) {
$attributes = $match[2];
$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];
$link = "";
preg_match("/link='(.*?)'/ism", $attributes, $matches);
if ($matches[1] != "")
$link = $matches[1];
preg_match('/link="(.*?)"/ism', $attributes, $matches);
if ($matches[1] != "")
$link = $matches[1];
$userid = GetProfileUsername($profile,$author);
$headline = '<div class="shared_header">';
$headline .= '<span><b>'.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').$userid.':</b></span>';
$headline .= "</div>";
$text = trim($match[1]);
if ($text != "")
$text .= "<hr />";
$text .= $headline.'<blockquote class="shared_content">'.trim($match[3])."</blockquote><br />";
if ($link != "")
$text .= '<br /><a href="'.$link.'">[l]</a>';
// $text .= '<br /><a href="'.$link.'">'.t("Link").' [l]</a>';
return($text);
}
// Optimized for Libertree, Wordpress, Tumblr, ...
function bb_ShareAttributesForExport($match) {
$attributes = $match[2];
$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];
$link = "";
preg_match("/link='(.*?)'/ism", $attributes, $matches);
if ($matches[1] != "")
$link = $matches[1];
preg_match('/link="(.*?)"/ism', $attributes, $matches);
if ($matches[1] != "")
$link = $matches[1];
if ($link == "")
$link = $profile;
$userid = GetProfileUsername($profile,$author);
$headline = '<div class="shared_header">';
$headline .= '<span><b>'.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8');
$headline .= sprintf(t('<a href="%1$s" target="_blank">%2$s</a> %3$s'), $link, $userid, $posted);
$headline .= ":</b></span></div>";
$text = trim($match[1]);
if ($text != "")
$text .= "<hr />";
$text .= $headline.'<blockquote class="shared_content">'.trim($match[3])."</blockquote><br />";
return($text);
}
// Still in use?
function bb_ShareAttributesSimple($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 = "<br />".html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' <a href="'.$profile.'">'.$userid."</a>: <br />»".$match[2]."«";
return($text);
}
// Used for text exports (Twitter, Facebook, Google+)
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 = "<br />".html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' <a href="'.$profile.'">'.$userid."</a>: <br />".$match[2];
$text = "<br />".html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' '.$userid.": <br />".$match[2];
return($text);
}
*/
function bb_ShareAttributes($share, $simplehtml) { function bb_ShareAttributes($share, $simplehtml) {
$attributes = $share[2]; $attributes = $share[2];
@ -676,7 +437,8 @@ function bb_ShareAttributes($share, $simplehtml) {
$reldate = (($posted) ? " " . relative_date($posted) : ''); $reldate = (($posted) ? " " . relative_date($posted) : '');
} }
$userid = GetProfileUsername($profile,$author); $userid = GetProfileUsername($profile,$author, false);
$userid_compact = GetProfileUsername($profile,$author, true);
$preshare = trim($share[1]); $preshare = trim($share[1]);
@ -688,7 +450,7 @@ function bb_ShareAttributes($share, $simplehtml) {
$text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' <a href="'.$profile.'">'.$userid."</a>: <br />»".$share[3]."«"; $text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' <a href="'.$profile.'">'.$userid."</a>: <br />»".$share[3]."«";
break; break;
case 2: case 2:
$text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' '.$userid.": <br />".$share[3]; $text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' '.$userid_compact.": <br />".$share[3];
break; break;
case 3: case 3:
$headline = '<div class="shared_header">'; $headline = '<div class="shared_header">';
@ -720,10 +482,16 @@ function bb_ShareAttributes($share, $simplehtml) {
break; break;
case 5: case 5:
$text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' '.$userid.": <br />".$share[3]; $text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8').' '.$userid_compact.": <br />".$share[3];
break; break;
case 6: case 6:
$text = $preshare."&gt;&gt; ".$userid.": <br />".$share[3]; $text = $preshare."&gt;&gt; @".$userid_compact.": <br />".$share[3];
break;
case 7:
$text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8')." @".$userid_compact." ".$share[3];
break;
case 8:
$text = $preshare."RT @".$userid_compact." ".$share[3];
break; break;
default: default:
$headline = trim($share[1]).'<div class="shared_header">'; $headline = trim($share[1]).'<div class="shared_header">';
@ -738,27 +506,43 @@ function bb_ShareAttributes($share, $simplehtml) {
return($text); return($text);
} }
function GetProfileUsername($profile, $username) { function GetProfileUsername($profile, $username, $compact = false) {
$twitter = preg_replace("=https?://twitter.com/(.*)=ism", "$1@twitter.com", $profile); $twitter = preg_replace("=https?://twitter.com/(.*)=ism", "$1@twitter.com", $profile);
if ($twitter != $profile) if ($twitter != $profile) {
return($username." (".$twitter.")"); if ($compact)
return($twitter);
else
return($username." (".$twitter.")");
}
$appnet = preg_replace("=https?://alpha.app.net/(.*)=ism", "$1@alpha.app.net", $profile); $appnet = preg_replace("=https?://alpha.app.net/(.*)=ism", "$1@alpha.app.net", $profile);
if ($appnet != $profile) if ($appnet != $profile) {
return($username." (".$appnet.")"); if ($compact)
return($appnet);
else
return($username." (".$appnet.")");
}
$gplus = preg_replace("=https?://plus.google.com/(.*)=ism", "$1@plus.google.com", $profile); $gplus = preg_replace("=https?://plus.google.com/(.*)=ism", "$1@plus.google.com", $profile);
if ($gplus != $profile) if ($gplus != $profile)
return($username." (".$gplus.")"); return($username." (".$gplus.")");
$friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile); $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile);
if ($friendica != $profile) if ($friendica != $profile) {
return($username." (".$friendica.")"); if ($compact)
return($friendica);
else
return($username." (".$friendica.")");
}
$diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); $diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile);
if ($diaspora != $profile) if ($diaspora != $profile) {
return($username." (".$diaspora.")"); if ($compact)
return($diaspora);
else
return($username." (".$diaspora.")");
}
$StatusnetHost = preg_replace("=https?://(.*)/user/(.*)=ism", "$1", $profile); $StatusnetHost = preg_replace("=https?://(.*)/user/(.*)=ism", "$1", $profile);
if ($StatusnetHost != $profile) { if ($StatusnetHost != $profile) {
@ -766,8 +550,12 @@ function GetProfileUsername($profile, $username) {
if ($StatusnetUser != $profile) { if ($StatusnetUser != $profile) {
$UserData = fetch_url("http://".$StatusnetHost."/api/users/show.json?user_id=".$StatusnetUser); $UserData = fetch_url("http://".$StatusnetHost."/api/users/show.json?user_id=".$StatusnetUser);
$user = json_decode($UserData); $user = json_decode($UserData);
if ($user) if ($user) {
return($username." (".$user->screen_name."@".$StatusnetHost.")"); if ($compact)
return($user->screen_name."@".$StatusnetHost);
else
return($username." (".$user->screen_name."@".$StatusnetHost.")");
}
} }
} }
@ -775,8 +563,12 @@ function GetProfileUsername($profile, $username) {
$rest = preg_replace("=https?://([\.\w]+)/([\.\w]+)(.*)=ism", "$3", $profile); $rest = preg_replace("=https?://([\.\w]+)/([\.\w]+)(.*)=ism", "$3", $profile);
if ($rest == "") { if ($rest == "") {
$pumpio = preg_replace("=https?://([\.\w]+)/([\.\w]+)(.*)=ism", "$2@$1", $profile); $pumpio = preg_replace("=https?://([\.\w]+)/([\.\w]+)(.*)=ism", "$2@$1", $profile);
if ($pumpio != $profile) if ($pumpio != $profile) {
return($username." (".$pumpio.")"); if ($compact)
return($pumpio);
else
return($username." (".$pumpio.")");
}
} }
return($username); return($username);
@ -979,7 +771,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
$Text = preg_replace("/#\[url\=[$URLSearchString]*\]\^\[\/url\]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/i", $Text = preg_replace("/#\[url\=[$URLSearchString]*\]\^\[\/url\]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/i",
"[bookmark=$1]$2[/bookmark]", $Text); "[bookmark=$1]$2[/bookmark]", $Text);
if (in_array($simplehtml, array(2, 6))) { if (in_array($simplehtml, array(2, 6, 7, 8))) {
$Text = preg_replace_callback("/([^#@])\[url\=([^\]]*)\](.*?)\[\/url\]/ism","bb_expand_links",$Text); $Text = preg_replace_callback("/([^#@])\[url\=([^\]]*)\](.*?)\[\/url\]/ism","bb_expand_links",$Text);
//$Text = preg_replace("/[^#@]\[url\=([^\]]*)\](.*?)\[\/url\]/ism",' $2 [url]$1[/url]',$Text); //$Text = preg_replace("/[^#@]\[url\=([^\]]*)\](.*?)\[\/url\]/ism",' $2 [url]$1[/url]',$Text);
$Text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",' $2 [url]$1[/url]',$Text); $Text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",' $2 [url]$1[/url]',$Text);
@ -1160,18 +952,6 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
function ($match) use ($simplehtml){ function ($match) use ($simplehtml){
return(bb_ShareAttributes($match, $simplehtml)); return(bb_ShareAttributes($match, $simplehtml));
},$Text); },$Text);
/*
if (!$simplehtml)
$Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributes",$Text);
elseif ($simplehtml == 1)
$Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesSimple",$Text);
elseif (($simplehtml == 2) OR ($simplehtml == 5))
$Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesSimple2",$Text);
elseif ($simplehtml == 3)
$Text = preg_replace_callback("/(.*?)\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesDiaspora",$Text);
elseif ($simplehtml == 4)
$Text = preg_replace_callback("/(.*?)\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesForExport",$Text);
*/
$Text = preg_replace("/\[crypt\](.*?)\[\/crypt\]/ism",'<br/><img src="' .$a->get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . t('Encrypted content') . '" /><br />', $Text); $Text = preg_replace("/\[crypt\](.*?)\[\/crypt\]/ism",'<br/><img src="' .$a->get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . t('Encrypted content') . '" /><br />', $Text);
$Text = preg_replace("/\[crypt(.*?)\](.*?)\[\/crypt\]/ism",'<br/><img src="' .$a->get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . '$1' . ' ' . t('Encrypted content') . '" /><br />', $Text); $Text = preg_replace("/\[crypt(.*?)\](.*?)\[\/crypt\]/ism",'<br/><img src="' .$a->get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . '$1' . ' ' . t('Encrypted content') . '" /><br />', $Text);

View file

@ -620,7 +620,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$likebuttons = false; $likebuttons = false;
$shareable = false; $shareable = false;
$body = prepare_body($item,true); $body = prepare_body($item,true, $preview);
list($categories, $folders) = get_cats_and_terms($item); list($categories, $folders) = get_cats_and_terms($item);
@ -685,7 +685,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'like' => '', 'like' => '',
'dislike' => '', 'dislike' => '',
'comment' => '', 'comment' => '',
'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), //'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))),
'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/'.$item['guid'], 'title'=> t('View in context'))),
'previewing' => $previewing, 'previewing' => $previewing,
'wait' => t('Please wait'), 'wait' => t('Please wait'),
'thread_level' => 1, 'thread_level' => 1,

View file

@ -1868,8 +1868,12 @@ function diaspora_like($importer,$xml,$msg) {
$parent_author_signature = base64_decode($parent_author_signature); $parent_author_signature = base64_decode($parent_author_signature);
if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) { if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) {
logger('diaspora_like: top-level owner verification failed.'); if (intval(get_config('system','ignore_diaspora_like_signature')))
return; logger('diaspora_like: top-level owner verification failed. Proceeding anyway.');
else {
logger('diaspora_like: top-level owner verification failed.');
return;
}
} }
} }
else { else {
@ -1881,8 +1885,12 @@ function diaspora_like($importer,$xml,$msg) {
$author_signature = base64_decode($author_signature); $author_signature = base64_decode($author_signature);
if(! rsa_verify($signed_data,$author_signature,$key,'sha256')) { if(! rsa_verify($signed_data,$author_signature,$key,'sha256')) {
logger('diaspora_like: like creator verification failed.'); if (intval(get_config('system','ignore_diaspora_like_signature')))
return; logger('diaspora_like: like creator verification failed. Proceeding anyway');
else {
logger('diaspora_like: like creator verification failed.');
return;
}
} }
} }

View file

@ -1011,6 +1011,19 @@ function item_store($arr,$force_parent = false) {
} }
} }
// If there is no guid then take the same guid that was taken before for the same uri
if ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
logger('item_store: checking for an existing guid for uri '.$arr['uri'], LOGGER_DEBUG);
$r = q("SELECT `guid` FROM `item` WHERE `uri` = '%s' AND `guid` != '' LIMIT 1",
dbesc(trim($arr['uri']))
);
if(count($r)) {
$arr['guid'] = $r[0]["guid"];
logger('item_store: found guid '.$arr['guid'].' for uri '.$arr['uri'], LOGGER_DEBUG);
}
}
// Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin. // Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
// Deactivated, since the bbcode parser can handle with it - and it destroys posts with some smileys that contain "<" // Deactivated, since the bbcode parser can handle with it - and it destroys posts with some smileys that contain "<"
//if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false)) //if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))

View file

@ -95,6 +95,12 @@ function get_attached_data($body) {
$post["type"] = "text"; $post["type"] = "text";
$post["text"] = trim($body); $post["text"] = trim($body);
} }
} elseif (isset($post["url"]) AND ($post["type"] == "video")) {
require_once("mod/parse_url.php");
$data = parseurl_getsiteinfo($post["url"], true);
if (isset($data["images"][0]))
$post["image"] = $data["images"][0]["src"];
} }
return($post); return($post);

View file

@ -1293,7 +1293,7 @@ if(! function_exists('prepare_body')) {
* @hook prepare_body ('item'=>item array, 'html'=>body string) after first bbcode to html * @hook prepare_body ('item'=>item array, 'html'=>body string) after first bbcode to html
* @hook prepare_body_final ('item'=>item array, 'html'=>body string) after attach icons and blockquote special case handling (spoiler, author) * @hook prepare_body_final ('item'=>item array, 'html'=>body string) after attach icons and blockquote special case handling (spoiler, author)
*/ */
function prepare_body(&$item,$attach = false) { function prepare_body(&$item,$attach = false, $preview = false) {
$a = get_app(); $a = get_app();
call_hooks('prepare_body_init', $item); call_hooks('prepare_body_init', $item);
@ -1353,7 +1353,7 @@ function prepare_body(&$item,$attach = false) {
} }
$prep_arr = array('item' => $item, 'html' => $s); $prep_arr = array('item' => $item, 'html' => $s, 'preview' => $preview);
call_hooks('prepare_body', $prep_arr); call_hooks('prepare_body', $prep_arr);
$s = $prep_arr['html']; $s = $prep_arr['html'];

View file

@ -33,7 +33,7 @@ function admin_post(&$a){
admin_page_users_post($a); admin_page_users_post($a);
break; break;
case 'plugins': case 'plugins':
if ($a->argc > 2 && if ($a->argc > 2 &&
is_file("addon/".$a->argv[2]."/".$a->argv[2].".php")){ is_file("addon/".$a->argv[2]."/".$a->argv[2].".php")){
@include_once("addon/".$a->argv[2]."/".$a->argv[2].".php"); @include_once("addon/".$a->argv[2]."/".$a->argv[2].".php");
if(function_exists($a->argv[2].'_plugin_admin_post')) { if(function_exists($a->argv[2].'_plugin_admin_post')) {
@ -122,7 +122,7 @@ function admin_content(&$a) {
$t = get_markup_template("admin_aside.tpl"); $t = get_markup_template("admin_aside.tpl");
$a->page['aside'] .= replace_macros( $t, array( $a->page['aside'] .= replace_macros( $t, array(
'$admin' => $aside, '$admin' => $aside,
'$admtxt' => t('Admin'), '$admtxt' => t('Admin'),
'$plugadmtxt' => t('Plugin Features'), '$plugadmtxt' => t('Plugin Features'),
'$logtxt' => t('Logs'), '$logtxt' => t('Logs'),
@ -168,13 +168,13 @@ function admin_content(&$a) {
} }
if(is_ajax()) { if(is_ajax()) {
echo $o; echo $o;
killme(); killme();
return ''; return '';
} else { } else {
return $o; return $o;
} }
} }
/** /**
@ -242,35 +242,35 @@ function admin_page_site_post(&$a){
if (x($_POST,'relocate') && x($_POST,'relocate_url') && $_POST['relocate_url']!=""){ if (x($_POST,'relocate') && x($_POST,'relocate_url') && $_POST['relocate_url']!=""){
$new_url = $_POST['relocate_url']; $new_url = $_POST['relocate_url'];
$new_url = rtrim($new_url,"/"); $new_url = rtrim($new_url,"/");
$parsed = @parse_url($new_url); $parsed = @parse_url($new_url);
if (!$parsed || (!x($parsed,'host') || !x($parsed,'scheme'))) { if (!$parsed || (!x($parsed,'host') || !x($parsed,'scheme'))) {
notice(t("Can not parse base url. Must have at least <scheme>://<domain>")); notice(t("Can not parse base url. Must have at least <scheme>://<domain>"));
goaway($a->get_baseurl(true) . '/admin/site' ); goaway($a->get_baseurl(true) . '/admin/site' );
} }
/* steps: /* steps:
* replace all "baseurl" to "new_url" in config, profile, term, items and contacts * replace all "baseurl" to "new_url" in config, profile, term, items and contacts
* send relocate for every local user * send relocate for every local user
* */ * */
$old_url = $a->get_baseurl(true); $old_url = $a->get_baseurl(true);
function update_table($table_name, $fields, $old_url, $new_url) { function update_table($table_name, $fields, $old_url, $new_url) {
global $db, $a; global $db, $a;
$dbold = dbesc($old_url); $dbold = dbesc($old_url);
$dbnew = dbesc($new_url); $dbnew = dbesc($new_url);
$upd = array(); $upd = array();
foreach ($fields as $f) { foreach ($fields as $f) {
$upd[] = "`$f` = REPLACE(`$f`, '$dbold', '$dbnew')"; $upd[] = "`$f` = REPLACE(`$f`, '$dbold', '$dbnew')";
} }
$upds = implode(", ", $upd); $upds = implode(", ", $upd);
$q = sprintf("UPDATE %s SET %s;", $table_name, $upds); $q = sprintf("UPDATE %s SET %s;", $table_name, $upds);
$r = q($q); $r = q($q);
if (!$r) { if (!$r) {
@ -278,30 +278,31 @@ function admin_page_site_post(&$a){
goaway($a->get_baseurl(true) . '/admin/site' ); goaway($a->get_baseurl(true) . '/admin/site' );
} }
} }
// update tables // update tables
update_table("profile", array('photo', 'thumb'), $old_url, $new_url); update_table("profile", array('photo', 'thumb'), $old_url, $new_url);
update_table("term", array('url'), $old_url, $new_url); update_table("term", array('url'), $old_url, $new_url);
update_table("contact", array('photo','thumb','micro','url','nurl','request','notify','poll','confirm','poco'), $old_url, $new_url); update_table("contact", array('photo','thumb','micro','url','nurl','request','notify','poll','confirm','poco'), $old_url, $new_url);
update_table("unique_contacts", array('url'), $old_url, $new_url);
update_table("item", array('owner-link','owner-avatar','author-name','author-link','author-avatar','body','plink','tag'), $old_url, $new_url); update_table("item", array('owner-link','owner-avatar','author-name','author-link','author-avatar','body','plink','tag'), $old_url, $new_url);
// update config // update config
$a->set_baseurl($new_url); $a->set_baseurl($new_url);
set_config('system','url',$new_url); set_config('system','url',$new_url);
// send relocate // send relocate
$users = q("SELECT uid FROM user WHERE account_removed = 0 AND account_expired = 0"); $users = q("SELECT uid FROM user WHERE account_removed = 0 AND account_expired = 0");
foreach ($users as $user) { foreach ($users as $user) {
proc_run('php', 'include/notifier.php', 'relocate', $user['uid']); proc_run('php', 'include/notifier.php', 'relocate', $user['uid']);
} }
info("Relocation started. Could take a while to complete."); info("Relocation started. Could take a while to complete.");
goaway($a->get_baseurl(true) . '/admin/site' ); goaway($a->get_baseurl(true) . '/admin/site' );
} }
// end relocate // end relocate
$sitename = ((x($_POST,'sitename')) ? notags(trim($_POST['sitename'])) : ''); $sitename = ((x($_POST,'sitename')) ? notags(trim($_POST['sitename'])) : '');
$banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false); $banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false);
$info = ((x($_POST,'info')) ? trim($_POST['info']) : false); $info = ((x($_POST,'info')) ? trim($_POST['info']) : false);
@ -374,14 +375,14 @@ function admin_page_site_post(&$a){
`poco` = replace(`poco` , 'http:' , 'https:') `poco` = replace(`poco` , 'http:' , 'https:')
where `self` = 1" where `self` = 1"
); );
q("update `profile` set q("update `profile` set
`photo` = replace(`photo` , 'http:' , 'https:'), `photo` = replace(`photo` , 'http:' , 'https:'),
`thumb` = replace(`thumb` , 'http:' , 'https:') `thumb` = replace(`thumb` , 'http:' , 'https:')
where 1 " where 1 "
); );
} }
elseif($ssl_policy == SSL_POLICY_SELFSIGN) { elseif($ssl_policy == SSL_POLICY_SELFSIGN) {
q("update `contact` set q("update `contact` set
`url` = replace(`url` , 'https:' , 'http:'), `url` = replace(`url` , 'https:' , 'http:'),
`photo` = replace(`photo` , 'https:' , 'http:'), `photo` = replace(`photo` , 'https:' , 'http:'),
`thumb` = replace(`thumb` , 'https:' , 'http:'), `thumb` = replace(`thumb` , 'https:' , 'http:'),
@ -393,7 +394,7 @@ function admin_page_site_post(&$a){
`poco` = replace(`poco` , 'https:' , 'http:') `poco` = replace(`poco` , 'https:' , 'http:')
where `self` = 1" where `self` = 1"
); );
q("update `profile` set q("update `profile` set
`photo` = replace(`photo` , 'https:' , 'http:'), `photo` = replace(`photo` , 'https:' , 'http:'),
`thumb` = replace(`thumb` , 'https:' , 'http:') `thumb` = replace(`thumb` , 'https:' , 'http:')
where 1 " where 1 "
@ -566,7 +567,7 @@ function admin_page_site(&$a) {
REGISTER_CLOSED => t("Closed"), REGISTER_CLOSED => t("Closed"),
REGISTER_APPROVE => t("Requires approval"), REGISTER_APPROVE => t("Requires approval"),
REGISTER_OPEN => t("Open") REGISTER_OPEN => t("Open")
); );
$ssl_choices = array( $ssl_choices = array(
SSL_POLICY_NONE => t("No SSL policy, links will track page SSL state"), SSL_POLICY_NONE => t("No SSL policy, links will track page SSL state"),
@ -670,7 +671,7 @@ function admin_page_dbsync(&$a) {
if(function_exists($func)) { if(function_exists($func)) {
$retval = $func(); $retval = $func();
if($retval === UPDATE_FAILED) { if($retval === UPDATE_FAILED) {
$o .= sprintf( t('Executing %s failed. Check system logs.'), $func); $o .= sprintf( t('Executing %s failed. Check system logs.'), $func);
} }
elseif($retval === UPDATE_SUCCESS) { elseif($retval === UPDATE_SUCCESS) {
$o .= sprintf( t('Update %s was successfully applied.', $func)); $o .= sprintf( t('Update %s was successfully applied.', $func));
@ -918,9 +919,9 @@ function admin_page_users(&$a){
'$delete' => t('Delete'), '$delete' => t('Delete'),
'$block' => t('Block'), '$block' => t('Block'),
'$unblock' => t('Unblock'), '$unblock' => t('Unblock'),
'$siteadmin' => t('Site admin'), '$siteadmin' => t('Site admin'),
'$accountexpired' => t('Account expired'), '$accountexpired' => t('Account expired'),
'$h_users' => t('Users'), '$h_users' => t('Users'),
'$h_newuser' => t('New User'), '$h_newuser' => t('New User'),
'$th_deleted' => array( t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Deleted since') ), '$th_deleted' => array( t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Deleted since') ),
@ -929,7 +930,7 @@ function admin_page_users(&$a){
'$confirm_delete_multi' => t('Selected users will be deleted!\n\nEverything these users had posted on this site will be permanently deleted!\n\nAre you sure?'), '$confirm_delete_multi' => t('Selected users will be deleted!\n\nEverything these users had posted on this site will be permanently deleted!\n\nAre you sure?'),
'$confirm_delete' => t('The user {0} will be deleted!\n\nEverything this user has posted on this site will be permanently deleted!\n\nAre you sure?'), '$confirm_delete' => t('The user {0} will be deleted!\n\nEverything this user has posted on this site will be permanently deleted!\n\nAre you sure?'),
'$form_security_token' => get_form_security_token("admin_users"), '$form_security_token' => get_form_security_token("admin_users"),
// values // // values //
'$baseurl' => $a->get_baseurl(true), '$baseurl' => $a->get_baseurl(true),
@ -937,9 +938,9 @@ function admin_page_users(&$a){
'$pending' => $pending, '$pending' => $pending,
'deleted' => $deleted, 'deleted' => $deleted,
'$users' => $users, '$users' => $users,
'$newusername' => array('new_user_name', t("Name"), '', t("Name of the new user.")), '$newusername' => array('new_user_name', t("Name"), '', t("Name of the new user.")),
'$newusernickname' => array('new_user_nickname', t("Nickname"), '', t("Nickname of the new user.")), '$newusernickname' => array('new_user_nickname', t("Nickname"), '', t("Nickname of the new user.")),
'$newuseremail' => array('new_user_email', t("Email"), '', t("Email address of the new user.")), '$newuseremail' => array('new_user_email', t("Email"), '', t("Email address of the new user.")),
)); ));
$o .= paginate($a); $o .= paginate($a);
return $o; return $o;
@ -1280,7 +1281,7 @@ function admin_page_themes(&$a){
* *
* @param App $a * @param App $a
*/ */
function admin_page_logs_post(&$a) { function admin_page_logs_post(&$a) {
if (x($_POST,"page_logs")) { if (x($_POST,"page_logs")) {
check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs'); check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');

View file

@ -1,6 +1,5 @@
<?php <?php
function display_init(&$a) { function display_init(&$a) {
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
@ -8,6 +7,33 @@ function display_init(&$a) {
} }
$nick = (($a->argc > 1) ? $a->argv[1] : ''); $nick = (($a->argc > 1) ? $a->argv[1] : '');
// If there is only one parameter, then check if this parameter could be a guid
if ($a->argc == 2) {
$nick = "";
// Does the local user have this item?
if (local_user()) {
$r = q("SELECT `id` FROM `item`
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
AND `guid` = '%s' AND `uid` = %d", $a->argv[1], local_user());
if (count($r))
$nick = $a->user["nickname"];
}
// Or is it anywhere on the server?
if ($nick == "") {
$r = q("SELECT `user`.`nickname` FROM `item` INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
AND `item`.`private` = 0 AND `item`.`wall` = 1
AND `item`.`guid` = '%s'", $a->argv[1]);
if (count($r))
$nick = $r[0]["nickname"];
}
}
profile_load($a,$nick); profile_load($a,$nick);
} }
@ -44,6 +70,33 @@ function display_content(&$a, $update = 0) {
} }
else { else {
$item_id = (($a->argc > 2) ? $a->argv[2] : 0); $item_id = (($a->argc > 2) ? $a->argv[2] : 0);
if ($a->argc == 2) {
$nick = "";
if (local_user()) {
$r = q("SELECT `id` FROM `item`
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
AND `guid` = '%s' AND `uid` = %d", $a->argv[1], local_user());
if (count($r)) {
$item_id = $r[0]["id"];
$nick = $a->user["nickname"];
}
}
if ($nick == "") {
$r = q("SELECT `user`.`nickname`, `item`.`id` FROM `item` INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
AND `item`.`private` = 0 AND `item`.`wall` = 1
AND `item`.`guid` = '%s'", $a->argv[1]);
if (count($r)) {
$item_id = $r[0]["id"];
$nick = $r[0]["nickname"];
}
}
}
} }
if(! $item_id) { if(! $item_id) {

View file

@ -907,6 +907,10 @@ function item_post(&$a) {
call_hooks('post_local_end', $datarray); call_hooks('post_local_end', $datarray);
// if no auto update is enabled, then disable it temporarily
if (get_pconfig($profile_uid, "system", "no_auto_update") == 1)
set_pconfig($profile_uid, "system", "no_auto_update", -1);
if(strlen($emailcc) && $profile_uid == local_user()) { if(strlen($emailcc) && $profile_uid == local_user()) {
$erecips = explode(',', $emailcc); $erecips = explode(',', $emailcc);
if(count($erecips)) { if(count($erecips)) {

View file

@ -136,6 +136,9 @@ function like_content(&$a) {
// Save the author information for the unlike in case we need to relay to Diaspora // Save the author information for the unlike in case we need to relay to Diaspora
store_diaspora_like_retract_sig($activity, $item, $like_item, $contact); store_diaspora_like_retract_sig($activity, $item, $like_item, $contact);
// if no auto update is enabled, then disable it temporarily
if (get_pconfig($owner_uid, "system", "no_auto_update") == 1)
set_pconfig($owner_uid, "system", "no_auto_update", -1);
// proc_run('php',"include/notifier.php","like","$post_id"); // $post_id isn't defined here! // proc_run('php',"include/notifier.php","like","$post_id"); // $post_id isn't defined here!
$like_item_id = $like_item['id']; $like_item_id = $like_item['id'];
@ -148,7 +151,7 @@ function like_content(&$a) {
$uri = item_new_uri($a->get_hostname(),$owner_uid); $uri = item_new_uri($a->get_hostname(),$owner_uid);
$post_type = (($item['resource-id']) ? t('photo') : t('status')); $post_type = (($item['resource-id']) ? t('photo') : t('status'));
$objtype = (($item['resource-id']) ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE ); $objtype = (($item['resource-id']) ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE );
$link = xmlify('<link rel="alternate" type="text/html" href="' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . '" />' . "\n") ; $link = xmlify('<link rel="alternate" type="text/html" href="' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . '" />' . "\n") ;
$body = $item['body']; $body = $item['body'];
@ -219,6 +222,9 @@ EOT;
// Save the author information for the like in case we need to relay to Diaspora // Save the author information for the like in case we need to relay to Diaspora
store_diaspora_like_sig($activity, $post_type, $contact, $post_id); store_diaspora_like_sig($activity, $post_type, $contact, $post_id);
// if no auto update is enabled, then disable it temporarily
if (get_pconfig($owner_uid, "system", "no_auto_update") == 1)
set_pconfig($owner_uid, "system", "no_auto_update", -1);
$arr['id'] = $post_id; $arr['id'] = $post_id;

View file

@ -268,6 +268,7 @@ function settings_post(&$a) {
$nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0); $nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0);
$noinfo = ((x($_POST,'noinfo')) ? intval($_POST['noinfo']) : 0); $noinfo = ((x($_POST,'noinfo')) ? intval($_POST['noinfo']) : 0);
$infinite_scroll = ((x($_POST,'infinite_scroll')) ? intval($_POST['infinite_scroll']) : 0); $infinite_scroll = ((x($_POST,'infinite_scroll')) ? intval($_POST['infinite_scroll']) : 0);
$no_auto_update = ((x($_POST,'no_auto_update')) ? intval($_POST['no_auto_update']) : 0);
$browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0); $browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
$browser_update = $browser_update * 1000; $browser_update = $browser_update * 1000;
if($browser_update < 10000) if($browser_update < 10000)
@ -291,6 +292,7 @@ function settings_post(&$a) {
set_pconfig(local_user(),'system','no_smilies',$nosmile); set_pconfig(local_user(),'system','no_smilies',$nosmile);
set_pconfig(local_user(),'system','ignore_info',$noinfo); set_pconfig(local_user(),'system','ignore_info',$noinfo);
set_pconfig(local_user(),'system','infinite_scroll',$infinite_scroll); set_pconfig(local_user(),'system','infinite_scroll',$infinite_scroll);
set_pconfig(local_user(),'system','no_auto_update',$no_auto_update);
if ($theme == $a->user['theme']){ if ($theme == $a->user['theme']){
@ -859,6 +861,9 @@ function settings_content(&$a) {
$infinite_scroll = get_pconfig(local_user(),'system','infinite_scroll'); $infinite_scroll = get_pconfig(local_user(),'system','infinite_scroll');
$infinite_scroll = (($infinite_scroll===false)? '0': $infinite_scroll); // default if not set: 0 $infinite_scroll = (($infinite_scroll===false)? '0': $infinite_scroll); // default if not set: 0
$no_auto_update = get_pconfig(local_user(),'system','no_auto_update');
$no_auto_update = (($no_auto_update===false)? '0': $no_auto_update); // default if not set: 0
$theme_config = ""; $theme_config = "";
if( ($themeconfigfile = get_theme_config_file($theme_selected)) != null){ if( ($themeconfigfile = get_theme_config_file($theme_selected)) != null){
require_once($themeconfigfile); require_once($themeconfigfile);
@ -881,6 +886,7 @@ function settings_content(&$a) {
'$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''), '$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''),
'$noinfo' => array('noinfo', t("Don't show notices"), $noinfo, ''), '$noinfo' => array('noinfo', t("Don't show notices"), $noinfo, ''),
'$infinite_scroll' => array('infinite_scroll', t("Infinite scroll"), $infinite_scroll, ''), '$infinite_scroll' => array('infinite_scroll', t("Infinite scroll"), $infinite_scroll, ''),
'$no_auto_update' => array('no_auto_update', t("Disable automatic network update"), $no_auto_update, ''),
'$theme_config' => $theme_config, '$theme_config' => $theme_config,
)); ));

View file

@ -13,8 +13,14 @@ function update_network_content(&$a) {
echo "<!DOCTYPE html><html><body>\r\n"; echo "<!DOCTYPE html><html><body>\r\n";
echo (($_GET['msie'] == 1) ? '<div>' : '<section>'); echo (($_GET['msie'] == 1) ? '<div>' : '<section>');
$no_auto_update = get_pconfig($profile_uid, "system", "no_auto_update");
if ($no_auto_update <= 0) {
$text = network_content($a,$profile_uid);
if ($no_auto_update < 0)
set_pconfig($profile_uid, "system", "no_auto_update", 1);
} else
$text = "";
$text = network_content($a,$profile_uid);
$pattern = "/<img([^>]*) src=\"([^\"]*)\"/"; $pattern = "/<img([^>]*) src=\"([^\"]*)\"/";
$replace = "<img\${1} dst=\"\${2}\""; $replace = "<img\${1} dst=\"\${2}\"";
$text = preg_replace($pattern, $replace, $text); $text = preg_replace($pattern, $replace, $text);

View file

@ -16,6 +16,7 @@
{{include file="field_checkbox.tpl" field=$nosmile}} {{include file="field_checkbox.tpl" field=$nosmile}}
{{include file="field_checkbox.tpl" field=$noinfo}} {{include file="field_checkbox.tpl" field=$noinfo}}
{{include file="field_checkbox.tpl" field=$infinite_scroll}} {{include file="field_checkbox.tpl" field=$infinite_scroll}}
{{include file="field_checkbox.tpl" field=$no_auto_update}}
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >