diff --git a/doc/de/Account-Basics.md b/doc/de/Account-Basics.md index 5052598154..9d2f3ac86c 100644 --- a/doc/de/Account-Basics.md +++ b/doc/de/Account-Basics.md @@ -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 Liste von öffentlichen Servern (Knoten) 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 Liste von öffentlichen Servern (Knoten) 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 die Friendica-Webseite, um den Code mit den Installationsanleitungen herunterzuladen. +Wenn Du Deinen eigenen Server aufsetzen willst, kannst Du das ebenfalls machen. +Besuche die Friendica-Webseite, 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". diff --git a/include/dba_pdo.php b/include/dba_pdo.php index 2ad5ab7447..9f2774d9b7 100644 --- a/include/dba_pdo.php +++ b/include/dba_pdo.php @@ -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); } diff --git a/include/dbstructure.php b/include/dbstructure.php index 9b4921eb83..268bbbb669 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -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) { diff --git a/include/diaspora.php b/include/diaspora.php index 671bb34ae5..762018b170 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -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; } diff --git a/include/event.php b/include/event.php index 089fe705db..e5f19deda0 100644 --- a/include/event.php +++ b/include/event.php @@ -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; } diff --git a/include/msgclean.php b/include/msgclean.php index 4abbafb71b..6f7a42e6a4 100644 --- a/include/msgclean.php +++ b/include/msgclean.php @@ -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)); } diff --git a/include/pgettext.php b/include/pgettext.php index 756905a43a..f6f26a8cc4 100644 --- a/include/pgettext.php +++ b/include/pgettext.php @@ -91,7 +91,6 @@ function pop_lang() { $lang = $a->langsave; } - // l if (! function_exists('load_translation_table')) { diff --git a/include/queue.php b/include/queue.php index 5e73922f9a..f721326f06 100644 --- a/include/queue.php +++ b/include/queue.php @@ -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)); diff --git a/include/redir.php b/include/redir.php index 36f982b12c..d6b8285cfc 100644 --- a/include/redir.php +++ b/include/redir.php @@ -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(); diff --git a/include/salmon.php b/include/salmon.php index 6e08d0aaf2..6675849ce4 100644 --- a/include/salmon.php +++ b/include/salmon.php @@ -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); } diff --git a/include/security.php b/include/security.php index 09ac03c35e..51fb6f7259 100644 --- a/include/security.php +++ b/include/security.php @@ -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; }} - diff --git a/include/socgraph.php b/include/socgraph.php index eda8e3797c..f055aebdf8 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -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; } diff --git a/include/tags.php b/include/tags.php index ad66b02727..6c45a4aee2 100644 --- a/include/tags.php +++ b/include/tags.php @@ -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"]); + } } } diff --git a/include/template_processor.php b/include/template_processor.php index 27271e2edb..252375a060 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -69,7 +69,7 @@ class Template implements ITemplateEngine { * {{ if <$var>== }}...[{{ else }} ...]{{ endif }} * {{ if <$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(); } diff --git a/include/text.php b/include/text.php index 80c0d87e2e..ea5deb4c14 100644 --- a/include/text.php +++ b/include/text.php @@ -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 "
".__function__.": ".$e->getMessage()."
"; killme(); + echo "
" . __FUNCTION__ . ": " . $e->getMessage() . "
"; + 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('&','&', $s); // $ret = str_replace(array('<','>','"','''),array('<','>','"',"'"),$ret); /*$ret = mb_ereg_replace('&', '&', $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 "
".__function__.": ".$e->getMessage()."
"; killme(); + echo "
" . __FUNCTION__ . ": " . $e->getMessage() . "
"; + 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\:\/\-\?\&\;\.\=\_\~\#\'\%\$\!\+]*)/", ' $1', $s); $s = preg_replace("/\<(.*?)(src|href)=(.*?)\&\;(.*?)\>/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[] = "#".$tag["term"].""; @@ -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 = '
'; $s = str_replace(array('
', '
', '
'), 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 .= '
'; - 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,'
') !== false && $item['coord']) { + if (strpos($s, '
') !== false && x($item, 'coord')) { $x = generate_map(trim($item['coord'])); if ($x) { $s = preg_replace('/\
/','$0' . $x,$s); @@ -1445,37 +1458,36 @@ function prepare_body(&$item,$attach = false, $preview = false) { $spoilersearch = '
'; // Remove line breaks before the spoiler - while ((strpos($s, "\n".$spoilersearch) !== false)) - $s = str_replace("\n".$spoilersearch, $spoilersearch, $s); - while ((strpos($s, "
".$spoilersearch) !== false)) - $s = str_replace("
".$spoilersearch, $spoilersearch, $s); + while ((strpos($s, "\n" . $spoilersearch) !== false)) { + $s = str_replace("\n" . $spoilersearch, $spoilersearch, $s); + } + while ((strpos($s, "
" . $spoilersearch) !== false)) { + $s = str_replace("
" . $spoilersearch, $spoilersearch, $s); + } while ((strpos($s, $spoilersearch) !== false)) { - $pos = strpos($s, $spoilersearch); $rnd = random_string(8); - $spoilerreplace = '
'.sprintf(t('Click to open/close')).''. - '