Merge remote-tracking branch 'upstream/develop' into 1705-some-more-dba

Conflicts:
	include/uimport.php
This commit is contained in:
Michael 2017-05-13 04:13:07 +00:00
commit e884090efa
26 changed files with 1834 additions and 1816 deletions

View File

@ -5,10 +5,10 @@
use Friendica\App; use Friendica\App;
require_once('include/ForumManager.php'); require_once 'include/ForumManager.php';
require_once('include/bbcode.php'); require_once 'include/bbcode.php';
require_once("mod/proxy.php"); require_once 'mod/proxy.php';
require_once('include/cache.php'); require_once 'include/cache.php';
/** /**
* *
@ -85,9 +85,9 @@ function profile_load(App $a, $nickname, $profile = 0, $profiledata = array()) {
$a->set_template_engine(); // reset the template engine to the default in case the user's theme doesn't specify one $a->set_template_engine(); // reset the template engine to the default in case the user's theme doesn't specify one
$theme_info_file = "view/theme/".current_theme()."/theme.php"; $theme_info_file = "view/theme/" . current_theme() . "/theme.php";
if (file_exists($theme_info_file)){ if (file_exists($theme_info_file)) {
require_once($theme_info_file); require_once $theme_info_file;
} }
if (! (x($a->page,'aside'))) if (! (x($a->page,'aside')))
@ -372,7 +372,7 @@ function profile_sidebar($profile, $block = 0) {
else else
$diaspora = false; $diaspora = false;
if (!$block){ if (!$block) {
$contact_block = contact_block(); $contact_block = contact_block();
if (is_array($a->profile) AND !$a->profile['hide-friends']) { if (is_array($a->profile) AND !$a->profile['hide-friends']) {
@ -537,13 +537,13 @@ function get_birthdays() {
function get_events() { function get_events() {
require_once('include/bbcode.php'); require_once 'include/bbcode.php';
$a = get_app(); $a = get_app();
if (! local_user() || $a->is_mobile || $a->is_tablet) if (! local_user() || $a->is_mobile || $a->is_tablet) {
return $o; return $o;
}
// $mobile_detect = new Mobile_Detect(); // $mobile_detect = new Mobile_Detect();
// $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet(); // $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
@ -566,12 +566,14 @@ function get_events() {
$now = strtotime('now'); $now = strtotime('now');
$istoday = false; $istoday = false;
foreach ($r as $rr) { foreach ($r as $rr) {
if (strlen($rr['name'])) if (strlen($rr['name'])) {
$total ++; $total ++;
}
$strt = datetime_convert('UTC',$rr['convert'] ? $a->timezone : 'UTC',$rr['start'],'Y-m-d'); $strt = datetime_convert('UTC',$rr['convert'] ? $a->timezone : 'UTC',$rr['start'],'Y-m-d');
if ($strt === datetime_convert('UTC',$a->timezone,'now','Y-m-d')) if ($strt === datetime_convert('UTC',$a->timezone,'now','Y-m-d')) {
$istoday = true; $istoday = true;
}
} }
$classtoday = (($istoday) ? 'event-today' : ''); $classtoday = (($istoday) ? 'event-today' : '');
@ -580,12 +582,14 @@ function get_events() {
foreach ($r as &$rr) { foreach ($r as &$rr) {
$title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8')); $title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8'));
if (strlen($title) > 35) if (strlen($title) > 35) {
$title = substr($title,0,32) . '... '; $title = substr($title,0,32) . '... ';
}
$description = substr(strip_tags(bbcode($rr['desc'])),0,32) . '... '; $description = substr(strip_tags(bbcode($rr['desc'])),0,32) . '... ';
if (! $description) if (! $description) {
$description = t('[No description]'); $description = t('[No description]');
}
$strt = datetime_convert('UTC',$rr['convert'] ? $a->timezone : 'UTC',$rr['start']); $strt = datetime_convert('UTC',$rr['convert'] ? $a->timezone : 'UTC',$rr['start']);
@ -632,7 +636,9 @@ function advanced_profile(App $a) {
$profile['fullname'] = array( t('Full Name:'), $a->profile['name'] ) ; $profile['fullname'] = array( t('Full Name:'), $a->profile['name'] ) ;
if ($a->profile['gender']) $profile['gender'] = array( t('Gender:'), $a->profile['gender'] ); if ($a->profile['gender']) {
$profile['gender'] = array( t('Gender:'), $a->profile['gender'] );
}
if (($a->profile['dob']) && ($a->profile['dob'] > '0001-01-01')) { if (($a->profile['dob']) && ($a->profile['dob'] > '0001-01-01')) {
$year_bd_format = t('j F, Y'); $year_bd_format = t('j F, Y');
@ -647,10 +653,13 @@ function advanced_profile(App $a) {
} }
if ($age = age($a->profile['dob'],$a->profile['timezone'],'')) $profile['age'] = array( t('Age:'), $age ); if ($age = age($a->profile['dob'],$a->profile['timezone'],'')) {
$profile['age'] = array( t('Age:'), $age );
}
if ($a->profile['marital']) {
if ($a->profile['marital']) $profile['marital'] = array( t('Status:'), $a->profile['marital']); $profile['marital'] = array( t('Status:'), $a->profile['marital']);
}
/// @TODO Maybe use x() here, plus below? /// @TODO Maybe use x() here, plus below?
if ($a->profile['with']) { if ($a->profile['with']) {
@ -753,7 +762,7 @@ function advanced_profile(App $a) {
return ''; return '';
} }
function profile_tabs($a, $is_owner=False, $nickname=Null){ function profile_tabs($a, $is_owner=False, $nickname=Null) {
//echo "<pre>"; var_dump($a->user); killme(); //echo "<pre>"; var_dump($a->user); killme();
if (is_null($nickname)) { if (is_null($nickname)) {
@ -770,7 +779,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
array( array(
'label'=>t('Status'), 'label'=>t('Status'),
'url' => $url, 'url' => $url,
'sel' => ((!isset($tab) && $a->argv[0]=='profile')?'active':''), 'sel' => ((!isset($tab) && $a->argv[0]=='profile') ? 'active' : ''),
'title' => t('Status Messages and Posts'), 'title' => t('Status Messages and Posts'),
'id' => 'status-tab', 'id' => 'status-tab',
'accesskey' => 'm', 'accesskey' => 'm',
@ -778,7 +787,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
array( array(
'label' => t('Profile'), 'label' => t('Profile'),
'url' => $url.'/?tab=profile', 'url' => $url.'/?tab=profile',
'sel' => ((isset($tab) && $tab=='profile')?'active':''), 'sel' => ((isset($tab) && $tab=='profile') ? 'active' : ''),
'title' => t('Profile Details'), 'title' => t('Profile Details'),
'id' => 'profile-tab', 'id' => 'profile-tab',
'accesskey' => 'r', 'accesskey' => 'r',
@ -786,7 +795,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
array( array(
'label' => t('Photos'), 'label' => t('Photos'),
'url' => App::get_baseurl() . '/photos/' . $nickname, 'url' => App::get_baseurl() . '/photos/' . $nickname,
'sel' => ((!isset($tab) && $a->argv[0]=='photos')?'active':''), 'sel' => ((!isset($tab) && $a->argv[0]=='photos') ? 'active' : ''),
'title' => t('Photo Albums'), 'title' => t('Photo Albums'),
'id' => 'photo-tab', 'id' => 'photo-tab',
'accesskey' => 'h', 'accesskey' => 'h',
@ -794,7 +803,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
array( array(
'label' => t('Videos'), 'label' => t('Videos'),
'url' => App::get_baseurl() . '/videos/' . $nickname, 'url' => App::get_baseurl() . '/videos/' . $nickname,
'sel' => ((!isset($tab) && $a->argv[0]=='videos')?'active':''), 'sel' => ((!isset($tab) && $a->argv[0]=='videos') ? 'active' : ''),
'title' => t('Videos'), 'title' => t('Videos'),
'id' => 'video-tab', 'id' => 'video-tab',
'accesskey' => 'v', 'accesskey' => 'v',
@ -806,7 +815,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
$tabs[] = array( $tabs[] = array(
'label' => t('Events'), 'label' => t('Events'),
'url' => App::get_baseurl() . '/events', 'url' => App::get_baseurl() . '/events',
'sel' =>((!isset($tab) && $a->argv[0]=='events')?'active':''), 'sel' =>((!isset($tab) && $a->argv[0]=='events') ? 'active' : ''),
'title' => t('Events and Calendar'), 'title' => t('Events and Calendar'),
'id' => 'events-tab', 'id' => 'events-tab',
'accesskey' => 'e', 'accesskey' => 'e',
@ -817,18 +826,18 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
$tabs[] = array( $tabs[] = array(
'label' => t('Events'), 'label' => t('Events'),
'url' => App::get_baseurl() . '/cal/' . $nickname, 'url' => App::get_baseurl() . '/cal/' . $nickname,
'sel' =>((!isset($tab) && $a->argv[0]=='cal')?'active':''), 'sel' =>((!isset($tab) && $a->argv[0]=='cal') ? 'active' : ''),
'title' => t('Events and Calendar'), 'title' => t('Events and Calendar'),
'id' => 'events-tab', 'id' => 'events-tab',
'accesskey' => 'e', 'accesskey' => 'e',
); );
} }
if ($is_owner){ if ($is_owner) {
$tabs[] = array( $tabs[] = array(
'label' => t('Personal Notes'), 'label' => t('Personal Notes'),
'url' => App::get_baseurl() . '/notes', 'url' => App::get_baseurl() . '/notes',
'sel' =>((!isset($tab) && $a->argv[0]=='notes')?'active':''), 'sel' =>((!isset($tab) && $a->argv[0]=='notes') ? 'active' : ''),
'title' => t('Only You Can See This'), 'title' => t('Only You Can See This'),
'id' => 'notes-tab', 'id' => 'notes-tab',
'accesskey' => 't', 'accesskey' => 't',
@ -839,7 +848,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
$tabs[] = array( $tabs[] = array(
'label' => t('Contacts'), 'label' => t('Contacts'),
'url' => App::get_baseurl() . '/viewcontacts/' . $nickname, 'url' => App::get_baseurl() . '/viewcontacts/' . $nickname,
'sel' => ((!isset($tab) && $a->argv[0]=='viewcontacts')?'active':''), 'sel' => ((!isset($tab) && $a->argv[0]=='viewcontacts') ? 'active' : ''),
'title' => t('Contacts'), 'title' => t('Contacts'),
'id' => 'viewcontacts-tab', 'id' => 'viewcontacts-tab',
'accesskey' => 'k', 'accesskey' => 'k',
@ -855,8 +864,9 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
} }
function get_my_url() { function get_my_url() {
if (x($_SESSION,'my_url')) if (x($_SESSION, 'my_url')) {
return $_SESSION['my_url']; return $_SESSION['my_url'];
}
return false; return false;
} }
@ -868,33 +878,31 @@ function zrl_init(App $a) {
// The check fetches the cached value from gprobe to reduce the load for this system // The check fetches the cached value from gprobe to reduce the load for this system
$urlparts = parse_url($tmp_str); $urlparts = parse_url($tmp_str);
$result = Cache::get("gprobe:".$urlparts["host"]); $result = Cache::get("gprobe:" . $urlparts["host"]);
if (!is_null($result)) { if ((!is_null($result)) && (in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM)))) {
if (in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM))) { logger("DDoS attempt detected for " . $urlparts["host"] . " by " . $_SERVER["REMOTE_ADDR"] . ". server data: " . print_r($_SERVER, true), LOGGER_DEBUG);
logger("DDoS attempt detected for ".$urlparts["host"]." by ".$_SERVER["REMOTE_ADDR"].". server data: ".print_r($_SERVER, true), LOGGER_DEBUG); return;
return;
}
} }
proc_run(PRIORITY_LOW, 'include/gprobe.php',bin2hex($tmp_str)); proc_run(PRIORITY_LOW, 'include/gprobe.php', bin2hex($tmp_str));
$arr = array('zrl' => $tmp_str, 'url' => $a->cmd); $arr = array('zrl' => $tmp_str, 'url' => $a->cmd);
call_hooks('zrl_init',$arr); call_hooks('zrl_init', $arr);
} }
} }
function zrl($s,$force = false) { function zrl($s, $force = false) {
if (! strlen($s)) { if (! strlen($s)) {
return $s; return $s;
} }
if ((! strpos($s,'/profile/')) && (! $force)) { if ((! strpos($s, '/profile/')) && (! $force)) {
return $s; return $s;
} }
if ($force && substr($s,-1,1) !== '/') { if ($force && substr($s, -1, 1) !== '/') {
$s = $s . '/'; $s = $s . '/';
} }
$achar = strpos($s,'?') ? '&' : '?'; $achar = strpos($s, '?') ? '&' : '?';
$mine = get_my_url(); $mine = get_my_url();
if ($mine and ! link_compare($mine,$s)) { if ($mine && ! link_compare($mine, $s)) {
return $s . $achar . 'zrl=' . urlencode($mine); return $s . $achar . 'zrl=' . urlencode($mine);
} }
return $s; return $s;
@ -916,10 +924,8 @@ function zrl($s,$force = false) {
*/ */
function get_theme_uid() { function get_theme_uid() {
$uid = (($_REQUEST['puid']) ? intval($_REQUEST['puid']) : 0); $uid = (($_REQUEST['puid']) ? intval($_REQUEST['puid']) : 0);
if (local_user()) { if ((local_user()) && ((get_pconfig(local_user(),'system','always_my_theme')) || (! $uid))) {
if ((get_pconfig(local_user(),'system','always_my_theme')) || (! $uid)) { return local_user();
return local_user();
}
} }
return $uid; return $uid;

View File

@ -2,9 +2,9 @@
// Provide some ability to lock a PHP function so that multiple processes // Provide some ability to lock a PHP function so that multiple processes
// can't run the function concurrently // can't run the function concurrently
if(! function_exists('lock_function')) { if (! function_exists('lock_function')) {
function lock_function($fn_name, $block = true, $wait_sec = 2, $timeout = 30) { function lock_function($fn_name, $block = true, $wait_sec = 2, $timeout = 30) {
if( $wait_sec == 0 ) if ( $wait_sec == 0 )
$wait_sec = 2; // don't let the user pick a value that's likely to crash the system $wait_sec = 2; // don't let the user pick a value that's likely to crash the system
$got_lock = false; $got_lock = false;
@ -16,7 +16,7 @@ function lock_function($fn_name, $block = true, $wait_sec = 2, $timeout = 30) {
dbesc($fn_name) dbesc($fn_name)
); );
if((dbm::is_result($r)) AND (!$r[0]['locked'] OR (strtotime($r[0]['created']) < time() - 3600))) { if ((dbm::is_result($r)) AND (!$r[0]['locked'] OR (strtotime($r[0]['created']) < time() - 3600))) {
q("UPDATE `locks` SET `locked` = 1, `created` = '%s' WHERE `name` = '%s'", q("UPDATE `locks` SET `locked` = 1, `created` = '%s' WHERE `name` = '%s'",
dbesc(datetime_convert()), dbesc(datetime_convert()),
dbesc($fn_name) dbesc($fn_name)
@ -34,10 +34,10 @@ function lock_function($fn_name, $block = true, $wait_sec = 2, $timeout = 30) {
q("UNLOCK TABLES"); q("UNLOCK TABLES");
if(($block) && (! $got_lock)) if (($block) && (! $got_lock))
sleep($wait_sec); sleep($wait_sec);
} while(($block) && (! $got_lock) && ((time() - $start) < $timeout)); } while (($block) && (! $got_lock) && ((time() - $start) < $timeout));
logger('lock_function: function ' . $fn_name . ' with blocking = ' . $block . ' got_lock = ' . $got_lock . ' time = ' . (time() - $start), LOGGER_DEBUG); logger('lock_function: function ' . $fn_name . ' with blocking = ' . $block . ' got_lock = ' . $got_lock . ' time = ' . (time() - $start), LOGGER_DEBUG);
@ -45,28 +45,29 @@ function lock_function($fn_name, $block = true, $wait_sec = 2, $timeout = 30) {
}} }}
if(! function_exists('block_on_function_lock')) { if (! function_exists('block_on_function_lock')) {
function block_on_function_lock($fn_name, $wait_sec = 2, $timeout = 30) { function block_on_function_lock($fn_name, $wait_sec = 2, $timeout = 30) {
if( $wait_sec == 0 ) if ( $wait_sec == 0 )
$wait_sec = 2; // don't let the user pick a value that's likely to crash the system $wait_sec = 2; // don't let the user pick a value that's likely to crash the system
$start = time(); $start = time();
do { do {
$r = q("SELECT locked FROM locks WHERE name = '%s' LIMIT 1", $r = q("SELECT locked FROM locks WHERE name = '%s' LIMIT 1",
dbesc($fn_name) dbesc($fn_name)
); );
if (dbm::is_result($r) && $r[0]['locked']) if (dbm::is_result($r) && $r[0]['locked']) {
sleep($wait_sec); sleep($wait_sec);
}
} while(dbm::is_result($r) && $r[0]['locked'] && ((time() - $start) < $timeout)); } while (dbm::is_result($r) && $r[0]['locked'] && ((time() - $start) < $timeout));
return; return;
}} }}
if(! function_exists('unlock_function')) { if (! function_exists('unlock_function')) {
function unlock_function($fn_name) { function unlock_function($fn_name) {
$r = q("UPDATE `locks` SET `locked` = 0, `created` = '%s' WHERE `name` = '%s'", $r = q("UPDATE `locks` SET `locked` = 0, `created` = '%s' WHERE `name` = '%s'",
dbesc(NULL_DATE), dbesc(NULL_DATE),

View File

@ -8,9 +8,9 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
$a = get_app(); $a = get_app();
if(! $recipient) return -1; if (! $recipient) return -1;
if(! strlen($subject)) if (! strlen($subject))
$subject = t('[no subject]'); $subject = t('[no subject]');
$me = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", $me = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
@ -21,7 +21,7 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
intval(local_user()) intval(local_user())
); );
if(! (count($me) && (count($contact)))) { if (! (count($me) && (count($contact)))) {
return -2; return -2;
} }
@ -33,7 +33,7 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
// look for any existing conversation structure // look for any existing conversation structure
if(strlen($replyto)) { if (strlen($replyto)) {
$reply = true; $reply = true;
$r = q("select convid from mail where uid = %d and ( uri = '%s' or `parent-uri` = '%s' ) limit 1", $r = q("select convid from mail where uid = %d and ( uri = '%s' or `parent-uri` = '%s' ) limit 1",
intval(local_user()), intval(local_user()),
@ -44,7 +44,7 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
$convid = $r[0]['convid']; $convid = $r[0]['convid'];
} }
if(! $convid) { if (! $convid) {
// create a new conversation // create a new conversation
@ -77,12 +77,12 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){
$convid = $r[0]['id']; $convid = $r[0]['id'];
} }
if(! $convid) { if (! $convid) {
logger('send message: conversation not found.'); logger('send message: conversation not found.');
return -4; return -4;
} }
if(! strlen($replyto)) { if (! strlen($replyto)) {
$replyto = $convuri; $replyto = $convuri;
} }

View File

@ -154,7 +154,7 @@ function removelinebreak($message)
$lines = array(); $lines = array();
$lineno = 0; $lineno = 0;
foreach($arrbody as $i => $line) { foreach ($arrbody as $i => $line) {
$currquotelevel = 0; $currquotelevel = 0;
$currline = $line; $currline = $line;
while ((strlen($currline)>0) and ((substr($currline, 0, 1) == '>') while ((strlen($currline)>0) and ((substr($currline, 0, 1) == '>')

View File

@ -10,7 +10,7 @@ function nav(App $a) {
* *
*/ */
if(!(x($a->page,'nav'))) if (!(x($a->page,'nav')))
$a->page['nav'] = ''; $a->page['nav'] = '';
$a->page['htmlhead'] .= replace_macros(get_markup_template('nav_head.tpl'), array()); $a->page['htmlhead'] .= replace_macros(get_markup_template('nav_head.tpl'), array());
@ -138,7 +138,7 @@ function nav_info(App $a)
if (strlen(get_config('system', 'singleuser'))) { if (strlen(get_config('system', 'singleuser'))) {
$gdir = get_config('system', 'directory'); $gdir = get_config('system', 'directory');
if(strlen($gdir)) { if (strlen($gdir)) {
$gdirpath = zrl($gdir, true); $gdirpath = zrl($gdir, true);
} }
} elseif (get_config('system', 'community_page_style') == CP_USERS_ON_SERVER) { } elseif (get_config('system', 'community_page_style') == CP_USERS_ON_SERVER) {

View File

@ -172,7 +172,7 @@ function z_fetch_url($url, $binary = false, &$redirects = 0, $opts = array()) {
// allow for HTTP/2.x without fixing code // allow for HTTP/2.x without fixing code
while (preg_match('/^HTTP\/[1-2].+? [1-5][0-9][0-9]/', $base)) { while (preg_match('/^HTTP\/[1-2].+? [1-5][0-9][0-9]/', $base)) {
$chunk = substr($base, 0, strpos($base, "\r\n\r\n") + 4); $chunk = substr($base, 0, strpos($base,"\r\n\r\n") + 4);
$header .= $chunk; $header .= $chunk;
$base = substr($base, strlen($chunk)); $base = substr($base, strlen($chunk));
} }
@ -196,9 +196,8 @@ function z_fetch_url($url, $binary = false, &$redirects = 0, $opts = array()) {
if (preg_match('/(Location:|URI:)(.*?)\n/i', $header, $matches)) { if (preg_match('/(Location:|URI:)(.*?)\n/i', $header, $matches)) {
$newurl = trim(array_pop($matches)); $newurl = trim(array_pop($matches));
} }
if (strpos($newurl,'/') === 0) {
if (strpos($newurl, '/') === 0) { $newurl = $old_location_info["scheme"]."://".$old_location_info["host"].$newurl;
$newurl = $old_location_info['scheme'] . '://' . $old_location_info['host'] . $newurl;
} }
if (filter_var($newurl, FILTER_VALIDATE_URL)) { if (filter_var($newurl, FILTER_VALIDATE_URL)) {
@ -342,7 +341,7 @@ function post_url($url, $params, $headers = null, &$redirects = 0, $timeout = 0)
$newurl = trim(array_pop($matches)); $newurl = trim(array_pop($matches));
if (strpos($newurl, '/') === 0) { if (strpos($newurl, '/') === 0) {
$newurl = $old_location_info['scheme'] . '://' . $old_location_info['host'] . $newurl; $newurl = $old_location_info["scheme"] . "://" . $old_location_info["host"] . $newurl;
} }
if (filter_var($newurl, FILTER_VALIDATE_URL)) { if (filter_var($newurl, FILTER_VALIDATE_URL)) {
@ -375,7 +374,7 @@ function xml_status($st, $message = '') {
$xml_message = ((strlen($message)) ? "\t<message>" . xmlify($message) . "</message>\r\n" : ''); $xml_message = ((strlen($message)) ? "\t<message>" . xmlify($message) . "</message>\r\n" : '');
if($st) if ($st)
logger('xml_status returning non_zero: ' . $st . " message=" . $message); logger('xml_status returning non_zero: ' . $st . " message=" . $message);
header( "Content-type: text/xml" ); header( "Content-type: text/xml" );
@ -403,12 +402,12 @@ function xml_status($st, $message = '') {
*/ */
function http_status_exit($val, $description = array()) { function http_status_exit($val, $description = array()) {
$err = ''; $err = '';
if($val >= 400) { if ($val >= 400) {
$err = 'Error'; $err = 'Error';
if (!isset($description["title"])) if (!isset($description["title"]))
$description["title"] = $err." ".$val; $description["title"] = $err." ".$val;
} }
if($val >= 200 && $val < 300) if ($val >= 200 && $val < 300)
$err = 'OK'; $err = 'OK';
logger('http_status_exit ' . $val); logger('http_status_exit ' . $val);
@ -434,20 +433,20 @@ function http_status_exit($val, $description = array()) {
* @return boolean True if it's a valid URL, fals if something wrong with it * @return boolean True if it's a valid URL, fals if something wrong with it
*/ */
function validate_url(&$url) { function validate_url(&$url) {
if(get_config('system','disable_url_validation')) if (get_config('system','disable_url_validation'))
return true; return true;
// no naked subdomains (allow localhost for tests) // no naked subdomains (allow localhost for tests)
if(strpos($url,'.') === false && strpos($url,'/localhost/') === false) if (strpos($url,'.') === false && strpos($url,'/localhost/') === false)
return false; return false;
if(substr($url,0,4) != 'http') if (substr($url,0,4) != 'http')
$url = 'http://' . $url; $url = 'http://' . $url;
/// @TODO Really supress function outcomes? Why not find them + debug them? /// @TODO Really supress function outcomes? Why not find them + debug them?
$h = @parse_url($url); $h = @parse_url($url);
if((is_array($h)) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) { if ((is_array($h)) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
return true; return true;
} }
@ -462,14 +461,14 @@ function validate_url(&$url) {
*/ */
function validate_email($addr) { function validate_email($addr) {
if(get_config('system','disable_email_validation')) if (get_config('system','disable_email_validation'))
return true; return true;
if(! strpos($addr,'@')) if (! strpos($addr,'@'))
return false; return false;
$h = substr($addr,strpos($addr,'@') + 1); $h = substr($addr,strpos($addr,'@') + 1);
if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) { if (($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
return true; return true;
} }
return false; return false;
@ -502,7 +501,6 @@ function allowed_url($url) {
$host = strtolower($h['host']); $host = strtolower($h['host']);
// always allow our own site // always allow our own site
if ($host == strtolower($_SERVER['SERVER_NAME'])) { if ($host == strtolower($_SERVER['SERVER_NAME'])) {
return true; return true;
} }
@ -563,24 +561,25 @@ function blocked_url($url) {
*/ */
function allowed_email($email) { function allowed_email($email) {
$domain = strtolower(substr($email,strpos($email,'@') + 1)); $domain = strtolower(substr($email,strpos($email,'@') + 1));
if(! $domain) if (! $domain) {
return false; return false;
}
$str_allowed = get_config('system','allowed_email'); $str_allowed = get_config('system','allowed_email');
if(! $str_allowed) if (! $str_allowed) {
return true; return true;
}
$found = false; $found = false;
$fnmatch = function_exists('fnmatch'); $fnmatch = function_exists('fnmatch');
$allowed = explode(',',$str_allowed); $allowed = explode(',',$str_allowed);
if(count($allowed)) { if (count($allowed)) {
foreach($allowed as $a) { foreach ($allowed as $a) {
$pat = strtolower(trim($a)); $pat = strtolower(trim($a));
if(($fnmatch && fnmatch($pat,$domain)) || ($pat == $domain)) { if (($fnmatch && fnmatch($pat,$domain)) || ($pat == $domain)) {
$found = true; $found = true;
break; break;
} }
@ -609,8 +608,8 @@ function avatar_img($email) {
function parse_xml_string($s,$strict = true) { function parse_xml_string($s,$strict = true) {
/// @todo Move this function to the xml class /// @todo Move this function to the xml class
if($strict) { if ($strict) {
if(! strstr($s,'<?xml')) if (! strstr($s,'<?xml'))
return false; return false;
$s2 = substr($s,strpos($s,'<?xml')); $s2 = substr($s,strpos($s,'<?xml'));
} }

View File

@ -157,7 +157,7 @@ class FKOAuth1 extends OAuthServer {
//notice( t("Welcome back ") . $record['username'] . EOL); //notice( t("Welcome back ") . $record['username'] . EOL);
$a->user = $record; $a->user = $record;
if(strlen($a->user['timezone'])) { if (strlen($a->user['timezone'])) {
date_default_timezone_set($a->user['timezone']); date_default_timezone_set($a->user['timezone']);
$a->timezone = $a->user['timezone']; $a->timezone = $a->user['timezone'];
} }

View File

@ -304,9 +304,11 @@ function oembed_html2bbcode($text) {
$entries = $xpath->query("//span[$xattr]"); $entries = $xpath->query("//span[$xattr]");
$xattr = "@rel='oembed'";//oe_build_xpath("rel","oembed"); $xattr = "@rel='oembed'";//oe_build_xpath("rel","oembed");
foreach($entries as $e) { foreach ($entries as $e) {
$href = $xpath->evaluate("a[$xattr]/@href", $e)->item(0)->nodeValue; $href = $xpath->evaluate("a[$xattr]/@href", $e)->item(0)->nodeValue;
if(!is_null($href)) $e->parentNode->replaceChild(new DOMText("[embed]".$href."[/embed]"), $e); if (!is_null($href)) {
$e->parentNode->replaceChild(new DOMText("[embed]".$href."[/embed]"), $e);
}
} }
return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) ); return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) );
} else { } else {

View File

@ -170,7 +170,7 @@ function onepoll_run(&$argv, &$argc){
// But this may be our first communication, so set the writable flag if it isn't set already. // But this may be our first communication, so set the writable flag if it isn't set already.
if (! intval($contact['writable'])) { if (! intval($contact['writable'])) {
q("update contact set writable = 1 where id = %d", intval($contact['id'])); q("UPDATE `contact` SET `writable` = 1 WHERE `id` = %d", intval($contact['id']));
} }
$url = $contact['poll'] . '?dfrn_id=' . $idtosend $url = $contact['poll'] . '?dfrn_id=' . $idtosend
@ -437,16 +437,18 @@ function onepoll_run(&$argv, &$argc){
if ($raw_refs) { if ($raw_refs) {
$refs_arr = explode(' ', $raw_refs); $refs_arr = explode(' ', $raw_refs);
if (count($refs_arr)) { if (count($refs_arr)) {
for($x = 0; $x < count($refs_arr); $x ++) for ($x = 0; $x < count($refs_arr); $x ++) {
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'"; $refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
}
} }
$qstr = implode(',',$refs_arr); $qstr = implode(',',$refs_arr);
$r = q("SELECT `uri` , `parent-uri` FROM `item` USE INDEX (`uid_uri`) WHERE `uri` IN ($qstr) AND `uid` = %d LIMIT 1", $r = q("SELECT `uri` , `parent-uri` FROM `item` USE INDEX (`uid_uri`) WHERE `uri` IN ($qstr) AND `uid` = %d LIMIT 1",
intval($importer_uid) intval($importer_uid)
); );
if (dbm::is_result($r)) if (dbm::is_result($r)) {
$datarray['parent-uri'] = $r[0]['parent-uri']; // Set the parent as the top-level item $datarray['parent-uri'] = $r[0]['parent-uri']; // Set the parent as the top-level item
// $datarray['parent-uri'] = $r[0]['uri']; //$datarray['parent-uri'] = $r[0]['uri'];
}
} }
// Decoding the header // Decoding the header
@ -611,14 +613,17 @@ function onepoll_run(&$argv, &$argc){
consume_feed($xml,$importer,$contact,$hub,1,2); consume_feed($xml,$importer,$contact,$hub,1,2);
$hubmode = 'subscribe'; $hubmode = 'subscribe';
if ($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly']) if ($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly']) {
$hubmode = 'unsubscribe'; $hubmode = 'unsubscribe';
}
if (($contact['network'] === NETWORK_OSTATUS || $contact['network'] == NETWORK_FEED) && (! $contact['hub-verify'])) if (($contact['network'] === NETWORK_OSTATUS || $contact['network'] == NETWORK_FEED) && (! $contact['hub-verify'])) {
$hub_update = true; $hub_update = true;
}
if ($force) if ($force) {
$hub_update = true; $hub_update = true;
}
logger("Contact ".$contact['id']." returned hub: ".$hub." Network: ".$contact['network']." Relation: ".$contact['rel']." Update: ".$hub_update); logger("Contact ".$contact['id']." returned hub: ".$hub." Network: ".$contact['network']." Relation: ".$contact['rel']." Update: ".$hub_update);

View File

@ -70,6 +70,7 @@ class ostatus {
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` IN ('%s', '%s') AND `network` != '%s'", $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` IN ('%s', '%s') AND `network` != '%s'",
intval($importer["uid"]), dbesc(normalise_link($author["author-link"])), intval($importer["uid"]), dbesc(normalise_link($author["author-link"])),
dbesc(normalise_link($aliaslink)), dbesc(NETWORK_STATUSNET)); dbesc(normalise_link($aliaslink)), dbesc(NETWORK_STATUSNET));
if (dbm::is_result($r)) { if (dbm::is_result($r)) {
$contact = $r[0]; $contact = $r[0];
$author["contact-id"] = $r[0]["id"]; $author["contact-id"] = $r[0]["id"];
@ -79,6 +80,7 @@ class ostatus {
// Should not happen // Should not happen
$contact = dba::fetch_first("SELECT * FROM `contact` WHERE `uid` = ? AND `addr` = ? AND `network` != ?", $contact = dba::fetch_first("SELECT * FROM `contact` WHERE `uid` = ? AND `addr` = ? AND `network` != ?",
$importer["uid"], $addr, NETWORK_STATUSNET); $importer["uid"], $addr, NETWORK_STATUSNET);
if (dbm::is_result($contact)) { if (dbm::is_result($contact)) {
$author["contact-id"] = $contact["id"]; $author["contact-id"] = $contact["id"];
$author["author-link"] = $contact["url"]; $author["author-link"] = $contact["url"];
@ -87,17 +89,20 @@ class ostatus {
$avatarlist = array(); $avatarlist = array();
$avatars = $xpath->query("atom:author/atom:link[@rel='avatar']", $context); $avatars = $xpath->query("atom:author/atom:link[@rel='avatar']", $context);
foreach($avatars AS $avatar) { foreach ($avatars AS $avatar) {
$href = ""; $href = "";
$width = 0; $width = 0;
foreach($avatar->attributes AS $attributes) { foreach ($avatar->attributes AS $attributes) {
if ($attributes->name == "href") if ($attributes->name == "href") {
$href = $attributes->textContent; $href = $attributes->textContent;
if ($attributes->name == "width") }
if ($attributes->name == "width") {
$width = $attributes->textContent; $width = $attributes->textContent;
}
} }
if (($width > 0) AND ($href != "")) if (($width > 0) AND ($href != "")) {
$avatarlist[$width] = $href; $avatarlist[$width] = $href;
}
} }
if (count($avatarlist) > 0) { if (count($avatarlist) > 0) {
krsort($avatarlist); krsort($avatarlist);
@ -105,8 +110,9 @@ class ostatus {
} }
$displayname = $xpath->evaluate('atom:author/poco:displayName/text()', $context)->item(0)->nodeValue; $displayname = $xpath->evaluate('atom:author/poco:displayName/text()', $context)->item(0)->nodeValue;
if ($displayname != "") if ($displayname != "") {
$author["author-name"] = $displayname; $author["author-name"] = $displayname;
}
$author["owner-name"] = $author["author-name"]; $author["owner-name"] = $author["author-name"];
$author["owner-link"] = $author["author-link"]; $author["owner-link"] = $author["author-link"];
@ -446,7 +452,7 @@ class ostatus {
foreach ($category->attributes AS $attributes) { foreach ($category->attributes AS $attributes) {
if ($attributes->name == "term") { if ($attributes->name == "term") {
$term = $attributes->textContent; $term = $attributes->textContent;
if(strlen($item["tag"])) { if (strlen($item["tag"])) {
$item["tag"] .= ','; $item["tag"] .= ',';
} }
$item["tag"] .= "#[url=".App::get_baseurl()."/search?tag=".$term."]".$term."[/url]"; $item["tag"] .= "#[url=".App::get_baseurl()."/search?tag=".$term."]".$term."[/url]";
@ -1146,6 +1152,7 @@ class ostatus {
continue; continue;
} }
/// @TODO One statment is okay (until if () )
$arr = array(); $arr = array();
$arr["network"] = $details["network"]; $arr["network"] = $details["network"];
$arr["uri"] = $single_conv->id; $arr["uri"] = $single_conv->id;
@ -2211,7 +2218,7 @@ class ostatus {
$owner = $r[0]; $owner = $r[0];
if(!strlen($last_update)) if (!strlen($last_update))
$last_update = 'now -30 days'; $last_update = 'now -30 days';
$check_date = datetime_convert('UTC','UTC',$last_update,'Y-m-d H:i:s'); $check_date = datetime_convert('UTC','UTC',$last_update,'Y-m-d H:i:s');

View File

@ -8,8 +8,9 @@ define("IMPORT_DEBUG", False);
function last_insert_id() { function last_insert_id() {
global $db; global $db;
if (IMPORT_DEBUG) if (IMPORT_DEBUG) {
return 1; return 1;
}
return $db->insert_id(); return $db->insert_id();
} }
@ -56,15 +57,12 @@ function db_import_assoc($table, $arr) {
$vals = implode("','", array_map('dbesc', array_values($arr))); $vals = implode("','", array_map('dbesc', array_values($arr)));
$query = "INSERT INTO `$table` (`$cols`) VALUES ('$vals')"; $query = "INSERT INTO `$table` (`$cols`) VALUES ('$vals')";
logger("uimport: $query", LOGGER_TRACE); logger("uimport: $query", LOGGER_TRACE);
if (IMPORT_DEBUG) if (IMPORT_DEBUG) {
return true; return true;
}
return q($query); return q($query);
} }
function import_cleanup($newuid) {
dba::delete('user', array('uid' => $newuid));
}
/** /**
* @brief Import account file exported from mod/uexport * @brief Import account file exported from mod/uexport
* *
@ -95,6 +93,7 @@ function import_account(App $a, $file) {
} }
/* /*
* @TODO Old-lost code?
// this is not required as we remove columns in json not in current db schema // this is not required as we remove columns in json not in current db schema
if ($account['schema'] != DB_UPDATE_VERSION) { if ($account['schema'] != DB_UPDATE_VERSION) {
notice(t("Error! I can't import this file: DB schema version is not compatible.")); notice(t("Error! I can't import this file: DB schema version is not compatible."));
@ -129,15 +128,15 @@ function import_account(App $a, $file) {
$newbaseurl = App::get_baseurl(); $newbaseurl = App::get_baseurl();
$olduid = $account['user']['uid']; $olduid = $account['user']['uid'];
unset($account['user']['uid']); unset($account['user']['uid']);
unset($account['user']['account_expired']); unset($account['user']['account_expired']);
unset($account['user']['account_expires_on']); unset($account['user']['account_expires_on']);
unset($account['user']['expire_notification_sent']); unset($account['user']['expire_notification_sent']);
foreach ($account['user'] as $k => &$v) { foreach ($account['user'] as $k => &$v) {
$v = str_replace($oldbaseurl, $newbaseurl, $v); $v = str_replace($oldbaseurl, $newbaseurl, $v);
} }
// import user // import user
$r = db_import_assoc('user', $account['user']); $r = db_import_assoc('user', $account['user']);
if ($r === false) { if ($r === false) {
@ -156,15 +155,16 @@ function import_account(App $a, $file) {
foreach ($account['profile'] as &$profile) { foreach ($account['profile'] as &$profile) {
foreach ($profile as $k => &$v) { foreach ($profile as $k => &$v) {
$v = str_replace($oldbaseurl, $newbaseurl, $v); $v = str_replace($oldbaseurl, $newbaseurl, $v);
foreach (array("profile", "avatar") as $k) foreach (array("profile", "avatar") as $k) {
$v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v); $v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
}
} }
$profile['uid'] = $newuid; $profile['uid'] = $newuid;
$r = db_import_assoc('profile', $profile); $r = db_import_assoc('profile', $profile);
if ($r === false) { if ($r === false) {
logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . last_error(), LOGGER_NORMAL); logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
info(t("User profile creation error")); info(t("User profile creation error"));
import_cleanup($newuid); dba::delete('user', array('uid' => $newuid));
return; return;
} }
} }
@ -174,15 +174,15 @@ function import_account(App $a, $file) {
if ($contact['uid'] == $olduid && $contact['self'] == '1') { if ($contact['uid'] == $olduid && $contact['self'] == '1') {
foreach ($contact as $k => &$v) { foreach ($contact as $k => &$v) {
$v = str_replace($oldbaseurl, $newbaseurl, $v); $v = str_replace($oldbaseurl, $newbaseurl, $v);
foreach (array("profile", "avatar", "micro") as $k) foreach (array("profile", "avatar", "micro") as $k) {
$v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v); $v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
}
} }
} }
if ($contact['uid'] == $olduid && $contact['self'] == '0') { if ($contact['uid'] == $olduid && $contact['self'] == '0') {
// set contacts 'avatar-date' to NULL_DATE to let poller to update urls // set contacts 'avatar-date' to NULL_DATE to let poller to update urls
$contact["avatar-date"] = NULL_DATE; $contact["avatar-date"] = NULL_DATE;
switch ($contact['network']) { switch ($contact['network']) {
case NETWORK_DFRN: case NETWORK_DFRN:
// send relocate message (below) // send relocate message (below)

View File

@ -6,6 +6,7 @@ function login_content(App $a) {
if (x($_SESSION, 'theme')) { if (x($_SESSION, 'theme')) {
unset($_SESSION['theme']); unset($_SESSION['theme']);
} }
if (x($_SESSION, 'mobile-theme')) { if (x($_SESSION, 'mobile-theme')) {
unset($_SESSION['mobile-theme']); unset($_SESSION['mobile-theme']);
} }

View File

@ -11,4 +11,3 @@
</section> </section>
</body> </body>
</html> </html>

View File

@ -59,4 +59,3 @@
</div> </div>
<div id="group-all-contacts-end"></div> <div id="group-all-contacts-end"></div>
</div> </div>

View File

@ -5,9 +5,9 @@
*/ */
$(document).ready(function(){ $(document).ready(function() {
// Add an event listeners on buttons for switching the contact list view // Add an event listeners on buttons for switching the contact list view
$("body").on("click", ".group-list-switcher", function(){ $("body").on("click", ".group-list-switcher", function() {
switchGroupViewMode(this); switchGroupViewMode(this);
}); });
}); });

View File

@ -83,4 +83,3 @@
</li> </li>
</ul> </ul>
</div> </div>