Merge remote branch 'upstream/master'
This commit is contained in:
commit
18679111f5
2
boot.php
2
boot.php
|
@ -9,7 +9,7 @@ require_once('include/nav.php');
|
||||||
require_once('include/cache.php');
|
require_once('include/cache.php');
|
||||||
|
|
||||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define ( 'FRIENDICA_VERSION', '2.3.1263' );
|
define ( 'FRIENDICA_VERSION', '2.3.1264' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1127 );
|
define ( 'DB_UPDATE_VERSION', 1127 );
|
||||||
|
|
||||||
|
|
|
@ -230,11 +230,16 @@ function scrape_feed($url) {
|
||||||
$ret = array();
|
$ret = array();
|
||||||
$s = fetch_url($url);
|
$s = fetch_url($url);
|
||||||
|
|
||||||
if(! $s)
|
|
||||||
return $ret;
|
|
||||||
|
|
||||||
$headers = $a->get_curl_headers();
|
$headers = $a->get_curl_headers();
|
||||||
logger('scrape_feed: headers=' . $headers, LOGGER_DEBUG);
|
$code = $a->get_curl_code();
|
||||||
|
|
||||||
|
logger('scrape_feed: returns: ' . $code . ' headers=' . $headers, LOGGER_DEBUG);
|
||||||
|
|
||||||
|
if(! $s) {
|
||||||
|
logger('scrape_feed: no data returned for ' . $url);
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$lines = explode("\n",$headers);
|
$lines = explode("\n",$headers);
|
||||||
if(count($lines)) {
|
if(count($lines)) {
|
||||||
|
@ -258,8 +263,10 @@ function scrape_feed($url) {
|
||||||
logger('scrape_feed: parse error: ' . $e);
|
logger('scrape_feed: parse error: ' . $e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(! $dom)
|
if(! $dom) {
|
||||||
|
logger('scrape_feed: failed to parse.');
|
||||||
return $ret;
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$head = $dom->getElementsByTagName('base');
|
$head = $dom->getElementsByTagName('base');
|
||||||
|
@ -565,7 +572,7 @@ function probe_url($url, $mode = PROBE_NORMAL) {
|
||||||
if($check_feed) {
|
if($check_feed) {
|
||||||
|
|
||||||
$feedret = scrape_feed(($poll) ? $poll : $url);
|
$feedret = scrape_feed(($poll) ? $poll : $url);
|
||||||
logger('probe_url: scrape_feed returns: ' . print_r($feedret,true), LOGGER_DATA);
|
logger('probe_url: scrape_feed ' . (($poll)? $poll : $url) . ' returns: ' . print_r($feedret,true), LOGGER_DATA);
|
||||||
if(count($feedret) && ($feedret['feed_atom'] || $feedret['feed_rss'])) {
|
if(count($feedret) && ($feedret['feed_atom'] || $feedret['feed_rss'])) {
|
||||||
$poll = ((x($feedret,'feed_atom')) ? unamp($feedret['feed_atom']) : unamp($feedret['feed_rss']));
|
$poll = ((x($feedret,'feed_atom')) ? unamp($feedret['feed_atom']) : unamp($feedret['feed_rss']));
|
||||||
if(! x($vcard))
|
if(! x($vcard))
|
||||||
|
|
|
@ -162,7 +162,7 @@ function del_config($family,$key) {
|
||||||
if(x($a->config[$family],$key))
|
if(x($a->config[$family],$key))
|
||||||
unset($a->config[$family][$key]);
|
unset($a->config[$family][$key]);
|
||||||
$ret = q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1",
|
$ret = q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1",
|
||||||
dbesc($cat),
|
dbesc($family),
|
||||||
dbesc($key)
|
dbesc($key)
|
||||||
);
|
);
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
|
@ -232,7 +232,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||||
|
|
||||||
$alike = array();
|
$alike = array();
|
||||||
$dlike = array();
|
$dlike = array();
|
||||||
|
$o = "";
|
||||||
|
|
||||||
// array with html for each thread (parent+comments)
|
// array with html for each thread (parent+comments)
|
||||||
$threads = array();
|
$threads = array();
|
||||||
|
@ -436,7 +436,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// prevent private email from leaking into public conversation
|
// prevent private email from leaking into public conversation
|
||||||
if((! $toplevelpost) && (! toplevelprivate) && ($item['private']) && ($profile_owner != local_user()))
|
if((! $toplevelpost) && (! $toplevelprivate) && ($item['private']) && ($profile_owner != local_user()))
|
||||||
continue;
|
continue;
|
||||||
$comments_seen ++;
|
$comments_seen ++;
|
||||||
}
|
}
|
||||||
|
@ -641,7 +641,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||||
$body = prepare_body($item,true);
|
$body = prepare_body($item,true);
|
||||||
|
|
||||||
$tmp_item = replace_macros($template,array(
|
$tmp_item = replace_macros($template,array(
|
||||||
'$type' => implode("",array_slice(split("/",$item['verb']),-1)),
|
'$type' => implode("",array_slice(explode("/",$item['verb']),-1)),
|
||||||
'$tags' => $tags,
|
'$tags' => $tags,
|
||||||
'$body' => template_escape($body),
|
'$body' => template_escape($body),
|
||||||
'$id' => $item['item_id'],
|
'$id' => $item['item_id'],
|
||||||
|
|
|
@ -163,7 +163,7 @@ function bbtoevent($s) {
|
||||||
if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
|
if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
|
||||||
$ev['adjust'] = $match[1];
|
$ev['adjust'] = $match[1];
|
||||||
$match = '';
|
$match = '';
|
||||||
$ev['nofinish'] = (($ev['start'] && (! $ev['finish'])) ? 1 : 0);
|
$ev['nofinish'] = (($ev['start'] && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0);
|
||||||
return $ev;
|
return $ev;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,7 +308,7 @@ function get_atom_elements($feed,$item) {
|
||||||
if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
|
if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
|
||||||
$base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
|
$base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
|
||||||
foreach($base as $link) {
|
foreach($base as $link) {
|
||||||
if(! $res['author-avatar']) {
|
if(!x($res, 'author-avatar') || !$res['author-avatar']) {
|
||||||
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
|
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
|
||||||
$res['author-avatar'] = unxmlify($link['attribs']['']['href']);
|
$res['author-avatar'] = unxmlify($link['attribs']['']['href']);
|
||||||
}
|
}
|
||||||
|
@ -323,7 +323,7 @@ function get_atom_elements($feed,$item) {
|
||||||
foreach($base as $link) {
|
foreach($base as $link) {
|
||||||
if($link['attribs']['']['rel'] === 'alternate' && (! $res['author-link']))
|
if($link['attribs']['']['rel'] === 'alternate' && (! $res['author-link']))
|
||||||
$res['author-link'] = unxmlify($link['attribs']['']['href']);
|
$res['author-link'] = unxmlify($link['attribs']['']['href']);
|
||||||
if(! $res['author-avatar']) {
|
if(!x($res, 'author-avatar') || !$res['author-avatar']) {
|
||||||
if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
|
if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
|
||||||
$res['author-avatar'] = unxmlify($link['attribs']['']['href']);
|
$res['author-avatar'] = unxmlify($link['attribs']['']['href']);
|
||||||
}
|
}
|
||||||
|
@ -503,7 +503,7 @@ function get_atom_elements($feed,$item) {
|
||||||
$base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
|
$base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
|
||||||
|
|
||||||
foreach($base as $link) {
|
foreach($base as $link) {
|
||||||
if(! $res['owner-avatar']) {
|
if(!x($res, 'owner-avatar') || !$res['owner-avatar']) {
|
||||||
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
|
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
|
||||||
$res['owner-avatar'] = unxmlify($link['attribs']['']['href']);
|
$res['owner-avatar'] = unxmlify($link['attribs']['']['href']);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_
|
||||||
|
|
||||||
if (!is_null($accept_content)){
|
if (!is_null($accept_content)){
|
||||||
curl_setopt($ch,CURLOPT_HTTPHEADER, array (
|
curl_setopt($ch,CURLOPT_HTTPHEADER, array (
|
||||||
"Accept: "+$accept_content
|
"Accept: " . $accept_content
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_
|
||||||
$curl_info = @curl_getinfo($ch);
|
$curl_info = @curl_getinfo($ch);
|
||||||
$http_code = $curl_info['http_code'];
|
$http_code = $curl_info['http_code'];
|
||||||
|
|
||||||
|
// logger('fetch_url:' . $http_code . ' data: ' . $s);
|
||||||
$header = '';
|
$header = '';
|
||||||
|
|
||||||
// Pull out multiple headers, e.g. proxy and continuation headers
|
// Pull out multiple headers, e.g. proxy and continuation headers
|
||||||
|
@ -74,11 +75,13 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_
|
||||||
if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
|
if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
||||||
$url = trim(array_pop($matches));
|
$newurl = trim(array_pop($matches));
|
||||||
$url_parsed = @parse_url($url);
|
if(strpos($newurl,'/') === 0)
|
||||||
|
$newurl = $url . $newurl;
|
||||||
|
$url_parsed = @parse_url($newurl);
|
||||||
if (isset($url_parsed)) {
|
if (isset($url_parsed)) {
|
||||||
$redirects++;
|
$redirects++;
|
||||||
return fetch_url($url,$binary,$redirects,$timeout);
|
return fetch_url($newurl,$binary,$redirects,$timeout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,11 +166,13 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
|
||||||
if($http_code == 301 || $http_code == 302 || $http_code == 303) {
|
if($http_code == 301 || $http_code == 302 || $http_code == 303) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
||||||
$url = trim(array_pop($matches));
|
$newurl = trim(array_pop($matches));
|
||||||
$url_parsed = @parse_url($url);
|
if(strpos($newurl,'/') === 0)
|
||||||
|
$newurl = $url . $newurl;
|
||||||
|
$url_parsed = @parse_url($newurl);
|
||||||
if (isset($url_parsed)) {
|
if (isset($url_parsed)) {
|
||||||
$redirects++;
|
$redirects++;
|
||||||
return post_url($url,$params,$headers,$redirects,$timeout);
|
return fetch_url($newurl,$binary,$redirects,$timeout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$a->set_curl_code($http_code);
|
$a->set_curl_code($http_code);
|
||||||
|
|
|
@ -32,14 +32,15 @@
|
||||||
|
|
||||||
if(is_array($r) && count($r)) {
|
if(is_array($r) && count($r)) {
|
||||||
foreach ($r as $k => $v ) {
|
foreach ($r as $k => $v ) {
|
||||||
if (is_array($v))
|
if (is_array($v)) {
|
||||||
$this->_build_replace($v, "$prefix$k.");
|
$this->_build_replace($v, "$prefix$k.");
|
||||||
|
} else {
|
||||||
$this->search[] = $prefix . $k;
|
$this->search[] = $prefix . $k;
|
||||||
$this->replace[] = $v;
|
$this->replace[] = $v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function _push_stack(){
|
private function _push_stack(){
|
||||||
$this->stack[] = array($this->r, $this->search, $this->replace, $this->nodes);
|
$this->stack[] = array($this->r, $this->search, $this->replace, $this->nodes);
|
||||||
|
@ -53,7 +54,7 @@
|
||||||
$keys = array_map('trim',explode(".",$name));
|
$keys = array_map('trim',explode(".",$name));
|
||||||
$val = $this->r;
|
$val = $this->r;
|
||||||
foreach($keys as $k) {
|
foreach($keys as $k) {
|
||||||
$val = $val[$k];
|
$val = (isset($val[$k]) ? $val[$k] : null);
|
||||||
}
|
}
|
||||||
return $val;
|
return $val;
|
||||||
}
|
}
|
||||||
|
@ -79,8 +80,8 @@
|
||||||
} else {
|
} else {
|
||||||
$val = $this->_get_var($args[2]);
|
$val = $this->_get_var($args[2]);
|
||||||
}
|
}
|
||||||
list($strue, $sfalse)= preg_split("|{{ *else *}}|", $args[3]);
|
$x = preg_split("|{{ *else *}}|", $args[3]);
|
||||||
return ($val?$strue:$sfalse);
|
return ( $val ? $x[0] : (isset($x[1]) ? $x[1] : ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -996,7 +996,7 @@ function lang_selector() {
|
||||||
}
|
}
|
||||||
$ll = substr($l,5);
|
$ll = substr($l,5);
|
||||||
$ll = substr($ll,0,strrpos($ll,'/'));
|
$ll = substr($ll,0,strrpos($ll,'/'));
|
||||||
$selected = (($ll === $lang && (x($_SESSION['language']))) ? ' selected="selected" ' : '');
|
$selected = (($ll === $lang && (x($_SESSION, 'language'))) ? ' selected="selected" ' : '');
|
||||||
$o .= '<option value="' . $ll . '"' . $selected . '>' . $ll . '</option>';
|
$o .= '<option value="' . $ll . '"' . $selected . '>' . $ll . '</option>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,8 @@ function acl_init(&$a){
|
||||||
if ($search!=""){
|
if ($search!=""){
|
||||||
$sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'";
|
$sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'";
|
||||||
$sql_extra2 = "AND (`attag` LIKE '%%".dbesc($search)."%%' OR `name` LIKE '%%".dbesc($search)."%%' OR `nick` LIKE '%%".dbesc($search)."%%')";
|
$sql_extra2 = "AND (`attag` LIKE '%%".dbesc($search)."%%' OR `name` LIKE '%%".dbesc($search)."%%' OR `nick` LIKE '%%".dbesc($search)."%%')";
|
||||||
|
} else {
|
||||||
|
$sql_extra = $sql_extra2 = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// count groups and contacts
|
// count groups and contacts
|
||||||
|
@ -75,7 +77,7 @@ function acl_init(&$a){
|
||||||
|
|
||||||
if ($type=='' || $type=='c'){
|
if ($type=='' || $type=='c'){
|
||||||
|
|
||||||
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url` FROM `contact`
|
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
|
||||||
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != ''
|
WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != ''
|
||||||
$sql_extra2
|
$sql_extra2
|
||||||
ORDER BY `name` ASC ",
|
ORDER BY `name` ASC ",
|
||||||
|
|
|
@ -119,7 +119,7 @@ function photo_init(&$a) {
|
||||||
// NOTREACHED
|
// NOTREACHED
|
||||||
}
|
}
|
||||||
|
|
||||||
if(intval($customres) && $customres > 0 && $customres < 500) {
|
if(isset($customres) && $customres > 0 && $customres < 500) {
|
||||||
require_once('include/Photo.php');
|
require_once('include/Photo.php');
|
||||||
$ph = new Photo($data);
|
$ph = new Photo($data);
|
||||||
if($ph->is_valid()) {
|
if($ph->is_valid()) {
|
||||||
|
|
|
@ -26,9 +26,10 @@ function ping_init(&$a) {
|
||||||
$dislikes = array();
|
$dislikes = array();
|
||||||
$friends = array();
|
$friends = array();
|
||||||
$posts = array();
|
$posts = array();
|
||||||
|
$home = 0;
|
||||||
|
$network = 0;
|
||||||
|
|
||||||
|
$r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`wall`, `item`.`author-name`,
|
||||||
$r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`,
|
|
||||||
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object`,
|
`item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object`,
|
||||||
`pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink`
|
`pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink`
|
||||||
FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent`
|
FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent`
|
||||||
|
|
|
@ -107,7 +107,7 @@ function profile_content(&$a, $update = 0) {
|
||||||
|
|
||||||
$is_owner = ((local_user()) && (local_user() == $a->profile['profile_uid']) ? true : false);
|
$is_owner = ((local_user()) && (local_user() == $a->profile['profile_uid']) ? true : false);
|
||||||
|
|
||||||
if($a->profile['hidewall'] && (! $is_owner) && (! $remote_contact)) {
|
if($a->user['hidewall'] && (! $is_owner) && (! $remote_contact)) {
|
||||||
notice( t('Access to this profile has been restricted.') . EOL);
|
notice( t('Access to this profile has been restricted.') . EOL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -228,9 +228,11 @@ function profile_content(&$a, $update = 0) {
|
||||||
intval($a->profile['profile_uid']),
|
intval($a->profile['profile_uid']),
|
||||||
dbesc($parents_str)
|
dbesc($parents_str)
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
$items = conv_sort($items,'created');
|
$items = conv_sort($items,'created');
|
||||||
|
} else {
|
||||||
|
$items = array();
|
||||||
|
}
|
||||||
|
|
||||||
if($is_owner && ! $update) {
|
if($is_owner && ! $update) {
|
||||||
$o .= get_birthdays();
|
$o .= get_birthdays();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user