1
0
Fork 0

Merge pull request #3473 from Quix0r/rewrites/coding-convention-split2-6-2

Coding convention applied split 2-6-2 (of 2-14-2)
This commit is contained in:
Hypolite Petovan 2017-06-18 18:44:34 -04:00 committed by GitHub
commit ea88e15a8c
19 changed files with 748 additions and 621 deletions

View file

@ -9,37 +9,37 @@ Account - Basics
Nicht alle Friendica-Knoten bieten die Möglichkeit zur Registrierung.
Wenn die Registrierung möglich ist, wird ein "Registrieren"-Link unter dem Login-Feld auf der Startseite angezeigt, der zur Registrierungsseite führt.
Die Stärke unseres Netzwerks ist, dass die verschiedenen Knoten komplett kompatibel zueinander sind.
Wenn der Knoten, den Du besuchst, keine Registrierung anbietet, oder wenn Du glaubst, dass Dir eine andere Seite möglicherweise besser gefällt, dann kannst Du hier eine <a href="https://dir.friendica.social/servers">Liste von öffentlichen Servern (Knoten)</a> finden und den Knoten heraus suchen, der am Besten zu Deinen Anforderungen passt.
Wenn der Knoten, den Du besuchst, keine Registrierung anbietet, oder wenn Du glaubst, dass Dir eine andere Seite möglicherweise besser gefällt, dann kannst Du hier eine <a href="https://dir.friendica.social/servers">Liste von öffentlichen Servern (Knoten)</a> finden und den Knoten heraus suchen, der am Besten zu Deinen Anforderungen passt.
Wenn Du Deinen eigenen Server aufsetzen willst, kannst Du das ebenfalls machen.
Besuche <a href="http://friendi.ca">die Friendica-Webseite</a>, um den Code mit den Installationsanleitungen herunterzuladen.
Wenn Du Deinen eigenen Server aufsetzen willst, kannst Du das ebenfalls machen.
Besuche <a href="http://friendi.ca">die Friendica-Webseite</a>, um den Code mit den Installationsanleitungen herunterzuladen.
Es ist ein einfacher Installationsprozess, den jeder mit ein wenig Erfahrungen im Webseiten-Hosting oder mit grundlegenden Linux-Erfahrungen einfach handhaben kann.
*OpenID*
Das erste Feld auf der Registrierungsseite ist für eine OpenID-Adresse.
Wenn Du keine OpenID-Adresse hast oder nicht wünschst, diese zu nutzen, dann lasse das Feld frei.
Wenn Du einen OpenID-Account hast und diesen nutzen willst, gib die Adresse in das Feld ein und klicke auf "Registrieren".
Friendica wird versuchen, so viele Informationen wie möglich von Deinem OpenID-Provider zu übernehmen, um diese in Dein Profil auf dieser Seite einzutragen.
Das erste Feld auf der Registrierungsseite ist für eine OpenID-Adresse.
Wenn Du keine OpenID-Adresse hast oder nicht wünschst, diese zu nutzen, dann lasse das Feld frei.
Wenn Du einen OpenID-Account hast und diesen nutzen willst, gib die Adresse in das Feld ein und klicke auf "Registrieren".
Friendica wird versuchen, so viele Informationen wie möglich von Deinem OpenID-Provider zu übernehmen, um diese in Dein Profil auf dieser Seite einzutragen.
*Dein vollständiger Name*
Bitte trage Deinen vollständigen Namen **so ein, wie Du ihn im System anzeigen lassen willst**.
Bitte trage Deinen vollständigen Namen **so ein, wie Du ihn im System anzeigen lassen willst**.
Viele Leute nutzen ihren richtigen Namen hierfür, allerdings besteht für dich keine Pflicht, das auch so zu machen.
*Email-Adresse*
Bitte trage eine richtige Email-Adresse ein.
Deine Email-Adresse wird **niemals** veröffentlicht.
Wir benötigen diese, um Dir Account-Informationen und die Login-Daten zu schicken.
Du erhältst zudem von Zeit zu Zeit Benachrichtigungen über eingegangene Nachrichten oder Punkte, die Deine Aufmerksamkeit benötigen.
Du hast aber auch die Möglichkeit, diese Nachrichten in Deinen Account-Einstellungen komplett abzuschalten.
Bitte trage eine richtige Email-Adresse ein.
Deine Email-Adresse wird **niemals** veröffentlicht.
Wir benötigen diese, um Dir Account-Informationen und die Login-Daten zu schicken.
Du erhältst zudem von Zeit zu Zeit Benachrichtigungen über eingegangene Nachrichten oder Punkte, die Deine Aufmerksamkeit benötigen.
Du hast aber auch die Möglichkeit, diese Nachrichten in Deinen Account-Einstellungen komplett abzuschalten.
Du musst nicht Deine Haupt-Email-Adresse sein, jedoch wird eine funktionierende Adresse benötigt.
Ohne dieses kannst Du weder Dein Initialpasswort erhalten, noch Dein Passwort zurücksetzen.
Du musst nicht Deine Haupt-Email-Adresse sein, jedoch wird eine funktionierende Adresse benötigt.
Ohne dieses kannst Du weder Dein Initialpasswort erhalten, noch Dein Passwort zurücksetzen.
Dies ist die einzige persönliche Information, die korrekt sein muss.
@ -85,7 +85,7 @@ Falls Du Schwierigkeiten beim Login hast, prüfe bitte, ob z. B. Deine Feststell
**Passwort ändern**
Besuche nach Deinem ersten Login bitte die Einstellungsseite und wechsle das Passwort in eines, dass Du Dir merken kannst.
Besuche nach Deinem ersten Login bitte die Einstellungsseite und wechsle das Passwort in eines, dass Du Dir merken kannst.
**Der Anfang**
@ -95,7 +95,7 @@ Ein ['Tipp für neue Mitglieder'](newmember)-Link zeigt sich in den ersten beide
**Persönliche Daten exportieren**
Du kannst eine Kopie Deiner persönlichen Daten in einer XML-Datei exportieren.
Du kannst eine Kopie Deiner persönlichen Daten in einer XML-Datei exportieren.
Gehe hierzu in Deinen Einstellungen auf "Persönliche Daten exportieren".

View file

@ -14,18 +14,19 @@ $objDDDBLResultHandler = new DataObjectPool('Result-Handler');
*
**/
$cloPDOStatementResultHandler = function(Queue $objQueue) {
$objPDO = $objQueue->getState()->get('PDOStatement');
$objQueue->getState()->update(array('result' => $objPDO));
$objPDO = $objQueue->getState()->get('PDOStatement');
$objQueue->getState()->update(array('result' => $objPDO));
# delete handler which closes the PDOStatement-cursor
# this will be done manual if using this handler
$objQueue->deleteHandler(QUEUE_CLOSE_CURSOR_POSITION);
/*
* delete handler which closes the PDOStatement-cursor
* this will be done manual if using this handler
*/
$objQueue->deleteHandler(QUEUE_CLOSE_CURSOR_POSITION);
};
$objDDDBLResultHandler->add('PDOStatement', array('HANDLER' => $cloPDOStatementResultHandler));
if (! class_exists('dba')) {
/**
*
* MySQL database class
@ -36,8 +37,6 @@ $objDDDBLResultHandler->add('PDOStatement', array('HANDLER' => $cloPDOStatementR
* the debugging stream is safe to view within both terminals and web pages.
*
*/
if (! class_exists('dba')) {
class dba {
private $debug = 0;
@ -146,16 +145,17 @@ class dba {
$a->save_timestamp($stamp1, "database");
/// @TODO really check $a->config for 'system'? it is very generic and should be there
if (x($a->config, 'system') && x($a->config['system'], 'db_log')) {
if (($duration > $a->config["system"]["db_loglimit"])) {
$duration = round($duration, 3);
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
@file_put_contents($a->config["system"]["db_log"], datetime_convert()."\t".$duration."\t".
basename($backtrace[1]["file"])."\t".
$backtrace[1]["line"]."\t".$backtrace[2]["function"]."\t".
substr($sql, 0, 2000)."\n", FILE_APPEND);
}
/*
* Check if the configuration group 'system' and db_log is there. The
* extra first check needs to be done to avoid endless loop.
*/
if (x($a->config, 'system') && x($a->config['system'], 'db_log') && ($duration > $a->config["system"]["db_loglimit"])) {
$duration = round($duration, 3);
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
@file_put_contents($a->config["system"]["db_log"], datetime_convert()."\t".$duration."\t".
basename($backtrace[1]["file"])."\t".
$backtrace[1]["line"]."\t".$backtrace[2]["function"]."\t".
substr($sql, 0, 2000)."\n", FILE_APPEND);
}
if ($intErrorCode) {
@ -202,8 +202,11 @@ class dba {
}
if ($onlyquery) {
$this->result = $r; # this will store an PDOStatement Object in result
$this->result->execute(); # execute the Statement, to get its result
// this will store an PDOStatement Object in result
$this->result = $r;
// execute the Statement, to get its result
$this->result->execute();
return true;
}
@ -262,7 +265,8 @@ function printable($s) {
return $s;
}}
// Procedural functions
// --- Procedural functions ---
if (! function_exists('dbg')) {
function dbg($state) {
global $db;
@ -273,18 +277,20 @@ function dbg($state) {
if (! function_exists('dbesc')) {
function dbesc($str) {
global $db;
if ($db && $db->connected)
return($db->escape($str));
else
return(str_replace("'","\\'",$str));
if ($db && $db->connected) {
return $db->escape($str);
} else {
return str_replace("'","\\'",$str);
}
}}
if (! function_exists('q')) {
/**
/*
* Function: q($sql,$args);
* Description: execute SQL query with printf style args.
* Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d",
* 'user', 1);
* 'user', 1);
*/
function q($sql) {
@ -301,23 +307,19 @@ function q($sql) {
return $db->q($stmt);
}
/**
*
/*
* This will happen occasionally trying to store the
* session data after abnormal program termination
*
*/
logger('dba: no database: ' . print_r($args,true));
return false;
}}
if (! function_exists('dbq')) {
/**
/*
* Raw db query, no arguments
*/
function dbq($sql) {
global $db;
if ($db && $db->connected) {
$ret = $db->q($sql);
@ -327,15 +329,14 @@ function dbq($sql) {
return $ret;
}}
/*
* Caller is responsible for ensuring that any integer arguments to
* dbesc_array are actually integers and not malformed strings containing
* SQL injection vectors. All integer array elements should be specifically
* cast to int to avoid trouble.
*/
if (! function_exists('dbesc_array_cb')) {
function dbesc_array_cb(&$item, $key) {
/*
* Caller is responsible for ensuring that any integer arguments to
* dbesc_array are actually integers and not malformed strings containing
* SQL injection vectors. All integer array elements should be specifically
* cast to int to avoid trouble.
*/
if (is_string($item)) {
$item = dbesc($item);
}

View file

@ -30,7 +30,7 @@ function convert_to_innodb() {
$sql = sprintf("ALTER TABLE `%s` engine=InnoDB;", dbesc($table['TABLE_NAME']));
echo $sql."\n";
$result = @$db->q($sql);
$result = $db->q($sql);
if (!dbm::is_result($result)) {
print_update_error($db, $sql);
}
@ -85,6 +85,7 @@ function update_fail($update_id, $error_message) {
/*
@TODO deprecated code?
$email_tpl = get_intltext_template("update_fail_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
@ -1764,10 +1765,10 @@ function dbstructure_run(&$argv, &$argc) {
}
if (is_null($db)) {
@include(".htconfig.php");
require_once("include/dba.php");
@include ".htconfig.php";
require_once "include/dba.php";
$db = new dba($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
}
if ($argc == 2) {

View file

@ -880,11 +880,14 @@ class Diaspora {
if (dbm::is_result($r)) {
return $r[0];
} else {
// We haven't found it?
// We use another function for it that will possibly create a contact entry
/*
* We haven't found it?
* We use another function for it that will possibly create a contact entry.
*/
$cid = get_contact($handle, $uid);
if ($cid > 0) {
/// @TODO Contact retrieval should be encapsulated into an "entity" class like `Contact`
$r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
if (dbm::is_result($r)) {
@ -919,9 +922,11 @@ class Diaspora {
*/
private static function post_allow($importer, $contact, $is_comment = false) {
// perhaps we were already sharing with this person. Now they're sharing with us.
// That makes us friends.
// Normally this should have handled by getting a request - but this could get lost
/*
* Perhaps we were already sharing with this person. Now they're sharing with us.
* That makes us friends.
* Normally this should have handled by getting a request - but this could get lost
*/
if ($contact["rel"] == CONTACT_IS_FOLLOWER && in_array($importer["page-flags"], array(PAGE_FREELOVE))) {
q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
intval(CONTACT_IS_FRIEND),
@ -934,16 +939,19 @@ class Diaspora {
// We don't seem to like that person
if ($contact["blocked"] || $contact["readonly"] || $contact["archive"]) {
// Maybe blocked, don't accept.
return false;
// We are following this person? Then it is okay
// We are following this person?
} elseif (($contact["rel"] == CONTACT_IS_SHARING) || ($contact["rel"] == CONTACT_IS_FRIEND)) {
// Yes, then it is fine.
return true;
// Is it a post to a community? That's good
// Is it a post to a community?
} elseif (($contact["rel"] == CONTACT_IS_FOLLOWER) && ($importer["page-flags"] == PAGE_COMMUNITY)) {
// That's good
return true;
}
// Messages for the global users and comments are always accepted
if (($importer["uid"] == 0) || $is_comment) {
// Is the message a global user or a comment?
} elseif (($importer["uid"] == 0) || $is_comment) {
// Messages for the global users and comments are always accepted
return true;
}

View file

@ -853,18 +853,22 @@ function widget_events() {
return;
}
// Cal logged in user (test permission at foreign profile page)
// If the $owner uid is available we know it is part of one of the profile pages (like /cal)
// So we have to test if if it's the own profile page of the logged in user
// or a foreign one. For foreign profile pages we need to check if the feature
// for exporting the cal is enabled (otherwise the widget would appear for logged in users
// on foreigen profile pages even if the widget is disabled)
/*
* Cal logged in user (test permission at foreign profile page)
* If the $owner uid is available we know it is part of one of the profile pages (like /cal)
* So we have to test if if it's the own profile page of the logged in user
* or a foreign one. For foreign profile pages we need to check if the feature
* for exporting the cal is enabled (otherwise the widget would appear for logged in users
* on foreigen profile pages even if the widget is disabled)
*/
if (intval($owner_uid) && local_user() !== $owner_uid && ! feature_enabled($owner_uid, "export_calendar")) {
return;
}
// If it's a kind of profile page (intval($owner_uid)) return if the user not logged in and
// export feature isn't enabled
/*
* If it's a kind of profile page (intval($owner_uid)) return if the user not logged in and
* export feature isn't enabled
*/
if (intval($owner_uid) && ! local_user() && ! feature_enabled($owner_uid, "export_calendar")) {
return;
}

View file

@ -158,7 +158,7 @@ function removelinebreak($message)
$currquotelevel = 0;
$currline = $line;
while ((strlen($currline)>0) && ((substr($currline, 0, 1) == '>')
|| (substr($currline, 0, 1) == ' '))) {
|| (substr($currline, 0, 1) == ' '))) {
if (substr($currline, 0, 1) == '>')
$currquotelevel++;
@ -168,7 +168,7 @@ function removelinebreak($message)
$quotelevel = 0;
$nextline = trim($arrbody[$i+1]);
while ((strlen($nextline)>0) && ((substr($nextline, 0, 1) == '>')
|| (substr($nextline, 0, 1) == ' '))) {
|| (substr($nextline, 0, 1) == ' '))) {
if (substr($nextline, 0, 1) == '>')
$quotelevel++;
@ -203,7 +203,7 @@ function removelinebreak($message)
$lines[$lineno] .= ' ';
while ((strlen($line)>0) && ((substr($line, 0, 1) == '>')
|| (substr($line, 0, 1) == ' '))) {
|| (substr($line, 0, 1) == ' '))) {
$line = ltrim(substr($line, 1));
}

View file

@ -91,7 +91,6 @@ function pop_lang() {
$lang = $a->langsave;
}
// l
if (! function_exists('load_translation_table')) {

View file

@ -2,15 +2,15 @@
use Friendica\Core\Config;
require_once('include/queue_fn.php');
require_once('include/dfrn.php');
require_once("include/datetime.php");
require_once('include/items.php');
require_once('include/bbcode.php');
require_once('include/socgraph.php');
require_once('include/cache.php');
require_once 'include/queue_fn.php';
require_once 'include/dfrn.php';
require_once 'include/datetime.php';
require_once 'include/items.php';
require_once 'include/bbcode.php';
require_once 'include/socgraph.php';
require_once 'include/cache.php';
function queue_run(&$argv, &$argc){
function queue_run(&$argv, &$argc) {
global $a;
if ($argc > 1) {
@ -41,9 +41,10 @@ function queue_run(&$argv, &$argc){
q("DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
}
// For the first 12 hours we'll try to deliver every 15 minutes
// After that, we'll only attempt delivery once per hour.
/*
* For the first 12 hours we'll try to deliver every 15 minutes
* After that, we'll only attempt delivery once per hour.
*/
$r = q("SELECT `id` FROM `queue` WHERE ((`created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR AND `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE) OR (`last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR)) ORDER BY `cid`, `created`");
call_hooks('queue_predeliver', $a, $r);
@ -60,8 +61,8 @@ function queue_run(&$argv, &$argc){
// delivering
require_once('include/salmon.php');
require_once('include/diaspora.php');
require_once 'include/salmon.php';
require_once 'include/diaspora.php';
$r = q("SELECT * FROM `queue` WHERE `id` = %d LIMIT 1",
intval($queue_id));

View file

@ -6,13 +6,13 @@ function auto_redir(App $a, $contact_nick) {
// prevent looping
if(x($_REQUEST,'redir') && intval($_REQUEST['redir']))
if (x($_REQUEST,'redir') && intval($_REQUEST['redir']))
return;
if((! $contact_nick) || ($contact_nick === $a->user['nickname']))
if ((! $contact_nick) || ($contact_nick === $a->user['nickname']))
return;
if(local_user()) {
if (local_user()) {
// We need to find out if $contact_nick is a user on this hub, and if so, if I
// am a contact of that user. However, that user may have other contacts with the
@ -24,7 +24,7 @@ function auto_redir(App $a, $contact_nick) {
$baseurl = App::get_baseurl();
$domain_st = strpos($baseurl, "://");
if($domain_st === false)
if ($domain_st === false)
return;
$baseurl = substr($baseurl, $domain_st + 3);
$nurl = normalise_link($baseurl);
@ -58,11 +58,11 @@ function auto_redir(App $a, $contact_nick) {
$dfrn_id = $orig_id = (($r[0]['issued-id']) ? $r[0]['issued-id'] : $r[0]['dfrn-id']);
if($r[0]['duplex'] && $r[0]['issued-id']) {
if ($r[0]['duplex'] && $r[0]['issued-id']) {
$orig_id = $r[0]['issued-id'];
$dfrn_id = '1:' . $orig_id;
}
if($r[0]['duplex'] && $r[0]['dfrn-id']) {
if ($r[0]['duplex'] && $r[0]['dfrn-id']) {
$orig_id = $r[0]['dfrn-id'];
$dfrn_id = '0:' . $orig_id;
}
@ -70,7 +70,7 @@ function auto_redir(App $a, $contact_nick) {
// ensure that we've got a valid ID. There may be some edge cases with forums and non-duplex mode
// that may have triggered some of the "went to {profile/intro} and got an RSS feed" issues
if(strlen($dfrn_id) < 3)
if (strlen($dfrn_id) < 3)
return;
$sec = random_string();

View file

@ -170,11 +170,14 @@ function slapper($owner, $url, $slap) {
}
logger('slapper for '.$url.' returned ' . $return_code);
if (! $return_code) {
return(-1);
return -1;
}
if (($return_code == 503) && (stristr($a->get_curl_headers(), 'retry-after'))) {
return(-1);
return -1;
}
return ((($return_code >= 200) && ($return_code < 300)) ? 0 : 1);
}

View file

@ -56,58 +56,65 @@ function authenticate_success($user_record, $login_initial = false, $interactive
$a->user = $user_record;
if($interactive) {
if ($interactive) {
if ($a->user['login_date'] <= NULL_DATE) {
$_SESSION['return_url'] = 'profile_photo/new';
$a->module = 'profile_photo';
info( t("Welcome ") . $a->user['username'] . EOL);
info( t('Please upload a profile photo.') . EOL);
}
else
} else {
info( t("Welcome back ") . $a->user['username'] . EOL);
}
}
$member_since = strtotime($a->user['register_date']);
if(time() < ($member_since + ( 60 * 60 * 24 * 14)))
if (time() < ($member_since + ( 60 * 60 * 24 * 14))) {
$_SESSION['new_member'] = true;
else
} else {
$_SESSION['new_member'] = false;
if(strlen($a->user['timezone'])) {
}
if (strlen($a->user['timezone'])) {
date_default_timezone_set($a->user['timezone']);
$a->timezone = $a->user['timezone'];
}
$master_record = $a->user;
if((x($_SESSION,'submanage')) && intval($_SESSION['submanage'])) {
$r = q("select * from user where uid = %d limit 1",
if ((x($_SESSION,'submanage')) && intval($_SESSION['submanage'])) {
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
intval($_SESSION['submanage'])
);
if (dbm::is_result($r))
if (dbm::is_result($r)) {
$master_record = $r[0];
}
}
$r = q("SELECT `uid`,`username`,`nickname` FROM `user` WHERE `password` = '%s' AND `email` = '%s' AND `account_removed` = 0 ",
dbesc($master_record['password']),
dbesc($master_record['email'])
);
if (dbm::is_result($r))
if (dbm::is_result($r)) {
$a->identities = $r;
else
} else {
$a->identities = array();
}
$r = q("select `user`.`uid`, `user`.`username`, `user`.`nickname`
from manage INNER JOIN user on manage.mid = user.uid where `user`.`account_removed` = 0
and `manage`.`uid` = %d",
$r = q("SELECT `user`.`uid`, `user`.`username`, `user`.`nickname`
FROM `manage`
INNER JOIN `user` ON `manage`.`mid` = `user`.`uid`
WHERE `user`.`account_removed` = 0 AND `manage`.`uid` = %d",
intval($master_record['uid'])
);
if (dbm::is_result($r))
if (dbm::is_result($r)) {
$a->identities = array_merge($a->identities,$r);
}
if($login_initial)
if ($login_initial) {
logger('auth_identities: ' . print_r($a->identities,true), LOGGER_DEBUG);
if($login_refresh)
}
if ($login_refresh) {
logger('auth_identities refresh: ' . print_r($a->identities,true), LOGGER_DEBUG);
}
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
intval($_SESSION['uid']));
@ -119,7 +126,7 @@ function authenticate_success($user_record, $login_initial = false, $interactive
header('X-Account-Management-Status: active; name="' . $a->user['username'] . '"; id="' . $a->user['nickname'] .'"');
if($login_initial || $login_refresh) {
if ($login_initial || $login_refresh) {
q("UPDATE `user` SET `login_date` = '%s' WHERE `uid` = %d",
dbesc(datetime_convert()),
@ -228,7 +235,7 @@ function can_write_wall(App $a, $owner) {
}
function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
function permissions_sql($owner_id, $remote_verified = false, $groups = null) {
$local_user = local_user();
$remote_user = remote_user();
@ -238,7 +245,6 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
*
* default permissions - anonymous user
*/
$sql = " AND allow_cid = ''
AND allow_gid = ''
AND deny_cid = ''
@ -249,21 +255,18 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
* Profile owner - everything is visible
*/
if(($local_user) && ($local_user == $owner_id)) {
if (($local_user) && ($local_user == $owner_id)) {
$sql = '';
}
} elseif ($remote_user) {
/*
* Authenticated visitor. Unless pre-verified,
* check that the contact belongs to this $owner_id
* and load the groups the visitor belongs to.
* If pre-verified, the caller is expected to have already
* done this and passed the groups into this function.
*/
/**
* Authenticated visitor. Unless pre-verified,
* check that the contact belongs to this $owner_id
* and load the groups the visitor belongs to.
* If pre-verified, the caller is expected to have already
* done this and passed the groups into this function.
*/
elseif($remote_user) {
if(! $remote_verified) {
if (! $remote_verified) {
$r = q("SELECT id FROM contact WHERE id = %d AND uid = %d AND blocked = 0 LIMIT 1",
intval($remote_user),
intval($owner_id)
@ -273,16 +276,18 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
$groups = init_groups_visitor($remote_user);
}
}
if($remote_verified) {
if ($remote_verified) {
$gs = '<<>>'; // should be impossible to match
if(is_array($groups) && count($groups)) {
foreach($groups as $g)
if (is_array($groups) && count($groups)) {
foreach ($groups as $g)
$gs .= '|<' . intval($g) . '>';
}
/*$sql = sprintf(
/*
* @TODO old-lost code found?
$sql = sprintf(
" AND ( allow_cid = '' OR allow_cid REGEXP '<%d>' )
AND ( deny_cid = '' OR NOT deny_cid REGEXP '<%d>' )
AND ( allow_gid = '' OR allow_gid REGEXP '%s' )
@ -292,7 +297,8 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
intval($remote_user),
dbesc($gs),
dbesc($gs)
);*/
);
*/
$sql = sprintf(
" AND ( NOT (deny_cid REGEXP '<%d>' OR deny_gid REGEXP '%s')
AND ( allow_cid REGEXP '<%d>' OR allow_gid REGEXP '%s' OR ( allow_cid = '' AND allow_gid = '') )
@ -309,7 +315,7 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
}
function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) {
function item_permissions_sql($owner_id, $remote_verified = false, $groups = null) {
$local_user = local_user();
$remote_user = remote_user();
@ -319,7 +325,6 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
*
* default permissions - anonymous user
*/
$sql = " AND `item`.allow_cid = ''
AND `item`.allow_gid = ''
AND `item`.deny_cid = ''
@ -330,22 +335,17 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
/**
* Profile owner - everything is visible
*/
if($local_user && ($local_user == $owner_id)) {
if ($local_user && ($local_user == $owner_id)) {
$sql = '';
}
/**
* Authenticated visitor. Unless pre-verified,
* check that the contact belongs to this $owner_id
* and load the groups the visitor belongs to.
* If pre-verified, the caller is expected to have already
* done this and passed the groups into this function.
*/
elseif($remote_user) {
if(! $remote_verified) {
} elseif ($remote_user) {
/*
* Authenticated visitor. Unless pre-verified,
* check that the contact belongs to this $owner_id
* and load the groups the visitor belongs to.
* If pre-verified, the caller is expected to have already
* done this and passed the groups into this function.
*/
if (! $remote_verified) {
$r = q("SELECT id FROM contact WHERE id = %d AND uid = %d AND blocked = 0 LIMIT 1",
intval($remote_user),
intval($owner_id)
@ -355,13 +355,14 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
$groups = init_groups_visitor($remote_user);
}
}
if($remote_verified) {
if ($remote_verified) {
$gs = '<<>>'; // should be impossible to match
if(is_array($groups) && count($groups)) {
foreach($groups as $g)
if (is_array($groups) && count($groups)) {
foreach ($groups as $g) {
$gs .= '|<' . intval($g) . '>';
}
}
$sql = sprintf(
@ -412,7 +413,11 @@ function get_form_security_token($typename = '') {
}
function check_form_security_token($typename = '', $formname = 'form_security_token') {
if (!x($_REQUEST, $formname)) return false;
if (!x($_REQUEST, $formname)) {
return false;
}
/// @TODO Careful, not secured!
$hash = $_REQUEST[$formname];
$max_livetime = 10800; // 3 hours
@ -420,7 +425,9 @@ function check_form_security_token($typename = '', $formname = 'form_security_to
$a = get_app();
$x = explode('.', $hash);
if (time() > (IntVal($x[0]) + $max_livetime)) return false;
if (time() > (IntVal($x[0]) + $max_livetime)) {
return false;
}
$sec_hash = hash('whirlpool', $a->user['guid'] . $a->user['prvkey'] . session_id() . $x[0] . $typename);
@ -441,7 +448,7 @@ function check_form_security_token_redirectOnErr($err_redirect, $typename = '',
}
function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'form_security_token') {
if (!check_form_security_token($typename, $formname)) {
$a = get_app();
$a = get_app();
logger('check_form_security_token failed: user ' . $a->user['guid'] . ' - form element ' . $typename);
logger('check_form_security_token failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA);
header('HTTP/1.1 403 Forbidden');
@ -454,7 +461,7 @@ function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'f
// DFRN contact. They are *not* neccessarily unique across the entire site.
if(! function_exists('init_groups_visitor')) {
if (! function_exists('init_groups_visitor')) {
function init_groups_visitor($contact_id) {
$groups = array();
$r = q("SELECT `gid` FROM `group_member`
@ -462,9 +469,8 @@ function init_groups_visitor($contact_id) {
intval($contact_id)
);
if (dbm::is_result($r)) {
foreach($r as $rr)
foreach ($r as $rr)
$groups[] = $rr['gid'];
}
return $groups;
}}

View file

@ -53,8 +53,8 @@ function poco_load($cid, $uid = 0, $zcid = 0, $url = null) {
function poco_load_worker($cid, $uid, $zcid, $url) {
$a = get_app();
if($cid) {
if((! $url) || (! $uid)) {
if ($cid) {
if ((! $url) || (! $uid)) {
$r = q("select `poco`, `uid` from `contact` where `id` = %d limit 1",
intval($cid)
);
@ -63,12 +63,14 @@ function poco_load_worker($cid, $uid, $zcid, $url) {
$uid = $r[0]['uid'];
}
}
if(! $uid)
if (! $uid) {
return;
}
}
if(! $url)
if (! $url) {
return;
}
$url = $url . (($uid) ? '/@me/@all?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation' : '?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation') ;
@ -80,18 +82,20 @@ function poco_load_worker($cid, $uid, $zcid, $url) {
logger('poco_load: return code: ' . $a->get_curl_code(), LOGGER_DEBUG);
if(($a->get_curl_code() > 299) || (! $s))
if (($a->get_curl_code() > 299) || (! $s)) {
return;
}
$j = json_decode($s);
logger('poco_load: json: ' . print_r($j,true),LOGGER_DATA);
if(! isset($j->entry))
if (! isset($j->entry)) {
return;
}
$total = 0;
foreach($j->entry as $entry) {
foreach ($j->entry as $entry) {
$total ++;
$profile_url = '';
@ -155,13 +159,14 @@ function poco_load_worker($cid, $uid, $zcid, $url) {
}
if (isset($entry->tags)) {
foreach($entry->tags as $tag) {
foreach ($entry->tags as $tag) {
$keywords = implode(", ", $tag);
}
}
if (isset($entry->contactType) && ($entry->contactType >= 0))
if (isset($entry->contactType) && ($entry->contactType >= 0)) {
$contact_type = $entry->contactType;
}
$gcontact = array("url" => $profile_url,
"name" => $name,
@ -267,7 +272,7 @@ function sanitize_gcontact($gcontact) {
dbesc(normalise_link($gcontact['url']))
);
if (count($x)) {
if (dbm::is_result($x)) {
if (!isset($gcontact['network']) && ($x[0]["network"] != NETWORK_STATUSNET)) {
$gcontact['network'] = $x[0]["network"];
}
@ -299,7 +304,7 @@ function sanitize_gcontact($gcontact) {
if ($alternate && ($gcontact['network'] == NETWORK_OSTATUS)) {
// Delete the old entry - if it exists
$r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($orig_profile)));
if ($r) {
if (dbm::is_result($r)) {
q("DELETE FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($orig_profile)));
q("DELETE FROM `glink` WHERE `gcid` = %d", intval($r[0]["id"]));
}
@ -353,6 +358,7 @@ function link_gcontact($gcid, $uid = 0, $cid = 0, $zcid = 0) {
intval($gcid),
intval($zcid)
);
if (!dbm::is_result($r)) {
q("INSERT INTO `glink` (`cid`, `uid`, `gcid`, `zcid`, `updated`) VALUES (%d, %d, %d, %d, '%s') ",
intval($cid),
@ -374,11 +380,13 @@ function link_gcontact($gcid, $uid = 0, $cid = 0, $zcid = 0) {
function poco_reachable($profile, $server = "", $network = "", $force = false) {
if ($server == "")
if ($server == "") {
$server = poco_detect_server($profile);
}
if ($server == "")
if ($server == "") {
return true;
}
return poco_check_server($server, $network, $force);
}
@ -661,7 +669,7 @@ function poco_last_updated($profile, $force = false) {
$last_updated = "";
foreach ($entries AS $entry) {
foreach ($entries as $entry) {
$published = $xpath->query('atom:published/text()', $entry)->item(0)->nodeValue;
$updated = $xpath->query('atom:updated/text()', $entry)->item(0)->nodeValue;
@ -694,48 +702,55 @@ function poco_last_updated($profile, $force = false) {
function poco_do_update($created, $updated, $last_failure, $last_contact) {
$now = strtotime(datetime_convert());
if ($updated > $last_contact)
if ($updated > $last_contact) {
$contact_time = strtotime($updated);
else
} else {
$contact_time = strtotime($last_contact);
}
$failure_time = strtotime($last_failure);
$created_time = strtotime($created);
// If there is no "created" time then use the current time
if ($created_time <= 0)
if ($created_time <= 0) {
$created_time = $now;
}
// If the last contact was less than 24 hours then don't update
if (($now - $contact_time) < (60 * 60 * 24))
if (($now - $contact_time) < (60 * 60 * 24)) {
return false;
}
// If the last failure was less than 24 hours then don't update
if (($now - $failure_time) < (60 * 60 * 24))
if (($now - $failure_time) < (60 * 60 * 24)) {
return false;
}
// If the last contact was less than a week ago and the last failure is older than a week then don't update
//if ((($now - $contact_time) < (60 * 60 * 24 * 7)) && ($contact_time > $failure_time))
// return false;
// If the last contact time was more than a week ago and the contact was created more than a week ago, then only try once a week
if ((($now - $contact_time) > (60 * 60 * 24 * 7)) && (($now - $created_time) > (60 * 60 * 24 * 7)) && (($now - $failure_time) < (60 * 60 * 24 * 7)))
if ((($now - $contact_time) > (60 * 60 * 24 * 7)) && (($now - $created_time) > (60 * 60 * 24 * 7)) && (($now - $failure_time) < (60 * 60 * 24 * 7))) {
return false;
}
// If the last contact time was more than a month ago and the contact was created more than a month ago, then only try once a month
if ((($now - $contact_time) > (60 * 60 * 24 * 30)) && (($now - $created_time) > (60 * 60 * 24 * 30)) && (($now - $failure_time) < (60 * 60 * 24 * 30)))
if ((($now - $contact_time) > (60 * 60 * 24 * 30)) && (($now - $created_time) > (60 * 60 * 24 * 30)) && (($now - $failure_time) < (60 * 60 * 24 * 30))) {
return false;
}
return true;
}
function poco_to_boolean($val) {
if (($val == "true") || ($val == 1))
return(true);
if (($val == "false") || ($val == 0))
return(false);
if (($val == "true") || ($val == 1)) {
return true;
} elseif (($val == "false") || ($val == 0)) {
return false;
}
return ($val);
return $val;
}
/**
@ -763,7 +778,7 @@ function poco_detect_poco_data($data) {
return false;
}
foreach ($data->entry[0]->urls AS $url) {
foreach ($data->entry[0]->urls as $url) {
if ($url->type == 'zot') {
$server = array();
$server["platform"] = 'Hubzilla';
@ -798,7 +813,7 @@ function poco_fetch_nodeinfo($server_url) {
$nodeinfo_url = '';
foreach ($nodeinfo->links AS $link) {
foreach ($nodeinfo->links as $link) {
if ($link->rel == 'http://nodeinfo.diaspora.software/ns/schema/1.0') {
$nodeinfo_url = $link->href;
}
@ -851,7 +866,7 @@ function poco_fetch_nodeinfo($server_url) {
$gnusocial = false;
if (is_array($nodeinfo->protocols->inbound)) {
foreach ($nodeinfo->protocols->inbound AS $inbound) {
foreach ($nodeinfo->protocols->inbound as $inbound) {
if ($inbound == 'diaspora') {
$diaspora = true;
}
@ -926,13 +941,11 @@ function poco_detect_server_type($body) {
$attr[$attribute->name] = $attribute->value;
}
}
if ($attr['property'] == 'generator') {
if (in_array($attr['content'], array("hubzilla", "BlaBlaNet"))) {
$server = array();
$server["platform"] = $attr['content'];
$server["version"] = "";
$server["network"] = NETWORK_DIASPORA;
}
if ($attr['property'] == 'generator' && in_array($attr['content'], array("hubzilla", "BlaBlaNet"))) {
$server = array();
$server["platform"] = $attr['content'];
$server["version"] = "";
$server["network"] = NETWORK_DIASPORA;
}
}
}
@ -951,8 +964,9 @@ function poco_check_server($server_url, $network = "", $force = false) {
$server_url = trim($server_url, "/");
$server_url = str_replace("/index.php", "", $server_url);
if ($server_url == "")
if ($server_url == "") {
return false;
}
$servers = q("SELECT * FROM `gserver` WHERE `nurl` = '%s'", dbesc(normalise_link($server_url)));
if (dbm::is_result($servers)) {
@ -964,8 +978,9 @@ function poco_check_server($server_url, $network = "", $force = false) {
$poco = $servers[0]["poco"];
$noscrape = $servers[0]["noscrape"];
if ($network == "")
if ($network == "") {
$network = $servers[0]["network"];
}
$last_contact = $servers[0]["last_contact"];
$last_failure = $servers[0]["last_failure"];
@ -1083,10 +1098,10 @@ function poco_check_server($server_url, $network = "", $force = false) {
}
$lines = explode("\n",$serverret["header"]);
if(count($lines)) {
if (count($lines)) {
foreach($lines as $line) {
$line = trim($line);
if(stristr($line,'X-Diaspora-Version:')) {
if (stristr($line,'X-Diaspora-Version:')) {
$platform = "Diaspora";
$version = trim(str_replace("X-Diaspora-Version:", "", $line));
$version = trim(str_replace("x-diaspora-version:", "", $version));
@ -1095,7 +1110,7 @@ function poco_check_server($server_url, $network = "", $force = false) {
$version = $versionparts[0];
}
if(stristr($line,'Server: Mastodon')) {
if (stristr($line,'Server: Mastodon')) {
$platform = "Mastodon";
$network = NETWORK_OSTATUS;
}
@ -1165,10 +1180,11 @@ function poco_check_server($server_url, $network = "", $force = false) {
$network = NETWORK_DIASPORA;
}
if (isset($data->site->redmatrix)) {
if (isset($data->site->redmatrix->PLATFORM_NAME))
if (isset($data->site->redmatrix->PLATFORM_NAME)) {
$platform = $data->site->redmatrix->PLATFORM_NAME;
elseif (isset($data->site->redmatrix->RED_PLATFORM))
} elseif (isset($data->site->redmatrix->RED_PLATFORM)) {
$platform = $data->site->redmatrix->RED_PLATFORM;
}
$version = $data->site->redmatrix->RED_VERSION;
$network = NETWORK_DIASPORA;
@ -1185,12 +1201,13 @@ function poco_check_server($server_url, $network = "", $force = false) {
$data->site->private = poco_to_boolean($data->site->private);
$data->site->inviteonly = poco_to_boolean($data->site->inviteonly);
if (!$data->site->closed && !$data->site->private and $data->site->inviteonly)
if (!$data->site->closed && !$data->site->private and $data->site->inviteonly) {
$register_policy = REGISTER_APPROVE;
elseif (!$data->site->closed && !$data->site->private)
} elseif (!$data->site->closed && !$data->site->private) {
$register_policy = REGISTER_OPEN;
else
} else {
$register_policy = REGISTER_CLOSED;
}
}
}
}
@ -1254,8 +1271,9 @@ function poco_check_server($server_url, $network = "", $force = false) {
if (!$failure && in_array($network, array(NETWORK_DFRN, NETWORK_OSTATUS))) {
$serverret = z_fetch_url($server_url."/friendica/json");
if (!$serverret["success"])
if (!$serverret["success"]) {
$serverret = z_fetch_url($server_url."/friendika/json");
}
if ($serverret["success"]) {
$data = json_decode($serverret["body"]);
@ -1299,7 +1317,7 @@ function poco_check_server($server_url, $network = "", $force = false) {
if (($last_contact <= $last_failure) && !$failure) {
logger("Server ".$server_url." seems to be alive, but last contact wasn't set - could be a bug", LOGGER_DEBUG);
} else if (($last_contact >= $last_failure) && $failure) {
} elseif (($last_contact >= $last_failure) && $failure) {
logger("Server ".$server_url." seems to be dead, but last failure wasn't set - could be a bug", LOGGER_DEBUG);
}
@ -1346,12 +1364,12 @@ function poco_check_server($server_url, $network = "", $force = false) {
dbesc(datetime_convert())
);
}
logger("End discovery for server ".$server_url, LOGGER_DEBUG);
logger("End discovery for server " . $server_url, LOGGER_DEBUG);
return !$failure;
}
function count_common_friends($uid,$cid) {
function count_common_friends($uid, $cid) {
$r = q("SELECT count(*) as `total`
FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
@ -1364,20 +1382,22 @@ function count_common_friends($uid,$cid) {
intval($cid)
);
// logger("count_common_friends: $uid $cid {$r[0]['total']}");
if (dbm::is_result($r))
// logger("count_common_friends: $uid $cid {$r[0]['total']}");
if (dbm::is_result($r)) {
return $r[0]['total'];
}
return 0;
}
function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) {
function common_friends($uid, $cid, $start = 0, $limit = 9999, $shuffle = false) {
if($shuffle)
if ($shuffle) {
$sql_extra = " order by rand() ";
else
} else {
$sql_extra = " order by `gcontact`.`name` asc ";
}
$r = q("SELECT `gcontact`.*, `contact`.`id` AS `cid`
FROM `glink`
@ -1396,12 +1416,13 @@ function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) {
intval($limit)
);
/// @TODO Check all calling-findings of this function if they properly use dbm::is_result()
return $r;
}
function count_common_friends_zcid($uid,$zcid) {
function count_common_friends_zcid($uid, $zcid) {
$r = q("SELECT count(*) as `total`
FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
@ -1411,18 +1432,20 @@ function count_common_friends_zcid($uid,$zcid) {
intval($uid)
);
if (dbm::is_result($r))
if (dbm::is_result($r)) {
return $r[0]['total'];
}
return 0;
}
function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = false) {
function common_friends_zcid($uid, $zcid, $start = 0, $limit = 9999, $shuffle = false) {
if($shuffle)
if ($shuffle) {
$sql_extra = " order by rand() ";
else
} else {
$sql_extra = " order by `gcontact`.`name` asc ";
}
$r = q("SELECT `gcontact`.*
FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
@ -1435,12 +1458,13 @@ function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = fal
intval($limit)
);
/// @TODO Check all calling-findings of this function if they properly use dbm::is_result()
return $r;
}
function count_all_friends($uid,$cid) {
function count_all_friends($uid, $cid) {
$r = q("SELECT count(*) as `total`
FROM `glink` INNER JOIN `gcontact` on `glink`.`gcid` = `gcontact`.`id`
@ -1450,14 +1474,15 @@ function count_all_friends($uid,$cid) {
intval($uid)
);
if (dbm::is_result($r))
if (dbm::is_result($r)) {
return $r[0]['total'];
}
return 0;
}
function all_friends($uid,$cid,$start = 0, $limit = 80) {
function all_friends($uid, $cid, $start = 0, $limit = 80) {
$r = q("SELECT `gcontact`.*, `contact`.`id` AS `cid`
FROM `glink`
@ -1473,6 +1498,7 @@ function all_friends($uid,$cid,$start = 0, $limit = 80) {
intval($limit)
);
/// @TODO Check all calling-findings of this function if they properly use dbm::is_result()
return $r;
}
@ -1484,20 +1510,24 @@ function suggestion_query($uid, $start = 0, $limit = 80) {
return array();
}
// Uncommented because the result of the queries are to big to store it in the cache.
// We need to decide if we want to change the db column type or if we want to delete it.
// $list = Cache::get("suggestion_query:".$uid.":".$start.":".$limit);
// if (!is_null($list)) {
// return $list;
// }
/*
* Uncommented because the result of the queries are to big to store it in the cache.
* We need to decide if we want to change the db column type or if we want to delete it.
*/
//$list = Cache::get("suggestion_query:".$uid.":".$start.":".$limit);
//if (!is_null($list)) {
// return $list;
//}
$network = array(NETWORK_DFRN);
if (get_config('system','diaspora_enabled'))
if (get_config('system','diaspora_enabled')) {
$network[] = NETWORK_DIASPORA;
}
if (!get_config('system','ostatus_disabled'))
if (!get_config('system','ostatus_disabled')) {
$network[] = NETWORK_OSTATUS;
}
$sql_network = implode("', '", $network);
$sql_network = "'".$sql_network."'";
@ -1524,9 +1554,11 @@ function suggestion_query($uid, $start = 0, $limit = 80) {
);
if (dbm::is_result($r) && count($r) >= ($limit -1)) {
// Uncommented because the result of the queries are to big to store it in the cache.
// We need to decide if we want to change the db column type or if we want to delete it.
// Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $r, CACHE_FIVE_MINUTES);
/*
* Uncommented because the result of the queries are to big to store it in the cache.
* We need to decide if we want to change the db column type or if we want to delete it.
*/
//Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $r, CACHE_FIVE_MINUTES);
return $r;
}
@ -1550,18 +1582,23 @@ function suggestion_query($uid, $start = 0, $limit = 80) {
);
$list = array();
foreach ($r2 AS $suggestion)
foreach ($r2 as $suggestion) {
$list[$suggestion["nurl"]] = $suggestion;
}
foreach ($r AS $suggestion)
foreach ($r as $suggestion) {
$list[$suggestion["nurl"]] = $suggestion;
}
while (sizeof($list) > ($limit))
while (sizeof($list) > ($limit)) {
array_pop($list);
}
// Uncommented because the result of the queries are to big to store it in the cache.
// We need to decide if we want to change the db column type or if we want to delete it.
// Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $list, CACHE_FIVE_MINUTES);
/*
* Uncommented because the result of the queries are to big to store it in the cache.
* We need to decide if we want to change the db column type or if we want to delete it.
*/
//Cache::set("suggestion_query:".$uid.":".$start.":".$limit, $list, CACHE_FIVE_MINUTES);
return $list;
}
@ -1572,7 +1609,7 @@ function update_suggestions() {
$done = array();
/// @TODO Check if it is really neccessary to poll the own server
poco_load(0,0,0,App::get_baseurl() . '/poco');
poco_load(0, 0, 0, App::get_baseurl() . '/poco');
$done[] = App::get_baseurl() . '/poco';
@ -1602,8 +1639,9 @@ function update_suggestions() {
if (dbm::is_result($r)) {
foreach ($r as $rr) {
$base = substr($rr['poco'],0,strrpos($rr['poco'],'/'));
if(! in_array($base,$done))
if (! in_array($base,$done)) {
poco_load(0,0,0,$base);
}
}
}
}
@ -1624,7 +1662,7 @@ function poco_fetch_serverlist($poco) {
return;
}
foreach ($serverlist AS $server) {
foreach ($serverlist as $server) {
$server_url = str_replace("/index.php", "", $server->url);
$r = q("SELECT `nurl` FROM `gserver` WHERE `nurl` = '%s'", dbesc(normalise_link($server_url)));
@ -1640,8 +1678,9 @@ function poco_discover_federation() {
if ($last) {
$next = $last + (24 * 60 * 60);
if($next > time())
if ($next > time()) {
return;
}
}
// Discover Friendica, Hubzilla and Diaspora servers
@ -1650,7 +1689,7 @@ function poco_discover_federation() {
if ($serverdata) {
$servers = json_decode($serverdata);
foreach ($servers->pods AS $server) {
foreach ($servers->pods as $server) {
proc_run(PRIORITY_LOW, "include/discover_poco.php", "server", base64_encode("https://".$server->host));
}
}
@ -1662,7 +1701,7 @@ function poco_discover_federation() {
if ($serverdata) {
$servers = json_decode($serverdata);
foreach ($servers AS $server) {
foreach ($servers as $server) {
$url = (is_null($server->https_score) ? 'http' : 'https').'://'.$server->name;
proc_run(PRIORITY_LOW, "include/discover_poco.php", "server", base64_encode($url));
}
@ -1679,7 +1718,7 @@ function poco_discover_federation() {
// if ($result["success"]) {
// $servers = json_decode($result["body"]);
// foreach($servers->data AS $server)
// foreach($servers->data as $server)
// poco_check_server($server->instance_address);
// }
//}
@ -1765,7 +1804,7 @@ function poco_discover($complete = false) {
$r = q("SELECT `id`, `url`, `network` FROM `gserver` WHERE `last_contact` >= `last_failure` AND `poco` != '' AND `last_poco_query` < '%s' ORDER BY RAND()", dbesc($last_update));
if (dbm::is_result($r)) {
foreach ($r AS $server) {
foreach ($r as $server) {
if (!poco_check_server($server["url"], $server["network"])) {
// The server is not reachable? Okay, then we will try it later
@ -1785,18 +1824,20 @@ function poco_discover($complete = false) {
function poco_discover_server_users($data, $server) {
if (!isset($data->entry))
if (!isset($data->entry)) {
return;
}
foreach ($data->entry AS $entry) {
foreach ($data->entry as $entry) {
$username = "";
if (isset($entry->urls)) {
foreach($entry->urls as $url)
foreach ($entry->urls as $url) {
if ($url->type == 'profile') {
$profile_url = $url->value;
$urlparts = parse_url($profile_url);
$username = end(explode("/", $urlparts["path"]));
}
}
}
if ($username != "") {
logger("Fetch contacts for the user ".$username." from the server ".$server["nurl"], LOGGER_DEBUG);
@ -1805,20 +1846,22 @@ function poco_discover_server_users($data, $server) {
$url = $server["poco"]."/".$username."/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation";
$retdata = z_fetch_url($url);
if ($retdata["success"])
if ($retdata["success"]) {
poco_discover_server(json_decode($retdata["body"]), 3);
}
}
}
}
function poco_discover_server($data, $default_generation = 0) {
if (!isset($data->entry) || !count($data->entry))
if (!isset($data->entry) || !count($data->entry)) {
return false;
}
$success = false;
foreach ($data->entry AS $entry) {
foreach ($data->entry as $entry) {
$profile_url = '';
$profile_photo = '';
$connect_url = '';
@ -1835,7 +1878,7 @@ function poco_discover_server($data, $default_generation = 0) {
$name = $entry->displayName;
if (isset($entry->urls)) {
foreach($entry->urls as $url) {
foreach ($entry->urls as $url) {
if ($url->type == 'profile') {
$profile_url = $url->value;
continue;
@ -1860,19 +1903,19 @@ function poco_discover_server($data, $default_generation = 0) {
$updated = date("Y-m-d H:i:s", strtotime($entry->updated));
}
if(isset($entry->network)) {
if (isset($entry->network)) {
$network = $entry->network;
}
if(isset($entry->currentLocation)) {
if (isset($entry->currentLocation)) {
$location = $entry->currentLocation;
}
if(isset($entry->aboutMe)) {
if (isset($entry->aboutMe)) {
$about = html2bbcode($entry->aboutMe);
}
if(isset($entry->gender)) {
if (isset($entry->gender)) {
$gender = $entry->gender;
}
@ -1884,7 +1927,7 @@ function poco_discover_server($data, $default_generation = 0) {
$contact_type = $entry->contactType;
}
if(isset($entry->tags)) {
if (isset($entry->tags)) {
foreach ($entry->tags as $tag) {
$keywords = implode(", ", $tag);
}
@ -1930,19 +1973,23 @@ function poco_discover_server($data, $default_generation = 0) {
function clean_contact_url($url) {
$parts = parse_url($url);
if (!isset($parts["scheme"]) || !isset($parts["host"]))
if (!isset($parts["scheme"]) || !isset($parts["host"])) {
return $url;
}
$new_url = $parts["scheme"]."://".$parts["host"];
if (isset($parts["port"]))
if (isset($parts["port"])) {
$new_url .= ":".$parts["port"];
}
if (isset($parts["path"]))
if (isset($parts["path"])) {
$new_url .= $parts["path"];
}
if ($new_url != $url)
if ($new_url != $url) {
logger("Cleaned contact url ".$url." to ".$new_url." - Called by: ".App::callstack(), LOGGER_DEBUG);
}
return $new_url;
}
@ -1981,19 +2028,22 @@ function get_gcontact_id($contact) {
return false;
}
if ($contact["network"] == NETWORK_STATUSNET)
if ($contact["network"] == NETWORK_STATUSNET) {
$contact["network"] = NETWORK_OSTATUS;
}
// All new contacts are hidden by default
if (!isset($contact["hide"]))
if (!isset($contact["hide"])) {
$contact["hide"] = true;
}
// Replace alternate OStatus user format with the primary one
fix_alternate_contact_address($contact);
// Remove unwanted parts from the contact url (e.g. "?zrl=...")
if (in_array($contact["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
if (in_array($contact["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) {
$contact["url"] = clean_contact_url($contact["url"]);
}
dba::lock('gcontact');
$r = q("SELECT `id`, `last_contact`, `last_failure`, `network` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
@ -2031,7 +2081,7 @@ function get_gcontact_id($contact) {
$r = q("SELECT `id`, `network` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 2",
dbesc(normalise_link($contact["url"])));
if ($r) {
if (dbm::is_result($r)) {
$gcontact_id = $r[0]["id"];
$doprobing = in_array($r[0]["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, ""));
@ -2064,8 +2114,9 @@ function update_gcontact($contact) {
$gcontact_id = get_gcontact_id($contact);
if (!$gcontact_id)
if (!$gcontact_id) {
return false;
}
$r = q("SELECT `name`, `nick`, `photo`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`,
`contact-type`, `hide`, `nsfw`, `network`, `alias`, `notify`, `server_url`, `connect`, `updated`, `url`
@ -2074,8 +2125,9 @@ function update_gcontact($contact) {
// Get all field names
$fields = array();
foreach ($r[0] AS $field => $data)
foreach ($r[0] as $field => $data) {
$fields[$field] = $data;
}
unset($fields["url"]);
unset($fields["updated"]);
@ -2083,47 +2135,58 @@ function update_gcontact($contact) {
// Bugfix: We had an error in the storing of keywords which lead to the "0"
// This value is still transmitted via poco.
if ($contact["keywords"] == "0")
if ($contact["keywords"] == "0") {
unset($contact["keywords"]);
}
if ($r[0]["keywords"] == "0")
if ($r[0]["keywords"] == "0") {
$r[0]["keywords"] = "";
}
// assign all unassigned fields from the database entry
foreach ($fields AS $field => $data)
if (!isset($contact[$field]) || ($contact[$field] == ""))
foreach ($fields as $field => $data) {
if (!isset($contact[$field]) || ($contact[$field] == "")) {
$contact[$field] = $r[0][$field];
}
}
if (!isset($contact["hide"]))
if (!isset($contact["hide"])) {
$contact["hide"] = $r[0]["hide"];
}
$fields["hide"] = $r[0]["hide"];
if ($contact["network"] == NETWORK_STATUSNET)
if ($contact["network"] == NETWORK_STATUSNET) {
$contact["network"] = NETWORK_OSTATUS;
}
// Replace alternate OStatus user format with the primary one
fix_alternate_contact_address($contact);
if (!isset($contact["updated"]))
if (!isset($contact["updated"])) {
$contact["updated"] = dbm::date();
}
if ($contact["server_url"] == "") {
$server_url = $contact["url"];
$server_url = matching_url($server_url, $contact["alias"]);
if ($server_url != "")
if ($server_url != "") {
$contact["server_url"] = $server_url;
}
$server_url = matching_url($server_url, $contact["photo"]);
if ($server_url != "")
if ($server_url != "") {
$contact["server_url"] = $server_url;
}
$server_url = matching_url($server_url, $contact["notify"]);
if ($server_url != "")
if ($server_url != "") {
$contact["server_url"] = $server_url;
} else
}
} else {
$contact["server_url"] = normalise_link($contact["server_url"]);
}
if (($contact["addr"] == "") && ($contact["server_url"] != "") && ($contact["nick"] != "")) {
$hostname = str_replace("http://", "", $contact["server_url"]);
@ -2135,11 +2198,12 @@ function update_gcontact($contact) {
unset($fields["generation"]);
if ((($contact["generation"] > 0) && ($contact["generation"] <= $r[0]["generation"])) || ($r[0]["generation"] == 0)) {
foreach ($fields AS $field => $data)
foreach ($fields as $field => $data) {
if ($contact[$field] != $r[0][$field]) {
logger("Difference for contact ".$contact["url"]." in field '".$field."'. New value: '".$contact[$field]."', old value '".$r[0][$field]."'", LOGGER_DEBUG);
$update = true;
}
}
if ($contact["generation"] < $r[0]["generation"]) {
logger("Difference for contact ".$contact["url"]." in field 'generation'. new value: '".$contact["generation"]."', old value '".$r[0]["generation"]."'", LOGGER_DEBUG);
@ -2171,7 +2235,7 @@ function update_gcontact($contact) {
$r = q("SELECT `id` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0 ORDER BY `id` LIMIT 1",
dbesc(normalise_link($contact["url"])));
if ($r) {
if (dbm::is_result($r)) {
logger("Update shadow contact ".$r[0]["id"], LOGGER_DEBUG);
update_contact_avatar($contact["photo"], 0, $r[0]["id"]);
@ -2231,10 +2295,11 @@ function update_gcontact_for_user($uid) {
"country-name" => $r[0]["country-name"]));
// The "addr" field was added in 3.4.3 so it can be empty for older users
if ($r[0]["addr"] != "")
if ($r[0]["addr"] != "") {
$addr = $r[0]["nickname"].'@'.str_replace(array("http://", "https://"), "", App::get_baseurl());
else
} else {
$addr = $r[0]["addr"];
}
$gcontact = array("name" => $r[0]["name"], "location" => $location, "about" => $r[0]["about"],
"gender" => $r[0]["gender"], "keywords" => $r[0]["pub_keywords"],
@ -2262,33 +2327,37 @@ function gs_fetch_users($server) {
$url = $server."/main/statistics";
$result = z_fetch_url($url);
if (!$result["success"])
if (!$result["success"]) {
return false;
}
$statistics = json_decode($result["body"]);
if (is_object($statistics->config)) {
if ($statistics->config->instance_with_ssl)
if ($statistics->config->instance_with_ssl) {
$server = "https://";
else
} else {
$server = "http://";
}
$server .= $statistics->config->instance_address;
$hostname = $statistics->config->instance_address;
} else {
if ($statistics->instance_with_ssl)
/// @TODO is_object() above means here no object, still $statistics is being used as object
if ($statistics->instance_with_ssl) {
$server = "https://";
else
} else {
$server = "http://";
}
$server .= $statistics->instance_address;
$hostname = $statistics->instance_address;
}
if (is_object($statistics->users))
foreach ($statistics->users AS $nick => $user) {
if (is_object($statistics->users)) {
foreach ($statistics->users as $nick => $user) {
$profile_url = $server."/".$user->nickname;
$contact = array("url" => $profile_url,
@ -2300,6 +2369,7 @@ function gs_fetch_users($server) {
"photo" => App::get_baseurl()."/images/person-175.jpg");
get_gcontact_id($contact);
}
}
}
/**
@ -2315,10 +2385,11 @@ function gs_discover() {
$r = q("SELECT `nurl`, `url` FROM `gserver` WHERE `last_contact` >= `last_failure` AND `network` = '%s' AND `last_poco_query` < '%s' ORDER BY RAND() LIMIT 5",
dbesc(NETWORK_OSTATUS), dbesc($last_update));
if (!$r)
if (!dbm::is_result($r)) {
return;
}
foreach ($r AS $server) {
foreach ($r as $server) {
gs_fetch_users($server["url"]);
q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"]));
}
@ -2337,5 +2408,6 @@ function poco_serverlist() {
if (!dbm::is_result($r)) {
return false;
}
return $r;
}

View file

@ -58,10 +58,10 @@ function create_tags_from_item($itemid) {
if (substr(trim($tag), 0, 1) == "#") {
// try to ignore #039 or #1 or anything like that
if(ctype_digit(substr(trim($tag),1)))
if (ctype_digit(substr(trim($tag),1)))
continue;
// try to ignore html hex escapes, e.g. #x2317
if((substr(trim($tag),1,1) == 'x' || substr(trim($tag),1,1) == 'X') && ctype_digit(substr(trim($tag),2)))
if ((substr(trim($tag),1,1) == 'x' || substr(trim($tag),1,1) == 'X') && ctype_digit(substr(trim($tag),2)))
continue;
$type = TERM_HASHTAG;
$term = substr($tag, 1);
@ -107,9 +107,10 @@ function create_tags_from_item($itemid) {
function create_tags_from_itemuri($itemuri, $uid) {
$messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid));
if(count($messages)) {
foreach ($messages as $message)
if (count($messages)) {
foreach ($messages as $message) {
create_tags_from_item($message["id"]);
}
}
}

View file

@ -69,7 +69,7 @@ class Template implements ITemplateEngine {
* {{ if <$var>==<val|$var> }}...[{{ else }} ...]{{ endif }}
* {{ if <$var>!=<val|$var> }}...[{{ else }} ...]{{ endif }}
*/
private function _replcb_if($args) {
private function _replcb_if ($args) {
if (strpos($args[2], "==") > 0) {
list($a, $b) = array_map("trim", explode("==", $args[2]));
$a = $this->_get_var($a);
@ -95,7 +95,7 @@ class Template implements ITemplateEngine {
* {{ for <$var> as $name }}...{{ endfor }}
* {{ for <$var> as $key=>$name }}...{{ endfor }}
*/
private function _replcb_for($args) {
private function _replcb_for ($args) {
$m = array_map('trim', explode(" as ", $args[2]));
$x = explode("=>", $m[1]);
if (count($x) == 1) {
@ -109,14 +109,16 @@ class Template implements ITemplateEngine {
//$vals = $this->r[$m[0]];
$vals = $this->_get_var($m[0]);
$ret = "";
if (!is_array($vals))
if (!is_array($vals)) {
return $ret;
}
foreach ($vals as $k => $v) {
$this->_push_stack();
$r = $this->r;
$r[$varname] = $v;
if ($keyname != '')
if ($keyname != '') {
$r[$keyname] = (($k === 0) ? '0' : $k);
}
$ret .= $this->replace($args[3], $r);
$this->_pop_stack();
}

View file

@ -2,13 +2,13 @@
use Friendica\App;
require_once("include/template_processor.php");
require_once("include/friendica_smarty.php");
require_once("include/Smilies.php");
require_once("include/map.php");
require_once("mod/proxy.php");
require_once "include/template_processor.php";
require_once "include/friendica_smarty.php";
require_once "include/Smilies.php";
require_once "include/map.php";
require_once "mod/proxy.php";
if(! function_exists('replace_macros')) {
if (! function_exists('replace_macros')) {
/**
* This is our template processor
*
@ -17,7 +17,7 @@ if(! function_exists('replace_macros')) {
* @param array $r key value pairs (search => replace)
* @return string substituted string
*/
function replace_macros($s,$r) {
function replace_macros($s, $r) {
$stamp1 = microtime(true);
@ -26,12 +26,12 @@ function replace_macros($s,$r) {
// pass $baseurl to all templates
$r['$baseurl'] = App::get_baseurl();
$t = $a->template_engine();
try {
$output = $t->replace_macros($s,$r);
$output = $t->replace_macros($s, $r);
} catch (Exception $e) {
echo "<pre><b>".__function__."</b>: ".$e->getMessage()."</pre>"; killme();
echo "<pre><b>" . __FUNCTION__ . "</b>: " . $e->getMessage() . "</pre>";
killme();
}
$a->save_timestamp($stamp1, "rendering");
@ -46,15 +46,15 @@ function replace_macros($s,$r) {
define('RANDOM_STRING_HEX', 0x00 );
define('RANDOM_STRING_TEXT', 0x01 );
if(! function_exists('random_string')) {
function random_string($size = 64,$type = RANDOM_STRING_HEX) {
if (! function_exists('random_string')) {
function random_string($size = 64, $type = RANDOM_STRING_HEX) {
// generate a bit of entropy and run it through the whirlpool
$s = hash('whirlpool', (string) rand() . uniqid(rand(),true) . (string) rand(),(($type == RANDOM_STRING_TEXT) ? true : false));
$s = (($type == RANDOM_STRING_TEXT) ? str_replace("\n","",base64url_encode($s,true)) : $s);
$s = hash('whirlpool', (string) rand() . uniqid(rand(),true) . (string) rand(), (($type == RANDOM_STRING_TEXT) ? true : false));
$s = (($type == RANDOM_STRING_TEXT) ? str_replace("\n", "", base64url_encode($s,true)) : $s);
return(substr($s,0,$size));
}}
if(! function_exists('notags')) {
if (! function_exists('notags')) {
/**
* This is our primary input filter.
*
@ -73,8 +73,7 @@ if(! function_exists('notags')) {
* @return string Filtered string
*/
function notags($string) {
return(str_replace(array("<",">"), array('[',']'), $string));
return str_replace(array("<", ">"), array('[', ']'), $string);
// High-bit filter no longer used
// return(str_replace(array("<",">","\xBA","\xBC","\xBE"), array('[',']','','',''), $string));
@ -82,7 +81,7 @@ function notags($string) {
if(! function_exists('escape_tags')) {
if (! function_exists('escape_tags')) {
/**
* use this on "body" or "content" input where angle chars shouldn't be removed,
* and allow them to be safely displayed.
@ -90,15 +89,14 @@ if(! function_exists('escape_tags')) {
* @return string
*/
function escape_tags($string) {
return(htmlspecialchars($string, ENT_COMPAT, 'UTF-8', false));
return htmlspecialchars($string, ENT_COMPAT, 'UTF-8', false);
}}
// generate a string that's random, but usually pronounceable.
// used to generate initial passwords
if(! function_exists('autoname')) {
if (! function_exists('autoname')) {
/**
* generate a string that's random, but usually pronounceable.
* used to generate initial passwords
@ -107,12 +105,14 @@ if(! function_exists('autoname')) {
*/
function autoname($len) {
if($len <= 0)
if ($len <= 0) {
return '';
}
$vowels = array('a','a','ai','au','e','e','e','ee','ea','i','ie','o','ou','u');
if(mt_rand(0,5) == 4)
if (mt_rand(0, 5) == 4) {
$vowels[] = 'y';
}
$cons = array(
'b','bl','br',
@ -144,10 +144,11 @@ function autoname($len) {
'kh', 'kl','kr','mn','pl','pr','rh','tr','qu','wh');
$start = mt_rand(0,2);
if($start == 0)
if ($start == 0) {
$table = $vowels;
else
} else {
$table = $cons;
}
$word = '';
@ -155,23 +156,25 @@ function autoname($len) {
$r = mt_rand(0,count($table) - 1);
$word .= $table[$r];
if($table == $vowels)
if ($table == $vowels) {
$table = array_merge($cons,$midcons);
else
} else {
$table = $vowels;
}
}
$word = substr($word,0,$len);
foreach($noend as $noe) {
if((strlen($word) > 2) && (substr($word,-2) == $noe)) {
$word = substr($word,0,-1);
foreach ($noend as $noe) {
if ((strlen($word) > 2) && (substr($word, -2) == $noe)) {
$word = substr($word, 0, -1);
break;
}
}
if(substr($word,-1) == 'q')
$word = substr($word,0,-1);
if (substr($word, -1) == 'q') {
$word = substr($word, 0, -1);
}
return $word;
}}
@ -179,17 +182,18 @@ function autoname($len) {
// escape text ($str) for XML transport
// returns escaped text.
if(! function_exists('xmlify')) {
if (! function_exists('xmlify')) {
/**
* escape text ($str) for XML transport
* @param string $str
* @return string Escaped text.
*/
function xmlify($str) {
/// @TODO deprecated code found?
/* $buffer = '';
$len = mb_strlen($str);
for($x = 0; $x < $len; $x ++) {
for ($x = 0; $x < $len; $x ++) {
$char = mb_substr($str,$x,1);
switch( $char ) {
@ -232,13 +236,14 @@ function xmlify($str) {
return($buffer);
}}
if(! function_exists('unxmlify')) {
if (! function_exists('unxmlify')) {
/**
* undo an xmlify
* @param string $s xml escaped text
* @return string unescaped text
*/
function unxmlify($s) {
/// @TODO deprecated code found?
// $ret = str_replace('&amp;','&', $s);
// $ret = str_replace(array('&lt;','&gt;','&quot;','&apos;'),array('<','>','"',"'"),$ret);
/*$ret = mb_ereg_replace('&amp;', '&', $s);
@ -251,21 +256,22 @@ function unxmlify($s) {
return $ret;
}}
if(! function_exists('hex2bin')) {
if (! function_exists('hex2bin')) {
/**
* convenience wrapper, reverse the operation "bin2hex"
* @param string $s
* @return number
*/
function hex2bin($s) {
if(! (is_string($s) && strlen($s)))
if (! (is_string($s) && strlen($s))) {
return '';
if(! ctype_xdigit($s)) {
return($s);
}
return(pack("H*",$s));
if (! ctype_xdigit($s)) {
return $s;
}
return pack("H*",$s);
}}
@ -354,7 +360,7 @@ function paginate_data(App $a, $count = null) {
return $data;
}
if(! function_exists('paginate')) {
if (! function_exists('paginate')) {
/**
* Automatic pagination.
*
@ -378,7 +384,7 @@ function paginate(App $a) {
}}
if(! function_exists('alt_pager')) {
if (! function_exists('alt_pager')) {
/**
* Alternative pager
* @param App $a App instance
@ -393,7 +399,7 @@ function alt_pager(App $a, $i) {
}}
if(! function_exists('scroll_loader')) {
if (! function_exists('scroll_loader')) {
/**
* Loader for infinite scrolling
* @return string html for loader
@ -406,7 +412,7 @@ function scroll_loader() {
));
}}
if(! function_exists('expand_acl')) {
if (! function_exists('expand_acl')) {
/**
* Turn user/group ACLs stored as angle bracketed text into arrays
*
@ -418,31 +424,33 @@ function expand_acl($s) {
// e.g. "<1><2><3>" => array(1,2,3);
$ret = array();
if(strlen($s)) {
$t = str_replace('<','',$s);
$a = explode('>',$t);
foreach($a as $aa) {
if(intval($aa))
if (strlen($s)) {
$t = str_replace('<', '', $s);
$a = explode('>', $t);
foreach ($a as $aa) {
if (intval($aa)) {
$ret[] = intval($aa);
}
}
}
return $ret;
}}
if(! function_exists('sanitise_acl')) {
if (! function_exists('sanitise_acl')) {
/**
* Wrap ACL elements in angle brackets for storage
* @param string $item
*/
function sanitise_acl(&$item) {
if(intval($item))
if (intval($item)) {
$item = '<' . intval(notags(trim($item))) . '>';
else
} else {
unset($item);
}
}}
if(! function_exists('perms2str')) {
if (! function_exists('perms2str')) {
/**
* Convert an ACL array to a storable string
*
@ -454,20 +462,21 @@ if(! function_exists('perms2str')) {
*/
function perms2str($p) {
$ret = '';
if(is_array($p))
if (is_array($p)) {
$tmp = $p;
else
} else {
$tmp = explode(',',$p);
}
if(is_array($tmp)) {
array_walk($tmp,'sanitise_acl');
$ret = implode('',$tmp);
if (is_array($tmp)) {
array_walk($tmp, 'sanitise_acl');
$ret = implode('', $tmp);
}
return $ret;
}}
if(! function_exists('item_new_uri')) {
if (! function_exists('item_new_uri')) {
/**
* generate a guaranteed unique (for this domain) item ID for ATOM
* safe from birthday paradox
@ -476,14 +485,14 @@ if(! function_exists('item_new_uri')) {
* @param int $uid
* @return string
*/
function item_new_uri($hostname,$uid, $guid = "") {
function item_new_uri($hostname, $uid, $guid = "") {
do {
$dups = false;
if ($guid == "")
if ($guid == "") {
$hash = get_guid(32);
else {
} else {
$hash = $guid;
$guid = "";
}
@ -492,16 +501,18 @@ function item_new_uri($hostname,$uid, $guid = "") {
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1",
dbesc($uri));
if (dbm::is_result($r))
if (dbm::is_result($r)) {
$dups = true;
} while($dups == true);
}
} while ($dups == true);
return $uri;
}}
// Generate a guaranteed unique photo ID.
// safe from birthday paradox
if(! function_exists('photo_new_resource')) {
if (! function_exists('photo_new_resource')) {
/**
* Generate a guaranteed unique photo ID.
* safe from birthday paradox
@ -516,14 +527,17 @@ function photo_new_resource() {
$r = q("SELECT `id` FROM `photo` WHERE `resource-id` = '%s' LIMIT 1",
dbesc($resource)
);
if (dbm::is_result($r))
if (dbm::is_result($r)) {
$found = true;
} while($found == true);
}
} while ($found == true);
return $resource;
}}
if(! function_exists('load_view_file')) {
if (! function_exists('load_view_file')) {
/**
* @deprecated
* wrapper to load a view template, checking for alternate
@ -536,11 +550,12 @@ if(! function_exists('load_view_file')) {
*/
function load_view_file($s) {
global $lang, $a;
if(! isset($lang))
if (! isset($lang)) {
$lang = 'en';
}
$b = basename($s);
$d = dirname($s);
if(file_exists("$d/$lang/$b")) {
if (file_exists("$d/$lang/$b")) {
$stamp1 = microtime(true);
$content = file_get_contents("$d/$lang/$b");
$a->save_timestamp($stamp1, "file");
@ -549,7 +564,7 @@ function load_view_file($s) {
$theme = current_theme();
if(file_exists("$d/theme/$theme/$b")) {
if (file_exists("$d/theme/$theme/$b")) {
$stamp1 = microtime(true);
$content = file_get_contents("$d/theme/$theme/$b");
$a->save_timestamp($stamp1, "file");
@ -562,7 +577,7 @@ function load_view_file($s) {
return $content;
}}
if(! function_exists('get_intltext_template')) {
if (! function_exists('get_intltext_template')) {
/**
* load a view template, checking for alternate
* languages before falling back to the default
@ -576,18 +591,20 @@ function get_intltext_template($s) {
$a = get_app();
$engine = '';
if($a->theme['template_engine'] === 'smarty3')
if ($a->theme['template_engine'] === 'smarty3') {
$engine = "/smarty3";
}
if(! isset($lang))
if (! isset($lang)) {
$lang = 'en';
}
if(file_exists("view/lang/$lang$engine/$s")) {
if (file_exists("view/lang/$lang$engine/$s")) {
$stamp1 = microtime(true);
$content = file_get_contents("view/lang/$lang$engine/$s");
$a->save_timestamp($stamp1, "file");
return $content;
} elseif(file_exists("view/lang/en$engine/$s")) {
} elseif (file_exists("view/lang/en$engine/$s")) {
$stamp1 = microtime(true);
$content = file_get_contents("view/lang/en$engine/$s");
$a->save_timestamp($stamp1, "file");
@ -600,7 +617,7 @@ function get_intltext_template($s) {
}
}}
if(! function_exists('get_markup_template')) {
if (! function_exists('get_markup_template')) {
/**
* load template $s
*
@ -616,7 +633,8 @@ function get_markup_template($s, $root = '') {
try {
$template = $t->get_template_file($s, $root);
} catch (Exception $e) {
echo "<pre><b>".__function__."</b>: ".$e->getMessage()."</pre>"; killme();
echo "<pre><b>" . __FUNCTION__ . "</b>: " . $e->getMessage() . "</pre>";
killme();
}
$a->save_timestamp($stamp1, "file");
@ -624,7 +642,7 @@ function get_markup_template($s, $root = '') {
return $template;
}}
if(! function_exists("get_template_file")) {
if (! function_exists("get_template_file")) {
/**
*
* @param App $a
@ -636,28 +654,25 @@ function get_template_file($a, $filename, $root = '') {
$theme = current_theme();
// Make sure $root ends with a slash /
if($root !== '' && $root[strlen($root)-1] !== '/')
if ($root !== '' && substr($root, -1, 1) !== '/') {
$root = $root . '/';
}
if(file_exists("{$root}view/theme/$theme/$filename"))
if (file_exists("{$root}view/theme/$theme/$filename")) {
$template_file = "{$root}view/theme/$theme/$filename";
elseif (x($a->theme_info,"extends") && file_exists("{$root}view/theme/{$a->theme_info["extends"]}/$filename"))
$template_file = "{$root}view/theme/{$a->theme_info["extends"]}/$filename";
elseif (file_exists("{$root}/$filename"))
} elseif (x($a->theme_info, "extends") && file_exists(sprintf('%sview/theme/%s}/%s', $root, $a->theme_info["extends"], $filename))) {
$template_file = sprintf('%sview/theme/%s}/%s', $root, $a->theme_info["extends"], $filename);
} elseif (file_exists("{$root}/$filename")) {
$template_file = "{$root}/$filename";
else
} else {
$template_file = "{$root}view/$filename";
}
return $template_file;
}}
if(! function_exists('attribute_contains')) {
if (! function_exists('attribute_contains')) {
/**
* for html,xml parsing - let's say you've got
* an attribute foobar="class1 class2 class3"
@ -672,11 +687,9 @@ if(! function_exists('attribute_contains')) {
* @param string $s string to search
* @return boolean True if found, False otherwise
*/
function attribute_contains($attr,$s) {
function attribute_contains($attr, $s) {
$a = explode(' ', $attr);
if(count($a) && in_array($s,$a))
return true;
return false;
return (count($a) && in_array($s,$a));
}}
if (! function_exists('logger')) {
@ -821,7 +834,7 @@ function dlogger($msg, $level = 0) {
$a->save_timestamp($stamp1, "file");
}
if(! function_exists('activity_match')) {
if (! function_exists('activity_match')) {
/**
* Compare activity uri. Knows about activity namespace.
*
@ -830,9 +843,7 @@ if(! function_exists('activity_match')) {
* @return boolean
*/
function activity_match($haystack,$needle) {
if(($haystack === $needle) || ((basename($needle) === $haystack) && strstr($needle,NAMESPACE_ACTIVITY_SCHEMA)))
return true;
return false;
return (($haystack === $needle) || ((basename($needle) === $haystack) && strstr($needle, NAMESPACE_ACTIVITY_SCHEMA)));
}}
@ -884,7 +895,7 @@ function get_tags($string) {
// and #hash tags.
if (preg_match_all('/([!#@][^\^ \x0D\x0A,;:?]+)([ \x0D\x0A,;:?]|$)/', $string, $matches)) {
foreach($matches[1] as $match) {
foreach ($matches[1] as $match) {
if (strstr($match, ']')) {
// we might be inside a bbcode color tag - leave it alone
continue;
@ -909,7 +920,7 @@ function get_tags($string) {
//
if(! function_exists('qp')) {
if (! function_exists('qp')) {
/**
* quick and dirty quoted_printable encoding
*
@ -917,10 +928,10 @@ if(! function_exists('qp')) {
* @return string
*/
function qp($s) {
return str_replace ("%","=",rawurlencode($s));
return str_replace("%", "=", rawurlencode($s));
}}
if(! function_exists('contact_block')) {
if (! function_exists('contact_block')) {
/**
* Get html for contact block.
*
@ -933,13 +944,16 @@ function contact_block() {
$a = get_app();
$shown = get_pconfig($a->profile['uid'],'system','display_friend_count');
if($shown === false)
if ($shown === false) {
$shown = 24;
if($shown == 0)
}
if ($shown == 0) {
return;
}
if((! is_array($a->profile)) || ($a->profile['hide-friends']))
if ((! is_array($a->profile)) || ($a->profile['hide-friends'])) {
return $o;
}
$r = q("SELECT COUNT(*) AS `total` FROM `contact`
WHERE `uid` = %d AND NOT `self` AND NOT `blocked`
AND NOT `pending` AND NOT `hidden` AND NOT `archive`
@ -952,10 +966,9 @@ function contact_block() {
if (dbm::is_result($r)) {
$total = intval($r[0]['total']);
}
if(! $total) {
if (! $total) {
$contacts = t('No contacts');
$micropro = Null;
$micropro = null;
} else {
// Splitting the query in two parts makes it much faster
$r = q("SELECT `id` FROM `contact`
@ -1024,28 +1037,30 @@ function contact_block() {
function micropro($contact, $redirect = false, $class = '', $textmode = false) {
// Use the contact URL if no address is available
if ($contact["addr"] == "")
if ($contact["addr"] == "") {
$contact["addr"] = $contact["url"];
}
$url = $contact['url'];
$sparkle = '';
$redir = false;
if($redirect) {
if ($redirect) {
$a = get_app();
$redirect_url = 'redir/' . $contact['id'];
if(local_user() && ($contact['uid'] == local_user()) && ($contact['network'] === NETWORK_DFRN)) {
if (local_user() && ($contact['uid'] == local_user()) && ($contact['network'] === NETWORK_DFRN)) {
$redir = true;
$url = $redirect_url;
$sparkle = ' sparkle';
}
else
} else {
$url = zrl($url);
}
}
// If there is some js available we don't need the url
if(x($contact,'click'))
if (x($contact, 'click')) {
$url = '';
}
return replace_macros(get_markup_template(($textmode)?'micropro_txt.tpl':'micropro_img.tpl'),array(
'$click' => (($contact['click']) ? $contact['click'] : ''),
@ -1062,7 +1077,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
if(! function_exists('search')) {
if (! function_exists('search')) {
/**
* search box
*
@ -1071,7 +1086,7 @@ if(! function_exists('search')) {
* @param string $url search url
* @param boolean $savedsearch show save search button
*/
function search($s,$id='search-box',$url='search',$save = false, $aside = true) {
function search($s, $id = 'search-box', $url = 'search', $save = false, $aside = true) {
$a = get_app();
$values = array(
@ -1090,14 +1105,15 @@ function search($s,$id='search-box',$url='search',$save = false, $aside = true)
t("Tags"),
t("Contacts"));
if (get_config('system','poco_local_search'))
if (get_config('system','poco_local_search')) {
$values['$searchoption'][] = t("Forums");
}
}
return replace_macros(get_markup_template('searchbox.tpl'), $values);
}}
if(! function_exists('valid_email')) {
if (! function_exists('valid_email')) {
/**
* Check if $x is a valid email string
*
@ -1106,17 +1122,14 @@ if(! function_exists('valid_email')) {
*/
function valid_email($x){
// Removed because Fabio told me so.
//if(get_config('system','disable_email_validation'))
/// @TODO Removed because Fabio told me so.
//if (get_config('system','disable_email_validation'))
// return true;
if(preg_match('/^[_a-zA-Z0-9\-\+]+(\.[_a-zA-Z0-9\-\+]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$x))
return true;
return false;
return preg_match('/^[_a-zA-Z0-9\-\+]+(\.[_a-zA-Z0-9\-\+]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/', $x);
}}
if(! function_exists('linkify')) {
if (! function_exists('linkify')) {
/**
* Replace naked text hyperlink with HTML formatted hyperlink
*
@ -1125,7 +1138,7 @@ if(! function_exists('linkify')) {
function linkify($s) {
$s = preg_replace("/(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\'\%\$\!\+]*)/", ' <a href="$1" target="_blank">$1</a>', $s);
$s = preg_replace("/\<(.*?)(src|href)=(.*?)\&amp\;(.*?)\>/ism",'<$1$2=$3&$4>',$s);
return($s);
return $s;
}}
@ -1187,7 +1200,7 @@ function get_mood_verbs() {
return $arr;
}
if(! function_exists('day_translate')) {
if (! function_exists('day_translate')) {
/**
* Translate days and months names
*
@ -1207,7 +1220,7 @@ function day_translate($s) {
}}
if(! function_exists('normalise_link')) {
if (! function_exists('normalise_link')) {
/**
* Normalize url
*
@ -1215,13 +1228,13 @@ if(! function_exists('normalise_link')) {
* @return string
*/
function normalise_link($url) {
$ret = str_replace(array('https:','//www.'), array('http:','//'), $url);
return(rtrim($ret,'/'));
$ret = str_replace(array('https:', '//www.'), array('http:', '//'), $url);
return rtrim($ret,'/');
}}
if(! function_exists('link_compare')) {
if (! function_exists('link_compare')) {
/**
* Compare two URLs to see if they are the same, but ignore
* slight but hopefully insignificant differences such as if one
@ -1233,10 +1246,8 @@ if(! function_exists('link_compare')) {
* @return boolean True if the URLs match, otherwise False
*
*/
function link_compare($a,$b) {
if(strcasecmp(normalise_link($a),normalise_link($b)) === 0)
return true;
return false;
function link_compare($a, $b) {
return (strcasecmp(normalise_link($a), normalise_link($b)) === 0);
}}
/**
@ -1289,7 +1300,7 @@ function put_item_in_cache(&$item, $update = false) {
// Given an item array, convert the body element from bbcode to html and add smilie icons.
// If attach is true, also add icons for item attachments
if(! function_exists('prepare_body')) {
if (! function_exists('prepare_body')) {
/**
* Given an item array, convert the body element from bbcode to html and add smilie icons.
* If attach is true, also add icons for item attachments
@ -1301,14 +1312,14 @@ if(! function_exists('prepare_body')) {
* @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)
*/
function prepare_body(&$item,$attach = false, $preview = false) {
function prepare_body(&$item, $attach = false, $preview = false) {
$a = get_app();
call_hooks('prepare_body_init', $item);
$searchpath = z_root()."/search?tag=";
$searchpath = z_root() . "/search?tag=";
$tags=array();
$tags = array();
$hashtags = array();
$mentions = array();
@ -1316,10 +1327,11 @@ function prepare_body(&$item,$attach = false, $preview = false) {
$taglist = q("SELECT `type`, `term`, `url` FROM `term` WHERE `otype` = %d AND `oid` = %d AND `type` IN (%d, %d) ORDER BY `tid`",
intval(TERM_OBJ_POST), intval($item['id']), intval(TERM_HASHTAG), intval(TERM_MENTION));
foreach($taglist as $tag) {
foreach ($taglist as $tag) {
if ($tag["url"] == "")
if ($tag["url"] == "") {
$tag["url"] = $searchpath.strtolower($tag["term"]);
}
if ($tag["type"] == TERM_HASHTAG) {
$hashtags[] = "#<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
@ -1340,8 +1352,9 @@ function prepare_body(&$item,$attach = false, $preview = false) {
$update = (!local_user() and !remote_user() and ($item["uid"] == 0));
// Or update it if the current viewer is the intented viewer
if (($item["uid"] == local_user()) && ($item["uid"] != 0))
if (($item["uid"] == local_user()) && ($item["uid"] != 0)) {
$update = true;
}
put_item_in_cache($item, $update);
$s = $item["rendered-html"];
@ -1350,7 +1363,7 @@ function prepare_body(&$item,$attach = false, $preview = false) {
call_hooks('prepare_body', $prep_arr);
$s = $prep_arr['html'];
if(! $attach) {
if (! $attach) {
// Replace the blockquotes with quotes that are used in mails
$mailquote = '<blockquote type="cite" class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">';
$s = str_replace(array('<blockquote>', '<blockquote class="spoiler">', '<blockquote class="author">'), array($mailquote, $mailquote, $mailquote), $s);
@ -1359,24 +1372,25 @@ function prepare_body(&$item,$attach = false, $preview = false) {
$as = '';
$vhead = false;
$arr = explode('[/attach],',$item['attach']);
if(count($arr)) {
$arr = explode('[/attach],', $item['attach']);
if (count($arr)) {
$as .= '<div class="body-attach">';
foreach($arr as $r) {
foreach ($arr as $r) {
$matches = false;
$icon = '';
$cnt = preg_match_all('|\[attach\]href=\"(.*?)\" length=\"(.*?)\" type=\"(.*?)\" title=\"(.*?)\"|',$r,$matches, PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
if ($cnt) {
foreach ($matches as $mtch) {
$mime = $mtch[3];
if((local_user() == $item['uid']) && ($item['contact-id'] != $a->contact['id']) && ($item['network'] == NETWORK_DFRN))
if ((local_user() == $item['uid']) && ($item['contact-id'] != $a->contact['id']) && ($item['network'] == NETWORK_DFRN)) {
$the_url = 'redir/' . $item['contact-id'] . '?f=1&url=' . $mtch[1];
else
} else {
$the_url = $mtch[1];
}
if(strpos($mime, 'video') !== false) {
if(!$vhead) {
if (strpos($mime, 'video') !== false) {
if (!$vhead) {
$vhead = true;
$a->page['htmlhead'] .= replace_macros(get_markup_template('videos_head.tpl'), array(
'$baseurl' => z_root(),
@ -1388,21 +1402,20 @@ function prepare_body(&$item,$attach = false, $preview = false) {
$id = end(explode('/', $the_url));
$as .= replace_macros(get_markup_template('video_top.tpl'), array(
'$video' => array(
'id' => $id,
'title' => t('View Video'),
'src' => $the_url,
'mime' => $mime,
'$video' => array(
'id' => $id,
'title' => t('View Video'),
'src' => $the_url,
'mime' => $mime,
),
));
}
$filetype = strtolower(substr( $mime, 0, strpos($mime,'/') ));
if($filetype) {
if ($filetype) {
$filesubtype = strtolower(substr( $mime, strpos($mime,'/') + 1 ));
$filesubtype = str_replace('.', '-', $filesubtype);
}
else {
} else {
$filetype = 'unkn';
$filesubtype = 'unkn';
}
@ -1433,7 +1446,7 @@ function prepare_body(&$item,$attach = false, $preview = false) {
$s = $s . $as;
// map
if(strpos($s,'<div class="map">') !== false && $item['coord']) {
if (strpos($s, '<div class="map">') !== false && x($item, 'coord')) {
$x = generate_map(trim($item['coord']));
if ($x) {
$s = preg_replace('/\<div class\=\"map\"\>/','$0' . $x,$s);
@ -1445,37 +1458,36 @@ function prepare_body(&$item,$attach = false, $preview = false) {
$spoilersearch = '<blockquote class="spoiler">';
// Remove line breaks before the spoiler
while ((strpos($s, "\n".$spoilersearch) !== false))
$s = str_replace("\n".$spoilersearch, $spoilersearch, $s);
while ((strpos($s, "<br />".$spoilersearch) !== false))
$s = str_replace("<br />".$spoilersearch, $spoilersearch, $s);
while ((strpos($s, "\n" . $spoilersearch) !== false)) {
$s = str_replace("\n" . $spoilersearch, $spoilersearch, $s);
}
while ((strpos($s, "<br />" . $spoilersearch) !== false)) {
$s = str_replace("<br />" . $spoilersearch, $spoilersearch, $s);
}
while ((strpos($s, $spoilersearch) !== false)) {
$pos = strpos($s, $spoilersearch);
$rnd = random_string(8);
$spoilerreplace = '<br /> <span id="spoiler-wrap-'.$rnd.'" class="spoiler-wrap fakelink" onclick="openClose(\'spoiler-'.$rnd.'\');">'.sprintf(t('Click to open/close')).'</span>'.
'<blockquote class="spoiler" id="spoiler-'.$rnd.'" style="display: none;">';
$s = substr($s, 0, $pos).$spoilerreplace.substr($s, $pos+strlen($spoilersearch));
$spoilerreplace = '<br /> <span id="spoiler-wrap-' . $rnd . '" class="spoiler-wrap fakelink" onclick="openClose(\'spoiler-' . $rnd . '\');">' . sprintf(t('Click to open/close')) . '</span>'.
'<blockquote class="spoiler" id="spoiler-' . $rnd . '" style="display: none;">';
$s = substr($s, 0, $pos) . $spoilerreplace . substr($s, $pos + strlen($spoilersearch));
}
// Look for quote with author
$authorsearch = '<blockquote class="author">';
while ((strpos($s, $authorsearch) !== false)) {
$pos = strpos($s, $authorsearch);
$rnd = random_string(8);
$authorreplace = '<br /> <span id="author-wrap-'.$rnd.'" class="author-wrap fakelink" onclick="openClose(\'author-'.$rnd.'\');">'.sprintf(t('Click to open/close')).'</span>'.
'<blockquote class="author" id="author-'.$rnd.'" style="display: block;">';
$s = substr($s, 0, $pos).$authorreplace.substr($s, $pos+strlen($authorsearch));
$authorreplace = '<br /> <span id="author-wrap-' . $rnd . '" class="author-wrap fakelink" onclick="openClose(\'author-' . $rnd . '\');">' . sprintf(t('Click to open/close')) . '</span>'.
'<blockquote class="author" id="author-' . $rnd . '" style="display: block;">';
$s = substr($s, 0, $pos) . $authorreplace . substr($s, $pos + strlen($authorsearch));
}
// replace friendica image url size with theme preference
if (x($a->theme_info,'item_image_size')){
$ps = $a->theme_info['item_image_size'];
$s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|',"$1-".$ps, $s);
if (x($a->theme_info, 'item_image_size')){
$ps = $a->theme_info['item_image_size'];
$s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s);
}
$prep_arr = array('item' => $item, 'html' => $s);
@ -1485,7 +1497,7 @@ function prepare_body(&$item,$attach = false, $preview = false) {
}}
if(! function_exists('prepare_text')) {
if (! function_exists('prepare_text')) {
/**
* Given a text string, convert from bbcode to html and add smilie icons.
*
@ -1494,12 +1506,13 @@ if(! function_exists('prepare_text')) {
*/
function prepare_text($text) {
require_once('include/bbcode.php');
require_once 'include/bbcode.php';
if(stristr($text,'[nosmile]'))
if (stristr($text, '[nosmile]')) {
$s = bbcode($text);
else
} else {
$s = Smilies::replace(bbcode($text));
}
return trim($s);
}}
@ -1539,10 +1552,11 @@ function get_cats_and_terms($item) {
$categories = array();
$folders = array();
$matches = false; $first = true;
$cnt = preg_match_all('/<(.*?)>/',$item['file'],$matches,PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
$matches = false;
$first = true;
$cnt = preg_match_all('/<(.*?)>/', $item['file'], $matches, PREG_SET_ORDER);
if ($cnt) {
foreach ($matches as $mtch) {
$categories[] = array(
'name' => xmlify(file_tag_decode($mtch[1])),
'url' => "#",
@ -1553,18 +1567,21 @@ function get_cats_and_terms($item) {
$first = false;
}
}
if (count($categories)) $categories[count($categories)-1]['last'] = true;
if (count($categories)) {
$categories[count($categories) - 1]['last'] = true;
}
if(local_user() == $item['uid']) {
$matches = false; $first = true;
$cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
if (local_user() == $item['uid']) {
$matches = false;
$first = true;
$cnt = preg_match_all('/\[(.*?)\]/', $item['file'], $matches, PREG_SET_ORDER);
if ($cnt) {
foreach ($matches as $mtch) {
$folders[] = array(
'name' => xmlify(file_tag_decode($mtch[1])),
'url' => "#",
'removeurl' => ((local_user() == $item['uid'])?'filerm/' . $item['id'] . '?f=&term=' . xmlify(file_tag_decode($mtch[1])):""),
'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&term=' . xmlify(file_tag_decode($mtch[1])) : ""),
'first' => $first,
'last' => false
);
@ -1573,12 +1590,14 @@ function get_cats_and_terms($item) {
}
}
if (count($folders)) $folders[count($folders)-1]['last'] = true;
if (count($folders)) {
$folders[count($folders) - 1]['last'] = true;
}
return array($categories, $folders);
}
if(! function_exists('get_plink')) {
if (! function_exists('get_plink')) {
/**
* get private link for item
* @param array $item
@ -1589,33 +1608,32 @@ function get_plink($item) {
if ($a->user['nickname'] != "") {
$ret = array(
//'href' => "display/".$a->user['nickname']."/".$item['id'],
'href' => "display/".$item['guid'],
'orig' => "display/".$item['guid'],
//'href' => "display/" . $a->user['nickname'] . "/" . $item['id'],
'href' => "display/" . $item['guid'],
'orig' => "display/" . $item['guid'],
'title' => t('View on separate page'),
'orig_title' => t('view on separate page'),
);
if (x($item,'plink')) {
if (x($item, 'plink')) {
$ret["href"] = $a->remove_baseurl($item['plink']);
$ret["title"] = t('link to source');
}
} elseif (x($item,'plink') && ($item['private'] != 1))
} elseif (x($item, 'plink') && ($item['private'] != 1)) {
$ret = array(
'href' => $item['plink'],
'orig' => $item['plink'],
'title' => t('link to source'),
);
else
} else {
$ret = array();
}
//if (x($item,'plink') && ($item['private'] != 1))
return($ret);
return $ret;
}}
if(! function_exists('unamp')) {
if (! function_exists('unamp')) {
/**
* replace html amp entity with amp char
* @param string $s
@ -1626,7 +1644,7 @@ function unamp($s) {
}}
if(! function_exists('return_bytes')) {
if (! function_exists('return_bytes')) {
/**
* return number of bytes in size (K, M, G)
* @param string $size_str
@ -1651,9 +1669,11 @@ function generate_user_guid() {
$x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1",
dbesc($guid)
);
if(! count($x))
if (! dbm::is_result($x)) {
$found = false;
}
} while ($found == true );
return $guid;
}
@ -1665,10 +1685,11 @@ function generate_user_guid() {
*/
function base64url_encode($s, $strip_padding = false) {
$s = strtr(base64_encode($s),'+/','-_');
$s = strtr(base64_encode($s), '+/', '-_');
if($strip_padding)
if ($strip_padding) {
$s = str_replace('=','',$s);
}
return $s;
}
@ -1679,7 +1700,7 @@ function base64url_encode($s, $strip_padding = false) {
*/
function base64url_decode($s) {
if(is_array($s)) {
if (is_array($s)) {
logger('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
return $s;
}
@ -1690,11 +1711,11 @@ function base64url_decode($s) {
* // Uncomment if you find you need it.
*
* $l = strlen($s);
* if(! strpos($s,'=')) {
* if (! strpos($s,'=')) {
* $m = $l % 4;
* if($m == 2)
* if ($m == 2)
* $s .= '==';
* if($m == 3)
* if ($m == 3)
* $s .= '=';
* }
*
@ -1786,10 +1807,10 @@ function bb_translate_video($s) {
$matches = null;
$r = preg_match_all("/\[video\](.*?)\[\/video\]/ism",$s,$matches,PREG_SET_ORDER);
if ($r) {
foreach($matches as $mtch) {
if((stristr($mtch[1],'youtube')) || (stristr($mtch[1],'youtu.be')))
foreach ($matches as $mtch) {
if ((stristr($mtch[1],'youtube')) || (stristr($mtch[1],'youtu.be')))
$s = str_replace($mtch[0],'[youtube]' . $mtch[1] . '[/youtube]',$s);
elseif(stristr($mtch[1],'vimeo'))
elseif (stristr($mtch[1],'vimeo'))
$s = str_replace($mtch[0],'[vimeo]' . $mtch[1] . '[/vimeo]',$s);
}
}
@ -1816,8 +1837,11 @@ function html2bb_video($s) {
* @return array
*/
function array_xmlify($val){
if (is_bool($val)) return $val?"true":"false";
if (is_array($val)) return array_map('array_xmlify', $val);
if (is_bool($val)) {
return $val?"true":"false";
} elseif (is_array($val)) {
return array_map('array_xmlify', $val);
}
return xmlify((string) $val);
}
@ -1830,8 +1854,9 @@ function array_xmlify($val){
* @return string
*/
function reltoabs($text, $base) {
if (empty($base))
return $text;
if (empty($base)) {
return $text;
}
$base = rtrim($base,'/');
@ -1867,14 +1892,16 @@ function reltoabs($text, $base) {
* @return string
*/
function item_post_type($item) {
if(intval($item['event-id']))
if (intval($item['event-id'])) {
return t('event');
if(strlen($item['resource-id']))
} elseif (strlen($item['resource-id'])) {
return t('photo');
if(strlen($item['verb']) && $item['verb'] !== ACTIVITY_POST)
} elseif (strlen($item['verb']) && $item['verb'] !== ACTIVITY_POST) {
return t('activity');
if($item['id'] != $item['parent'])
} elseif ($item['id'] != $item['parent']) {
return t('comment');
}
return t('post');
}
@ -1888,34 +1915,34 @@ function file_tag_encode($s) {
}
function file_tag_decode($s) {
return str_replace(array('%3c','%3e','%5b','%5d'),array('<','>','[',']'),$s);
return str_replace(array('%3c', '%3e', '%5b', '%5d'), array('<', '>', '[', ']'), $s);
}
function file_tag_file_query($table,$s,$type = 'file') {
if($type == 'file')
$str = preg_quote( '[' . str_replace('%','%%',file_tag_encode($s)) . ']' );
else
$str = preg_quote( '<' . str_replace('%','%%',file_tag_encode($s)) . '>' );
if ($type == 'file') {
$str = preg_quote( '[' . str_replace('%', '%%', file_tag_encode($s)) . ']' );
} else {
$str = preg_quote( '<' . str_replace('%', '%%', file_tag_encode($s)) . '>' );
}
return " AND " . (($table) ? dbesc($table) . '.' : '') . "file regexp '" . dbesc($str) . "' ";
}
// ex. given music,video return <music><video> or [music][video]
function file_tag_list_to_file($list,$type = 'file') {
$tag_list = '';
if(strlen($list)) {
if (strlen($list)) {
$list_array = explode(",",$list);
if($type == 'file') {
if ($type == 'file') {
$lbracket = '[';
$rbracket = ']';
}
else {
} else {
$lbracket = '<';
$rbracket = '>';
}
foreach($list_array as $item) {
if(strlen($item)) {
foreach ($list_array as $item) {
if (strlen($item)) {
$tag_list .= $lbracket . file_tag_encode(trim($item)) . $rbracket;
}
}
@ -1927,16 +1954,16 @@ function file_tag_list_to_file($list,$type = 'file') {
function file_tag_file_to_list($file,$type = 'file') {
$matches = false;
$list = '';
if($type == 'file') {
$cnt = preg_match_all('/\[(.*?)\]/',$file,$matches,PREG_SET_ORDER);
if ($type == 'file') {
$cnt = preg_match_all('/\[(.*?)\]/', $file, $matches, PREG_SET_ORDER);
} else {
$cnt = preg_match_all('/<(.*?)>/', $file, $matches, PREG_SET_ORDER);
}
else {
$cnt = preg_match_all('/<(.*?)>/',$file,$matches,PREG_SET_ORDER);
}
if($cnt) {
foreach($matches as $mtch) {
if(strlen($list))
if ($cnt) {
foreach ($matches as $mtch) {
if (strlen($list)) {
$list .= ',';
}
$list .= file_tag_decode($mtch[1]);
}
}
@ -1944,19 +1971,19 @@ function file_tag_file_to_list($file,$type = 'file') {
return $list;
}
function file_tag_update_pconfig($uid,$file_old,$file_new,$type = 'file') {
function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
// $file_old - categories previously associated with an item
// $file_new - new list of categories for an item
if(! intval($uid))
if (! intval($uid))
return false;
if($file_old == $file_new)
if ($file_old == $file_new)
return true;
$saved = get_pconfig($uid,'system','filetags');
if(strlen($saved)) {
if($type == 'file') {
if (strlen($saved)) {
if ($type == 'file') {
$lbracket = '[';
$rbracket = ']';
$termtype = TERM_FILE;
@ -1973,8 +2000,8 @@ function file_tag_update_pconfig($uid,$file_old,$file_new,$type = 'file') {
$new_tags = array();
$check_new_tags = explode(",",file_tag_file_to_list($file_new,$type));
foreach($check_new_tags as $tag) {
if(! stristr($saved,$lbracket . file_tag_encode($tag) . $rbracket))
foreach ($check_new_tags as $tag) {
if (! stristr($saved,$lbracket . file_tag_encode($tag) . $rbracket))
$new_tags[] = $tag;
}
@ -1984,22 +2011,18 @@ function file_tag_update_pconfig($uid,$file_old,$file_new,$type = 'file') {
$deleted_tags = array();
$check_deleted_tags = explode(",",file_tag_file_to_list($file_old,$type));
foreach($check_deleted_tags as $tag) {
if(! stristr($file_new,$lbracket . file_tag_encode($tag) . $rbracket))
foreach ($check_deleted_tags as $tag) {
if (! stristr($file_new,$lbracket . file_tag_encode($tag) . $rbracket))
$deleted_tags[] = $tag;
}
foreach($deleted_tags as $key => $tag) {
foreach ($deleted_tags as $key => $tag) {
$r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d",
dbesc($tag),
intval(TERM_OBJ_POST),
intval($termtype),
intval($uid));
//$r = q("select file from item where uid = %d " . file_tag_file_query('item',$tag,$type),
// intval($uid)
//);
if (dbm::is_result($r)) {
unset($deleted_tags[$key]);
}
@ -2008,54 +2031,56 @@ function file_tag_update_pconfig($uid,$file_old,$file_new,$type = 'file') {
}
}
if($saved != $filetags_updated) {
set_pconfig($uid,'system','filetags', $filetags_updated);
if ($saved != $filetags_updated) {
set_pconfig($uid, 'system', 'filetags', $filetags_updated);
}
return true;
}
else
if(strlen($file_new)) {
set_pconfig($uid,'system','filetags', $file_new);
if (strlen($file_new)) {
set_pconfig($uid, 'system', 'filetags', $file_new);
}
return true;
}
function file_tag_save_file($uid,$item,$file) {
require_once("include/files.php");
function file_tag_save_file($uid, $item, $file) {
require_once "include/files.php";
$result = false;
if(! intval($uid))
if (! intval($uid))
return false;
$r = q("SELECT `file` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($item),
intval($uid)
);
if (dbm::is_result($r)) {
if(! stristr($r[0]['file'],'[' . file_tag_encode($file) . ']'))
if (! stristr($r[0]['file'],'[' . file_tag_encode($file) . ']')) {
q("UPDATE `item` SET `file` = '%s' WHERE `id` = %d AND `uid` = %d",
dbesc($r[0]['file'] . '[' . file_tag_encode($file) . ']'),
intval($item),
intval($uid)
);
}
create_files_from_item($item);
$saved = get_pconfig($uid,'system','filetags');
if((! strlen($saved)) || (! stristr($saved,'[' . file_tag_encode($file) . ']')))
set_pconfig($uid,'system','filetags',$saved . '[' . file_tag_encode($file) . ']');
if ((! strlen($saved)) || (! stristr($saved, '[' . file_tag_encode($file) . ']'))) {
set_pconfig($uid, 'system', 'filetags', $saved . '[' . file_tag_encode($file) . ']');
}
info( t('Item filed') );
}
return true;
}
function file_tag_unsave_file($uid,$item,$file,$cat = false) {
require_once("include/files.php");
function file_tag_unsave_file($uid, $item, $file, $cat = false) {
require_once "include/files.php";
$result = false;
if(! intval($uid))
if (! intval($uid))
return false;
if($cat == true) {
if ($cat == true) {
$pattern = '<' . file_tag_encode($file) . '>' ;
$termtype = TERM_CATEGORY;
} else {
@ -2086,27 +2111,24 @@ function file_tag_unsave_file($uid,$item,$file,$cat = false) {
intval($termtype),
intval($uid));
//$r = q("select file from item where uid = %d and deleted = 0 " . file_tag_file_query('item',$file,(($cat) ? 'category' : 'file')),
//);
if (! dbm::is_result($r)) {
$saved = get_pconfig($uid,'system','filetags');
set_pconfig($uid,'system','filetags',str_replace($pattern,'',$saved));
set_pconfig($uid, 'system', 'filetags', str_replace($pattern, '', $saved));
}
return true;
}
function normalise_openid($s) {
return trim(str_replace(array('http://','https://'),array('',''),$s),'/');
return trim(str_replace(array('http://', 'https://'), array('', ''), $s), '/');
}
function undo_post_tagging($s) {
$matches = null;
$cnt = preg_match_all('/([!#@])\[url=(.*?)\](.*?)\[\/url\]/ism',$s,$matches,PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
$cnt = preg_match_all('/([!#@])\[url=(.*?)\](.*?)\[\/url\]/ism', $s, $matches, PREG_SET_ORDER);
if ($cnt) {
foreach ($matches as $mtch) {
$s = str_replace($mtch[0], $mtch[1] . $mtch[3],$s);
}
}
@ -2114,17 +2136,17 @@ function undo_post_tagging($s) {
}
function protect_sprintf($s) {
return(str_replace('%','%%',$s));
return str_replace('%', '%%', $s);
}
function is_a_date_arg($s) {
$i = intval($s);
if($i > 1900) {
if ($i > 1900) {
$y = date('Y');
if($i <= $y+1 && strpos($s,'-') == 4) {
if ($i <= $y + 1 && strpos($s, '-') == 4) {
$m = intval(substr($s,5));
if($m > 0 && $m <= 12)
if ($m > 0 && $m <= 12)
return true;
}
}
@ -2145,7 +2167,7 @@ function deindent($text, $chr = "[\t ]", $count = NULL) {
preg_match("|^" . $chr . "*|", $lines[$k], $m);
$count = strlen($m[0]);
}
for ($k=0; $k < count($lines); $k++) {
for ($k = 0; $k < count($lines); $k++) {
$lines[$k] = preg_replace("|^" . $chr . "{" . $count . "}|", "", $lines[$k]);
}
@ -2175,11 +2197,12 @@ function formatBytes($bytes, $precision = 2) {
*/
function format_network_name($network, $url = 0) {
if ($network != "") {
require_once('include/contact_selectors.php');
if ($url != "")
require_once 'include/contact_selectors.php';
if ($url != "") {
$network_name = '<a href="'.$url.'">'.network_to_name($network, $url)."</a>";
else
} else {
$network_name = network_to_name($network);
}
return $network_name;
}
@ -2211,15 +2234,14 @@ function text_highlight($s, $lang) {
$s = trim(html_entity_decode($s, ENT_COMPAT));
$s = str_replace(' ', "\t", $s);
// The highlighter library insists on an opening php tag for php code blocks. If
// it isn't present, nothing is highlighted. So we're going to see if it's present.
// If not, we'll add it, and then quietly remove it after we get the processed output back.
if ($lang === 'php') {
if (strpos($s, '<?php') !== 0) {
$s = '<?php' . "\n" . $s;
$tag_added = true;
}
/*
* The highlighter library insists on an opening php tag for php code blocks. If
* it isn't present, nothing is highlighted. So we're going to see if it's present.
* If not, we'll add it, and then quietly remove it after we get the processed output back.
*/
if ($lang === 'php' && strpos($s, '<?php') !== 0) {
$s = '<?php' . "\n" . $s;
$tag_added = true;
}
$renderer = new Text_Highlighter_Renderer_Html($options);
@ -2228,7 +2250,6 @@ function text_highlight($s, $lang) {
$o = $hl->highlight($s);
$o = str_replace("\n", '', $o);
if ($tag_added) {
$b = substr($o, 0, strpos($o, '<li>'));
$e = substr($o, strpos($o, '</li>'));

View file

@ -177,29 +177,34 @@ function add_shadow_entry($itemid) {
function update_thread_uri($itemuri, $uid) {
$messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid));
if (dbm::is_result($messages))
foreach ($messages as $message)
if (dbm::is_result($messages)) {
foreach ($messages as $message) {
update_thread($message["id"]);
}
}
}
function update_thread($itemid, $setmention = false) {
$items = q("SELECT `uid`, `guid`, `title`, `body`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
`deleted`, `origin`, `forum_mode`, `network`, `rendered-html`, `rendered-hash` FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
if (!dbm::is_result($items))
if (!dbm::is_result($items)) {
return;
}
$item = $items[0];
if ($setmention)
if ($setmention) {
$item["mention"] = 1;
}
$sql = "";
foreach ($item AS $field => $data)
if (!in_array($field, array("guid", "title", "body", "rendered-html", "rendered-hash"))) {
if ($sql != "")
if ($sql != "") {
$sql .= ", ";
}
$sql .= "`".$field."` = '".dbesc($data)."'";
}
@ -211,8 +216,9 @@ function update_thread($itemid, $setmention = false) {
// Updating a shadow item entry
$items = q("SELECT `id` FROM `item` WHERE `guid` = '%s' AND `uid` = 0 LIMIT 1", dbesc($item["guid"]));
if (!$items)
if (!dbm::is_result($items)) {
return;
}
$result = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `rendered-html` = '%s', `rendered-hash` = '%s' WHERE `id` = %d",
dbesc($item["title"]),
@ -227,9 +233,11 @@ function update_thread($itemid, $setmention = false) {
function delete_thread_uri($itemuri, $uid) {
$messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid));
if(count($messages))
foreach ($messages as $message)
if (dbm::is_result($messages)) {
foreach ($messages as $message) {
delete_thread($message["id"], $itemuri);
}
}
}
function delete_thread($itemid, $itemuri = "") {

View file

@ -56,7 +56,7 @@ server {
#Traditional SSL
ssl_certificate /etc/nginx/ssl/friendica.example.net.chain.pem;
ssl_certificate_key /etc/nginx/ssl/example.net.key;
# If you have used letsencrypt as your SSL provider, remove the previous two lines, and uncomment the following two (adjusting the path) instead.
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

View file

@ -1,7 +1,7 @@
# FRIENDICA Distributed Social Network
# Copyright (C) 2010, 2011, 2012, 2013 the Friendica Project
# This file is distributed under the same license as the Friendica package.
#
#
# Translators:
# Andy H3 <andy@hubup.pro>, 2017
msgid ""

View file

@ -1,7 +1,7 @@
# FRIENDICA Distributed Social Network
# Copyright (C) 2010, 2011, 2012, 2013 the Friendica Project
# This file is distributed under the same license as the Friendica package.
#
#
# Translators:
msgid ""
msgstr ""