]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #3366 from annando/issue-3358
authorHypolite Petovan <mrpetovan@gmail.com>
Thu, 20 Apr 2017 06:03:30 +0000 (02:03 -0400)
committerGitHub <noreply@github.com>
Thu, 20 Apr 2017 06:03:30 +0000 (02:03 -0400)
Issue 3358; Avoid key length problems when changing collation

28 files changed:
friendica_test_data.sql
htconfig.php
include/acl_selectors.php
include/api.php
include/attach.php
include/bb2diaspora.php
include/bbcode.php
include/cli_startup.php
include/contact_selectors.php
include/contact_widgets.php
include/conversation.php
include/cron.php
include/cronhooks.php
include/dfrn.php
include/identity.php
include/items.php
include/pgettext.php
js/acl.js
js/autocomplete.js
js/main.js
mod/install.php
mod/notifications.php
util/vagrant_provision.sh
view/templates/htconfig.tpl
view/theme/frio/img/dynamic.php [deleted file]
view/theme/frio/js/textedit.js
view/theme/frio/js/theme.js
view/theme/frio/templates/comment_item.tpl

index 215bded274ccd4e20177a077220546b06003653e..8ee0ff7702f5dfc61d18e204d60478919cc05946 100644 (file)
@@ -7,7 +7,7 @@
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
+/*!40101 SET NAMES utf8mb4 */;
 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
 /*!40103 SET TIME_ZONE='+00:00' */;
 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
@@ -19,7 +19,7 @@
 -- Current Database: `friendica`
 --
 
-CREATE DATABASE /*!32312 IF NOT EXISTS*/ `friendica` /*!40100 DEFAULT CHARACTER SET latin1 */;
+CREATE DATABASE /*!32312 IF NOT EXISTS*/ `friendica` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */;
 
 USE `friendica`;
 
@@ -29,7 +29,7 @@ USE `friendica`;
 
 DROP TABLE IF EXISTS `addon`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `addon` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(255) NOT NULL DEFAULT '',
@@ -39,7 +39,7 @@ CREATE TABLE `addon` (
   `timestamp` bigint(20) NOT NULL DEFAULT '0',
   `plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -57,7 +57,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `attach`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `attach` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -73,7 +73,7 @@ CREATE TABLE `attach` (
   `deny_cid` mediumtext NOT NULL,
   `deny_gid` mediumtext NOT NULL,
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -91,7 +91,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `auth_codes`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `auth_codes` (
   `id` varchar(40) NOT NULL,
   `client_id` varchar(20) NOT NULL DEFAULT '',
@@ -99,7 +99,7 @@ CREATE TABLE `auth_codes` (
   `expires` int(11) NOT NULL DEFAULT '0',
   `scope` varchar(250) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -117,14 +117,14 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `cache`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `cache` (
   `k` varchar(255) NOT NULL,
   `v` text NOT NULL,
   `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
   PRIMARY KEY (`k`),
   KEY `updated` (`updated`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -143,7 +143,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `challenge`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `challenge` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `challenge` varchar(255) NOT NULL DEFAULT '',
@@ -152,7 +152,7 @@ CREATE TABLE `challenge` (
   `type` varchar(255) NOT NULL DEFAULT '',
   `last_update` varchar(255) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -170,7 +170,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `clients`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `clients` (
   `client_id` varchar(20) NOT NULL,
   `pw` varchar(20) NOT NULL DEFAULT '',
@@ -179,7 +179,7 @@ CREATE TABLE `clients` (
   `icon` text,
   `uid` int(11) NOT NULL DEFAULT '0',
   PRIMARY KEY (`client_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -197,7 +197,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `config`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `config` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `cat` varchar(255) NOT NULL DEFAULT '',
@@ -205,7 +205,7 @@ CREATE TABLE `config` (
   `v` text NOT NULL,
   PRIMARY KEY (`id`),
   KEY `cat_k` (`cat`(30),`k`(30))
-) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -224,7 +224,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `contact`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `contact` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -291,7 +291,7 @@ CREATE TABLE `contact` (
   `ffi_keyword_blacklist` mediumtext NOT NULL,
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -310,7 +310,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `conv`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `conv` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `guid` varchar(64) NOT NULL DEFAULT '',
@@ -322,7 +322,7 @@ CREATE TABLE `conv` (
   `subject` mediumtext NOT NULL,
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -340,14 +340,14 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `deliverq`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `deliverq` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `cmd` varchar(32) NOT NULL DEFAULT '',
   `item` int(11) NOT NULL DEFAULT '0',
   `contact` int(11) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -365,14 +365,14 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `dsprphotoq`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `dsprphotoq` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
   `msg` mediumtext NOT NULL,
   `attempt` tinyint(4) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -390,7 +390,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `event`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `event` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -413,7 +413,7 @@ CREATE TABLE `event` (
   `deny_gid` mediumtext NOT NULL,
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -431,7 +431,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `fcontact`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `fcontact` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `url` varchar(255) NOT NULL DEFAULT '',
@@ -451,7 +451,7 @@ CREATE TABLE `fcontact` (
   `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
   PRIMARY KEY (`id`),
   KEY `addr` (`addr`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -469,14 +469,14 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `ffinder`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `ffinder` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
   `cid` int(10) unsigned NOT NULL DEFAULT '0',
   `fid` int(10) unsigned NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -494,7 +494,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `fserver`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `fserver` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `server` varchar(255) NOT NULL DEFAULT '',
@@ -502,7 +502,7 @@ CREATE TABLE `fserver` (
   `key` text NOT NULL,
   PRIMARY KEY (`id`),
   KEY `server` (`server`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -520,7 +520,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `fsuggest`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `fsuggest` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -532,7 +532,7 @@ CREATE TABLE `fsuggest` (
   `note` text NOT NULL,
   `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -550,7 +550,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `gcign`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `gcign` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -558,7 +558,7 @@ CREATE TABLE `gcign` (
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`),
   KEY `gcid` (`gcid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -576,7 +576,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `gcontact`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `gcontact` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `name` varchar(255) NOT NULL DEFAULT '',
@@ -592,7 +592,7 @@ CREATE TABLE `gcontact` (
   `network` varchar(255) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`),
   KEY `nurl` (`nurl`)
-) ENGINE=InnoDB AUTO_INCREMENT=157 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=157 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -611,7 +611,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `glink`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `glink` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `cid` int(11) NOT NULL DEFAULT '0',
@@ -623,7 +623,7 @@ CREATE TABLE `glink` (
   KEY `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`),
   KEY `gcid` (`gcid`),
   KEY `zcid` (`zcid`)
-) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -642,7 +642,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `group`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `group` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -651,7 +651,7 @@ CREATE TABLE `group` (
   `name` varchar(255) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -670,7 +670,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `group_member`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `group_member` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -678,7 +678,7 @@ CREATE TABLE `group_member` (
   `contact-id` int(10) unsigned NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`),
   KEY `uid_gid_contactid` (`uid`,`gid`,`contact-id`)
-) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -697,13 +697,13 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `guid`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `guid` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `guid` varchar(255) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`),
   KEY `guid` (`guid`)
-) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -722,7 +722,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `hook`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `hook` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `hook` varchar(255) NOT NULL DEFAULT '',
@@ -731,7 +731,7 @@ CREATE TABLE `hook` (
   `priority` int(11) unsigned NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`),
   KEY `hook_file_function` (`hook`(30),`file`(60),`function`(30))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -749,7 +749,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `intro`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `intro` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -763,7 +763,7 @@ CREATE TABLE `intro` (
   `blocked` tinyint(1) NOT NULL DEFAULT '1',
   `ignore` tinyint(1) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -782,7 +782,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `item`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `item` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `guid` varchar(255) NOT NULL DEFAULT '',
@@ -876,7 +876,7 @@ CREATE TABLE `item` (
   KEY `uid_eventid` (`uid`,`event-id`),
   KEY `uid_authorlink` (`uid`,`author-link`),
   KEY `uid_ownerlink` (`uid`,`owner-link`)
-) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -895,7 +895,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `item_id`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `item_id` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `iid` int(11) NOT NULL DEFAULT '0',
@@ -907,7 +907,7 @@ CREATE TABLE `item_id` (
   KEY `sid` (`sid`),
   KEY `service` (`service`),
   KEY `iid` (`iid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -925,14 +925,14 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `locks`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `locks` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(128) NOT NULL DEFAULT '',
   `locked` tinyint(1) NOT NULL DEFAULT '0',
   `created` datetime DEFAULT '0001-01-01 00:00:00',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -950,7 +950,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `mail`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `mail` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -976,7 +976,7 @@ CREATE TABLE `mail` (
   KEY `reply` (`reply`),
   KEY `uri` (`uri`),
   KEY `parent-uri` (`parent-uri`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -994,7 +994,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `mailacct`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `mailacct` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -1010,7 +1010,7 @@ CREATE TABLE `mailacct` (
   `pubmail` tinyint(1) NOT NULL DEFAULT '0',
   `last_check` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1028,14 +1028,14 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `manage`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `manage` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
   `mid` int(11) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`),
   KEY `uid_mid` (`uid`,`mid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1053,7 +1053,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `notify`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `notify` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `hash` varchar(64) NOT NULL DEFAULT '',
@@ -1071,7 +1071,7 @@ CREATE TABLE `notify` (
   `otype` varchar(16) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1090,7 +1090,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `notify-threads`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `notify-threads` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `notify-id` int(11) NOT NULL DEFAULT '0',
@@ -1100,7 +1100,7 @@ CREATE TABLE `notify-threads` (
   PRIMARY KEY (`id`),
   KEY `master-parent-item` (`master-parent-item`),
   KEY `receiver-uid` (`receiver-uid`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1119,7 +1119,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `pconfig`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `pconfig` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -1128,7 +1128,7 @@ CREATE TABLE `pconfig` (
   `v` mediumtext NOT NULL,
   PRIMARY KEY (`id`),
   KEY `uid_cat_k` (`uid`,`cat`(30),`k`(30))
-) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1147,7 +1147,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `photo`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `photo` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -1175,7 +1175,7 @@ CREATE TABLE `photo` (
   KEY `uid` (`uid`),
   KEY `resource-id` (`resource-id`),
   KEY `guid` (`guid`)
-) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1194,7 +1194,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `poll`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `poll` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -1210,7 +1210,7 @@ CREATE TABLE `poll` (
   `q9` mediumtext NOT NULL,
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1228,7 +1228,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `poll_result`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `poll_result` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `poll_id` int(11) NOT NULL DEFAULT '0',
@@ -1236,7 +1236,7 @@ CREATE TABLE `poll_result` (
   PRIMARY KEY (`id`),
   KEY `poll_id` (`poll_id`),
   KEY `choice` (`choice`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1254,7 +1254,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `profile`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `profile` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -1299,7 +1299,7 @@ CREATE TABLE `profile` (
   `net-publish` tinyint(1) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`),
   KEY `hometown` (`hometown`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1318,7 +1318,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `profile_check`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `profile_check` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -1327,7 +1327,7 @@ CREATE TABLE `profile_check` (
   `sec` varchar(255) NOT NULL DEFAULT '',
   `expire` int(11) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1345,7 +1345,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `push_subscriber`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `push_subscriber` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -1356,7 +1356,7 @@ CREATE TABLE `push_subscriber` (
   `last_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
   `secret` varchar(255) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1374,7 +1374,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `queue`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `queue` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `cid` int(11) NOT NULL DEFAULT '0',
@@ -1389,7 +1389,7 @@ CREATE TABLE `queue` (
   KEY `last` (`last`),
   KEY `network` (`network`),
   KEY `batch` (`batch`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1407,7 +1407,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `register`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `register` (
   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
   `hash` varchar(255) NOT NULL DEFAULT '',
@@ -1416,7 +1416,7 @@ CREATE TABLE `register` (
   `password` varchar(255) NOT NULL DEFAULT '',
   `language` varchar(16) NOT NULL DEFAULT '',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1434,7 +1434,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `search`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `search` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -1442,7 +1442,7 @@ CREATE TABLE `search` (
   PRIMARY KEY (`id`),
   KEY `uid` (`uid`),
   KEY `term` (`term`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1460,7 +1460,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `session`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `session` (
   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
   `sid` varchar(255) NOT NULL DEFAULT '',
@@ -1469,7 +1469,7 @@ CREATE TABLE `session` (
   PRIMARY KEY (`id`),
   KEY `sid` (`sid`),
   KEY `expire` (`expire`)
-) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1488,7 +1488,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `sign`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `sign` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `iid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -1499,7 +1499,7 @@ CREATE TABLE `sign` (
   PRIMARY KEY (`id`),
   KEY `iid` (`iid`),
   KEY `retract_iid` (`retract_iid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1517,7 +1517,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `spam`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `spam` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `uid` int(11) NOT NULL DEFAULT '0',
@@ -1530,7 +1530,7 @@ CREATE TABLE `spam` (
   KEY `spam` (`spam`),
   KEY `ham` (`ham`),
   KEY `term` (`term`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1548,7 +1548,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `term`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `term` (
   `tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `oid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -1564,7 +1564,7 @@ CREATE TABLE `term` (
   KEY `type_term` (`type`,`term`),
   KEY `uid_otype_type_term_tid` (`uid`,`otype`,`type`,`term`,`tid`),
   KEY `otype_type_term_tid` (`otype`,`type`,`term`,`tid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1582,7 +1582,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `thread`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `thread` (
   `iid` int(10) unsigned NOT NULL DEFAULT '0',
   `uid` int(10) unsigned NOT NULL DEFAULT '0',
@@ -1617,7 +1617,7 @@ CREATE TABLE `thread` (
   KEY `wall_private_received` (`wall`,`private`,`received`),
   KEY `uid_created` (`uid`,`created`),
   KEY `uid_commented` (`uid`,`commented`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1636,7 +1636,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `tokens`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `tokens` (
   `id` varchar(40) NOT NULL,
   `secret` text NOT NULL,
@@ -1645,7 +1645,7 @@ CREATE TABLE `tokens` (
   `scope` varchar(200) NOT NULL DEFAULT '',
   `uid` int(11) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1663,7 +1663,7 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `user`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `user` (
   `uid` int(11) NOT NULL AUTO_INCREMENT,
   `guid` varchar(64) NOT NULL DEFAULT '',
@@ -1709,7 +1709,7 @@ CREATE TABLE `user` (
   `openidserver` text NOT NULL,
   PRIMARY KEY (`uid`),
   KEY `nickname` (`nickname`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
@@ -1728,13 +1728,13 @@ UNLOCK TABLES;
 
 DROP TABLE IF EXISTS `userd`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+/*!40101 SET character_set_client = utf8mb4 */;
 CREATE TABLE `userd` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(255) NOT NULL,
   PRIMARY KEY (`id`),
   KEY `username` (`username`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
index 5967e79f4e1efec7ca934aea20d801c343833945..4ea97e9aeb760f659a3d45adb9aa6a04ac5d9a78 100644 (file)
@@ -16,7 +16,7 @@ $db_user = 'mysqlusername';
 $db_pass = 'mysqlpassword';
 $db_data = 'mysqldatabasename';
 
-// Set the database connection charset to UTF8.
+// Set the database connection charset to full Unicode (utf8mb4).
 // Changing this value will likely corrupt the special characters.
 // You have been warned.
 $a->config['system']['db_charset'] = "utf8mb4";
@@ -87,7 +87,7 @@ $a->config['system']['no_regfullname'] = true;
 //$a->config['system']['block_local_dir'] = false;
 
 // Location of the global directory
-$a->config['system']['directory'] = 'http://dir.friendi.ca';
+$a->config['system']['directory'] = 'https://dir.friendica.social';
 
 // Allowed protocols in link URLs; HTTP protocols always are accepted
 $a->config['system']['allowed_link_protocols'] = array('ftp', 'ftps', 'mailto', 'cid', 'gopher');
index f2d2999ba6175341ef254b4754e29f0f4b9c0083..f57af575afa3091124e3dff1716d6b288c6c62fe 100644 (file)
@@ -4,11 +4,11 @@
  * @file include/acl_selectors.php
  */
 
-require_once("include/contact_selectors.php");
-require_once("include/contact_widgets.php");
-require_once("include/DirSearch.php");
-require_once("include/features.php");
-require_once("mod/proxy.php");
+require_once "include/contact_selectors.php";
+require_once "include/contact_widgets.php";
+require_once "include/DirSearch.php";
+require_once "include/features.php";
+require_once "mod/proxy.php";
 
 
 /**
@@ -35,10 +35,11 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
 
        if (dbm::is_result($r)) {
                foreach ($r as $rr) {
-                       if((is_array($preselected)) && in_array($rr['id'], $preselected))
+                       if ((is_array($preselected)) && in_array($rr['id'], $preselected)) {
                                $selected = " selected=\"selected\" ";
-                       else
+                       } else {
                                $selected = '';
+                       }
 
                        $trimmed = mb_substr($rr['name'],0,12);
 
@@ -54,7 +55,8 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
        return $o;
 }
 
-
+/// @TODO after an optional parameter, no mandadory parameter can follow
+/// @TODO find proper type-hints
 function contact_selector($selname, $selclass, $preselected = false, $options) {
 
        $a = get_app();
@@ -66,40 +68,42 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
        $size = 4;
 
        if (is_array($options)) {
-               if (x($options,'size'))
+               if (x($options, 'size'))
                        $size = $options['size'];
 
-               if (x($options,'mutual_friends')) {
+               if (x($options, 'mutual_friends')) {
                        $mutual = true;
                }
-               if (x($options,'single')) {
+               if (x($options, 'single')) {
                        $single = true;
                }
-               if (x($options,'multiple')) {
+               if (x($options, 'multiple')) {
                        $single = false;
                }
-               if (x($options,'exclude')) {
+               if (x($options, 'exclude')) {
                        $exclude = $options['exclude'];
                }
 
-               if (x($options,'networks')) {
-                       switch($options['networks']) {
+               if (x($options, 'networks')) {
+                       switch ($options['networks']) {
                                case 'DFRN_ONLY':
                                        $networks = array(NETWORK_DFRN);
                                        break;
                                case 'PRIVATE':
-                                       if(is_array($a->user) && $a->user['prvnets'])
-                                               $networks = array(NETWORK_DFRN,NETWORK_MAIL,NETWORK_DIASPORA);
-                                       else
-                                               $networks = array(NETWORK_DFRN,NETWORK_FACEBOOK,NETWORK_MAIL, NETWORK_DIASPORA);
+                                       if (is_array($a->user) && $a->user['prvnets']) {
+                                               $networks = array(NETWORK_DFRN, NETWORK_MAIL, NETWORK_DIASPORA);
+                                       } else {
+                                               $networks = array(NETWORK_DFRN, NETWORK_FACEBOOK, NETWORK_MAIL, NETWORK_DIASPORA);
+                                       }
                                        break;
                                case 'TWO_WAY':
-                                       if(is_array($a->user) && $a->user['prvnets'])
-                                               $networks = array(NETWORK_DFRN,NETWORK_MAIL,NETWORK_DIASPORA);
-                                       else
-                                               $networks = array(NETWORK_DFRN,NETWORK_FACEBOOK,NETWORK_MAIL,NETWORK_DIASPORA,NETWORK_OSTATUS);
+                                       if (is_array($a->user) && $a->user['prvnets']) {
+                                               $networks = array(NETWORK_DFRN, NETWORK_MAIL, NETWORK_DIASPORA);
+                                       } else {
+                                               $networks = array(NETWORK_DFRN, NETWORK_FACEBOOK, NETWORK_MAIL, NETWORK_DIASPORA, NETWORK_OSTATUS);
+                                       }
                                        break;
-                               default:
+                               default: /// @TODO Maybe log this call?
                                        break;
                        }
                }
@@ -113,26 +117,30 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
 
        $sql_extra = '';
 
-       if($x['mutual']) {
+       if (x($x, 'mutual')) {
                $sql_extra .= sprintf(" AND `rel` = %d ", intval(CONTACT_IS_FRIEND));
        }
 
-       if(intval($x['exclude']))
+       if (x($x, 'exclude')) {
                $sql_extra .= sprintf(" AND `id` != %d ", intval($x['exclude']));
+       }
 
-       if(is_array($x['networks']) && count($x['networks'])) {
-               for($y = 0; $y < count($x['networks']) ; $y ++)
+       if (is_array($x['networks']) && count($x['networks'])) {
+               /// @TODO rewrite to foreach()
+               for ($y = 0; $y < count($x['networks']) ; $y ++) {
                        $x['networks'][$y] = "'" . dbesc($x['networks'][$y]) . "'";
-               $str_nets = implode(',',$x['networks']);
+               }
+               $str_nets = implode(',', $x['networks']);
                $sql_extra .= " AND `network` IN ( $str_nets ) ";
        }
 
        $tabindex = (x($options, 'tabindex') ? "tabindex=\"" . $options["tabindex"] . "\"" : "");
 
-       if($x['single'])
+       if ($x['single']) {
                $o .= "<select name=\"$selname\" id=\"$selclass\" class=\"$selclass\" size=\"" . $x['size'] . "\" $tabindex >\r\n";
-       else
+       } else {
                $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"" . $x['size'] . "$\" $tabindex >\r\n";
+       }
 
        $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact`
                WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
@@ -174,7 +182,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
 
 function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) {
 
-       require_once("include/bbcode.php");
+       require_once "include/bbcode.php";
 
        $a = get_app();
 
@@ -185,29 +193,32 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
 
        $sql_extra = '';
 
-       if($privmail || $celeb) {
+       if ($privmail || $celeb) {
                $sql_extra .= sprintf(" AND `rel` = %d ", intval(CONTACT_IS_FRIEND));
        }
 
-       if($privmail)
+       if ($privmail) {
                $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s') ",
                                        NETWORK_DFRN, NETWORK_DIASPORA);
-       elseif($privatenet)
+       } elseif ($privatenet) {
                $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s', '%s', '%s') ",
                                        NETWORK_DFRN, NETWORK_MAIL, NETWORK_FACEBOOK, NETWORK_DIASPORA);
+       }
 
        $tabindex = ($tabindex > 0 ? "tabindex=\"$tabindex\"" : "");
 
        if ($privmail AND $preselected) {
                $sql_extra .= " AND `id` IN (".implode(",", $preselected).")";
                $hidepreselected = ' style="display: none;"';
-       } else
+       } else {
                $hidepreselected = "";
+       }
 
-       if($privmail)
+       if ($privmail) {
                $o .= "<select name=\"$selname\" id=\"$selclass\" class=\"$selclass\" size=\"$size\" $tabindex $hidepreselected>\r\n";
-       else
+       } else {
                $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" $tabindex >\r\n";
+       }
 
        $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact`
                WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
@@ -229,8 +240,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
                foreach ($r as $rr) {
                        if ((is_array($preselected)) && in_array($rr['id'], $preselected)) {
                                $selected = " selected=\"selected\" ";
-                       }
-                       else {
+                       } else {
                                $selected = '';
                        }
 
@@ -249,8 +259,9 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
 
        $o .= "</select>\r\n";
 
-       if ($privmail AND $preselected)
+       if ($privmail AND $preselected) {
                $o .= implode(", ", $receiverlist);
+       }
 
        call_hooks($a->module . '_post_' . $selname, $o);
 
@@ -259,7 +270,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
 
 
 function fixacl(&$item) {
-       $item = intval(str_replace(array('<','>'),array('',''),$item));
+       $item = intval(str_replace(array('<', '>'), array('', ''), $item));
 }
 
 function prune_deadguys($arr) {
@@ -268,7 +279,7 @@ function prune_deadguys($arr) {
                return $arr;
        }
 
-       $str = dbesc(implode(',',$arr));
+       $str = dbesc(implode(',', $arr));
 
        $r = q("SELECT `id` FROM `contact` WHERE `id` IN ( " . $str . ") AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 ");
 
@@ -287,7 +298,7 @@ function prune_deadguys($arr) {
 function get_acl_permissions($user = null) {
        $allow_cid = $allow_gid = $deny_cid = $deny_gid = false;
 
-       if(is_array($user)) {
+       if (is_array($user)) {
                $allow_cid = ((strlen($user['allow_cid']))
                        ? explode('><', $user['allow_cid']) : array() );
                $allow_gid = ((strlen($user['allow_gid']))
@@ -318,34 +329,36 @@ function populate_acl($user = null, $show_jotnets = false) {
        $perms = get_acl_permissions($user);
 
        $jotnets = '';
-       if($show_jotnets) {
+       if ($show_jotnets) {
                $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
 
                $mail_enabled = false;
                $pubmail_enabled = false;
 
-               if(! $mail_disabled) {
+               if (! $mail_disabled) {
                        $r = q("SELECT `pubmail` FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
                                intval(local_user())
                        );
                        if (dbm::is_result($r)) {
                                $mail_enabled = true;
-                               if(intval($r[0]['pubmail']))
+                               if (intval($r[0]['pubmail'])) {
                                        $pubmail_enabled = true;
+                               }
                        }
                }
 
                if (!$user['hidewall']) {
-                       if($mail_enabled) {
+                       if ($mail_enabled) {
                                $selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
                                $jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . ' value="1" /> ' . t("Post to Email") . '</div>';
                        }
 
                        call_hooks('jot_networks', $jotnets);
-               } else
+               } else {
                        $jotnets .= sprintf(t('Connectors disabled, since "%s" is enabled.'),
                                            t('Hide your profile details from unknown viewers?'));
                }
+       }
 
        $tpl = get_markup_template("acl_selector.tpl");
        $o = replace_macros($tpl, array(
@@ -363,7 +376,7 @@ function populate_acl($user = null, $show_jotnets = false) {
                '$aclModalTitle' => t('Permissions'),
                '$aclModalDismiss' => t('Close'),
                '$features' => array(
-               "aclautomention"=>(feature_enabled($user['uid'],"aclautomention")?"true":"false")
+               'aclautomention' => (feature_enabled($user['uid'], "aclautomention") ? "true" : "false")
                ),
        ));
 
@@ -379,24 +392,26 @@ function construct_acl_data(App $a, $user) {
 
        $user_defaults = get_acl_permissions($user);
 
-       if($acl_data['groups']) {
-               foreach($acl_data['groups'] as $key=>$group) {
+       if ($acl_data['groups']) {
+               foreach ($acl_data['groups'] as $key => $group) {
                        // Add a "selected" flag to groups that are posted to by default
-                       if($user_defaults['allow_gid'] &&
-                          in_array($group['id'], $user_defaults['allow_gid']) && !in_array($group['id'], $user_defaults['deny_gid']) )
+                       if ($user_defaults['allow_gid'] &&
+                                       in_array($group['id'], $user_defaults['allow_gid']) && !in_array($group['id'], $user_defaults['deny_gid']) ) {
                                $acl_data['groups'][$key]['selected'] = 1;
-                       else
+                       } else {
                                $acl_data['groups'][$key]['selected'] = 0;
+                       }
                }
        }
-       if($acl_data['contacts']) {
-               foreach($acl_data['contacts'] as $key=>$contact) {
+       if ($acl_data['contacts']) {
+               foreach ($acl_data['contacts'] as $key => $contact) {
                        // Add a "selected" flag to groups that are posted to by default
-                       if($user_defaults['allow_cid'] &&
-                          in_array($contact['id'], $user_defaults['allow_cid']) && !in_array($contact['id'], $user_defaults['deny_cid']) )
+                       if ($user_defaults['allow_cid'] &&
+                                       in_array($contact['id'], $user_defaults['allow_cid']) && !in_array($contact['id'], $user_defaults['deny_cid']) ) {
                                $acl_data['contacts'][$key]['selected'] = 1;
-                       else
+                       } else {
                                $acl_data['contacts'][$key]['selected'] = 0;
+                       }
                }
        }
 
@@ -419,23 +434,25 @@ function acl_lookup(App $a, $out_type = 'json') {
 
        // For use with jquery.textcomplete for private mail completion
 
-       if(x($_REQUEST,'query') && strlen($_REQUEST['query'])) {
-               if(! $type)
+       if (x($_REQUEST, 'query') && strlen($_REQUEST['query'])) {
+               if (! $type) {
                        $type = 'm';
+               }
                $search = $_REQUEST['query'];
        }
 
        logger("Searching for ".$search." - type ".$type, LOGGER_DEBUG);
 
-       if ($search!=""){
+       if ($search != "") {
                $sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'";
                $sql_extra2 = "AND (`attag` LIKE '%%".dbesc($search)."%%' OR `name` LIKE '%%".dbesc($search)."%%' OR `nick` LIKE '%%".dbesc($search)."%%')";
        } else {
+               /// @TODO Avoid these needless else blocks by putting variable-initialization atop of if()
                $sql_extra = $sql_extra2 = "";
        }
 
        // count groups and contacts
-       if ($type=='' || $type=='g'){
+       if ($type == '' || $type == 'g') {
                $r = q("SELECT COUNT(*) AS g FROM `group` WHERE `deleted` = 0 AND `uid` = %d $sql_extra",
                        intval(local_user())
                );
@@ -446,8 +463,8 @@ function acl_lookup(App $a, $out_type = 'json') {
 
        $sql_extra2 .= " ".unavailable_networks();
 
-       // autocomplete for editor mentions
-       if ($type=='' || $type=='c'){
+       if ($type == '' || $type == 'c') {
+               // autocomplete for editor mentions
                $r = q("SELECT COUNT(*) AS c FROM `contact`
                                WHERE `uid` = %d AND NOT `self`
                                AND NOT `blocked` AND NOT `pending` AND NOT `archive`
@@ -493,7 +510,7 @@ function acl_lookup(App $a, $out_type = 'json') {
        $groups = array();
        $contacts = array();
 
-       if ($type=='' || $type=='g'){
+       if ($type == '' || $type == 'g') {
 
                /// @todo We should cache this query.
                // This can be done when we can delete cache entries via wildcard
@@ -510,7 +527,7 @@ function acl_lookup(App $a, $out_type = 'json') {
                        intval($count)
                );
 
-               foreach($r as $g){
+               foreach ($r as $g) {
 //             logger('acl: group: ' . $g['name'] . ' members: ' . $g['uids']);
                        $groups[] = array(
                                "type"  => "g",
@@ -524,7 +541,7 @@ function acl_lookup(App $a, $out_type = 'json') {
                }
        }
 
-       if ($type==''){
+       if ($type == '') {
 
                $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact`
                        WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
@@ -534,9 +551,7 @@ function acl_lookup(App $a, $out_type = 'json') {
                        intval(local_user()),
                        dbesc(NETWORK_OSTATUS), dbesc(NETWORK_STATUSNET)
                );
-       }
-       elseif ($type=='c'){
-
+       } elseif ($type == 'c') {
                $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact`
                        WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != ''
                        AND NOT (`network` IN ('%s'))
@@ -546,7 +561,7 @@ function acl_lookup(App $a, $out_type = 'json') {
                        dbesc(NETWORK_STATUSNET)
                );
        }
-       elseif($type == 'm') {
+       elseif ($type == 'm') {
                $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact`
                        WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive`
                        AND `network` IN ('%s','%s','%s')
@@ -593,7 +608,7 @@ function acl_lookup(App $a, $out_type = 'json') {
 
 
        if (dbm::is_result($r)) {
-               foreach ($r as $g){
+               foreach ($r as $g) {
                        $contacts[] = array(
                                'type'    => 'c',
                                'photo'   => proxy_url($g['micro'], false, PROXY_SIZE_MICRO),
@@ -602,7 +617,7 @@ function acl_lookup(App $a, $out_type = 'json') {
                                'network' => $g['network'],
                                'link'    => $g['url'],
                                'nick'    => htmlentities(($g['attag']) ? $g['attag'] : $g['nick']),
-                               'forum'   => ((x($g['forum']) || x($g['prv'])) ? 1 : 0),
+                               'forum'   => ((x($g, 'forum') || x($g, 'prv')) ? 1 : 0),
                        );
                }
        }
@@ -669,7 +684,7 @@ function acl_lookup(App $a, $out_type = 'json') {
 
        call_hooks('acl_lookup_end', $results);
 
-       if($out_type === 'html') {
+       if ($out_type === 'html') {
                $o = array(
                        'tot'      => $results['tot'],
                        'start'    => $results['start'],
index 0918690264e567bd5d7b159fbc0b8be694892c76..97c09c20a907acf8dc41c2e052bd8bc239f936e3 100644 (file)
@@ -8,39 +8,36 @@
 
 use \Friendica\Core\Config;
 
-       require_once('include/HTTPExceptions.php');
-
-       require_once('include/bbcode.php');
-       require_once('include/datetime.php');
-       require_once('include/conversation.php');
-       require_once('include/oauth.php');
-       require_once('include/html2plain.php');
-       require_once('mod/share.php');
-       require_once('include/Photo.php');
-       require_once('mod/item.php');
-       require_once('include/security.php');
-       require_once('include/contact_selectors.php');
-       require_once('include/html2bbcode.php');
-       require_once('mod/wall_upload.php');
-       require_once('mod/proxy.php');
-       require_once('include/message.php');
-       require_once('include/group.php');
-       require_once('include/like.php');
-       require_once('include/NotificationsManager.php');
-       require_once('include/plaintext.php');
-       require_once('include/xml.php');
-
-
-       define('API_METHOD_ANY','*');
-       define('API_METHOD_GET','GET');
-       define('API_METHOD_POST','POST,PUT');
-       define('API_METHOD_DELETE','POST,DELETE');
-
-
-
-       $API = Array();
-       $called_api = Null;
-
+require_once 'include/HTTPExceptions.php';
+require_once 'include/bbcode.php';
+require_once 'include/datetime.php';
+require_once 'include/conversation.php';
+require_once 'include/oauth.php';
+require_once 'include/html2plain.php';
+require_once 'mod/share.php';
+require_once 'include/Photo.php';
+require_once 'mod/item.php';
+require_once 'include/security.php';
+require_once 'include/contact_selectors.php';
+require_once 'include/html2bbcode.php';
+require_once 'mod/wall_upload.php';
+require_once 'mod/proxy.php';
+require_once 'include/message.php';
+require_once 'include/group.php';
+require_once 'include/like.php';
+require_once 'include/NotificationsManager.php';
+require_once 'include/plaintext.php';
+require_once 'include/xml.php';
+
+define('API_METHOD_ANY', '*');
+define('API_METHOD_GET', 'GET');
+define('API_METHOD_POST', 'POST,PUT');
+define('API_METHOD_DELETE', 'POST,DELETE');
+
+$API = array();
+$called_api = null;
+
+/// @TODO Fix intending
        /**
         * @brief Auth API user
         *
@@ -49,8 +46,9 @@ use \Friendica\Core\Config;
         * into a page, and visitors will post something without noticing it).
         */
        function api_user() {
-               if ($_SESSION['allow_api'])
+               if (x($_SESSION, 'allow_api')) {
                        return local_user();
+               }
 
                return false;
        }
@@ -67,16 +65,18 @@ use \Friendica\Core\Config;
         *              Client source name, default to "api" if unset/unknown
         */
        function api_source() {
-               if (requestdata('source'))
-                       return (requestdata('source'));
+               if (requestdata('source')) {
+                       return requestdata('source');
+               }
 
                // Support for known clients that doesn't send a source name
-               if (strstr($_SERVER['HTTP_USER_AGENT'], "Twidere"))
-                       return ("Twidere");
+               if (strpos($_SERVER['HTTP_USER_AGENT'], "Twidere") !== false) {
+                       return "Twidere";
+               }
 
                logger("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], LOGGER_DEBUG);
 
-               return ("api");
+               return "api";
        }
 
        /**
@@ -85,8 +85,8 @@ use \Friendica\Core\Config;
         * @param string $str Source date, as UTC
         * @return string Date in UTC formatted as "D M d H:i:s +0000 Y"
         */
-       function api_date($str){
-               //Wed May 23 06:01:13 +0000 2007
+       function api_date($str) {
+               // Wed May 23 06:01:13 +0000 2007
                return datetime_convert('UTC', 'UTC', $str, "D M d H:i:s +0000 Y" );
        }
 
@@ -98,25 +98,27 @@ use \Friendica\Core\Config;
         * @param string $path API URL path, relative to App::get_baseurl()
         * @param string $func Function name to call on path request
         * @param bool $auth API need logged user
-        * @param string $method
-        *      HTTP method reqiured to call this endpoint.
-        *      One of API_METHOD_ANY, API_METHOD_GET, API_METHOD_POST.
-        *  Default to API_METHOD_ANY
+        * @param string $method HTTP method reqiured to call this endpoint.
+        *
+        * One of API_METHOD_ANY, API_METHOD_GET, API_METHOD_POST.
+        * Default to API_METHOD_ANY
         */
-       function api_register_func($path, $func, $auth=false, $method=API_METHOD_ANY){
+       function api_register_func($path, $func, $auth = false, $method = API_METHOD_ANY) {
                global $API;
+
                $API[$path] = array(
-                       'func'=>$func,
-                       'auth'=>$auth,
-                       'method'=> $method
+                       'func'   => $func,
+                       'auth'   => $auth,
+                       'method' => $method,
                );
 
                // Workaround for hotot
                $path = str_replace("api/", "api/1.1/", $path);
+
                $API[$path] = array(
-                       'func'=>$func,
-                       'auth'=>$auth,
-                       'method'=> $method
+                       'func'   => $func,
+                       'auth'   => $auth,
+                       'method' => $method,
                );
        }
 
@@ -136,34 +138,34 @@ use \Friendica\Core\Config;
         * @hook 'logged_in'
         *              array $user     logged user record
         */
-       function api_login(App $a){
+       function api_login(App $a) {
                // login with oauth
-               try{
+               try {
                        $oauth = new FKOAuth1();
                        list($consumer,$token) = $oauth->verify_request(OAuthRequest::from_request());
-                       if (!is_null($token)){
+                       if (!is_null($token)) {
                                $oauth->loginUser($token->uid);
                                call_hooks('logged_in', $a->user);
                                return;
                        }
-                       echo __file__.__line__.__function__."<pre>"; var_dump($consumer, $token); die();
-               }catch(Exception $e){
+                       echo __FILE__.__LINE__.__FUNCTION__ . "<pre>";
+                       var_dump($consumer, $token);
+                       die();
+               } catch (Exception $e) {
                        logger($e);
                }
 
-
-
                // workaround for HTTP-auth in CGI mode
-               if(x($_SERVER,'REDIRECT_REMOTE_USER')) {
-                       $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"],6)) ;
-                       if(strlen($userpass)) {
+               if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
+                       $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
+                       if (strlen($userpass)) {
                                list($name, $password) = explode(':', $userpass);
                                $_SERVER['PHP_AUTH_USER'] = $name;
                                $_SERVER['PHP_AUTH_PW'] = $password;
                        }
                }
 
-               if (!isset($_SERVER['PHP_AUTH_USER'])) {
+               if (!x($_SERVER, 'PHP_AUTH_USER')) {
                        logger('API_login: ' . print_r($_SERVER,true), LOGGER_DEBUG);
                        header('WWW-Authenticate: Basic realm="Friendica"');
                        throw new UnauthorizedException("This API requires login");
@@ -171,55 +173,51 @@ use \Friendica\Core\Config;
 
                $user = $_SERVER['PHP_AUTH_USER'];
                $password = $_SERVER['PHP_AUTH_PW'];
-               $encrypted = hash('whirlpool',trim($password));
+               $encrypted = hash('whirlpool', trim($password));
 
                // allow "user@server" login (but ignore 'server' part)
-               $at=strstr($user, "@", true);
-               if ( $at ) $user=$at;
+               $at = strstr($user, "@", true);
+               if ($at) {
+                       $user = $at;
+               }
 
-               /**
-                *  next code from mod/auth.php. needs better solution
-                */
+               // next code from mod/auth.php. needs better solution
                $record = null;
 
                $addon_auth = array(
                        'username' => trim($user),
                        'password' => trim($password),
                        'authenticated' => 0,
-                       'user_record' => null
+                       'user_record' => null,
                );
 
-               /**
-                *
+               /*
                 * A plugin indicates successful login by setting 'authenticated' to non-zero value and returning a user record
                 * Plugins should never set 'authenticated' except to indicate success - as hooks may be chained
                 * and later plugins should not interfere with an earlier one that succeeded.
-                *
                 */
-
                call_hooks('authenticate', $addon_auth);
 
-               if(($addon_auth['authenticated']) && (count($addon_auth['user_record']))) {
+               if (($addon_auth['authenticated']) && (count($addon_auth['user_record']))) {
                        $record = $addon_auth['user_record'];
-               }
-               else {
+               } else {
                        // process normal login request
-
                        $r = q("SELECT * FROM `user` WHERE (`email` = '%s' OR `nickname` = '%s')
                                AND `password` = '%s' AND NOT `blocked` AND NOT `account_expired` AND NOT `account_removed` AND `verified` LIMIT 1",
                                dbesc(trim($user)),
                                dbesc(trim($user)),
                                dbesc($encrypted)
                        );
-                       if (dbm::is_result($r))
+                       if (dbm::is_result($r)) {
                                $record = $r[0];
+                       }
                }
 
-               if((! $record) || (! count($record))) {
-                       logger('API_login failure: ' . print_r($_SERVER,true), LOGGER_DEBUG);
+               if ((! $record) || (! count($record))) {
+                       logger('API_login failure: ' . print_r($_SERVER, true), LOGGER_DEBUG);
                        header('WWW-Authenticate: Basic realm="Friendica"');
-                       #header('HTTP/1.0 401 Unauthorized');
-                       #die('This api requires login');
+                       //header('HTTP/1.0 401 Unauthorized');
+                       //die('This api requires login');
                        throw new UnauthorizedException("This API requires login");
                }
 
@@ -242,8 +240,10 @@ use \Friendica\Core\Config;
         * @return bool
         */
         function api_check_method($method) {
-               if ($method=="*") return True;
-               return strpos($method, $_SERVER['REQUEST_METHOD']) !== false;
+               if ($method == "*") {
+                       return true;
+               }
+               return (strpos($method, $_SERVER['REQUEST_METHOD']) !== false);
         }
 
        /**
@@ -254,39 +254,51 @@ use \Friendica\Core\Config;
         * @param App $a
         * @return string API call result
         */
-       function api_call(App $a){
+       function api_call(App $a) {
                global $API, $called_api;
 
-               $type="json";
-               if (strpos($a->query_string, ".xml")>0) $type="xml";
-               if (strpos($a->query_string, ".json")>0) $type="json";
-               if (strpos($a->query_string, ".rss")>0) $type="rss";
-               if (strpos($a->query_string, ".atom")>0) $type="atom";
+               $type = "json";
+               if (strpos($a->query_string, ".xml") > 0) {
+                       $type = "xml";
+               }
+               if (strpos($a->query_string, ".json") > 0) {
+                       $type = "json";
+               }
+               if (strpos($a->query_string, ".rss") > 0) {
+                       $type = "rss";
+               }
+               if (strpos($a->query_string, ".atom") > 0) {
+                       $type = "atom";
+               }
+
                try {
-                       foreach ($API as $p=>$info){
-                               if (strpos($a->query_string, $p)===0){
-                                       if (!api_check_method($info['method'])){
+                       foreach ($API as $p => $info) {
+                               if (strpos($a->query_string, $p) === 0) {
+                                       if (!api_check_method($info['method'])) {
                                                throw new MethodNotAllowedException();
                                        }
 
-                                       $called_api= explode("/",$p);
+                                       $called_api = explode("/", $p);
                                        //unset($_SERVER['PHP_AUTH_USER']);
-                                       if ($info['auth']===true && api_user()===false) {
-                                                       api_login($a);
+
+                                       /// @TODO should be "true ==[=] $info['auth']", if you miss only one = character, you assign a variable (only with ==). Let's make all this even.
+                                       if ($info['auth'] === true && api_user() === false) {
+                                               api_login($a);
                                        }
 
                                        logger('API call for ' . $a->user['username'] . ': ' . $a->query_string);
-                                       logger('API parameters: ' . print_r($_REQUEST,true));
+                                       logger('API parameters: ' . print_r($_REQUEST, true));
 
                                        $stamp =  microtime(true);
                                        $r = call_user_func($info['func'], $type);
-                                       $duration = (float)(microtime(true)-$stamp);
-                                       logger("API call duration: ".round($duration, 2)."\t".$a->query_string, LOGGER_DEBUG);
+                                       $duration = (float) (microtime(true) - $stamp);
+                                       logger("API call duration: " . round($duration, 2) . "\t" . $a->query_string, LOGGER_DEBUG);
 
                                        if (get_config("system", "profiler")) {
                                                $duration = microtime(true)-$a->performance["start"];
 
-                                               logger(parse_url($a->query_string, PHP_URL_PATH).": ".sprintf("Database: %s/%s, Network: %s, I/O: %s, Other: %s, Total: %s",
+                                               /// @TODO round() really everywhere?
+                                               logger(parse_url($a->query_string, PHP_URL_PATH) . ": " . sprintf("Database: %s/%s, Network: %s, I/O: %s, Other: %s, Total: %s",
                                                        round($a->performance["database"] - $a->performance["database_write"], 3),
                                                        round($a->performance["database_write"], 3),
                                                        round($a->performance["network"], 2),
@@ -294,65 +306,71 @@ use \Friendica\Core\Config;
                                                        round($duration - ($a->performance["database"] + $a->performance["network"]
                                                                + $a->performance["file"]), 2),
                                                        round($duration, 2)),
-                                                       LOGGER_DEBUG);
+                                                       LOGGER_DEBUG
+                                               );
 
                                                if (get_config("rendertime", "callstack")) {
                                                        $o = "Database Read:\n";
                                                        foreach ($a->callstack["database"] AS $func => $time) {
                                                                $time = round($time, 3);
-                                                               if ($time > 0)
-                                                                       $o .= $func.": ".$time."\n";
+                                                               if ($time > 0) {
+                                                                       $o .= $func . ": " . $time . "\n";
+                                                               }
                                                        }
                                                        $o .= "\nDatabase Write:\n";
                                                        foreach ($a->callstack["database_write"] AS $func => $time) {
                                                                $time = round($time, 3);
-                                                               if ($time > 0)
-                                                                       $o .= $func.": ".$time."\n";
+                                                               if ($time > 0) {
+                                                                       $o .= $func . ": " . $time . "\n";
+                                                               }
                                                        }
 
                                                        $o .= "\nNetwork:\n";
                                                        foreach ($a->callstack["network"] AS $func => $time) {
                                                                $time = round($time, 3);
-                                                               if ($time > 0)
-                                                                       $o .= $func.": ".$time."\n";
+                                                               if ($time > 0) {
+                                                                       $o .= $func . ": " . $time . "\n";
+                                                               }
                                                        }
                                                        logger($o, LOGGER_DEBUG);
                                                }
                                        }
 
-
-                                       if ($r===false) {
-                                               // api function returned false withour throw an
-                                               // exception. This should not happend, throw a 500
+                                       if (false === $r) {
+                                               /*
+                                                * api function returned false withour throw an
+                                                * exception. This should not happend, throw a 500
+                                                */
                                                throw new InternalServerErrorException();
                                        }
 
-                                       switch($type){
+                                       switch ($type) {
                                                case "xml":
                                                        header ("Content-Type: text/xml");
                                                        return $r;
                                                        break;
                                                case "json":
                                                        header ("Content-Type: application/json");
-                                                       foreach($r as $rr)
+                                                       foreach ($r as $rr)
                                                                $json = json_encode($rr);
-                                                               if ($_GET['callback'])
-                                                                       $json = $_GET['callback']."(".$json.")";
+                                                               if (x($_GET, 'callback')) {
+                                                                       $json = $_GET['callback'] . "(" . $json . ")";
+                                                               }
                                                                return $json;
                                                        break;
                                                case "rss":
                                                        header ("Content-Type: application/rss+xml");
-                                                       return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
+                                                       return '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . $r;
                                                        break;
                                                case "atom":
                                                        header ("Content-Type: application/atom+xml");
-                                                       return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
+                                                       return '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . $r;
                                                        break;
-
                                        }
                                }
                        }
-                       logger('API call not implemented: '.$a->query_string);
+
+                       logger('API call not implemented: ' . $a->query_string);
                        throw new NotImplementedException();
                } catch (HTTPException $e) {
                        header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}");
@@ -371,16 +389,16 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               $error = ($e->getMessage()!==""?$e->getMessage():$e->httpdesc);
-               TODO:  https://dev.twitter.com/overview/api/response-codes
+               $error = ($e->getMessage() !== "" ? $e->getMessage() : $e->httpdesc);
+               /// @TODO:  https://dev.twitter.com/overview/api/response-codes
 
                $error = array("error" => $error,
-                               "code" => $e->httpcode." ".$e->httpdesc,
+                               "code" => $e->httpcode . " " . $e->httpdesc,
                                "request" => $a->query_string);
 
                $ret = api_format_data('status', $type, array('status' => $error));
 
-               switch($type){
+               switch ($type) {
                        case "xml":
                                header ("Content-Type: text/xml");
                                return $ret;
@@ -407,18 +425,22 @@ use \Friendica\Core\Config;
         * @param array $arr Array to be passed to template
         * @param array $user_info
         * @return array
+        * @todo find proper type-hints
         */
-       function api_rss_extra(App $a, $arr, $user_info){
-               if (is_null($user_info)) $user_info = api_get_user($a);
+       function api_rss_extra(App $a, $arr, $user_info) {
+               if (is_null($user_info)) {
+                       $user_info = api_get_user($a);
+               }
+
                $arr['$user'] = $user_info;
                $arr['$rss'] = array(
                        'alternate'    => $user_info['url'],
-                       'self'         => App::get_baseurl(). "/". $a->query_string,
+                       'self'         => App::get_baseurl() . "/" . $a->query_string,
                        'base'         => App::get_baseurl(),
                        'updated'      => api_date(null),
-                       'atom_updated' => datetime_convert('UTC','UTC','now',ATOM_TIME),
+                       'atom_updated' => datetime_convert('UTC', 'UTC', 'now', ATOM_TIME),
                        'language'     => $user_info['language'],
-                       'logo'         => App::get_baseurl()."/images/friendica-32.png",
+                       'logo'         => App::get_baseurl() . "/images/friendica-32.png",
                );
 
                return $arr;
@@ -432,13 +454,11 @@ use \Friendica\Core\Config;
         * @return bool|string
         *              Contact url or False if contact id is unknown
         */
-       function api_unique_id_to_url($id){
+       function api_unique_id_to_url($id) {
                $r = q("SELECT `url` FROM `contact` WHERE `uid` = 0 AND `id` = %d LIMIT 1",
                        intval($id));
-               if ($r)
-                       return ($r[0]["url"]);
-               else
-                       return false;
+
+               return (dbm::is_result($r) && $r[0]["url"]);
        }
 
        /**
@@ -448,8 +468,9 @@ use \Friendica\Core\Config;
         * @param int|string $contact_id Contact ID or URL
         * @param string $type Return type (for errors)
         */
-       function api_get_user(App $a, $contact_id = Null, $type = "json"){
+       function api_get_user(App $a, $contact_id = null, $type = "json") {
                global $called_api;
+
                $user = null;
                $extra_query = "";
                $url = "";
@@ -458,68 +479,83 @@ use \Friendica\Core\Config;
                logger("api_get_user: Fetching user data for user ".$contact_id, LOGGER_DEBUG);
 
                // Searching for contact URL
-               if(!is_null($contact_id) AND (intval($contact_id) == 0)){
+               if (!is_null($contact_id) AND (intval($contact_id) == 0)) {
                        $user = dbesc(normalise_link($contact_id));
                        $url = $user;
                        $extra_query = "AND `contact`.`nurl` = '%s' ";
-                       if (api_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(api_user());
+                       if (api_user() !== false) {
+                               $extra_query .= "AND `contact`.`uid`=" . intval(api_user());
+                       }
                }
 
                // Searching for contact id with uid = 0
-               if(!is_null($contact_id) AND (intval($contact_id) != 0)){
+               if (!is_null($contact_id) AND (intval($contact_id) != 0)) {
                        $user = dbesc(api_unique_id_to_url($contact_id));
 
-                       if ($user == "")
+                       if ($user == "") {
                                throw new BadRequestException("User not found.");
+                       }
 
                        $url = $user;
                        $extra_query = "AND `contact`.`nurl` = '%s' ";
-                       if (api_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(api_user());
+                       if (api_user() !== false) {
+                               $extra_query .= "AND `contact`.`uid`=" . intval(api_user());
+                       }
                }
 
-               if(is_null($user) && x($_GET, 'user_id')) {
+               if (is_null($user) && x($_GET, 'user_id')) {
                        $user = dbesc(api_unique_id_to_url($_GET['user_id']));
 
-                       if ($user == "")
+                       if ($user == "") {
                                throw new BadRequestException("User not found.");
+                       }
 
                        $url = $user;
                        $extra_query = "AND `contact`.`nurl` = '%s' ";
-                       if (api_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(api_user());
+                       if (api_user() !== false) {
+                               $extra_query .= "AND `contact`.`uid`=" . intval(api_user());
+                       }
                }
-               if(is_null($user) && x($_GET, 'screen_name')) {
+               if (is_null($user) && x($_GET, 'screen_name')) {
                        $user = dbesc($_GET['screen_name']);
                        $nick = $user;
                        $extra_query = "AND `contact`.`nick` = '%s' ";
-                       if (api_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(api_user());
+                       if (api_user() !== false) {
+                               $extra_query .= "AND `contact`.`uid`=".intval(api_user());
+                       }
                }
 
-               if (is_null($user) AND ($a->argc > (count($called_api)-1)) AND (count($called_api) > 0)){
+               if (is_null($user) AND ($a->argc > (count($called_api) - 1)) AND (count($called_api) > 0)) {
                        $argid = count($called_api);
-                       list($user, $null) = explode(".",$a->argv[$argid]);
-                       if(is_numeric($user)){
+                       list($user, $null) = explode(".", $a->argv[$argid]);
+                       if (is_numeric($user)) {
                                $user = dbesc(api_unique_id_to_url($user));
 
-                               if ($user == "")
+                               if ($user == "") {
                                        return false;
+                               }
 
                                $url = $user;
                                $extra_query = "AND `contact`.`nurl` = '%s' ";
-                               if (api_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(api_user());
+                               if (api_user() !== false) {
+                                       $extra_query .= "AND `contact`.`uid`=" . intval(api_user());
+                               }
                        } else {
                                $user = dbesc($user);
                                $nick = $user;
                                $extra_query = "AND `contact`.`nick` = '%s' ";
-                               if (api_user()!==false)  $extra_query .= "AND `contact`.`uid`=".intval(api_user());
+                               if (api_user() !== false) {
+                                       $extra_query .= "AND `contact`.`uid`=" . intval(api_user());
+                               }
                        }
                }
 
                logger("api_get_user: user ".$user, LOGGER_DEBUG);
 
                if (!$user) {
-                       if (api_user()===false) {
+                       if (api_user() === false) {
                                api_login($a);
-                               return False;
+                               return false;
                        } else {
                                $user = $_SESSION['uid'];
                                $extra_query = "AND `contact`.`uid` = %d AND `contact`.`self` ";
@@ -528,8 +564,9 @@ use \Friendica\Core\Config;
                }
 
                logger('api_user: ' . $extra_query . ', user: ' . $user);
+
                // user info
-               $uinfo = q("SELECT *, `contact`.`id` as `cid` FROM `contact`
+               $uinfo = q("SELECT *, `contact`.`id` AS `cid` FROM `contact`
                                WHERE 1
                                $extra_query",
                                $user
@@ -539,18 +576,20 @@ use \Friendica\Core\Config;
                api_best_nickname($uinfo);
 
                // if the contact wasn't found, fetch it from the contacts with uid = 0
-               if (count($uinfo)==0) {
+               if (!dbm::is_result($uinfo)) {
                        $r = array();
 
-                       if ($url != "")
+                       if ($url != "") {
                                $r = q("SELECT * FROM `contact` WHERE `uid` = 0 AND `nurl` = '%s' LIMIT 1", dbesc(normalise_link($url)));
+                       }
 
-                       if ($r) {
+                       if (dbm::is_result($r)) {
                                $network_name = network_to_name($r[0]['network'], $r[0]['url']);
 
                                // If no nick where given, extract it from the address
-                               if (($r[0]['nick'] == "") OR ($r[0]['name'] == $r[0]['nick']))
+                               if (($r[0]['nick'] == "") OR ($r[0]['name'] == $r[0]['nick'])) {
                                        $r[0]['nick'] = api_get_nick($r[0]["url"]);
+                               }
 
                                $ret = array(
                                        'id' => $r[0]["id"],
@@ -594,18 +633,20 @@ use \Friendica\Core\Config;
                        }
                }
 
-               if($uinfo[0]['self']) {
+               if ($uinfo[0]['self']) {
 
-                       if ($uinfo[0]['network'] == "")
+                       if ($uinfo[0]['network'] == "") {
                                $uinfo[0]['network'] = NETWORK_DFRN;
+                       }
 
-                       $usr = q("select * from user where uid = %d limit 1",
+                       $usr = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
                                intval(api_user())
                        );
-                       $profile = q("select * from profile where uid = %d and `is-default` = 1 limit 1",
+                       $profile = q("SELECT * FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
                                intval(api_user())
                        );
 
+                       /// @TODO old-lost code? (twice)
                        // Counting is deactivated by now, due to performance issues
                        // count public wall messages
                        //$r = q("SELECT COUNT(*) as `count` FROM `item` WHERE `uid` = %d AND `wall`",
@@ -622,6 +663,8 @@ use \Friendica\Core\Config;
                        //$countitms = $r[0]['count'];
                        $countitms = 0;
                }
+
+               /// @TODO old-lost code? (twice)
 /*
                // Counting is deactivated by now, due to performance issues
                // count friends
@@ -649,7 +692,7 @@ use \Friendica\Core\Config;
                $starred = $r[0]['count'];
 
 
-               if(! $uinfo[0]['self']) {
+               if (! $uinfo[0]['self']) {
                        $countfriends = 0;
                        $countfollowers = 0;
                        $starred = 0;
@@ -668,7 +711,7 @@ use \Friendica\Core\Config;
 
                $pcontact_id  = get_contact($uinfo[0]['url'], 0, true);
 
-               $ret = Array(
+               $ret = array(
                        'id' => intval($pcontact_id),
                        'id_str' => (string) intval($pcontact_id),
                        'name' => (($uinfo[0]['name']) ? $uinfo[0]['name'] : $uinfo[0]['nick']),
@@ -697,6 +740,7 @@ use \Friendica\Core\Config;
                        'follow_request_sent' => false,
                        'statusnet_blocking' => false,
                        'notifications' => false,
+                       /// @TODO old way?
                        //'statusnet_profile_url' => App::get_baseurl()."/contacts/".$uinfo[0]['cid'],
                        'statusnet_profile_url' => $uinfo[0]['url'],
                        'uid' => intval($uinfo[0]['uid']),
@@ -749,11 +793,13 @@ use \Friendica\Core\Config;
 
                foreach ($array as $k => $v) {
                        if (is_array($v)) {
-                               if ($callback($v, $k))
+                               if ($callback($v, $k)) {
                                        $new_array[$k] = api_walk_recursive($v, $callback);
+                               }
                        } else {
-                               if ($callback($v, $k))
+                               if ($callback($v, $k)) {
                                        $new_array[$k] = $v;
+                               }
                        }
                }
                $array = $new_array;
@@ -770,13 +816,16 @@ use \Friendica\Core\Config;
         * @return boolean Should the array item be deleted?
         */
        function api_reformat_xml(&$item, &$key) {
-               if (is_bool($item))
+               if (is_bool($item)) {
                        $item = ($item ? "true" : "false");
+               }
 
-               if (substr($key, 0, 10) == "statusnet_")
+               if (substr($key, 0, 10) == "statusnet_") {
                        $key = "statusnet:".substr($key, 10);
-               elseif (substr($key, 0, 10) == "friendica_")
+               } elseif (substr($key, 0, 10) == "friendica_") {
                        $key = "friendica:".substr($key, 10);
+               }
+               /// @TODO old-lost code?
                //else
                //      $key = "default:".$key;
 
@@ -802,18 +851,21 @@ use \Friendica\Core\Config;
                                        "georss" => "http://www.georss.org/georss");
 
                /// @todo Auto detection of needed namespaces
-               if (in_array($root_element, array("ok", "hash", "config", "version", "ids", "notes", "photos")))
+               if (in_array($root_element, array("ok", "hash", "config", "version", "ids", "notes", "photos"))) {
                        $namespaces = array();
+               }
 
-               if (is_array($data2))
+               if (is_array($data2)) {
                        api_walk_recursive($data2, "api_reformat_xml");
+               }
 
                if ($key == "0") {
                        $data4 = array();
                        $i = 1;
 
-                       foreach ($data2 AS $item)
+                       foreach ($data2 AS $item) {
                                $data4[$i++.":".$childname] = $item;
+                       }
 
                        $data2 = $data4;
                }
@@ -833,11 +885,11 @@ use \Friendica\Core\Config;
         *
         * @return (string|object) XML data or JSON data
         */
-       function api_format_data($root_element, $type, $data){
+       function api_format_data($root_element, $type, $data) {
 
                $a = get_app();
 
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                        case "xml":
@@ -860,11 +912,13 @@ use \Friendica\Core\Config;
         * returns a 401 status code and an error message if not.
         * http://developer.twitter.com/doc/get/account/verify_credentials
         */
-       function api_account_verify_credentials($type){
+       function api_account_verify_credentials($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                unset($_REQUEST["user_id"]);
                unset($_GET["user_id"]);
@@ -872,7 +926,7 @@ use \Friendica\Core\Config;
                unset($_REQUEST["screen_name"]);
                unset($_GET["screen_name"]);
 
-               $skip_status = (x($_REQUEST,'skip_status')?$_REQUEST['skip_status']:false);
+               $skip_status = (x($_REQUEST, 'skip_status')?$_REQUEST['skip_status'] : false);
 
                $user_info = api_get_user($a);
 
@@ -882,10 +936,11 @@ use \Friendica\Core\Config;
                // - Adding last status
                if (!$skip_status) {
                        $user_info["status"] = api_status_show("raw");
-                       if (!count($user_info["status"]))
+                       if (!count($user_info["status"])) {
                                unset($user_info["status"]);
-                       else
+                       } else {
                                unset($user_info["status"]["user"]);
+                       }
                }
 
                // "uid" and "self" are only needed for some internal stuff, so remove it from here
@@ -895,17 +950,18 @@ use \Friendica\Core\Config;
                return api_format_data("user", $type, array('user' => $user_info));
 
        }
-       api_register_func('api/account/verify_credentials','api_account_verify_credentials', true);
 
+       /// @TODO move to top of file or somwhere better
+       api_register_func('api/account/verify_credentials','api_account_verify_credentials', true);
 
        /**
         * get data from $_POST or $_GET
         */
-       function requestdata($k){
-               if (isset($_POST[$k])){
+       function requestdata($k) {
+               if (x($_POST, $k)) {
                        return $_POST[$k];
                }
-               if (isset($_GET[$k])){
+               if (x($_GET, $k)) {
                        return $_GET[$k];
                }
                return null;
@@ -916,7 +972,7 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               if (api_user()===false) {
+               if (api_user() === false) {
                        logger('api_statuses_update: no user');
                        throw new ForbiddenException();
                }
@@ -926,9 +982,10 @@ use \Friendica\Core\Config;
                $_REQUEST['profile_uid'] = api_user();
                $_REQUEST['api_source'] = true;
                $txt = requestdata('status');
+               /// @TODO old-lost code?
                //$txt = urldecode(requestdata('status'));
 
-               if((strpos($txt,'<') !== false) || (strpos($txt,'>') !== false)) {
+               if ((strpos($txt,'<') !== false) || (strpos($txt,'>') !== false)) {
 
                        $txt = html2bb_video($txt);
                        $config = HTMLPurifier_Config::createDefault();
@@ -940,25 +997,26 @@ use \Friendica\Core\Config;
 
                $a->argv[1]=$user_info['screen_name']; //should be set to username?
 
-               $_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo
+               // tell wall_upload function to return img info instead of echo
+               $_REQUEST['hush'] = 'yeah';
                $bebop = wall_upload_post($a);
 
-               //now that we have the img url in bbcode we can add it to the status and insert the wall item.
-               $_REQUEST['body']=$txt."\n\n".$bebop;
+               // now that we have the img url in bbcode we can add it to the status and insert the wall item.
+               $_REQUEST['body'] = $txt . "\n\n" . $bebop;
                item_post($a);
 
                // this should output the last post (the one we just posted).
                return api_status_show($type);
        }
-       api_register_func('api/statuses/mediap','api_statuses_mediap', true, API_METHOD_POST);
-/*Waitman Gobble Mod*/
 
+       /// @TODO move this to top of file or somewhere better!
+       api_register_func('api/statuses/mediap','api_statuses_mediap', true, API_METHOD_POST);
 
        function api_statuses_update($type) {
 
                $a = get_app();
 
-               if (api_user()===false) {
+               if (api_user() === false) {
                        logger('api_statuses_update: no user');
                        throw new ForbiddenException();
                }
@@ -969,9 +1027,9 @@ use \Friendica\Core\Config;
 
                // logger('api_post: ' . print_r($_POST,true));
 
-               if(requestdata('htmlstatus')) {
+               if (requestdata('htmlstatus')) {
                        $txt = requestdata('htmlstatus');
-                       if((strpos($txt,'<') !== false) || (strpos($txt,'>') !== false)) {
+                       if ((strpos($txt, '<') !== false) || (strpos($txt, '>') !== false)) {
                                $txt = html2bb_video($txt);
 
                                $config = HTMLPurifier_Config::createDefault();
@@ -983,29 +1041,33 @@ use \Friendica\Core\Config;
                                $_REQUEST['body'] = html2bbcode($txt);
                        }
 
-               } else
+               } else {
                        $_REQUEST['body'] = requestdata('status');
+               }
 
                $_REQUEST['title'] = requestdata('title');
 
                $parent = requestdata('in_reply_to_status_id');
 
                // Twidere sends "-1" if it is no reply ...
-               if ($parent == -1)
+               if ($parent == -1) {
                        $parent = "";
+               }
 
-               if(ctype_digit($parent))
+               if (ctype_digit($parent)) {
                        $_REQUEST['parent'] = $parent;
-               else
+               } else {
                        $_REQUEST['parent_uri'] = $parent;
+               }
 
-               if(requestdata('lat') && requestdata('long'))
-                       $_REQUEST['coord'] = sprintf("%s %s",requestdata('lat'),requestdata('long'));
+               if (requestdata('lat') && requestdata('long')) {
+                       $_REQUEST['coord'] = sprintf("%s %s", requestdata('lat'), requestdata('long'));
+               }
                $_REQUEST['profile_uid'] = api_user();
 
-               if($parent)
+               if ($parent) {
                        $_REQUEST['type'] = 'net-comment';
-               else {
+               else {
                        // Check for throttling (maximum posts per day, week and month)
                        $throttle_day = get_config('system','throttle_limit_day');
                        if ($throttle_day > 0) {
@@ -1015,14 +1077,15 @@ use \Friendica\Core\Config;
                                        AND `created` > '%s' AND `id` = `parent`",
                                        intval(api_user()), dbesc($datefrom));
 
-                               if ($r)
+                               if (dbm::is_result($r)) {
                                        $posts_day = $r[0]["posts_day"];
-                               else
+                               } else {
                                        $posts_day = 0;
+                               }
 
                                if ($posts_day > $throttle_day) {
                                        logger('Daily posting limit reached for user '.api_user(), LOGGER_DEBUG);
-                                       #die(api_error($type, sprintf(t("Daily posting limit of %d posts reached. The post was rejected."), $throttle_day)));
+                                       // die(api_error($type, sprintf(t("Daily posting limit of %d posts reached. The post was rejected."), $throttle_day)));
                                        throw new TooManyRequestsException(sprintf(t("Daily posting limit of %d posts reached. The post was rejected."), $throttle_day));
                                }
                        }
@@ -1035,16 +1098,16 @@ use \Friendica\Core\Config;
                                        AND `created` > '%s' AND `id` = `parent`",
                                        intval(api_user()), dbesc($datefrom));
 
-                               if ($r)
+                               if (dbm::is_result($r)) {
                                        $posts_week = $r[0]["posts_week"];
-                               else
+                               } else {
                                        $posts_week = 0;
+                               }
 
                                if ($posts_week > $throttle_week) {
                                        logger('Weekly posting limit reached for user '.api_user(), LOGGER_DEBUG);
-                                       #die(api_error($type, sprintf(t("Weekly posting limit of %d posts reached. The post was rejected."), $throttle_week)));
+                                       // die(api_error($type, sprintf(t("Weekly posting limit of %d posts reached. The post was rejected."), $throttle_week)));
                                        throw new TooManyRequestsException(sprintf(t("Weekly posting limit of %d posts reached. The post was rejected."), $throttle_week));
-
                                }
                        }
 
@@ -1056,14 +1119,15 @@ use \Friendica\Core\Config;
                                        AND `created` > '%s' AND `id` = `parent`",
                                        intval(api_user()), dbesc($datefrom));
 
-                               if ($r)
+                               if (dbm::is_result($r)) {
                                        $posts_month = $r[0]["posts_month"];
-                               else
+                               } else {
                                        $posts_month = 0;
+                               }
 
                                if ($posts_month > $throttle_month) {
                                        logger('Monthly posting limit reached for user '.api_user(), LOGGER_DEBUG);
-                                       #die(api_error($type, sprintf(t("Monthly posting limit of %d posts reached. The post was rejected."), $throttle_month)));
+                                       // die(api_error($type, sprintf(t("Monthly posting limit of %d posts reached. The post was rejected."), $throttle_month)));
                                        throw new TooManyRequestsException(sprintf(t("Monthly posting limit of %d posts reached. The post was rejected."), $throttle_month));
                                }
                        }
@@ -1071,23 +1135,24 @@ use \Friendica\Core\Config;
                        $_REQUEST['type'] = 'wall';
                }
 
-               if(x($_FILES,'media')) {
+               if (x($_FILES, 'media')) {
                        // upload the image if we have one
-                       $_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo
+                       $_REQUEST['hush'] = 'yeah'; //tell wall_upload function to return img info instead of echo
                        $media = wall_upload_post($a);
-                       if(strlen($media)>0)
-                               $_REQUEST['body'] .= "\n\n".$media;
+                       if (strlen($media) > 0) {
+                               $_REQUEST['body'] .= "\n\n" . $media;
+                       }
                }
 
                // To-Do: Multiple IDs
                if (requestdata('media_ids')) {
                        $r = q("SELECT `resource-id`, `scale`, `nickname`, `type` FROM `photo` INNER JOIN `user` ON `user`.`uid` = `photo`.`uid` WHERE `resource-id` IN (SELECT `resource-id` FROM `photo` WHERE `id` = %d) AND `scale` > 0 AND `photo`.`uid` = %d ORDER BY `photo`.`width` DESC LIMIT 1",
                                intval(requestdata('media_ids')), api_user());
-                       if ($r) {
+                       if (dbm::is_result($r)) {
                                $phototypes = Photo::supportedTypes();
                                $ext = $phototypes[$r[0]['type']];
-                               $_REQUEST['body'] .= "\n\n".'[url='.App::get_baseurl().'/photos/'.$r[0]['nickname'].'/image/'.$r[0]['resource-id'].']';
-                               $_REQUEST['body'] .= '[img]'.App::get_baseurl()."/photo/".$r[0]['resource-id']."-".$r[0]['scale'].".".$ext."[/img][/url]";
+                               $_REQUEST['body'] .= "\n\n" . '[url=' . App::get_baseurl() . '/photos/' . $r[0]['nickname'] . '/image/' . $r[0]['resource-id'] . ']';
+                               $_REQUEST['body'] .= '[img]' . App::get_baseurl() . '/photo/' . $r[0]['resource-id'] . '-' . $r[0]['scale'] . '.' . $ext . '[/img][/url]';
                        }
                }
 
@@ -1095,38 +1160,39 @@ use \Friendica\Core\Config;
 
                $_REQUEST['api_source'] = true;
 
-               if (!x($_REQUEST, "source"))
+               if (!x($_REQUEST, "source")) {
                        $_REQUEST["source"] = api_source();
+               }
 
                // call out normal post function
-
                item_post($a);
 
                // this should output the last post (the one we just posted).
                return api_status_show($type);
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/statuses/update','api_statuses_update', true, API_METHOD_POST);
        api_register_func('api/statuses/update_with_media','api_statuses_update', true, API_METHOD_POST);
 
-
        function api_media_upload($type) {
 
                $a = get_app();
 
-               if (api_user()===false) {
+               if (api_user() === false) {
                        logger('no user');
                        throw new ForbiddenException();
                }
 
                $user_info = api_get_user($a);
 
-               if(!x($_FILES,'media')) {
+               if (!x($_FILES, 'media')) {
                        // Output error
                        throw new BadRequestException("No media.");
                }
 
                $media = wall_upload_post($a, false);
-               if(!$media) {
+               if (!$media) {
                        // Output error
                        throw new InternalServerErrorException();
                }
@@ -1139,13 +1205,15 @@ use \Friendica\Core\Config;
                                                "h" => $media["height"],
                                                "image_type" => $media["type"]);
 
-               logger("Media uploaded: ".print_r($returndata, true), LOGGER_DEBUG);
+               logger("Media uploaded: " . print_r($returndata, true), LOGGER_DEBUG);
 
                return array("media" => $returndata);
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/media/upload','api_media_upload', true, API_METHOD_POST);
 
-       function api_status_show($type){
+       function api_status_show($type) {
 
                $a = get_app();
 
@@ -1153,10 +1221,11 @@ use \Friendica\Core\Config;
 
                logger('api_status_show: user_info: '.print_r($user_info, true), LOGGER_DEBUG);
 
-               if ($type == "raw")
+               if ($type == "raw") {
                        $privacy_sql = "AND `item`.`allow_cid`='' AND `item`.`allow_gid`='' AND `item`.`deny_cid`='' AND `item`.`deny_gid`=''";
-               else
+               } else {
                        $privacy_sql = "";
+               }
 
                // get last public wall message
                $lastwall = q("SELECT `item`.*
@@ -1174,17 +1243,18 @@ use \Friendica\Core\Config;
                                dbesc(normalise_link($user_info['url']))
                );
 
-               if (count($lastwall)>0){
+               if (dbm::is_result($lastwall)) {
                        $lastwall = $lastwall[0];
 
                        $in_reply_to = api_in_reply_to($lastwall);
 
                        $converted = api_convert_item($lastwall);
 
-                       if ($type == "xml")
+                       if ($type == "xml") {
                                $geo = "georss:point";
-                       else
+                       } else {
                                $geo = "geo";
+                       }
 
                        $status_info = array(
                                'created_at' => api_date($lastwall['created']),
@@ -1214,16 +1284,19 @@ use \Friendica\Core\Config;
                                'statusnet_conversation_id'     => $lastwall['parent'],
                        );
 
-                       if (count($converted["attachments"]) > 0)
+                       if (count($converted["attachments"]) > 0) {
                                $status_info["attachments"] = $converted["attachments"];
+                       }
 
-                       if (count($converted["entities"]) > 0)
+                       if (count($converted["entities"]) > 0) {
                                $status_info["entities"] = $converted["entities"];
+                       }
 
-                       if (($lastwall['item_network'] != "") AND ($status["source"] == 'web'))
+                       if (($lastwall['item_network'] != "") AND ($status["source"] == 'web')) {
                                $status_info["source"] = network_to_name($lastwall['item_network'], $user_info['url']);
-                       elseif (($lastwall['item_network'] != "") AND (network_to_name($lastwall['item_network'], $user_info['url']) != $status_info["source"]))
+                       } elseif (($lastwall['item_network'] != "") AND (network_to_name($lastwall['item_network'], $user_info['url']) != $status_info["source"])) {
                                $status_info["source"] = trim($status_info["source"].' ('.network_to_name($lastwall['item_network'], $user_info['url']).')');
+                       }
 
                        // "uid" and "self" are only needed for some internal stuff, so remove it from here
                        unset($status_info["user"]["uid"]);
@@ -1232,23 +1305,20 @@ use \Friendica\Core\Config;
 
                logger('status_info: '.print_r($status_info, true), LOGGER_DEBUG);
 
-               if ($type == "raw")
-                       return($status_info);
+               if ($type == "raw") {
+                       return $status_info;
+               }
 
-               return  api_format_data("statuses", $type, array('status' => $status_info));
+               return api_format_data("statuses", $type, array('status' => $status_info));
 
        }
 
-
-
-
-
        /**
         * Returns extended information of a given user, specified by ID or screen name as per the required id parameter.
         * The author's most recent status will be returned inline.
         * http://developer.twitter.com/doc/get/users/show
         */
-       function api_users_show($type){
+       function api_users_show($type) {
 
                $a = get_app();
 
@@ -1271,17 +1341,18 @@ use \Friendica\Core\Config;
                                dbesc(normalise_link($user_info['url']))
                );
 
-               if (count($lastwall)>0){
+               if (dbm::is_result($lastwall)) {
                        $lastwall = $lastwall[0];
 
                        $in_reply_to = api_in_reply_to($lastwall);
 
                        $converted = api_convert_item($lastwall);
 
-                       if ($type == "xml")
+                       if ($type == "xml") {
                                $geo = "georss:point";
-                       else
+                       } else {
                                $geo = "geo";
+                       }
 
                        $user_info['status'] = array(
                                'text' => $converted["text"],
@@ -1297,20 +1368,25 @@ use \Friendica\Core\Config;
                                'in_reply_to_screen_name' => $in_reply_to['screen_name'],
                                $geo => NULL,
                                'favorited' => $lastwall['starred'] ? true : false,
-                               'statusnet_html'                => $converted["html"],
+                               'statusnet_html' => $converted["html"],
                                'statusnet_conversation_id'     => $lastwall['parent'],
                        );
 
-                       if (count($converted["attachments"]) > 0)
+                       if (count($converted["attachments"]) > 0) {
                                $user_info["status"]["attachments"] = $converted["attachments"];
+                       }
 
-                       if (count($converted["entities"]) > 0)
+                       if (count($converted["entities"]) > 0) {
                                $user_info["status"]["entities"] = $converted["entities"];
+                       }
 
-                       if (($lastwall['item_network'] != "") AND ($user_info["status"]["source"] == 'web'))
+                       if (($lastwall['item_network'] != "") AND ($user_info["status"]["source"] == 'web')) {
                                $user_info["status"]["source"] = network_to_name($lastwall['item_network'], $user_info['url']);
-                       if (($lastwall['item_network'] != "") AND (network_to_name($lastwall['item_network'], $user_info['url']) != $user_info["status"]["source"]))
-                               $user_info["status"]["source"] = trim($user_info["status"]["source"].' ('.network_to_name($lastwall['item_network'], $user_info['url']).')');
+                       }
+
+                       if (($lastwall['item_network'] != "") AND (network_to_name($lastwall['item_network'], $user_info['url']) != $user_info["status"]["source"])) {
+                               $user_info["status"]["source"] = trim($user_info["status"]["source"] . ' (' . network_to_name($lastwall['item_network'], $user_info['url']) . ')');
+                       }
 
                }
 
@@ -1318,34 +1394,38 @@ use \Friendica\Core\Config;
                unset($user_info["uid"]);
                unset($user_info["self"]);
 
-               return  api_format_data("user", $type, array('user' => $user_info));
+               return api_format_data("user", $type, array('user' => $user_info));
 
        }
-       api_register_func('api/users/show','api_users_show');
 
+       /// @TODO move to top of file or somewhere better
+       api_register_func('api/users/show','api_users_show');
 
        function api_users_search($type) {
 
                $a = get_app();
 
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
+               $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] - 1 : 0);
 
                $userlist = array();
 
-               if (isset($_GET["q"])) {
+               if (x($_GET, 'q')) {
                        $r = q("SELECT id FROM `contact` WHERE `uid` = 0 AND `name` = '%s'", dbesc($_GET["q"]));
-                       if (!dbm::is_result($r))
+
+                       if (!dbm::is_result($r)) {
                                $r = q("SELECT `id` FROM `contact` WHERE `uid` = 0 AND `nick` = '%s'", dbesc($_GET["q"]));
+                       }
 
                        if (dbm::is_result($r)) {
                                $k = 0;
                                foreach ($r AS $user) {
                                        $user_info = api_get_user($a, $user["id"], "json");
 
-                                       if ($type == "xml")
+                                       if ($type == "xml") {
                                                $userlist[$k++.":user"] = $user_info;
-                                       else
+                                       } else {
                                                $userlist[] = $user_info;
+                                       }
                                }
                                $userlist = array("users" => $userlist);
                        } else {
@@ -1357,6 +1437,7 @@ use \Friendica\Core\Config;
                return api_format_data("users", $type, $userlist);
        }
 
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/users/search','api_users_search');
 
        /**
@@ -1366,11 +1447,13 @@ use \Friendica\Core\Config;
         * TODO: Optional parameters
         * TODO: Add reply info
         */
-       function api_statuses_home_timeline($type){
+       function api_statuses_home_timeline($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                unset($_REQUEST["user_id"]);
                unset($_GET["user_id"]);
@@ -1382,24 +1465,29 @@ use \Friendica\Core\Config;
                // get last newtork messages
 
                // params
-               $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-               if ($page<0) $page=0;
-               $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
-               //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0);
-               $conversation_id = (x($_REQUEST,'conversation_id')?$_REQUEST['conversation_id']:0);
+               $count = (x($_REQUEST, 'count') ? $_REQUEST['count'] : 20);
+               $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] - 1 : 0);
+               if ($page < 0) {
+                       $page = 0;
+               }
+               $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+               $max_id = (x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0);
+               //$since_id = 0;//$since_id = (x($_REQUEST, 'since_id')?$_REQUEST['since_id'] : 0);
+               $exclude_replies = (x($_REQUEST, 'exclude_replies') ? 1 : 0);
+               $conversation_id = (x($_REQUEST, 'conversation_id') ? $_REQUEST['conversation_id'] : 0);
 
-               $start = $page*$count;
+               $start = $page * $count;
 
                $sql_extra = '';
-               if ($max_id > 0)
-                       $sql_extra .= ' AND `item`.`id` <= '.intval($max_id);
-               if ($exclude_replies > 0)
+               if ($max_id > 0) {
+                       $sql_extra .= ' AND `item`.`id` <= ' . intval($max_id);
+               }
+               if ($exclude_replies > 0) {
                        $sql_extra .= ' AND `item`.`parent` = `item`.`id`';
-               if ($conversation_id > 0)
-                       $sql_extra .= ' AND `item`.`parent` = '.intval($conversation_id);
+               }
+               if ($conversation_id > 0) {
+                       $sql_extra .= ' AND `item`.`parent` = ' . intval($conversation_id);
+               }
 
                $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@@ -1419,63 +1507,73 @@ use \Friendica\Core\Config;
                        intval($start), intval($count)
                );
 
-               $ret = api_format_items($r,$user_info, false, $type);
+               $ret = api_format_items($r, $user_info, false, $type);
 
                // Set all posts from the query above to seen
                $idarray = array();
-               foreach ($r AS $item)
+               foreach ($r AS $item) {
                        $idarray[] = intval($item["id"]);
+               }
 
                $idlist = implode(",", $idarray);
 
                if ($idlist != "") {
                        $unseen = q("SELECT `id` FROM `item` WHERE `unseen` AND `id` IN (%s)", $idlist);
 
-                       if ($unseen)
+                       if ($unseen) {
                                $r = q("UPDATE `item` SET `unseen` = 0 WHERE `unseen` AND `id` IN (%s)", $idlist);
+                       }
                }
 
                $data = array('status' => $ret);
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
                                break;
                }
 
-               return  api_format_data("statuses", $type, $data);
+               return api_format_data("statuses", $type, $data);
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/statuses/home_timeline','api_statuses_home_timeline', true);
        api_register_func('api/statuses/friends_timeline','api_statuses_home_timeline', true);
 
-       function api_statuses_public_timeline($type){
+       function api_statuses_public_timeline($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                $user_info = api_get_user($a);
                // get last newtork messages
 
-
                // params
-               $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-               if ($page<0) $page=0;
-               $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
-               //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0);
-               $conversation_id = (x($_REQUEST,'conversation_id')?$_REQUEST['conversation_id']:0);
+               $count = (x($_REQUEST, 'count') ? $_REQUEST['count'] : 20);
+               $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] -1 : 0);
+               if ($page < 0) {
+                       $page = 0;
+               }
+               $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+               $max_id = (x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0);
+               //$since_id = 0;//$since_id = (x($_REQUEST, 'since_id')?$_REQUEST['since_id'] : 0);
+               $exclude_replies = (x($_REQUEST, 'exclude_replies') ? 1 : 0);
+               $conversation_id = (x($_REQUEST, 'conversation_id') ? $_REQUEST['conversation_id'] : 0);
 
-               $start = $page*$count;
+               $start = $page * $count;
 
-               if ($max_id > 0)
-                       $sql_extra = 'AND `item`.`id` <= '.intval($max_id);
-               if ($exclude_replies > 0)
+               if ($max_id > 0) {
+                       $sql_extra = 'AND `item`.`id` <= ' . intval($max_id);
+               }
+               if ($exclude_replies > 0) {
                        $sql_extra .= ' AND `item`.`parent` = `item`.`id`';
-               if ($conversation_id > 0)
-                       $sql_extra .= ' AND `item`.`parent` = '.intval($conversation_id);
+               }
+               if ($conversation_id > 0) {
+                       $sql_extra .= ' AND `item`.`parent` = ' . intval($conversation_id);
+               }
 
                $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@@ -1499,51 +1597,57 @@ use \Friendica\Core\Config;
                        intval($start),
                        intval($count));
 
-               $ret = api_format_items($r,$user_info, false, $type);
-
+               $ret = api_format_items($r, $user_info, false, $type);
 
                $data = array('status' => $ret);
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
                                break;
                }
 
-               return  api_format_data("statuses", $type, $data);
+               return api_format_data("statuses", $type, $data);
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/statuses/public_timeline','api_statuses_public_timeline', true);
 
        /**
-        *
+        * @TODO nothing to say?
         */
-       function api_statuses_show($type){
+       function api_statuses_show($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                $user_info = api_get_user($a);
 
                // params
                $id = intval($a->argv[3]);
 
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($_REQUEST["id"]);
+               }
 
                // Hotot workaround
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($a->argv[4]);
+               }
 
-               logger('API: api_statuses_show: '.$id);
+               logger('API: api_statuses_show: ' . $id);
 
-               $conversation = (x($_REQUEST,'conversation')?1:0);
+               $conversation = (x($_REQUEST, 'conversation') ? 1 : 0);
 
                $sql_extra = '';
-               if ($conversation)
+               if ($conversation) {
                        $sql_extra .= " AND `item`.`parent` = %d ORDER BY `id` ASC ";
-               else
+               } else {
                        $sql_extra .= " AND `item`.`id` = %d";
+               }
 
                $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@@ -1560,7 +1664,8 @@ use \Friendica\Core\Config;
                        intval($id)
                );
 
-               if (!$r) {
+               /// @TODO How about copying this to above methods which don't check $r ?
+               if (!dbm::is_result($r)) {
                        throw new BadRequestException("There is no status with this id.");
                }
 
@@ -1571,50 +1676,59 @@ use \Friendica\Core\Config;
                        return api_format_data("statuses", $type, $data);
                } else {
                        $data = array('status' => $ret[0]);
-                       return  api_format_data("status", $type, $data);
+                       return api_format_data("status", $type, $data);
                }
        }
-       api_register_func('api/statuses/show','api_statuses_show', true);
 
+       /// @TODO move to top of file or somewhere better
+       api_register_func('api/statuses/show','api_statuses_show', true);
 
        /**
-        *
+        * @TODO nothing to say?
         */
-       function api_conversation_show($type){
+       function api_conversation_show($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                $user_info = api_get_user($a);
 
                // params
                $id = intval($a->argv[3]);
-               $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-               if ($page<0) $page=0;
-               $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
+               $count = (x($_REQUEST, 'count') ? $_REQUEST['count'] : 20);
+               $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] - 1 : 0);
+               if ($page < 0) {
+                       $page = 0;
+               }
+               $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+               $max_id = (x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0);
 
                $start = $page*$count;
 
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($_REQUEST["id"]);
+               }
 
                // Hotot workaround
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($a->argv[4]);
+               }
 
                logger('API: api_conversation_show: '.$id);
 
                $r = q("SELECT `parent` FROM `item` WHERE `id` = %d", intval($id));
-               if ($r)
+               if (dbm::is_result($r)) {
                        $id = $r[0]["parent"];
+               }
 
                $sql_extra = '';
 
-               if ($max_id > 0)
-                       $sql_extra = ' AND `item`.`id` <= '.intval($max_id);
+               if ($max_id > 0) {
+                       $sql_extra = ' AND `item`.`id` <= ' . intval($max_id);
+               }
 
                // Not sure why this query was so complicated. We should keep it here for a while,
                // just to make sure that we really don't need it.
@@ -1639,39 +1753,45 @@ use \Friendica\Core\Config;
                        intval($start), intval($count)
                );
 
-               if (!$r)
-                       throw new BadRequestException("There is no conversation with this id.");
+               if (!dbm::is_result($r)) {
+                       throw new BadRequestException("There is no status with this id.");
+               }
 
-               $ret = api_format_items($r,$user_info, false, $type);
+               $ret = api_format_items($r, $user_info, false, $type);
 
                $data = array('status' => $ret);
                return api_format_data("statuses", $type, $data);
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/conversation/show','api_conversation_show', true);
        api_register_func('api/statusnet/conversation','api_conversation_show', true);
 
-
        /**
-        *
+        * @TODO nothing to say?
         */
-       function api_statuses_repeat($type){
+       function api_statuses_repeat($type) {
                global $called_api;
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                $user_info = api_get_user($a);
 
                // params
                $id = intval($a->argv[3]);
 
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($_REQUEST["id"]);
+               }
 
                // Hotot workaround
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($a->argv[4]);
+               }
 
                logger('API: api_statuses_repeat: '.$id);
 
@@ -1690,7 +1810,8 @@ use \Friendica\Core\Config;
                        intval($id)
                );
 
-               if ($r[0]['body'] != "") {
+               /// @TODO other style than above functions!
+               if (dbm::is_result($r) && $r[0]['body'] != "") {
                        if (strpos($r[0]['body'], "[/share]") !== false) {
                                $pos = strpos($r[0]['body'], "[share");
                                $post = substr($r[0]['body'], $pos);
@@ -1705,39 +1826,47 @@ use \Friendica\Core\Config;
                        $_REQUEST['type'] = 'wall';
                        $_REQUEST['api_source'] = true;
 
-                       if (!x($_REQUEST, "source"))
+                       if (!x($_REQUEST, "source")) {
                                $_REQUEST["source"] = api_source();
+                       }
 
                        item_post($a);
-               } else
+               } else {
                        throw new ForbiddenException();
+               }
 
                // this should output the last post (the one we just posted).
                $called_api = null;
-               return(api_status_show($type));
+               return api_status_show($type);
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/statuses/retweet','api_statuses_repeat', true, API_METHOD_POST);
 
        /**
-        *
+        * @TODO nothing to say?
         */
-       function api_statuses_destroy($type){
+       function api_statuses_destroy($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                $user_info = api_get_user($a);
 
                // params
                $id = intval($a->argv[3]);
 
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($_REQUEST["id"]);
+               }
 
                // Hotot workaround
-               if ($id == 0)
+               if ($id == 0) {
                        $id = intval($a->argv[4]);
+               }
 
                logger('API: api_statuses_destroy: '.$id);
 
@@ -1745,20 +1874,23 @@ use \Friendica\Core\Config;
 
                drop_item($id, false);
 
-               return($ret);
+               return $ret;
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/statuses/destroy','api_statuses_destroy', true, API_METHOD_DELETE);
 
        /**
-        *
+        * @TODO Nothing more than an URL to say?
         * http://developer.twitter.com/doc/get/statuses/mentions
-        *
         */
-       function api_statuses_mentions($type){
+       function api_statuses_mentions($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                unset($_REQUEST["user_id"]);
                unset($_GET["user_id"]);
@@ -1771,24 +1903,27 @@ use \Friendica\Core\Config;
 
 
                // params
-               $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-               if ($page<0) $page=0;
-               $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
-               //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
+               $count = (x($_REQUEST, 'count') ? $_REQUEST['count'] : 20);
+               $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] -1 : 0);
+               if ($page < 0) {
+                       $page = 0;
+               }
+               $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+               $max_id = (x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0);
+               //$since_id = 0;//$since_id = (x($_REQUEST, 'since_id')?$_REQUEST['since_id'] : 0);
 
-               $start = $page*$count;
+               $start = $page * $count;
 
                // Ugly code - should be changed
                $myurl = App::get_baseurl() . '/profile/'. $a->user['nickname'];
-               $myurl = substr($myurl,strpos($myurl,'://')+3);
+               $myurl = substr($myurl,strpos($myurl, '://') + 3);
                //$myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
-               $myurl = str_replace('www.','',$myurl);
-               $diasp_url = str_replace('/profile/','/u/',$myurl);
+               $myurl = str_replace('www.', '', $myurl);
+               $diasp_url = str_replace('/profile/', '/u/', $myurl);
 
-               if ($max_id > 0)
-                       $sql_extra = ' AND `item`.`id` <= '.intval($max_id);
+               if ($max_id > 0) {
+                       $sql_extra = ' AND `item`.`id` <= ' . intval($max_id);
+               }
 
                $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@@ -1813,28 +1948,30 @@ use \Friendica\Core\Config;
                        intval($start), intval($count)
                );
 
-               $ret = api_format_items($r,$user_info, false, $type);
-
+               $ret = api_format_items($r, $user_info, false, $type);
 
                $data = array('status' => $ret);
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
                                break;
                }
 
-               return  api_format_data("statuses", $type, $data);
+               return api_format_data("statuses", $type, $data);
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/statuses/mentions','api_statuses_mentions', true);
        api_register_func('api/statuses/replies','api_statuses_mentions', true);
 
-
-       function api_statuses_user_timeline($type){
+       function api_statuses_user_timeline($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                $user_info = api_get_user($a);
                // get last network messages
@@ -1845,24 +1982,29 @@ use \Friendica\Core\Config;
                           LOGGER_DEBUG);
 
                // params
-               $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-               if ($page<0) $page=0;
-               $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0);
-               $conversation_id = (x($_REQUEST,'conversation_id')?$_REQUEST['conversation_id']:0);
+               $count = (x($_REQUEST, 'count') ? $_REQUEST['count'] : 20);
+               $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] -1 : 0);
+               if ($page < 0) {
+                       $page = 0;
+               }
+               $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+               //$since_id = 0;//$since_id = (x($_REQUEST, 'since_id')?$_REQUEST['since_id'] : 0);
+               $exclude_replies = (x($_REQUEST, 'exclude_replies') ? 1 : 0);
+               $conversation_id = (x($_REQUEST, 'conversation_id') ? $_REQUEST['conversation_id'] : 0);
 
-               $start = $page*$count;
+               $start = $page * $count;
 
                $sql_extra = '';
-               if ($user_info['self']==1)
+               if ($user_info['self'] == 1) {
                        $sql_extra .= " AND `item`.`wall` = 1 ";
+               }
 
-               if ($exclude_replies > 0)
+               if ($exclude_replies > 0) {
                        $sql_extra .= ' AND `item`.`parent` = `item`.`id`';
-               if ($conversation_id > 0)
-                       $sql_extra .= ' AND `item`.`parent` = '.intval($conversation_id);
+               }
+               if ($conversation_id > 0) {
+                       $sql_extra .= ' AND `item`.`parent` = ' . intval($conversation_id);
+               }
 
                $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                        `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@@ -1884,19 +2026,21 @@ use \Friendica\Core\Config;
                        intval($start), intval($count)
                );
 
-               $ret = api_format_items($r,$user_info, true, $type);
+               $ret = api_format_items($r, $user_info, true, $type);
 
                $data = array('status' => $ret);
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
+                               break;
                }
 
-               return  api_format_data("statuses", $type, $data);
+               return api_format_data("statuses", $type, $data);
        }
-       api_register_func('api/statuses/user_timeline','api_statuses_user_timeline', true);
 
+       /// @TODO move to top of file or somwhere better
+       api_register_func('api/statuses/user_timeline','api_statuses_user_timeline', true);
 
        /**
         * Star/unstar an item
@@ -1904,49 +2048,59 @@ use \Friendica\Core\Config;
         *
         * api v1 : https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid
         */
-       function api_favorites_create_destroy($type){
+       function api_favorites_create_destroy($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                // for versioned api.
                /// @TODO We need a better global soluton
-               $action_argv_id=2;
-               if ($a->argv[1]=="1.1") $action_argv_id=3;
+               $action_argv_id = 2;
+               if ($a->argv[1] == "1.1") {
+                       $action_argv_id = 3;
+               }
 
-               if ($a->argc<=$action_argv_id) throw new BadRequestException("Invalid request.");
-               $action = str_replace(".".$type,"",$a->argv[$action_argv_id]);
-               if ($a->argc==$action_argv_id+2) {
-                       $itemid = intval($a->argv[$action_argv_id+1]);
+               if ($a->argc <= $action_argv_id) {
+                       throw new BadRequestException("Invalid request.");
+               }
+               $action = str_replace("." . $type, "", $a->argv[$action_argv_id]);
+               if ($a->argc == $action_argv_id + 2) {
+                       $itemid = intval($a->argv[$action_argv_id + 1]);
                } else {
+                       ///  @TODO use x() to check if _REQUEST contains 'id'
                        $itemid = intval($_REQUEST['id']);
                }
 
-               $item = q("SELECT * FROM item WHERE id=%d AND uid=%d",
+               $item = q("SELECT * FROM `item` WHERE `id`=%d AND `uid`=%d LIMIT 1",
                                $itemid, api_user());
 
-               if ($item===false || count($item)==0)
+               if (!dbm::is_result($item) || count($item) == 0) {
                        throw new BadRequestException("Invalid item.");
+               }
 
-               switch($action){
+               switch ($action) {
                        case "create":
-                               $item[0]['starred']=1;
+                               $item[0]['starred'] = 1;
                                break;
                        case "destroy":
-                               $item[0]['starred']=0;
+                               $item[0]['starred'] = 0;
                                break;
                        default:
                                throw new BadRequestException("Invalid action ".$action);
                }
+
                $r = q("UPDATE item SET starred=%d WHERE id=%d AND uid=%d",
                                $item[0]['starred'], $itemid, api_user());
 
                q("UPDATE thread SET starred=%d WHERE iid=%d AND uid=%d",
                        $item[0]['starred'], $itemid, api_user());
 
-               if ($r===false)
-                       throw InternalServerErrorException("DB error");
+               if ($r === false) {
+                       throw new InternalServerErrorException("DB error");
+               }
 
 
                $user_info = api_get_user($a);
@@ -1954,7 +2108,7 @@ use \Friendica\Core\Config;
                $ret = $rets[0];
 
                $data = array('status' => $ret);
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
@@ -1962,17 +2116,21 @@ use \Friendica\Core\Config;
 
                return api_format_data("status", $type, $data);
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/favorites/create', 'api_favorites_create_destroy', true, API_METHOD_POST);
        api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true, API_METHOD_DELETE);
 
-       function api_favorites($type){
+       function api_favorites($type) {
                global $called_api;
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
-               $called_api= array();
+               $called_api = array();
 
                $user_info = api_get_user($a);
 
@@ -1980,22 +2138,25 @@ use \Friendica\Core\Config;
                // return favorites only for self
                logger('api_favorites: self:' . $user_info['self']);
 
-               if ($user_info['self']==0) {
+               if ($user_info['self'] == 0) {
                        $ret = array();
                } else {
                        $sql_extra = "";
 
                        // params
-                       $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-                       $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
-                       $count = (x($_GET,'count')?$_GET['count']:20);
-                       $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-                       if ($page<0) $page=0;
+                       $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+                       $max_id = (x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0);
+                       $count = (x($_GET, 'count') ? $_GET['count'] : 20);
+                       $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] -1 : 0);
+                       if ($page < 0) {
+                               $page = 0;
+                       }
 
                        $start = $page*$count;
 
-                       if ($max_id > 0)
-                               $sql_extra .= ' AND `item`.`id` <= '.intval($max_id);
+                       if ($max_id > 0) {
+                               $sql_extra .= ' AND `item`.`id` <= ' . intval($max_id);
+                       }
 
                        $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
                                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@@ -2020,14 +2181,16 @@ use \Friendica\Core\Config;
                }
 
                $data = array('status' => $ret);
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
                }
 
-               return  api_format_data("statuses", $type, $data);
+               return api_format_data("statuses", $type, $data);
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/favorites','api_favorites', true);
 
        function api_format_messages($item, $recipient, $sender) {
@@ -2042,9 +2205,9 @@ use \Friendica\Core\Config;
                                'recipient_screen_name' => $recipient['screen_name'],
                                'sender'                => $sender,
                                'recipient'             => $recipient,
-                               'title'                 => "",
-                               'friendica_seen'        => $item['seen'],
-                               'friendica_parent_uri'  => $item['parent-uri'],
+                               'title'                 => "",
+                               'friendica_seen'        => $item['seen'],
+                               'friendica_parent_uri'  => $item['parent-uri'],
                );
 
                // "uid" and "self" are only needed for some internal stuff, so remove it from here
@@ -2056,18 +2219,16 @@ use \Friendica\Core\Config;
                //don't send title to regular StatusNET requests to avoid confusing these apps
                if (x($_GET, 'getText')) {
                        $ret['title'] = $item['title'] ;
-                       if ($_GET["getText"] == "html") {
+                       if ($_GET['getText'] == 'html') {
                                $ret['text'] = bbcode($item['body'], false, false);
-                       }
-                       elseif ($_GET["getText"] == "plain") {
+                       } elseif ($_GET['getText'] == 'plain') {
                                //$ret['text'] = html2plain(bbcode($item['body'], false, false, true), 0);
                                $ret['text'] = trim(html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 2, true), 0));
                        }
+               } else {
+                       $ret['text'] = $item['title'] . "\n" . html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 2, true), 0);
                }
-               else {
-                       $ret['text'] = $item['title']."\n".html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 2, true), 0);
-               }
-               if (isset($_GET["getUserObjects"]) && $_GET["getUserObjects"] == "false") {
+               if (x($_GET, 'getUserObjects') && $_GET['getUserObjects'] == 'false') {
                        unset($ret['sender']);
                        unset($ret['recipient']);
                }
@@ -2088,13 +2249,15 @@ use \Friendica\Core\Config;
 
                $statustitle = trim($item['title']);
 
-               if (($statustitle != '') and (strpos($statusbody, $statustitle) !== false))
+               if (($statustitle != '') and (strpos($statusbody, $statustitle) !== false)) {
                        $statustext = trim($statusbody);
-               else
+               } else {
                        $statustext = trim($statustitle."\n\n".$statusbody);
+               }
 
-               if (($item["network"] == NETWORK_FEED) and (strlen($statustext)> 1000))
+               if (($item["network"] == NETWORK_FEED) and (strlen($statustext)> 1000)) {
                        $statustext = substr($statustext, 0, 1000)."... \n".$item["plink"];
+               }
 
                $statushtml = trim(bbcode($body, false, false));
 
@@ -2108,8 +2271,9 @@ use \Friendica\Core\Config;
                                "\n<h5>", "</h5>\n", "\n<h6>", "</h6>\n");
                $statushtml = str_replace($search, $replace, $statushtml);
 
-               if ($item['title'] != "")
-                       $statushtml = "<h4>".bbcode($item['title'])."</h4>\n".$statushtml;
+               if ($item['title'] != "") {
+                       $statushtml = "<h4>" . bbcode($item['title']) . "</h4>\n" . $statushtml;
+               }
 
                $entities = api_get_entitities($statustext, $body);
 
@@ -2129,21 +2293,25 @@ use \Friendica\Core\Config;
                $URLSearchString = "^\[\]";
                $ret = preg_match_all("/\[img\]([$URLSearchString]*)\[\/img\]/ism", $text, $images);
 
-               if (!$ret)
+               if (!$ret) {
                        return false;
+               }
 
                $attachments = array();
 
                foreach ($images[1] AS $image) {
                        $imagedata = get_photo_info($image);
 
-                       if ($imagedata)
+                       if ($imagedata) {
                                $attachments[] = array("url" => $image, "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]);
+                       }
                }
 
-               if (strstr($_SERVER['HTTP_USER_AGENT'], "AndStatus"))
-                       foreach ($images[0] AS $orig)
+               if (strstr($_SERVER['HTTP_USER_AGENT'], "AndStatus")) {
+                       foreach ($images[0] AS $orig) {
                                $body = str_replace($orig, "", $body);
+                       }
+               }
 
                return $attachments;
        }
@@ -2156,7 +2324,7 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               $include_entities = strtolower(x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:"false");
+               $include_entities = strtolower(x($_REQUEST, 'include_entities') ? $_REQUEST['include_entities'] : "false");
 
                if ($include_entities != "true") {
 
@@ -2202,11 +2370,12 @@ use \Friendica\Core\Config;
                preg_match_all("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", $bbcode, $urls);
 
                $ordered_urls = array();
-               foreach ($urls[1] AS $id=>$url) {
+               foreach ($urls[1] AS $id => $url) {
                        //$start = strpos($text, $url, $offset);
                        $start = iconv_strpos($text, $url, 0, "UTF-8");
-                       if (!($start === false))
+                       if (!($start === false)) {
                                $ordered_urls[$start] = array("url" => $url, "title" => $urls[2][$id]);
+                       }
                }
 
                ksort($ordered_urls);
@@ -2300,9 +2469,9 @@ use \Friendica\Core\Config;
                        }
                }
 
-               return($entities);
+               return $entities;
        }
-       function api_format_items_embeded_images(&$item, $text){
+       function api_format_items_embeded_images(&$item, $text) {
                $text = preg_replace_callback(
                                "|data:image/([^;]+)[^=]+=*|m",
                                function($match) use ($item) {
@@ -2356,7 +2525,7 @@ use \Friendica\Core\Config;
                        'dislike' => array(),
                        'attendyes' => array(),
                        'attendno' => array(),
-                       'attendmaybe' => array()
+                       'attendmaybe' => array(),
                );
 
                $items = q('SELECT * FROM item
@@ -2364,13 +2533,13 @@ use \Friendica\Core\Config;
                                        intval($item['uid']),
                                        dbesc($item['uri']));
 
-               foreach ($items as $i){
+               foreach ($items as $i) {
                        // not used as result should be structured like other user data
                        //builtin_activity_puller($i, $activities);
 
                        // get user data and add it to the array of the activity
                        $user = api_get_user($a, $i['author-link']);
-                       switch($i['verb']) {
+                       switch ($i['verb']) {
                                case ACTIVITY_LIKE:
                                        $activities['like'][] = $user;
                                        break;
@@ -2472,25 +2641,27 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               $ret = Array();
+               $ret = array();
 
-               foreach($r as $item) {
+               foreach ($r as $item) {
 
                        localize_item($item);
-                       list($status_user, $owner_user) = api_item_get_user($a,$item);
+                       list($status_user, $owner_user) = api_item_get_user($a, $item);
 
                        // Look if the posts are matching if they should be filtered by user id
-                       if ($filter_user AND ($status_user["id"] != $user_info["id"]))
+                       if ($filter_user AND ($status_user["id"] != $user_info["id"])) {
                                continue;
+                       }
 
                        $in_reply_to = api_in_reply_to($item);
 
                        $converted = api_convert_item($item);
 
-                       if ($type == "xml")
+                       if ($type == "xml") {
                                $geo = "georss:point";
-                       else
+                       } else {
                                $geo = "geo";
+                       }
 
                        $status = array(
                                'text'          => $converted["text"],
@@ -2514,16 +2685,19 @@ use \Friendica\Core\Config;
                                'friendica_activities' => api_format_items_activities($item, $type),
                        );
 
-                       if (count($converted["attachments"]) > 0)
+                       if (count($converted["attachments"]) > 0) {
                                $status["attachments"] = $converted["attachments"];
+                       }
 
-                       if (count($converted["entities"]) > 0)
+                       if (count($converted["entities"]) > 0) {
                                $status["entities"] = $converted["entities"];
+                       }
 
-                       if (($item['item_network'] != "") AND ($status["source"] == 'web'))
+                       if (($item['item_network'] != "") AND ($status["source"] == 'web')) {
                                $status["source"] = network_to_name($item['item_network'], $user_info['url']);
-                       else if (($item['item_network'] != "") AND (network_to_name($item['item_network'], $user_info['url']) != $status["source"]))
+                       } elseif (($item['item_network'] != "") AND (network_to_name($item['item_network'], $user_info['url']) != $status["source"])) {
                                $status["source"] = trim($status["source"].' ('.network_to_name($item['item_network'], $user_info['url']).')');
+                       }
 
 
                        // Retweets are only valid for top postings
@@ -2538,7 +2712,7 @@ use \Friendica\Core\Config;
                                if ($retweeted_item !== false) {
                                        $retweeted_status = $status;
                                        try {
-                                               $retweeted_status["user"] = api_get_user($a,$retweeted_item["author-link"]);
+                                               $retweeted_status["user"] = api_get_user($a, $retweeted_item["author-link"]);
                                        } catch( BadRequestException $e ) {
                                                // user not found. should be found?
                                                /// @todo check if the user should be always found
@@ -2575,67 +2749,81 @@ use \Friendica\Core\Config;
                return $ret;
        }
 
-
        function api_account_rate_limit_status($type) {
 
-               if ($type == "xml")
+               if ($type == "xml") {
                        $hash = array(
-                                       'remaining-hits' => (string) 150,
+                                       'remaining-hits' => '150',
                                        '@attributes' => array("type" => "integer"),
-                                       'hourly-limit' => (string) 150,
+                                       'hourly-limit' => '150',
                                        '@attributes2' => array("type" => "integer"),
-                                       'reset-time' => datetime_convert('UTC','UTC','now + 1 hour',ATOM_TIME),
+                                       'reset-time' => datetime_convert('UTC', 'UTC','now + 1 hour',ATOM_TIME),
                                        '@attributes3' => array("type" => "datetime"),
                                        'reset_time_in_seconds' => strtotime('now + 1 hour'),
                                        '@attributes4' => array("type" => "integer"),
                                );
-               else
+               } else {
                        $hash = array(
                                        'reset_time_in_seconds' => strtotime('now + 1 hour'),
-                                       'remaining_hits' => (string) 150,
-                                       'hourly_limit' => (string) 150,
-                                       'reset_time' => api_date(datetime_convert('UTC','UTC','now + 1 hour',ATOM_TIME)),
+                                       'remaining_hits' => '150',
+                                       'hourly_limit' => '150',
+                                       'reset_time' => api_date(datetime_convert('UTC', 'UTC','now + 1 hour',ATOM_TIME)),
                                );
+               }
 
                return api_format_data('hash', $type, array('hash' => $hash));
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/account/rate_limit_status','api_account_rate_limit_status',true);
 
        function api_help_test($type) {
-               if ($type == 'xml')
+               if ($type == 'xml') {
                        $ok = "true";
-               else
+               } else {
                        $ok = "ok";
+               }
 
                return api_format_data('ok', $type, array("ok" => $ok));
        }
-       api_register_func('api/help/test','api_help_test',false);
+
+       /// @TODO move to top of file or somwhere better
+       api_register_func('api/help/test','api_help_test', false);
 
        function api_lists($type) {
                $ret = array();
+               /// @TODO $ret is not filled here?
                return api_format_data('lists', $type, array("lists_list" => $ret));
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/lists','api_lists',true);
 
        function api_lists_list($type) {
                $ret = array();
+               /// @TODO $ret is not filled here?
                return api_format_data('lists', $type, array("lists_list" => $ret));
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/lists/list','api_lists_list',true);
 
        /**
-        *  https://dev.twitter.com/docs/api/1/get/statuses/friends
-        *  This function is deprecated by Twitter
-        *  returns: json, xml
-        **/
+        * https://dev.twitter.com/docs/api/1/get/statuses/friends
+        * This function is deprecated by Twitter
+        * returns: json, xml
+        */
        function api_statuses_f($type, $qtype) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
+
                $user_info = api_get_user($a);
 
-               if (x($_GET,'cursor') && $_GET['cursor']=='undefined'){
+               if (x($_GET, 'cursor') && $_GET['cursor']=='undefined') {
                        /* this is to stop Hotot to load friends multiple times
                        *  I'm not sure if I'm missing return something or
                        *  is a bug in hotot. Workaround, meantime
@@ -2646,51 +2834,58 @@ use \Friendica\Core\Config;
                        return false;
                }
 
-               if($qtype == 'friends')
+               if ($qtype == 'friends') {
                        $sql_extra = sprintf(" AND ( `rel` = %d OR `rel` = %d ) ", intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND));
-               if($qtype == 'followers')
+               }
+               if ($qtype == 'followers') {
                        $sql_extra = sprintf(" AND ( `rel` = %d OR `rel` = %d ) ", intval(CONTACT_IS_FOLLOWER), intval(CONTACT_IS_FRIEND));
+               }
 
                // friends and followers only for self
-               if ($user_info['self'] == 0)
+               if ($user_info['self'] == 0) {
                        $sql_extra = " AND false ";
+               }
 
                $r = q("SELECT `nurl` FROM `contact` WHERE `uid` = %d AND NOT `self` AND (NOT `blocked` OR `pending`) $sql_extra",
                        intval(api_user())
                );
 
                $ret = array();
-               foreach($r as $cid){
+               foreach ($r as $cid) {
                        $user = api_get_user($a, $cid['nurl']);
                        // "uid" and "self" are only needed for some internal stuff, so remove it from here
                        unset($user["uid"]);
                        unset($user["self"]);
 
-                       if ($user)
+                       if ($user) {
                                $ret[] = $user;
+                       }
                }
 
                return array('user' => $ret);
 
        }
-       function api_statuses_friends($type){
+
+       function api_statuses_friends($type) {
                $data =  api_statuses_f($type, "friends");
-               if ($data===false) return false;
-               return  api_format_data("users", $type, $data);
+               if ($data === false) {
+                       return false;
+               }
+               return api_format_data("users", $type, $data);
        }
-       function api_statuses_followers($type){
+
+       function api_statuses_followers($type) {
                $data = api_statuses_f($type, "followers");
-               if ($data===false) return false;
-               return  api_format_data("users", $type, $data);
+               if ($data === false) {
+                       return false;
+               }
+               return api_format_data("users", $type, $data);
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/statuses/friends','api_statuses_friends',true);
        api_register_func('api/statuses/followers','api_statuses_followers',true);
 
-
-
-
-
-
        function api_statusnet_config($type) {
 
                $a = get_app();
@@ -2702,8 +2897,9 @@ use \Friendica\Core\Config;
                $closed = (($a->config['register_policy'] == REGISTER_CLOSED) ? 'true' : 'false');
                $private = ((Config::get('system', 'block_public')) ? 'true' : 'false');
                $textlimit = (string) (($a->config['max_import_size']) ? $a->config['max_import_size'] : 200000);
-               if($a->config['api_import_size'])
+               if ($a->config['api_import_size']) {
                        $texlimit = string($a->config['api_import_size']);
+               }
                $ssl = ((Config::get('system', 'have_ssl')) ? 'true' : 'false');
                $sslserver = (($ssl === 'true') ? str_replace('http:','https:',App::get_baseurl()) : '');
 
@@ -2725,8 +2921,10 @@ use \Friendica\Core\Config;
                return api_format_data('config', $type, array('config' => $config));
 
        }
-       api_register_func('api/gnusocial/config','api_statusnet_config',false);
-       api_register_func('api/statusnet/config','api_statusnet_config',false);
+
+       /// @TODO move to top of file or somewhere better
+       api_register_func('api/gnusocial/config','api_statusnet_config', false);
+       api_register_func('api/statusnet/config','api_statusnet_config', false);
 
        function api_statusnet_version($type) {
                // liar
@@ -2734,8 +2932,10 @@ use \Friendica\Core\Config;
 
                return api_format_data('version', $type, array('version' => $fake_statusnet_version));
        }
-       api_register_func('api/gnusocial/version','api_statusnet_version',false);
-       api_register_func('api/statusnet/version','api_statusnet_version',false);
+
+       /// @TODO move to top of file or somewhere better
+       api_register_func('api/gnusocial/version','api_statusnet_version', false);
+       api_register_func('api/statusnet/version','api_statusnet_version', false);
 
        /**
         * @todo use api_format_data() to return data
@@ -2744,19 +2944,24 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               if(! api_user()) throw new ForbiddenException();
+               if (! api_user()) {
+                       throw new ForbiddenException();
+               }
 
                $user_info = api_get_user($a);
 
-               if($qtype == 'friends')
+               if ($qtype == 'friends') {
                        $sql_extra = sprintf(" AND ( `rel` = %d OR `rel` = %d ) ", intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND));
-               if($qtype == 'followers')
+               }
+               if ($qtype == 'followers') {
                        $sql_extra = sprintf(" AND ( `rel` = %d OR `rel` = %d ) ", intval(CONTACT_IS_FOLLOWER), intval(CONTACT_IS_FRIEND));
+               }
 
-               if (!$user_info["self"])
+               if (!$user_info["self"]) {
                        $sql_extra = " AND false ";
+               }
 
-               $stringify_ids = (x($_REQUEST,'stringify_ids')?$_REQUEST['stringify_ids']:false);
+               $stringify_ids = (x($_REQUEST, 'stringify_ids') ? $_REQUEST['stringify_ids'] : false);
 
                $r = q("SELECT `pcontact`.`id` FROM `contact`
                                INNER JOIN `contact` AS `pcontact` ON `contact`.`nurl` = `pcontact`.`nurl` AND `pcontact`.`uid` = 0
@@ -2764,15 +2969,18 @@ use \Friendica\Core\Config;
                        intval(api_user())
                );
 
-               if (!dbm::is_result($r))
+               if (!dbm::is_result($r)) {
                        return;
+               }
 
                $ids = array();
-               foreach($r as $rr)
-                       if ($stringify_ids)
+               foreach ($r as $rr) {
+                       if ($stringify_ids) {
                                $ids[] = $rr['id'];
-                       else
+                       } else {
                                $ids[] = intval($rr['id']);
+                       }
+               }
 
                return api_format_data("ids", $type, array('id' => $ids));
        }
@@ -2780,18 +2988,20 @@ use \Friendica\Core\Config;
        function api_friends_ids($type) {
                return api_ff_ids($type,'friends');
        }
+
        function api_followers_ids($type) {
                return api_ff_ids($type,'followers');
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/friends/ids','api_friends_ids',true);
        api_register_func('api/followers/ids','api_followers_ids',true);
 
-
        function api_direct_messages_new($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
 
                if (!x($_POST, "text") OR (!x($_POST,"screen_name") AND !x($_POST,"user_id"))) return;
 
@@ -2811,45 +3021,43 @@ use \Friendica\Core\Config;
 
                $replyto = '';
                $sub     = '';
-               if (x($_REQUEST,'replyto')) {
+               if (x($_REQUEST, 'replyto')) {
                        $r = q('SELECT `parent-uri`, `title` FROM `mail` WHERE `uid`=%d AND `id`=%d',
                                        intval(api_user()),
                                        intval($_REQUEST['replyto']));
                        $replyto = $r[0]['parent-uri'];
                        $sub     = $r[0]['title'];
-               }
-               else {
-                       if (x($_REQUEST,'title')) {
+               } else {
+                       if (x($_REQUEST, 'title')) {
                                $sub = $_REQUEST['title'];
-                       }
-                       else {
-                               $sub = ((strlen($_POST['text'])>10)?substr($_POST['text'],0,10)."...":$_POST['text']);
+                       } else {
+                               $sub = ((strlen($_POST['text'])>10) ? substr($_POST['text'],0,10)."...":$_POST['text']);
                        }
                }
 
                $id = send_message($recipient['cid'], $_POST['text'], $sub, $replyto);
 
-               if ($id>-1) {
+               if ($id > -1) {
                        $r = q("SELECT * FROM `mail` WHERE id=%d", intval($id));
                        $ret = api_format_messages($r[0], $recipient, $sender);
-
                } else {
                        $ret = array("error"=>$id);
                }
 
-               $data = Array('direct_message'=>$ret);
+               $data = array('direct_message'=>$ret);
 
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
                }
 
-               return  api_format_data("direct-messages", $type, $data);
+               return api_format_data("direct-messages", $type, $data);
 
        }
-       api_register_func('api/direct_messages/new','api_direct_messages_new',true, API_METHOD_POST);
 
+       /// @TODO move to top of file or somewhere better
+       api_register_func('api/direct_messages/new','api_direct_messages_new',true, API_METHOD_POST);
 
        /**
         * @brief delete a direct_message from mail table through api
@@ -2857,31 +3065,33 @@ use \Friendica\Core\Config;
         * @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
         * @return string
         */
-       function api_direct_messages_destroy($type){
+       function api_direct_messages_destroy($type) {
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                // params
                $user_info = api_get_user($a);
                //required
-               $id = (x($_REQUEST,'id') ? $_REQUEST['id'] : 0);
+               $id = (x($_REQUEST, 'id') ? $_REQUEST['id'] : 0);
                // optional
                $parenturi = (x($_REQUEST, 'friendica_parenturi') ? $_REQUEST['friendica_parenturi'] : "");
-               $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false");
+               $verbose = (x($_GET, 'friendica_verbose') ? strtolower($_GET['friendica_verbose']) : "false");
                /// @todo optional parameter 'include_entities' from Twitter API not yet implemented
 
                $uid = $user_info['uid'];
                // error if no id or parenturi specified (for clients posting parent-uri as well)
-               if ($verbose == "true") {
-                       if ($id == 0 || $parenturi == "") {
-                               $answer = array('result' => 'error', 'message' => 'message id or parenturi not specified');
-                               return api_format_data("direct_messages_delete", $type, array('$result' => $answer));
-                       }
+               if ($verbose == "true" && ($id == 0 || $parenturi == "")) {
+                       $answer = array('result' => 'error', 'message' => 'message id or parenturi not specified');
+                       return api_format_data("direct_messages_delete", $type, array('$result' => $answer));
                }
 
                // BadRequestException if no id specified (for clients using Twitter API)
-               if ($id == 0) throw new BadRequestException('Message id not specified');
+               if ($id == 0) {
+                       throw new BadRequestException('Message id not specified');
+               }
 
                // add parent-uri to sql command if specified by calling app
                $sql_extra = ($parenturi != "" ? " AND `parent-uri` = '" . dbesc($parenturi) . "'" : "");
@@ -2911,8 +3121,7 @@ use \Friendica\Core\Config;
                                // return success
                                $answer = array('result' => 'ok', 'message' => 'message deleted');
                                return api_format_data("direct_message_delete", $type, array('$result' => $answer));
-                       }
-                       else {
+                       } else {
                                $answer = array('result' => 'error', 'message' => 'unknown error');
                                return api_format_data("direct_messages_delete", $type, array('$result' => $answer));
                        }
@@ -2920,25 +3129,30 @@ use \Friendica\Core\Config;
                /// @todo return JSON data like Twitter API not yet implemented
 
        }
-       api_register_func('api/direct_messages/destroy', 'api_direct_messages_destroy', true, API_METHOD_DELETE);
 
+       /// @TODO move to top of file or somewhere better
+       api_register_func('api/direct_messages/destroy', 'api_direct_messages_destroy', true, API_METHOD_DELETE);
 
        function api_direct_messages_box($type, $box, $verbose) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                // params
-               $count = (x($_GET,'count')?$_GET['count']:20);
-               $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
-               if ($page<0) $page=0;
+               $count = (x($_GET, 'count') ? $_GET['count'] : 20);
+               $page = (x($_REQUEST, 'page') ? $_REQUEST['page'] -1 : 0);
+               if ($page < 0) {
+                       $page = 0;
+               }
 
-               $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
+               $since_id = (x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0);
+               $max_id = (x($_REQUEST, 'max_id') ? $_REQUEST['max_id'] : 0);
 
-               $user_id = (x($_REQUEST,'user_id')?$_REQUEST['user_id']:"");
-               $screen_name = (x($_REQUEST,'screen_name')?$_REQUEST['screen_name']:"");
+               $user_id = (x($_REQUEST, 'user_id') ? $_REQUEST['user_id'] : "");
+               $screen_name = (x($_REQUEST, 'screen_name') ? $_REQUEST['screen_name'] : "");
 
                //  caller user info
                unset($_REQUEST["user_id"]);
@@ -2950,31 +3164,27 @@ use \Friendica\Core\Config;
                $user_info = api_get_user($a);
                $profile_url = $user_info["url"];
 
-
                // pagination
-               $start = $page*$count;
+               $start = $page * $count;
 
                // filters
                if ($box=="sentbox") {
-                       $sql_extra = "`mail`.`from-url`='".dbesc( $profile_url )."'";
-               }
-               elseif ($box=="conversation") {
-                       $sql_extra = "`mail`.`parent-uri`='".dbesc( $_GET["uri"] )  ."'";
-               }
-               elseif ($box=="all") {
+                       $sql_extra = "`mail`.`from-url`='" . dbesc( $profile_url ) . "'";
+               } elseif ($box == "conversation") {
+                       $sql_extra = "`mail`.`parent-uri`='" . dbesc( $_GET["uri"] )  . "'";
+               } elseif ($box == "all") {
                        $sql_extra = "true";
-               }
-               elseif ($box=="inbox") {
-                       $sql_extra = "`mail`.`from-url`!='".dbesc( $profile_url )."'";
+               } elseif ($box == "inbox") {
+                       $sql_extra = "`mail`.`from-url`!='" . dbesc( $profile_url ) . "'";
                }
 
-               if ($max_id > 0)
-                       $sql_extra .= ' AND `mail`.`id` <= '.intval($max_id);
+               if ($max_id > 0) {
+                       $sql_extra .= ' AND `mail`.`id` <= ' . intval($max_id);
+               }
 
-               if ($user_id !="") {
+               if ($user_id != "") {
                        $sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id);
-               }
-               elseif($screen_name !=""){
+               } elseif ($screen_name !="") {
                        $sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name). "'";
                }
 
@@ -2983,134 +3193,142 @@ use \Friendica\Core\Config;
                                intval($since_id),
                                intval($start), intval($count)
                );
-               if ($verbose == "true") {
-                       // stop execution and return error message if no mails available
-                       if($r == null) {
-                               $answer = array('result' => 'error', 'message' => 'no mails available');
-                               return api_format_data("direct_messages_all", $type, array('$result' => $answer));
-                       }
+               if ($verbose == "true" && !dbm::is_result($r)) {
+                       $answer = array('result' => 'error', 'message' => 'no mails available');
+                       return api_format_data("direct_messages_all", $type, array('$result' => $answer));
                }
 
-               $ret = Array();
-               foreach($r as $item) {
-                       if ($box == "inbox" || $item['from-url'] != $profile_url){
+               $ret = array();
+               foreach ($r as $item) {
+                       if ($box == "inbox" || $item['from-url'] != $profile_url) {
                                $recipient = $user_info;
                                $sender = api_get_user($a,normalise_link($item['contact-url']));
-                       }
-                       elseif ($box == "sentbox" || $item['from-url'] == $profile_url){
+                       } elseif ($box == "sentbox" || $item['from-url'] == $profile_url) {
                                $recipient = api_get_user($a,normalise_link($item['contact-url']));
                                $sender = $user_info;
-
                        }
-                       $ret[]=api_format_messages($item, $recipient, $sender);
+
+                       $ret[] = api_format_messages($item, $recipient, $sender);
                }
 
 
                $data = array('direct_message' => $ret);
-               switch($type){
+               switch ($type) {
                        case "atom":
                        case "rss":
                                $data = api_rss_extra($a, $data, $user_info);
                }
 
-               return  api_format_data("direct-messages", $type, $data);
+               return api_format_data("direct-messages", $type, $data);
 
        }
 
-       function api_direct_messages_sentbox($type){
-               $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false");
+       function api_direct_messages_sentbox($type) {
+               $verbose = (x($_GET, 'friendica_verbose') ? strtolower($_GET['friendica_verbose']) : "false");
                return api_direct_messages_box($type, "sentbox", $verbose);
        }
-       function api_direct_messages_inbox($type){
-               $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false");
+
+       function api_direct_messages_inbox($type) {
+               $verbose = (x($_GET, 'friendica_verbose') ? strtolower($_GET['friendica_verbose']) : "false");
                return api_direct_messages_box($type, "inbox", $verbose);
        }
-       function api_direct_messages_all($type){
-               $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false");
+
+       function api_direct_messages_all($type) {
+               $verbose = (x($_GET, 'friendica_verbose') ? strtolower($_GET['friendica_verbose']) : "false");
                return api_direct_messages_box($type, "all", $verbose);
        }
-       function api_direct_messages_conversation($type){
-               $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false");
+
+       function api_direct_messages_conversation($type) {
+               $verbose = (x($_GET, 'friendica_verbose') ? strtolower($_GET['friendica_verbose']) : "false");
                return api_direct_messages_box($type, "conversation", $verbose);
        }
+
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/direct_messages/conversation','api_direct_messages_conversation',true);
        api_register_func('api/direct_messages/all','api_direct_messages_all',true);
        api_register_func('api/direct_messages/sent','api_direct_messages_sentbox',true);
        api_register_func('api/direct_messages','api_direct_messages_inbox',true);
 
-
-
-       function api_oauth_request_token($type){
-               try{
+       function api_oauth_request_token($type) {
+               try {
                        $oauth = new FKOAuth1();
                        $r = $oauth->fetch_request_token(OAuthRequest::from_request());
-               }catch(Exception $e){
-                       echo "error=". OAuthUtil::urlencode_rfc3986($e->getMessage()); killme();
+               } catch (Exception $e) {
+                       echo "error=" . OAuthUtil::urlencode_rfc3986($e->getMessage());
+                       killme();
                }
                echo $r;
                killme();
        }
-       function api_oauth_access_token($type){
-               try{
+
+       function api_oauth_access_token($type) {
+               try {
                        $oauth = new FKOAuth1();
                        $r = $oauth->fetch_access_token(OAuthRequest::from_request());
-               }catch(Exception $e){
+               } catch (Exception $e) {
                        echo "error=". OAuthUtil::urlencode_rfc3986($e->getMessage()); killme();
                }
                echo $r;
                killme();
        }
 
+       /// @TODO move to top of file or somewhere better
        api_register_func('api/oauth/request_token', 'api_oauth_request_token', false);
        api_register_func('api/oauth/access_token', 'api_oauth_access_token', false);
 
-
        function api_fr_photos_list($type) {
-               if (api_user()===false) throw new ForbiddenException();
-               $r = q("select `resource-id`, max(scale) as scale, album, filename, type from photo
-                               where uid = %d and album != 'Contact Photos' group by `resource-id`, album, filename, type",
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
+
+               $r = q("SELECT `resource-id`, MAX(`scale`) AS `scale`, `album`, `filename`, `type`
+                               FROM `photo`
+                               WHERE `uid` = %d AND `album` != 'Contact Photos' GROUP BY `resource-id`, `album`, `filename`, `type`",
                        intval(local_user())
                );
                $typetoext = array(
-               'image/jpeg' => 'jpg',
-               'image/png' => 'png',
-               'image/gif' => 'gif'
+                       'image/jpeg' => 'jpg',
+                       'image/png' => 'png',
+                       'image/gif' => 'gif'
                );
-               $data = array('photo'=>array());
-               if ($r) {
+               $data = array('photo' => array());
+               if (dbm::is_result($r)) {
                        foreach ($r as $rr) {
                                $photo = array();
                                $photo['id'] = $rr['resource-id'];
                                $photo['album'] = $rr['album'];
                                $photo['filename'] = $rr['filename'];
                                $photo['type'] = $rr['type'];
-                               $thumb = App::get_baseurl()."/photo/".$rr['resource-id']."-".$rr['scale'].".".$typetoext[$rr['type']];
+                               $thumb = App::get_baseurl() . "/photo/" . $rr['resource-id'] . "-" . $rr['scale'] . "." . $typetoext[$rr['type']];
 
-                               if ($type == "xml")
+                               if ($type == "xml") {
                                        $data['photo'][] = array("@attributes" => $photo, "1" => $thumb);
-                               else {
+                               else {
                                        $photo['thumb'] = $thumb;
                                        $data['photo'][] = $photo;
                                }
                        }
                }
-               return  api_format_data("photos", $type, $data);
+               return api_format_data("photos", $type, $data);
        }
 
        function api_fr_photo_detail($type) {
-               if (api_user()===false) throw new ForbiddenException();
-               if(!x($_REQUEST,'photo_id')) throw new BadRequestException("No photo id.");
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               } elseif (!x($_REQUEST, 'photo_id')) {
+                       throw new BadRequestException("No photo id.");
+               }
 
                $scale = (x($_REQUEST, 'scale') ? intval($_REQUEST['scale']) : false);
-               $scale_sql = ($scale === false ? "" : sprintf("and scale=%d",intval($scale)));
-               $data_sql = ($scale === false ? "" : "ANY_VALUE(data) AS data,");
+               $scale_sql = ($scale === false ? "" : sprintf("AND `scale`=%d",intval($scale)));
+               $data_sql = ($scale === false ? "" : "ANY_VALUE(`data`) AS data`,");
 
-               $r = q("select %s ANY_VALUE(`resource-id`) AS `resource-id`, ANY_VALUE(`created`) AS `created`,
+               $r = q("SELECT %s ANY_VALUE(`resource-id`) AS `resource-id`, ANY_VALUE(`created`) AS `created`,
                                ANY_VALUE(`edited`) AS `edited`, ANY_VALUE(`title`) AS `title`, ANY_VALUE(`desc`) AS `desc`,
                                ANY_VALUE(`album`) AS `album`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
                                ANY_VALUE(`height`) AS `height`, ANY_VALUE(`width`) AS `width`, ANY_VALUE(`datasize`) AS `datasize`,
                                ANY_VALUE(`profile`) AS `profile`, min(`scale`) as minscale, max(`scale`) as maxscale
-                               from photo where `uid` = %d and `resource-id` = '%s' %s",
+                               FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' %s",
                        $data_sql,
                        intval(local_user()),
                        dbesc($_REQUEST['photo_id']),
@@ -3118,12 +3336,12 @@ use \Friendica\Core\Config;
                );
 
                $typetoext = array(
-               'image/jpeg' => 'jpg',
-               'image/png' => 'png',
-               'image/gif' => 'gif'
+                       'image/jpeg' => 'jpg',
+                       'image/png' => 'png',
+                       'image/gif' => 'gif'
                );
 
-               if ($r) {
+               if (dbm::is_result($r)) {
                        $data = array('photo' => $r[0]);
                        $data['photo']['id'] = $data['photo']['resource-id'];
                        if ($scale !== false) {
@@ -3133,14 +3351,15 @@ use \Friendica\Core\Config;
                        }
                        if ($type == "xml") {
                                $data['photo']['links'] = array();
-                               for ($k=intval($data['photo']['minscale']); $k<=intval($data['photo']['maxscale']); $k++)
-                                       $data['photo']['links'][$k.":link"]["@attributes"] = array("type" => $data['photo']['type'],
-                                                                                       "scale" => $k,
-                                                                                       "href" => App::get_baseurl()."/photo/".$data['photo']['resource-id']."-".$k.".".$typetoext[$data['photo']['type']]);
+                               for ($k = intval($data['photo']['minscale']); $k <= intval($data['photo']['maxscale']); $k++) {
+                                       $data['photo']['links'][$k . ":link"]["@attributes"] = array("type" => $data['photo']['type'],
+                                               "scale" => $k,
+                                               "href" => App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']]);
+                               }
                        } else {
                                $data['photo']['link'] = array();
-                               for ($k=intval($data['photo']['minscale']); $k<=intval($data['photo']['maxscale']); $k++) {
-                                       $data['photo']['link'][$k] = App::get_baseurl()."/photo/".$data['photo']['resource-id']."-".$k.".".$typetoext[$data['photo']['type']];
+                               for ($k = intval($data['photo']['minscale']); $k <= intval($data['photo']['maxscale']); $k++) {
+                                       $data['photo']['link'][$k] = App::get_baseurl() . "/photo/" . $data['photo']['resource-id'] . "-" . $k . "." . $typetoext[$data['photo']['type']];
                                }
                        }
                        unset($data['photo']['resource-id']);
@@ -3171,11 +3390,12 @@ use \Friendica\Core\Config;
         *              url: string, url to redirect after auth
         */
        function api_friendica_remoteauth() {
-               $url = ((x($_GET,'url')) ? $_GET['url'] : '');
-               $c_url = ((x($_GET,'c_url')) ? $_GET['c_url'] : '');
+               $url = ((x($_GET, 'url')) ? $_GET['url'] : '');
+               $c_url = ((x($_GET, 'c_url')) ? $_GET['c_url'] : '');
 
-               if ($url === '' || $c_url === '')
+               if ($url === '' || $c_url === '') {
                        throw new BadRequestException("Wrong parameters.");
+               }
 
                $c_url = normalise_link($c_url);
 
@@ -3186,18 +3406,19 @@ use \Friendica\Core\Config;
                        intval(api_user())
                );
 
-               if ((! dbm::is_result($r)) || ($r[0]['network'] !== NETWORK_DFRN))
+               if ((! dbm::is_result($r)) || ($r[0]['network'] !== NETWORK_DFRN)) {
                        throw new BadRequestException("Unknown contact");
+               }
 
                $cid = $r[0]['id'];
 
                $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;
                }
@@ -3234,12 +3455,16 @@ use \Friendica\Core\Config;
                        return false;
                }
 
-               $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body);
-               // Skip if there is no shared message in there
-               // we already checked this in diaspora::is_reshare()
-               // but better one more than one less...
-               if ($body == $attributes)
+               /// @TODO "$1" should maybe mean '$1' ?
+               $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism", "$1", $body);
+               /*
+                * Skip if there is no shared message in there
+                * we already checked this in diaspora::is_reshare()
+                * but better one more than one less...
+                */
+               if ($body == $attributes) {
                        return false;
+               }
 
 
                // build the fake reshared item
@@ -3247,55 +3472,63 @@ use \Friendica\Core\Config;
 
                $author = "";
                preg_match("/author='(.*?)'/ism", $attributes, $matches);
-               if ($matches[1] != "")
-                       $author = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8');
+               if ($matches[1] != "") {
+                       $author = html_entity_decode($matches[1], ENT_QUOTES, 'UTF-8');
+               }
 
                preg_match('/author="(.*?)"/ism', $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $author = $matches[1];
+               }
 
                $profile = "";
                preg_match("/profile='(.*?)'/ism", $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $profile = $matches[1];
+               }
 
                preg_match('/profile="(.*?)"/ism', $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $profile = $matches[1];
+               }
 
                $avatar = "";
                preg_match("/avatar='(.*?)'/ism", $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $avatar = $matches[1];
+               }
 
                preg_match('/avatar="(.*?)"/ism', $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $avatar = $matches[1];
+               }
 
                $link = "";
                preg_match("/link='(.*?)'/ism", $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $link = $matches[1];
+               }
 
                preg_match('/link="(.*?)"/ism', $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $link = $matches[1];
+               }
 
                $posted = "";
                preg_match("/posted='(.*?)'/ism", $attributes, $matches);
                if ($matches[1] != "")
-                       $posted= $matches[1];
+                       $posted = $matches[1];
 
                preg_match('/posted="(.*?)"/ism', $attributes, $matches);
-               if ($matches[1] != "")
+               if ($matches[1] != "") {
                        $posted = $matches[1];
+               }
 
                $shared_body = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$2",$body);
 
-               if (($shared_body == "") || ($profile == "") || ($author == "") || ($avatar == "") || ($posted == ""))
+               if (($shared_body == "") || ($profile == "") || ($author == "") || ($avatar == "") || ($posted == "")) {
                        return false;
-
-
+               }
 
                $reshared_item["body"] = $shared_body;
                $reshared_item["author-name"] = $author;
@@ -3319,32 +3552,39 @@ use \Friendica\Core\Config;
 
                $r = q("SELECT `nick` FROM `contact` WHERE `uid` = 0 AND `nurl` = '%s'",
                        dbesc(normalise_link($profile)));
-               if ($r)
+
+               if (dbm::is_result($r)) {
                        $nick = $r[0]["nick"];
+               }
 
                if (!$nick == "") {
                        $r = q("SELECT `nick` FROM `contact` WHERE `uid` = 0 AND `nurl` = '%s'",
                                dbesc(normalise_link($profile)));
-                       if ($r)
+
+                       if (dbm::is_result($r)) {
                                $nick = $r[0]["nick"];
+                       }
                }
 
                if (!$nick == "") {
                        $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2", $profile);
-                       if ($friendica != $profile)
+                       if ($friendica != $profile) {
                                $nick = $friendica;
+                       }
                }
 
                if (!$nick == "") {
                        $diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2", $profile);
-                       if ($diaspora != $profile)
+                       if ($diaspora != $profile) {
                                $nick = $diaspora;
+                       }
                }
 
                if (!$nick == "") {
                        $twitter = preg_replace("=https?://twitter.com/(.*)=ism", "$1", $profile);
-                       if ($twitter != $profile)
+                       if ($twitter != $profile) {
                                $nick = $twitter;
+                       }
                }
 
 
@@ -3355,8 +3595,9 @@ use \Friendica\Core\Config;
                                if ($StatusnetUser != $profile) {
                                        $UserData = fetch_url("http://".$StatusnetHost."/api/users/show.json?user_id=".$StatusnetUser);
                                        $user = json_decode($UserData);
-                                       if ($user)
+                                       if ($user) {
                                                $nick = $user->screen_name;
+                                       }
                                }
                        }
                }
@@ -3370,10 +3611,11 @@ use \Friendica\Core\Config;
 
                //}
 
-               if ($nick != "")
-                       return($nick);
+               if ($nick != "") {
+                       return $nick;
+               }
 
-               return(false);
+               return false;
        }
 
        function api_in_reply_to($item) {
@@ -3431,7 +3673,7 @@ use \Friendica\Core\Config;
        }
 
        function api_clean_plain_items($Text) {
-               $include_entities = strtolower(x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:"false");
+               $include_entities = strtolower(x($_REQUEST, 'include_entities') ? $_REQUEST['include_entities'] : "false");
 
                $Text = bb_CleanPictureLinks($Text);
                $URLSearchString = "^\[\]";
@@ -3525,11 +3767,11 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
 
                // params
                $user_info = api_get_user($a);
-               $gid = (x($_REQUEST,'gid') ? $_REQUEST['gid'] : 0);
+               $gid = (x($_REQUEST, 'gid') ? $_REQUEST['gid'] : 0);
                $uid = $user_info['uid'];
 
                // get data of the specified group id or all groups if not specified
@@ -3576,11 +3818,11 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
 
                // params
                $user_info = api_get_user($a);
-               $gid = (x($_REQUEST,'gid') ? $_REQUEST['gid'] : 0);
+               $gid = (x($_REQUEST, 'gid') ? $_REQUEST['gid'] : 0);
                $name = (x($_REQUEST, 'name') ? $_REQUEST['name'] : "");
                $uid = $user_info['uid'];
 
@@ -3623,7 +3865,7 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
 
                // params
                $user_info = api_get_user($a);
@@ -3689,7 +3931,7 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
 
                // params
                $user_info = api_get_user($a);
@@ -3741,14 +3983,14 @@ use \Friendica\Core\Config;
                $success = array('success' => true, 'gid' => $gid, 'name' => $name, 'status' => $status, 'wrong users' => $errorusers);
                return api_format_data("group_update", $type, array('result' => $success));
        }
-       api_register_func('api/friendica/group_update', 'api_friendica_group_update', true, API_METHOD_POST);
 
+       api_register_func('api/friendica/group_update', 'api_friendica_group_update', true, API_METHOD_POST);
 
        function api_friendica_activity($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
                $verb = strtolower($a->argv[3]);
                $verb = preg_replace("|\..*$|", "", $verb);
 
@@ -3767,6 +4009,8 @@ use \Friendica\Core\Config;
                }
 
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/friendica/activity/like', 'api_friendica_activity', true, API_METHOD_POST);
        api_register_func('api/friendica/activity/dislike', 'api_friendica_activity', true, API_METHOD_POST);
        api_register_func('api/friendica/activity/attendyes', 'api_friendica_activity', true, API_METHOD_POST);
@@ -3788,7 +4032,7 @@ use \Friendica\Core\Config;
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
                if ($a->argc!==3) throw new BadRequestException("Invalid argument count");
                $nm = new NotificationsManager();
 
@@ -3813,11 +4057,11 @@ use \Friendica\Core\Config;
         * @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
         * @return string
         */
-       function api_friendica_notification_seen($type){
+       function api_friendica_notification_seen($type) {
 
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) throw new ForbiddenException();
                if ($a->argc!==4) throw new BadRequestException("Invalid argument count");
 
                $id = (x($_REQUEST, 'id') ? intval($_REQUEST['id']) : 0);
@@ -3845,19 +4089,21 @@ use \Friendica\Core\Config;
                return api_format_data('result', $type, array('result' => "success"));
        }
 
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/friendica/notification/seen', 'api_friendica_notification_seen', true, API_METHOD_POST);
        api_register_func('api/friendica/notification', 'api_friendica_notification', true, API_METHOD_GET);
 
-
        /**
         * @brief update a direct_message to seen state
         *
         * @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
         * @return string (success result=ok, error result=error with error message)
         */
-       function api_friendica_direct_messages_setseen($type){
+       function api_friendica_direct_messages_setseen($type) {
                $a = get_app();
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                // params
                $user_info = api_get_user($a);
@@ -3874,6 +4120,7 @@ use \Friendica\Core\Config;
                $r = q("SELECT `id` FROM `mail` WHERE `id` = %d AND `uid` = %d",
                        intval($id),
                        intval($uid));
+
                // error message if specified id is not in database
                if (!dbm::is_result($r)) {
                        $answer = array('result' => 'error', 'message' => 'message id not in database');
@@ -3894,10 +4141,9 @@ use \Friendica\Core\Config;
                        return api_format_data("direct_messages_setseen", $type, array('$result' => $answer));
                }
        }
-       api_register_func('api/friendica/direct_messages_setseen', 'api_friendica_direct_messages_setseen', true);
-
-
 
+       /// @TODO move to top of file or somwhere better
+       api_register_func('api/friendica/direct_messages_setseen', 'api_friendica_direct_messages_setseen', true);
 
        /**
         * @brief search for direct_messages containing a searchstring through api
@@ -3907,14 +4153,16 @@ use \Friendica\Core\Config;
         *                          success=false if nothing was found, search_result='nothing found',
         *                 error: result=error with error message)
         */
-       function api_friendica_direct_messages_search($type){
+       function api_friendica_direct_messages_search($type) {
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                // params
                $user_info = api_get_user($a);
-               $searchstring = (x($_REQUEST,'searchstring') ? $_REQUEST['searchstring'] : "");
+               $searchstring = (x($_REQUEST, 'searchstring') ? $_REQUEST['searchstring'] : "");
                $uid = $user_info['uid'];
 
                // error if no searchstring specified
@@ -3930,29 +4178,32 @@ use \Friendica\Core\Config;
                );
 
                $profile_url = $user_info["url"];
+
                // message if nothing was found
-               if (!dbm::is_result($r))
+               if (!dbm::is_result($r)) {
                        $success = array('success' => false, 'search_results' => 'problem with query');
-               else if (count($r) == 0)
+               } elseif (count($r) == 0) {
                        $success = array('success' => false, 'search_results' => 'nothing found');
-               else {
-                       $ret = Array();
-                       foreach($r as $item) {
-                               if ($box == "inbox" || $item['from-url'] != $profile_url){
+               else {
+                       $ret = array();
+                       foreach ($r as $item) {
+                               if ($box == "inbox" || $item['from-url'] != $profile_url) {
                                        $recipient = $user_info;
                                        $sender = api_get_user($a,normalise_link($item['contact-url']));
-                               }
-                               elseif ($box == "sentbox" || $item['from-url'] == $profile_url){
+                               } elseif ($box == "sentbox" || $item['from-url'] == $profile_url) {
                                        $recipient = api_get_user($a,normalise_link($item['contact-url']));
                                        $sender = $user_info;
                                }
-                               $ret[]=api_format_messages($item, $recipient, $sender);
+
+                               $ret[] = api_format_messages($item, $recipient, $sender);
                        }
                        $success = array('success' => true, 'search_results' => $ret);
                }
 
                return api_format_data("direct_message_search", $type, array('$result' => $success));
        }
+
+       /// @TODO move to top of file or somwhere better
        api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true);
 
        /**
@@ -3961,13 +4212,15 @@ use \Friendica\Core\Config;
         * @param string $type Known types are 'atom', 'rss', 'xml' and 'json'
         * @return string
         */
-       function api_friendica_profile_show($type){
+       function api_friendica_profile_show($type) {
                $a = get_app();
 
-               if (api_user()===false) throw new ForbiddenException();
+               if (api_user() === false) {
+                       throw new ForbiddenException();
+               }
 
                // input params
-               $profileid = (x($_REQUEST,'profile_id') ? $_REQUEST['profile_id'] : 0);
+               $profileid = (x($_REQUEST, 'profile_id') ? $_REQUEST['profile_id'] : 0);
 
                // retrieve general information about profiles for user
                $multi_profiles = feature_enabled(api_user(),'multi_profiles');
@@ -3978,9 +4231,11 @@ use \Friendica\Core\Config;
                        $r = q("SELECT * FROM `profile` WHERE `uid` = %d AND `id` = %d",
                                intval(api_user()),
                                intval($profileid));
+
                        // error message if specified gid is not in database
-                       if (!dbm::is_result($r))
+                       if (!dbm::is_result($r)) {
                                throw new BadRequestException("profile_id not available");
+                       }
                } else {
                        $r = q("SELECT * FROM `profile` WHERE `uid` = %d",
                                intval(api_user()));
@@ -3998,13 +4253,13 @@ use \Friendica\Core\Config;
 
                        foreach ($r as $rr) {
                                $user = api_get_user($a, $rr['nurl']);
-                               ($type == "xml") ? $users[$k++.":user"] = $user : $users[] = $user;
+                               ($type == "xml") ? $users[$k++ . ":user"] = $user : $users[] = $user;
                        }
                        $profile['users'] = $users;
 
                        // add prepared profile data to array for final return
                        if ($type == "xml") {
-                               $profiles[$k++.":profile"] = $profile;
+                               $profiles[$k++ . ":profile"] = $profile;
                        } else {
                                $profiles[] = $profile;
                        }
@@ -4022,6 +4277,7 @@ use \Friendica\Core\Config;
        api_register_func('api/friendica/profile/show', 'api_friendica_profile_show', true, API_METHOD_GET);
 
 /*
+@TODO Maybe open to implement?
 To.Do:
     [pagename] => api/1.1/statuses/lookup.json
     [id] => 605138389168451584
index 6b26b1ed653010653e9243efeefb4deab654904b..ee6f49937af5ea2d56b1c98588f693a1b4e3079c 100644 (file)
@@ -1060,13 +1060,14 @@ function z_mime_content_type($filename) {
                'zsh' => 'text/x-script.zsh',
        );
 
-       $dot = strpos($filename,'.');
-       if($dot !== false) {
-               $ext = strtolower(substr($filename,$dot+1));
+       $dot = strpos($filename, '.');
+       if ($dot !== false) {
+               $ext = strtolower(substr($filename, $dot + 1));
                if (array_key_exists($ext, $mime_types)) {
                        return $mime_types[$ext];
                }
        }
+       /// @TODO Then let's get rid of it?
 // can't use this because we're just passing a name, e.g. not a file that can be opened
 //     elseif (function_exists('finfo_open')) {
 //             $finfo = @finfo_open(FILEINFO_MIME);
index cef293c7667a3904efd595c247458e19f3c5b488..a07a583538e4ac5e88b1613ff765c50837c83846 100644 (file)
@@ -27,14 +27,15 @@ function diaspora_mention2bb($match) {
                $name = $data['name'];
        }
 
-       return '@[url='.$data['url'].']'.$name.'[/url]';
+       return '@[url=' . $data['url'] . ']' . $name . '[/url]';
 }
 
-// we don't want to support a bbcode specific markdown interpreter
-// and the markdown library we have is pretty good, but provides HTML output.
-// So we'll use that to convert to HTML, then convert the HTML back to bbcode,
-// and then clean up a few Diaspora specific constructs.
-
+/*
+ * we don't want to support a bbcode specific markdown interpreter
+ * and the markdown library we have is pretty good, but provides HTML output.
+ * So we'll use that to convert to HTML, then convert the HTML back to bbcode,
+ * and then clean up a few Diaspora specific constructs.
+ */
 function diaspora2bb($s) {
 
        $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
@@ -93,15 +94,15 @@ function diaspora_mentions($match) {
 
        $contact = get_contact_details_by_url($match[3]);
 
-       if (!isset($contact['addr'])) {
+       if (!x($contact, 'addr')) {
                $contact = Probe::uri($match[3]);
        }
 
-       if (!isset($contact['addr'])) {
+       if (!x($contact, 'addr')) {
                return $match[0];
        }
 
-       $mention = '@{'.$match[2].'; '.$contact['addr'].'}';
+       $mention = '@{' . $match[2] . '; ' . $contact['addr'] . '}';
        return $mention;
 }
 
@@ -222,9 +223,9 @@ function unescape_underscores_in_links($m) {
 }
 
 function format_event_diaspora($ev) {
-
-       if(! ((is_array($ev)) && count($ev)))
+       if (! ((is_array($ev)) && count($ev))) {
                return '';
+       }
 
        $bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
 
@@ -239,17 +240,19 @@ function format_event_diaspora($ev) {
                        $ev['start'] , $bd_format)))
                .  '](' . App::get_baseurl() . '/localtime/?f=&time=' . urlencode(datetime_convert('UTC','UTC',$ev['start'])) . ")\n";
 
-       if(! $ev['nofinish'])
+       if (! $ev['nofinish']) {
                $o .= t('Finishes:') . ' ' . '['
                        . (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC',
                                $ev['finish'] , $bd_format ))
                                :  day_translate(datetime_convert('UTC', 'UTC',
                                $ev['finish'] , $bd_format )))
                        . '](' . App::get_baseurl() . '/localtime/?f=&time=' . urlencode(datetime_convert('UTC','UTC',$ev['finish'])) . ")\n";
+       }
 
-       if(strlen($ev['location']))
+       if (strlen($ev['location'])) {
                $o .= t('Location:') . bb2diaspora($ev['location'])
                        . "\n";
+       }
 
        $o .= "\n";
        return $o;
index fd380edc997582e21810fc8f03b01e07f827b9b2..2a70f95e59ee4fe159d3119b25558d92c8350507 100644 (file)
@@ -9,35 +9,38 @@ require_once 'include/Contact.php';
 require_once 'include/plaintext.php';
 
 function bb_PictureCacheExt($matches) {
-       if (strpos($matches[3], "data:image/") === 0)
-               return ($matches[0]);
+       if (strpos($matches[3], "data:image/") === 0) {
+               return $matches[0];
+       }
 
        $matches[3] = proxy_url($matches[3]);
-       return "[img=".$matches[1]."x".$matches[2]."]".$matches[3]."[/img]";
+       return "[img=" . $matches[1] . "x" . $matches[2] . "]" . $matches[3] . "[/img]";
 }
 
 function bb_PictureCache($matches) {
-       if (strpos($matches[1], "data:image/") === 0)
-               return ($matches[0]);
+       if (strpos($matches[1], "data:image/") === 0) {
+               return $matches[0];
+       }
 
        $matches[1] = proxy_url($matches[1]);
-       return "[img]".$matches[1]."[/img]";
+       return "[img]" . $matches[1] . "[/img]";
 }
 
 function bb_map_coords($match) {
        // the extra space in the following line is intentional
-       return str_replace($match[0],'<div class="map"  >' . generate_map(str_replace('/',' ',$match[1])) . '</div>', $match[0]);
+       return str_replace($match[0], '<div class="map"  >' . generate_map(str_replace('/', ' ', $match[1])) . '</div>', $match[0]);
 }
 function bb_map_location($match) {
        // the extra space in the following line is intentional
-       return str_replace($match[0],'<div class="map"  >' . generate_named_map($match[1]) . '</div>', $match[0]);
+       return str_replace($match[0], '<div class="map"  >' . generate_named_map($match[1]) . '</div>', $match[0]);
 }
 
 function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
 
        $data = get_attachment_data($Text);
-       if (!$data)
+       if (!$data) {
                return $Text;
+       }
 
        if (isset($data["title"])) {
                $data["title"] = strip_tags($data["title"]);
@@ -57,83 +60,91 @@ function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
 
                // If the link description is similar to the text above then don't add the link description
                if (($data["title"] != "") AND ((strpos($test1,$test2) !== false) OR
-                       (similar_text($test1,$test2) / strlen($data["title"])) > 0.9))
+                       (similar_text($test1,$test2) / strlen($data["title"])) > 0.9)) {
                        $title2 = $data["url"];
+               }
                $text = sprintf('<a href="%s" title="%s" class="attachment thumbnail" rel="nofollow external">%s</a><br />',
                                $data["url"], $data["title"], $title2);
-       } elseif (($simplehtml != 4) AND ($simplehtml != 0))
+       } elseif (($simplehtml != 4) AND ($simplehtml != 0)) {
                $text = sprintf('<a href="%s" target="_blank">%s</a><br>', $data["url"], $data["title"]);
-       else {
+       else {
                $text = sprintf('<span class="type-%s">', $data["type"]);
 
                $bookmark = array(sprintf('[bookmark=%s]%s[/bookmark]', $data["url"], $data["title"]), $data["url"], $data["title"]);
-               if ($tryoembed)
+               if ($tryoembed) {
                        $oembed = tryoembed($bookmark);
-               else
+               } else {
                        $oembed = $bookmark[0];
+               }
 
-               if (strstr(strtolower($oembed), "<iframe "))
+               if (strstr(strtolower($oembed), "<iframe ")) {
                        $text = $oembed;
-               else {
-                       if (($data["image"] != "") AND !strstr(strtolower($oembed), "<img "))
+               else {
+                       if (($data["image"] != "") AND !strstr(strtolower($oembed), "<img ")) {
                                $text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a><br />', $data["url"], proxy_url($data["image"]), $data["title"]);
-                       elseif (($data["preview"] != "") AND !strstr(strtolower($oembed), "<img "))
+                       } elseif (($data["preview"] != "") AND !strstr(strtolower($oembed), "<img ")) {
                                $text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $data["url"], proxy_url($data["preview"]), $data["title"]);
+                       }
 
-                       if (($data["type"] == "photo") AND ($data["url"] != "") AND ($data["image"] != ""))
+                       if (($data["type"] == "photo") AND ($data["url"] != "") AND ($data["image"] != "")) {
                                $text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a>', $data["url"], proxy_url($data["image"]), $data["title"]);
-                       else
+                       } else {
                                $text .= $oembed;
+                       }
 
-                       if (trim($data["description"]) != "")
+                       if (trim($data["description"]) != "") {
                                $text .= sprintf('<blockquote>%s</blockquote></span>', trim(bbcode($data["description"])));
+                       }
                }
        }
-       return $data["text"].$text.$data["after"];
+       return $data["text"] . $text . $data["after"];
 }
 
 function bb_remove_share_information($Text, $plaintext = false, $nolink = false) {
 
        $data = get_attachment_data($Text);
 
-       if (!$data)
+       if (!$data) {
                return $Text;
-
-       if ($nolink)
-               return $data["text"].$data["after"];
+       } elseif ($nolink) {
+               return $data["text"] . $data["after"];
+       }
 
        $title = htmlentities($data["title"], ENT_QUOTES, 'UTF-8', false);
        $text = htmlentities($data["text"], ENT_QUOTES, 'UTF-8', false);
-       if ($plaintext OR (($title != "") AND strstr($text, $title)))
+       if ($plaintext OR (($title != "") AND strstr($text, $title))) {
                $data["title"] = $data["url"];
-       elseif (($text != "") AND strstr($title, $text)) {
+       elseif (($text != "") AND strstr($title, $text)) {
                $data["text"] = $data["title"];
                $data["title"] = $data["url"];
        }
 
-       if (($data["text"] == "") AND ($data["title"] != "") AND ($data["url"] == ""))
-               return $data["title"].$data["after"];
+       if (($data["text"] == "") AND ($data["title"] != "") AND ($data["url"] == "")) {
+               return $data["title"] . $data["after"];
+       }
 
        // If the link already is included in the post, don't add it again
-       if (($data["url"] != "") AND strpos($data["text"], $data["url"]))
-               return $data["text"].$data["after"];
+       if (($data["url"] != "") AND strpos($data["text"], $data["url"])) {
+               return $data["text"] . $data["after"];
+       }
 
        $text = $data["text"];
 
-       if (($data["url"] != "") AND ($data["title"] != ""))
-               $text .= "\n[url=".$data["url"]."]".$data["title"]."[/url]";
-       elseif (($data["url"] != ""))
-               $text .= "\n".$data["url"];
+       if (($data["url"] != "") AND ($data["title"] != "")) {
+               $text .= "\n[url=" . $data["url"] . "]" . $data["title"] . "[/url]";
+       } elseif (($data["url"] != "")) {
+               $text .= "\n" . $data["url"];
+       }
 
-       return $text."\n".$data["after"];
+       return $text . "\n" . $data["after"];
 }
 
 function bb_cleanstyle($st) {
-  return "<span style=\"".cleancss($st[1]).";\">".$st[2]."</span>";
+       return "<span style=\"" . cleancss($st[1]) . ";\">" . $st[2] . "</span>";
 }
 
 function bb_cleanclass($st) {
-  return "<span class=\"".cleancss($st[1])."\">".$st[2]."</span>";
+       return "<span class=\"" . cleancss($st[1]) . "\">" . $st[2] . "</span>";
 }
 
 function cleancss($input) {
@@ -145,14 +156,16 @@ function cleancss($input) {
        for ($i = 0; $i < strlen($input); $i++) {
                $char = substr($input, $i, 1);
 
-               if (($char >= "a") and ($char <= "z"))
+               if (($char >= "a") and ($char <= "z")) {
                        $cleaned .= $char;
+               }
 
-               if (!(strpos(" #;:0123456789-_.%", $char) === false))
+               if (!(strpos(" #;:0123456789-_.%", $char) === false)) {
                        $cleaned .= $char;
+               }
        }
 
-       return($cleaned);
+       return $cleaned;
 }
 
 function stripcode_br_cb($s) {
@@ -166,25 +179,30 @@ function tryoembed($match) {
        $url = str_replace(array("http://www.youtube.com/", "http://player.vimeo.com/"),
                                array("https://www.youtube.com/", "https://player.vimeo.com/"), $url);
 
-
        $o = oembed_fetch_url($url);
 
-       if (!is_object($o))
+       if (!is_object($o)) {
                return $match[0];
+       }
 
-       if (isset($match[2]))
+       if (isset($match[2])) {
                $o->title = $match[2];
+       }
 
-       if ($o->type=="error") return $match[0];
+       if ($o->type == "error") {
+               return $match[0];
+       }
 
        $html = oembed_format_object($o);
+
        return $html;
 }
 
-// [noparse][i]italic[/i][/noparse] turns into
-// [noparse][ i ]italic[ /i ][/noparse],
-// to hide them from parser.
-
+/*
+ * [noparse][i]italic[/i][/noparse] turns into
+ * [noparse][ i ]italic[ /i ][/noparse],
+ * to hide them from parser.
+ */
 function bb_spacefy($st) {
        $whole_match = $st[0];
        $captured = $st[1];
@@ -193,10 +211,11 @@ function bb_spacefy($st) {
        return $new_str;
 }
 
-// The previously spacefied [noparse][ i ]italic[ /i ][/noparse],
-// now turns back and the [noparse] tags are trimed
-// returning [i]italic[/i]
-
+/*
+ * The previously spacefied [noparse][ i ]italic[ /i ][/noparse],
+ * now turns back and the [noparse] tags are trimed
+ * returning [i]italic[/i]
+ */
 function bb_unspacefy_and_trim($st) {
        $whole_match = $st[0];
        $captured = $st[1];
@@ -205,23 +224,26 @@ function bb_unspacefy_and_trim($st) {
 }
 
 function bb_find_open_close($s, $open, $close, $occurence = 1) {
-
-       if($occurence < 1)
+       if ($occurence < 1) {
                $occurence = 1;
+       }
 
        $start_pos = -1;
-       for($i = 1; $i <= $occurence; $i++) {
-               if( $start_pos !== false)
+       for ($i = 1; $i <= $occurence; $i++) {
+               if ($start_pos !== false) {
                        $start_pos = strpos($s, $open, $start_pos + 1);
+               }
        }
 
-       if( $start_pos === false)
+       if ($start_pos === false) {
                return false;
+       }
 
        $end_pos = strpos($s, $close, $start_pos);
 
-       if( $end_pos === false)
+       if ($end_pos === false) {
                return false;
+       }
 
        $res = array( 'start' => $start_pos, 'end' => $end_pos );
 
@@ -229,36 +251,50 @@ function bb_find_open_close($s, $open, $close, $occurence = 1) {
 }
 
 function get_bb_tag_pos($s, $name, $occurence = 1) {
-
-       if($occurence < 1)
+       if ($occurence < 1) {
                $occurence = 1;
+       }
 
        $start_open = -1;
-       for($i = 1; $i <= $occurence; $i++) {
-               if( $start_open !== false)
+       for ($i = 1; $i <= $occurence; $i++) {
+               if ($start_open !== false) {
                        $start_open = strpos($s, '[' . $name, $start_open + 1); // allow [name= type tags
+               }
        }
 
-       if( $start_open === false)
+       if ($start_open === false) {
                return false;
+       }
 
        $start_equal = strpos($s, '=', $start_open);
        $start_close = strpos($s, ']', $start_open);
 
-       if( $start_close === false)
+       if ($start_close === false) {
                return false;
+       }
 
        $start_close++;
 
        $end_open = strpos($s, '[/' . $name . ']', $start_close);
 
-       if( $end_open === false)
+       if ($end_open === false) {
                return false;
+       }
 
-       $res = array( 'start' => array('open' => $start_open, 'close' => $start_close),
-                     'end' => array('open' => $end_open, 'close' => $end_open + strlen('[/' . $name . ']')) );
-       if( $start_equal !== false)
+       $res = array(
+               'start' => array(
+                       'open'  => $start_open,
+                       'close' => $start_close
+               ),
+               'end'   => array(
+                       'open'  => $end_open,
+                       'close' => $end_open + strlen('[/' . $name . ']')
+               ),
+       );
+
+       if ($start_equal !== false) {
                $res['start']['equal'] = $start_equal + 1;
+       }
 
        return $res;
 }
@@ -269,13 +305,13 @@ function bb_tag_preg_replace($pattern, $replace, $name, $s) {
 
        $occurence = 1;
        $pos = get_bb_tag_pos($string, $name, $occurence);
-       while($pos !== false && $occurence < 1000) {
-
+       while ($pos !== false && $occurence < 1000) {
                $start = substr($string, 0, $pos['start']['open']);
                $subject = substr($string, $pos['start']['open'], $pos['end']['close'] - $pos['start']['open']);
                $end = substr($string, $pos['end']['close']);
-               if($end === false)
+               if ($end === false) {
                        $end = '';
+               }
 
                $subject = preg_replace($pattern, $replace, $subject);
                $string = $start . $subject . $end;
@@ -287,7 +323,7 @@ function bb_tag_preg_replace($pattern, $replace, $name, $s) {
        return $string;
 }
 
-if(! function_exists('bb_extract_images')) {
+if (! function_exists('bb_extract_images')) {
 function bb_extract_images($body) {
 
        $saved_image = array();
@@ -298,26 +334,28 @@ function bb_extract_images($body) {
        $img_start = strpos($orig_body, '[img');
        $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
        $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
-       while(($img_st_close !== false) && ($img_end !== false)) {
+       while (($img_st_close !== false) && ($img_end !== false)) {
 
                $img_st_close++; // make it point to AFTER the closing bracket
                $img_end += $img_start;
 
-               if(! strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
+               if (! strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
                        // This is an embedded image
 
                        $saved_image[$cnt] = substr($orig_body, $img_start + $img_st_close, $img_end - ($img_start + $img_st_close));
                        $new_body = $new_body . substr($orig_body, 0, $img_start) . '[$#saved_image' . $cnt . '#$]';
 
                        $cnt++;
-               }
-               else
+               } else {
                        $new_body = $new_body . substr($orig_body, 0, $img_end + strlen('[/img]'));
+               }
 
                $orig_body = substr($orig_body, $img_end + strlen('[/img]'));
 
-               if($orig_body === false) // in case the body ends on a closing image tag
+               if ($orig_body === false) {
+                       // in case the body ends on a closing image tag
                        $orig_body = '';
+               }
 
                $img_start = strpos($orig_body, '[img');
                $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
@@ -329,7 +367,7 @@ function bb_extract_images($body) {
        return array('body' => $new_body, 'images' => $saved_image);
 }}
 
-if(! function_exists('bb_replace_images')) {
+if (! function_exists('bb_replace_images')) {
 function bb_replace_images($body, $images) {
 
        $newbody = $body;
@@ -504,85 +542,94 @@ function bb_ShareAttributes($share, $simplehtml) {
                                );
                        break;
        }
-       return($text);
+
+       return $text;
 }
 
 function GetProfileUsername($profile, $username, $compact = false, $getnetwork = false) {
 
        $twitter = preg_replace("=https?://twitter.com/(.*)=ism", "$1@twitter.com", $profile);
        if ($twitter != $profile) {
-               if ($getnetwork)
-                       return(NETWORK_TWITTER);
-               elseif ($compact)
-                       return($twitter);
-               else
-                       return($username." (".$twitter.")");
+               if ($getnetwork) {
+                       return NETWORK_TWITTER;
+               } elseif ($compact) {
+                       return $twitter;
+               } else {
+                       return ($username . " (" . $twitter . ")");
+               }
        }
 
        $appnet = preg_replace("=https?://alpha.app.net/(.*)=ism", "$1@alpha.app.net", $profile);
        if ($appnet != $profile) {
-               if ($getnetwork)
-                       return(NETWORK_APPNET);
-               elseif ($compact)
-                       return($appnet);
-               else
-                       return($username." (".$appnet.")");
+               if ($getnetwork) {
+                       return NETWORK_APPNET;
+               } elseif ($compact) {
+                       return $appnet;
+               } else {
+                       return ($username . " (" . $appnet . ")");
+               }
        }
 
        $gplus = preg_replace("=https?://plus.google.com/(.*)=ism", "$1@plus.google.com", $profile);
        if ($gplus != $profile) {
-               if ($getnetwork)
-                       return(NETWORK_GPLUS);
-               elseif ($compact)
-                       return($gplususername." (".$username.")");
-               else
-                       return($username." (".$gplus.")");
+               if ($getnetwork) {
+                       return NETWORK_GPLUS;
+               } elseif ($compact) {
+                       return ($gplususername . " (" . $username . ")");
+               } else {
+                       return ($username . " (" . $gplus . ")");
+               }
        }
 
        $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile);
        if ($friendica != $profile) {
-               if ($getnetwork)
-                       return(NETWORK_DFRN);
-               elseif ($compact)
-                       return($friendica);
-               else
-                       return($username." (".$friendica.")");
+               if ($getnetwork) {
+                       return NETWORK_DFRN;
+               } elseif ($compact) {
+                       return $friendica;
+               } else {
+                       return ($username . " (" . $friendica . ")");
+               }
        }
 
        $diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile);
        if ($diaspora != $profile) {
-               if ($getnetwork)
-                       return(NETWORK_DIASPORA);
-               elseif ($compact)
-                       return($diaspora);
-               else
-                       return($username." (".$diaspora.")");
+               if ($getnetwork) {
+                       return NETWORK_DIASPORA;
+               } elseif ($compact) {
+                       return $diaspora;
+               } else {
+                       return ($username . " (" . $diaspora . ")");
+               }
        }
 
        $red = preg_replace("=https?://(.*)/channel/(.*)=ism", "$2@$1", $profile);
        if ($red != $profile) {
-               if ($getnetwork)
+               if ($getnetwork) {
                        // red is identified as Diaspora - friendica can't connect directly to it
-                       return(NETWORK_DIASPORA);
-               elseif ($compact)
-                       return($red);
-               else
-                       return($username." (".$red.")");
+                       return NETWORK_DIASPORA;
+               } elseif ($compact) {
+                       return $red;
+               } else {
+                       return ($username . " (" . $red . ")");
+               }
        }
 
        $StatusnetHost = preg_replace("=https?://(.*)/user/(.*)=ism", "$1", $profile);
        if ($StatusnetHost != $profile) {
                $StatusnetUser = preg_replace("=https?://(.*)/user/(.*)=ism", "$2", $profile);
                if ($StatusnetUser != $profile) {
+                       /// @TODO Some hosts run on https, not just http and sometimes http is disabled, let's support both here
                        $UserData = fetch_url("http://".$StatusnetHost."/api/users/show.json?user_id=".$StatusnetUser);
                        $user = json_decode($UserData);
                        if ($user) {
-                               if ($getnetwork)
-                                       return(NETWORK_STATUSNET);
-                               elseif ($compact)
-                                       return($user->screen_name."@".$StatusnetHost);
-                               else
-                                       return($username." (".$user->screen_name."@".$StatusnetHost.")");
+                               if ($getnetwork) {
+                                       return NETWORK_STATUSNET;
+                               } elseif ($compact) {
+                                       return ($user->screen_name . "@" . $StatusnetHost);
+                               } else {
+                                       return ($username . " (" . $user->screen_name . "@" . $StatusnetHost . ")");
+                               }
                        }
                }
        }
@@ -592,16 +639,17 @@ function GetProfileUsername($profile, $username, $compact = false, $getnetwork =
        if ($rest == "") {
                $pumpio = preg_replace("=https?://([\.\w]+)/([\.\w]+)(.*)=ism", "$2@$1", $profile);
                if ($pumpio != $profile) {
-                       if ($getnetwork)
-                               return(NETWORK_PUMPIO);
-                       elseif ($compact)
-                               return($pumpio);
-                       else
-                               return($username." (".$pumpio.")");
+                       if ($getnetwork) {
+                               return NETWORK_PUMPIO;
+                       } elseif ($compact) {
+                               return $pumpio;
+                       } else {
+                               return ($username . " (" . $pumpio . ")");
+                       }
                }
        }
 
-       return($username);
+       return $username;
 }
 
 function bb_DiasporaLinks($match) {
@@ -611,7 +659,7 @@ function bb_DiasporaLinks($match) {
 function bb_RemovePictureLinks($match) {
        $text = Cache::get($match[1]);
 
-       if(is_null($text)){
+       if (is_null($text)) {
                $a = get_app();
 
                $stamp1 = microtime(true);
@@ -652,20 +700,22 @@ function bb_RemovePictureLinks($match) {
                }
                Cache::set($match[1],$text);
        }
-       return($text);
+
+       return $text;
 }
 
 function bb_expand_links($match) {
-       if (($match[3] == "") OR ($match[2] == $match[3]) OR stristr($match[2], $match[3]))
-               return ($match[1]."[url]".$match[2]."[/url]");
-       else
-               return ($match[1].$match[3]." [url]".$match[2]."[/url]");
+       if (($match[3] == "") OR ($match[2] == $match[3]) OR stristr($match[2], $match[3])) {
+               return ($match[1] . "[url]" . $match[2] . "[/url]");
+       } else {
+               return ($match[1] . $match[3] . " [url]" . $match[2] . "[/url]");
+       }
 }
 
 function bb_CleanPictureLinksSub($match) {
        $text = Cache::get($match[1]);
 
-       if(is_null($text)){
+       if (is_null($text)) {
                $a = get_app();
 
                $stamp1 = microtime(true);
@@ -707,18 +757,20 @@ function bb_CleanPictureLinksSub($match) {
                }
                Cache::set($match[1],$text);
        }
-       return($text);
+
+       return $text;
 }
 
 function bb_CleanPictureLinks($text) {
        $text = preg_replace_callback("&\[url=([^\[\]]*)\]\[img\](.*)\[\/img\]\[\/url\]&Usi", 'bb_CleanPictureLinksSub', $text);
-       return ($text);
+       return $text;
 }
 
 function bb_highlight($match) {
-       if(in_array(strtolower($match[1]),['php','css','mysql','sql','abap','diff','html','perl','ruby',
-               'vbscript','avrc','dtd','java','xml','cpp','python','javascript','js','sh']))
-               return text_highlight($match[2],strtolower($match[1]));
+       if (in_array(strtolower($match[1]), ['php', 'css', 'mysql', 'sql', 'abap', 'diff', 'html', 'perl', 'ruby',
+               'vbscript', 'avrc', 'dtd', 'java', 'xml', 'cpp', 'python', 'javascript', 'js', 'sh'])) {
+               return text_highlight($match[2], strtolower($match[1]));
+       }
        return $match[0];
 }
 
@@ -827,7 +879,7 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $simplehtml = fa
        // Handle attached links or videos
        $Text = bb_attachment($Text, $simplehtml, $tryoembed);
 
-       $Text = str_replace(array("\r","\n"), array('<br />','<br />'), $Text);
+       $Text = str_replace(array("\r","\n"), array('<br />', '<br />'), $Text);
 
        if ($preserve_nl) {
                $Text = str_replace(array("\n", "\r"), array('', ''), $Text);
@@ -1082,15 +1134,14 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $simplehtml = fa
 
        // Shared content
        $Text = preg_replace_callback("/(.*?)\[share(.*?)\](.*?)\[\/share\]/ism",
-               function ($match) use ($simplehtml){
-                       return(bb_ShareAttributes($match, $simplehtml));
+               function ($match) use ($simplehtml) {
+                       return bb_ShareAttributes($match, $simplehtml);
                }, $Text);
 
        $Text = preg_replace("/\[crypt\](.*?)\[\/crypt\]/ism", '<br/><img src="' .App::get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . t('Encrypted content') . '" /><br />', $Text);
        $Text = preg_replace("/\[crypt(.*?)\](.*?)\[\/crypt\]/ism", '<br/><img src="' .App::get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . '$1' . ' ' . t('Encrypted content') . '" /><br />', $Text);
        //$Text = preg_replace("/\[crypt=(.*?)\](.*?)\[\/crypt\]/ism", '<br/><img src="' .App::get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . '$1' . ' ' . t('Encrypted content') . '" /><br />', $Text);
 
-
        // Try to Oembed
        if ($tryoembed) {
                $Text = preg_replace("/\[video\](.*?\.(ogg|ogv|oga|ogm|webm|mp4))\[\/video\]/ism", '<video src="$1" controls="controls" width="' . $a->videowidth . '" height="' . $a->videoheight . '"><a href="$1">$1</a></video>', $Text);
@@ -1160,7 +1211,7 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $simplehtml = fa
        // Summary (e.g. title) is required, earlier revisions only required description (in addition to
        // start which is always required). Allow desc with a missing summary for compatibility.
 
-       if((x($ev, 'desc') || x($ev, 'summary')) && x($ev, 'start')) {
+       if ((x($ev, 'desc') || x($ev, 'summary')) && x($ev, 'start')) {
                $sub = format_event_html($ev, $simplehtml);
 
                $Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism", '', $Text);
@@ -1215,7 +1266,7 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $simplehtml = fa
        $regex = '#<([^>]*?)(href)="(?!' . implode('|', $allowed_link_protocols) . ')(.*?)"(.*?)>#ism';
        $Text = preg_replace($regex, '<$1$2="javascript:void(0)"$4 class="invalid-href" title="' . t('Invalid link protocol') . '">', $Text);
 
-       if($saved_image) {
+       if ($saved_image) {
                $Text = bb_replace_images($Text, $saved_image);
        }
 
index 4b66b47a0046921d9e3413cd04fd83552edd940b..557d08c28874aaed1a0dff85d46883fb46a504f1 100644 (file)
@@ -19,7 +19,7 @@ function cli_startup() {
                require_once("dba.php");
                $db = new dba($db_host, $db_user, $db_pass, $db_data);
                unset($db_host, $db_user, $db_pass, $db_data);
-       };
+       };
 
        require_once('include/session.php');
 
index 56c032847c875087149a99dfea1109874a805e92..7069af066409164984c824313174e8ae2f16f292 100644 (file)
@@ -9,12 +9,12 @@ function contact_profile_assign($current,$foreign_net) {
 
        $o .= "<select id=\"contact-profile-selector\" class=\"form-control\" $disabled name=\"profile-assign\" />\r\n";
 
-       $r = q("SELECT `id`, `profile-name` FROM `profile` WHERE `uid` = %d",
+       $r = q("SELECT `id`, `profile-name`, `is-default` FROM `profile` WHERE `uid` = %d",
                        intval($_SESSION['uid']));
 
        if (dbm::is_result($r)) {
                foreach ($r as $rr) {
-                       $selected = (($rr['id'] == $current) ? " selected=\"selected\" " : "");
+                       $selected = (($rr['id'] == $current || ($current == 0 && $rr['is-default'] == 1)) ? " selected=\"selected\" " : "");
                        $o .= "<option value=\"{$rr['id']}\" $selected >{$rr['profile-name']}</option>\r\n";
                }
        }
@@ -37,7 +37,7 @@ function contact_reputation($current) {
                5 => t('Reputable, has my trust')
        );
 
-       foreach($rep as $k => $v) {
+       foreach ($rep as $k => $v) {
                $selected = (($k == $current) ? " selected=\"selected\" " : "");
                $o .= "<option value=\"$k\" $selected >$v</option>\r\n";
        }
@@ -61,7 +61,7 @@ function contact_poll_interval($current, $disabled = false) {
                5 => t('Monthly')
        );
 
-       foreach($rep as $k => $v) {
+       foreach ($rep as $k => $v) {
                $selected = (($k == $current) ? " selected=\"selected\" " : "");
                $o .= "<option value=\"$k\" $selected >$v</option>\r\n";
        }
index d077a065e16590def2a304749bcc57f5fd6a50ba..5dd3a8bb4b163996d597902adff6f99b741f07a3 100644 (file)
@@ -2,7 +2,7 @@
 
 function follow_widget($value = "") {
 
-       return replace_macros(get_markup_template('follow.tpl'),array(
+       return replace_macros(get_markup_template('follow.tpl'), array(
                '$connect' => t('Add New Contact'),
                '$desc' => t('Enter address or web location'),
                '$hint' => t('Example: bob@example.com, http://example.com/barbara'),
@@ -13,20 +13,20 @@ function follow_widget($value = "") {
 }
 
 function findpeople_widget() {
-       require_once('include/Contact.php');
+       require_once 'include/Contact.php';
 
        $a = get_app();
 
-       if(get_config('system','invitation_only')) {
-               $x = get_pconfig(local_user(),'system','invites_remaining');
-               if($x || is_site_admin()) {
+       if (get_config('system', 'invitation_only')) {
+               $x = get_pconfig(local_user(), 'system', 'invites_remaining');
+               if ($x || is_site_admin()) {
                        $a->page['aside'] .= '<div class="side-link" id="side-invite-remain">'
-                       . sprintf( tt('%d invitation available','%d invitations available',$x), $x)
+                       . sprintf( tt('%d invitation available', '%d invitations available', $x), $x)
                        . '</div>' . $inv;
                }
        }
 
-       return replace_macros(get_markup_template('peoplefind.tpl'),array(
+       return replace_macros(get_markup_template('peoplefind.tpl'), array(
                '$findpeople' => t('Find People'),
                '$desc' => t('Enter name or interest'),
                '$label' => t('Connect/Follow'),
@@ -45,32 +45,41 @@ function unavailable_networks() {
 
        $networks = array();
 
-       if (!plugin_enabled("appnet"))
+       if (!plugin_enabled("appnet")) {
                $networks[] = NETWORK_APPNET;
+       }
 
-       if (!plugin_enabled("fbpost") AND !plugin_enabled("facebook"))
+       if (!plugin_enabled("fbpost") AND !plugin_enabled("facebook")) {
                $networks[] = NETWORK_FACEBOOK;
+       }
 
-       if (!plugin_enabled("statusnet"))
+       if (!plugin_enabled("statusnet")) {
                $networks[] = NETWORK_STATUSNET;
+       }
 
-       if (!plugin_enabled("pumpio"))
+       if (!plugin_enabled("pumpio")) {
                $networks[] = NETWORK_PUMPIO;
+       }
 
-       if (!plugin_enabled("twitter"))
+       if (!plugin_enabled("twitter")) {
                $networks[] = NETWORK_TWITTER;
+       }
 
-       if (get_config("system","ostatus_disabled"))
+       if (get_config("system", "ostatus_disabled")) {
                $networks[] = NETWORK_OSTATUS;
+       }
 
-       if (!get_config("system","diaspora_enabled"))
+       if (!get_config("system", "diaspora_enabled")) {
                $networks[] = NETWORK_DIASPORA;
+       }
 
-       if (!plugin_enabled("pnut"))
+       if (!plugin_enabled("pnut")) {
                $networks[] = NETWORK_PNUT;
+       }
 
-       if (!sizeof($networks))
+       if (!sizeof($networks)) {
                return "";
+       }
 
        $network_filter = implode("','", $networks);
 
@@ -79,7 +88,7 @@ function unavailable_networks() {
        return $network_filter;
 }
 
-function networks_widget($baseurl,$selected = '') {
+function networks_widget($baseurl, $selected = '') {
 
        $a = get_app();
 
@@ -87,7 +96,7 @@ function networks_widget($baseurl,$selected = '') {
                return '';
        }
 
-       if (!feature_enabled(local_user(),'networks')) {
+       if (!feature_enabled(local_user(), 'networks')) {
                return '';
        }
 
@@ -99,7 +108,7 @@ function networks_widget($baseurl,$selected = '') {
 
        $nets = array();
        if (dbm::is_result($r)) {
-               require_once('include/contact_selectors.php');
+               require_once 'include/contact_selectors.php';
                foreach ($r as $rr) {
                        /// @TODO If 'network' is not there, this triggers an E_NOTICE
                        if ($rr['network']) {
@@ -108,10 +117,11 @@ function networks_widget($baseurl,$selected = '') {
                }
        }
 
-       if(count($nets) < 2)
+       if (count($nets) < 2) {
                return '';
+       }
 
-       return replace_macros(get_markup_template('nets.tpl'),array(
+       return replace_macros(get_markup_template('nets.tpl'), array(
                '$title' => t('Networks'),
                '$desc' => '',
                '$sel_all' => (($selected == '') ? 'selected' : ''),
@@ -122,31 +132,31 @@ function networks_widget($baseurl,$selected = '') {
        ));
 }
 
-function fileas_widget($baseurl,$selected = '') {
+function fileas_widget($baseurl, $selected = '') {
        if (! local_user()) {
                return '';
        }
 
-       if (! feature_enabled(local_user(),'filing')) {
+       if (! feature_enabled(local_user(), 'filing')) {
                return '';
        }
 
-       $saved = get_pconfig(local_user(),'system','filetags');
+       $saved = get_pconfig(local_user(), 'system', 'filetags');
        if (! strlen($saved)) {
                return;
        }
 
        $matches = false;
        $terms = array();
-       $cnt = preg_match_all('/\[(.*?)\]/',$saved,$matches,PREG_SET_ORDER);
+       $cnt = preg_match_all('/\[(.*?)\]/', $saved, $matches, PREG_SET_ORDER);
        if ($cnt) {
-               foreach($matches as $mtch) {
+               foreach ($matches as $mtch) {
                        $unescaped = xmlify(file_tag_decode($mtch[1]));
-                       $terms[] = array('name' => $unescaped,'selected' => (($selected == $unescaped) ? 'selected' : ''));
+                       $terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
                }
        }
 
-       return replace_macros(get_markup_template('fileas_widget.tpl'),array(
+       return replace_macros(get_markup_template('fileas_widget.tpl'), array(
                '$title' => t('Saved Folders'),
                '$desc' => '',
                '$sel_all' => (($selected == '') ? 'selected' : ''),
@@ -157,30 +167,31 @@ function fileas_widget($baseurl,$selected = '') {
        ));
 }
 
-function categories_widget($baseurl,$selected = '') {
+function categories_widget($baseurl, $selected = '') {
 
        $a = get_app();
 
-       if (! feature_enabled($a->profile['profile_uid'],'categories')) {
+       if (! feature_enabled($a->profile['profile_uid'], 'categories')) {
                return '';
        }
 
-       $saved = get_pconfig($a->profile['profile_uid'],'system','filetags');
+       $saved = get_pconfig($a->profile['profile_uid'], 'system', 'filetags');
        if (! strlen($saved)) {
                return;
        }
 
        $matches = false;
        $terms = array();
-        $cnt = preg_match_all('/<(.*?)>/',$saved,$matches,PREG_SET_ORDER);
-        if($cnt) {
-                foreach($matches as $mtch) {
-                       $unescaped = xmlify(file_tag_decode($mtch[1]));
-                       $terms[] = array('name' => $unescaped,'selected' => (($selected == $unescaped) ? 'selected' : ''));
+       $cnt = preg_match_all('/<(.*?)>/', $saved, $matches, PREG_SET_ORDER);
+
+       if ($cnt) {
+               foreach ($matches as $mtch) {
+                       $unescaped = xmlify(file_tag_decode($mtch[1]));
+                       $terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
                }
        }
 
-       return replace_macros(get_markup_template('categories_widget.tpl'),array(
+       return replace_macros(get_markup_template('categories_widget.tpl'), array(
                '$title' => t('Categories'),
                '$desc' => '',
                '$sel_all' => (($selected == '') ? 'selected' : ''),
@@ -195,29 +206,30 @@ function common_friends_visitor_widget($profile_uid) {
 
        $a = get_app();
 
-       if(local_user() == $profile_uid)
+       if (local_user() == $profile_uid) {
                return;
+       }
 
        $cid = $zcid = 0;
 
-       if(is_array($_SESSION['remote'])) {
-               foreach($_SESSION['remote'] as $visitor) {
-                       if($visitor['uid'] == $profile_uid) {
+       if (is_array($_SESSION['remote'])) {
+               foreach ($_SESSION['remote'] as $visitor) {
+                       if ($visitor['uid'] == $profile_uid) {
                                $cid = $visitor['cid'];
                                break;
                        }
                }
        }
 
-       if(! $cid) {
-               if(get_my_url()) {
+       if (! $cid) {
+               if (get_my_url()) {
                        $r = q("select id from contact where nurl = '%s' and uid = %d limit 1",
                                dbesc(normalise_link(get_my_url())),
                                intval($profile_uid)
                        );
-                       if (dbm::is_result($r))
+                       if (dbm::is_result($r)) {
                                $cid = $r[0]['id'];
-                       else {
+                       else {
                                $r = q("select id from gcontact where nurl = '%s' limit 1",
                                        dbesc(normalise_link(get_my_url()))
                                );
@@ -227,22 +239,26 @@ function common_friends_visitor_widget($profile_uid) {
                }
        }
 
-       if($cid == 0 && $zcid == 0)
+       if ($cid == 0 && $zcid == 0) {
                return;
+       }
 
-       require_once('include/socgraph.php');
+       require_once 'include/socgraph.php';
 
-       if($cid)
-               $t = count_common_friends($profile_uid,$cid);
-       else
-               $t = count_common_friends_zcid($profile_uid,$zcid);
-       if(! $t)
+       if ($cid) {
+               $t = count_common_friends($profile_uid, $cid);
+       } else {
+               $t = count_common_friends_zcid($profile_uid, $zcid);
+       }
+       if (! $t) {
                return;
+       }
 
-       if($cid)
-               $r = common_friends($profile_uid,$cid,0,5,true);
-       else
-               $r = common_friends_zcid($profile_uid,$zcid,0,5,true);
+       if ($cid) {
+               $r = common_friends($profile_uid, $cid, 0, 5, true);
+       } else {
+               $r = common_friends_zcid($profile_uid, $zcid, 0, 5, true);
+       }
 
        return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
                '$desc' =>  sprintf( tt("%d contact in common", "%d contacts in common", $t), $t),
index 93c42cd7b183eed4d6003feaf53ae934f99b0229..64204c696fd7afbb99635001e03cace994a98a60 100644 (file)
@@ -1,13 +1,15 @@
 <?php
 
-require_once("include/bbcode.php");
-require_once("include/acl_selectors.php");
+require_once "include/bbcode.php";
+require_once "include/acl_selectors.php";
 
 
-// Note: the code in 'item_extract_images' and 'item_redir_and_replace_images'
-// is identical to the code in mod/message.php for 'item_extract_images' and
-// 'item_redir_and_replace_images'
-if(! function_exists('item_extract_images')) {
+/*
+ * Note: the code in 'item_extract_images' and 'item_redir_and_replace_images'
+ * is identical to the code in mod/message.php for 'item_extract_images' and
+ * 'item_redir_and_replace_images'
+ */
+if (! function_exists('item_extract_images')) {
 function item_extract_images($body) {
 
        $saved_image = array();
@@ -18,26 +20,28 @@ function item_extract_images($body) {
        $img_start = strpos($orig_body, '[img');
        $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
        $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
-       while(($img_st_close !== false) && ($img_end !== false)) {
+       while (($img_st_close !== false) && ($img_end !== false)) {
 
                $img_st_close++; // make it point to AFTER the closing bracket
                $img_end += $img_start;
 
-               if(! strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
+               if (! strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
                        // This is an embedded image
 
                        $saved_image[$cnt] = substr($orig_body, $img_start + $img_st_close, $img_end - ($img_start + $img_st_close));
                        $new_body = $new_body . substr($orig_body, 0, $img_start) . '[!#saved_image' . $cnt . '#!]';
 
                        $cnt++;
-               }
-               else
+               } else {
                        $new_body = $new_body . substr($orig_body, 0, $img_end + strlen('[/img]'));
+               }
 
                $orig_body = substr($orig_body, $img_end + strlen('[/img]'));
 
-               if($orig_body === false) // in case the body ends on a closing image tag
+               if ($orig_body === false) {
+                       // in case the body ends on a closing image tag
                        $orig_body = '';
+               }
 
                $img_start = strpos($orig_body, '[img');
                $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
@@ -49,7 +53,7 @@ function item_extract_images($body) {
        return array('body' => $new_body, 'images' => $saved_image);
 }}
 
-if(! function_exists('item_redir_and_replace_images')) {
+if (! function_exists('item_redir_and_replace_images')) {
 function item_redir_and_replace_images($body, $images, $cid) {
 
        $origbody = $body;
@@ -57,7 +61,7 @@ function item_redir_and_replace_images($body, $images, $cid) {
 
        $cnt = 1;
        $pos = get_bb_tag_pos($origbody, 'url', 1);
-       while($pos !== false && $cnt < 1000) {
+       while ($pos !== false && $cnt < 1000) {
 
                $search = '/\[url\=(.*?)\]\[!#saved_image([0-9]*)#!\]\[\/url\]' . '/is';
                $replace = '[url=' . z_path() . '/redir/' . $cid
@@ -66,8 +70,9 @@ function item_redir_and_replace_images($body, $images, $cid) {
                $newbody .= substr($origbody, 0, $pos['start']['open']);
                $subject = substr($origbody, $pos['start']['open'], $pos['end']['close'] - $pos['start']['open']);
                $origbody = substr($origbody, $pos['end']['close']);
-               if($origbody === false)
+               if ($origbody === false) {
                        $origbody = '';
+               }
 
                $subject = preg_replace($search, $replace, $subject);
                $newbody .= $subject;
@@ -79,45 +84,51 @@ function item_redir_and_replace_images($body, $images, $cid) {
 
        $cnt = 0;
        foreach ($images as $image) {
-               // We're depending on the property of 'foreach' (specified on the PHP website) that
-               // it loops over the array starting from the first element and going sequentially
-               // to the last element
+               /*
+                * We're depending on the property of 'foreach' (specified on the PHP website) that
+                * it loops over the array starting from the first element and going sequentially
+                * to the last element.
+                */
                $newbody = str_replace('[!#saved_image' . $cnt . '#!]', '[img]' . $image . '[/img]', $newbody);
                $cnt++;
        }
        return $newbody;
 }}
 
-
-
 /**
  * Render actions localized
  */
-function localize_item(&$item){
+function localize_item(&$item) {
 
        $extracted = item_extract_images($item['body']);
-       if($extracted['images'])
+       if ($extracted['images']) {
                $item['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $item['contact-id']);
+       }
 
-       $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
-       if (activity_match($item['verb'],ACTIVITY_LIKE)
-               || activity_match($item['verb'],ACTIVITY_DISLIKE)
-               || activity_match($item['verb'],ACTIVITY_ATTEND)
-               || activity_match($item['verb'],ACTIVITY_ATTENDNO)
-               || activity_match($item['verb'],ACTIVITY_ATTENDMAYBE)){
-
-               $r = q("SELECT * from `item`,`contact` WHERE
-                               `item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
-                                dbesc($item['parent-uri']));
-               if (!dbm::is_result($r)) return;
-               $obj=$r[0];
+       /// @Separted ???
+       $xmlhead = "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">";
+       if (activity_match($item['verb'], ACTIVITY_LIKE)
+               || activity_match($item['verb'], ACTIVITY_DISLIKE)
+               || activity_match($item['verb'], ACTIVITY_ATTEND)
+               || activity_match($item['verb'], ACTIVITY_ATTENDNO)
+               || activity_match($item['verb'], ACTIVITY_ATTENDMAYBE)) {
+
+               /// @TODO may hurt performance
+               $r = q("SELECT * FROM `item`, `contact`
+                       WHERE `item`.`contact-id`=`contact`.`id`
+                       AND `item`.`uri`='%s'",
+                       dbesc($item['parent-uri']));
+               if (!dbm::is_result($r)) {
+                       return;
+               }
+               $obj = $r[0];
 
                $author  = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
                $objauthor =  '[url=' . $obj['author-link'] . ']' . $obj['author-name'] . '[/url]';
 
-               switch($obj['verb']){
+               switch ($obj['verb']) {
                        case ACTIVITY_POST:
-                               switch ($obj['object-type']){
+                               switch ($obj['object-type']) {
                                        case ACTIVITY_OBJ_EVENT:
                                                $post_type = t('event');
                                                break;
@@ -126,9 +137,10 @@ function localize_item(&$item){
                                }
                                break;
                        default:
-                               if($obj['resource-id']){
+                               if ($obj['resource-id']) {
                                        $post_type = t('photo');
-                                       $m=array(); preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
+                                       $m = array();
+                                       preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
                                        $rr['plink'] = $m[1];
                                } else {
                                        $post_type = t('status');
@@ -137,25 +149,25 @@ function localize_item(&$item){
 
                $plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
 
-               if(activity_match($item['verb'],ACTIVITY_LIKE)) {
+               if (activity_match($item['verb'], ACTIVITY_LIKE)) {
                        $bodyverb = t('%1$s likes %2$s\'s %3$s');
                }
-               elseif(activity_match($item['verb'],ACTIVITY_DISLIKE)) {
+               elseif (activity_match($item['verb'], ACTIVITY_DISLIKE)) {
                        $bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
                }
-               elseif(activity_match($item['verb'],ACTIVITY_ATTEND)) {
+               elseif (activity_match($item['verb'], ACTIVITY_ATTEND)) {
                        $bodyverb = t('%1$s attends %2$s\'s %3$s');
                }
-               elseif(activity_match($item['verb'],ACTIVITY_ATTENDNO)) {
+               elseif (activity_match($item['verb'], ACTIVITY_ATTENDNO)) {
                        $bodyverb = t('%1$s doesn\'t attend %2$s\'s %3$s');
                }
-               elseif(activity_match($item['verb'],ACTIVITY_ATTENDMAYBE)) {
+               elseif (activity_match($item['verb'], ACTIVITY_ATTENDMAYBE)) {
                        $bodyverb = t('%1$s attends maybe %2$s\'s %3$s');
                }
                $item['body'] = sprintf($bodyverb, $author, $objauthor, $plink);
 
        }
-       if (activity_match($item['verb'],ACTIVITY_FRIEND)) {
+       if (activity_match($item['verb'], ACTIVITY_FRIEND)) {
 
                if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return;
 
@@ -169,57 +181,65 @@ function localize_item(&$item){
 
                $Bname = $obj->title;
                $Blink = ""; $Bphoto = "";
-               foreach ($links->link as $l){
+               foreach ($links->link as $l) {
                        $atts = $l->attributes();
-                       switch($atts['rel']){
+                       switch ($atts['rel']) {
                                case "alternate": $Blink = $atts['href'];
                                case "photo": $Bphoto = $atts['href'];
                        }
-
                }
 
                $A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
                $B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
-               if ($Bphoto!="") $Bphoto = '[url=' . zrl($Blink) . '][img]' . $Bphoto . '[/img][/url]';
+               if ($Bphoto != "") {
+                       $Bphoto = '[url=' . zrl($Blink) . '][img]' . $Bphoto . '[/img][/url]';
+               }
 
                $item['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
 
        }
-       if (stristr($item['verb'],ACTIVITY_POKE)) {
+       if (stristr($item['verb'], ACTIVITY_POKE)) {
                $verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
-               if(! $verb)
+               if (! $verb) {
                        return;
-               if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return;
+               }
+               if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) {
+                       return;
+               }
 
                $Aname = $item['author-name'];
                $Alink = $item['author-link'];
 
-               $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
+               $xmlhead = "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">";
 
                $obj = parse_xml_string($xmlhead.$item['object']);
                $links = parse_xml_string($xmlhead."<links>".unxmlify($obj->link)."</links>");
 
                $Bname = $obj->title;
-               $Blink = ""; $Bphoto = "";
-               foreach ($links->link as $l){
+               $Blink = "";
+               $Bphoto = "";
+               foreach ($links->link as $l) {
                        $atts = $l->attributes();
-                       switch($atts['rel']){
+                       switch ($atts['rel']) {
                                case "alternate": $Blink = $atts['href'];
                                case "photo": $Bphoto = $atts['href'];
                        }
-
                }
 
                $A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]';
                $B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
-               if ($Bphoto!="") $Bphoto = '[url=' . zrl($Blink) . '][img=80x80]' . $Bphoto . '[/img][/url]';
+               if ($Bphoto != "") {
+                       $Bphoto = '[url=' . zrl($Blink) . '][img=80x80]' . $Bphoto . '[/img][/url]';
+               }
 
-               // we can't have a translation string with three positions but no distinguishable text
-               // So here is the translate string.
+               /*
+                * we can't have a translation string with three positions but no distinguishable text
+                * So here is the translate string.
+                */
                $txt = t('%1$s poked %2$s');
 
                // now translate the verb
-               $poked_t = trim(sprintf($txt, "",""));
+               $poked_t = trim(sprintf($txt, "", ""));
                $txt = str_replace( $poked_t, t($verb), $txt);
 
                // then do the sprintf on the translation string
@@ -227,10 +247,11 @@ function localize_item(&$item){
                $item['body'] = sprintf($txt, $A, $B). "\n\n\n" . $Bphoto;
 
        }
-       if (stristr($item['verb'],ACTIVITY_MOOD)) {
-               $verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
-               if(! $verb)
+       if (stristr($item['verb'], ACTIVITY_MOOD)) {
+               $verb = urldecode(substr($item['verb'], strpos($item['verb'], '#') + 1));
+               if (! $verb) {
                        return;
+               }
 
                $Aname = $item['author-name'];
                $Alink = $item['author-link'];
@@ -241,19 +262,25 @@ function localize_item(&$item){
                $item['body'] = sprintf($txt, $A, t($verb));
        }
 
-       if (activity_match($item['verb'],ACTIVITY_TAG)) {
-               $r = q("SELECT * from `item`,`contact` WHERE
-               `item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
-                dbesc($item['parent-uri']));
-               if (!dbm::is_result($r)) return;
-               $obj=$r[0];
+       if (activity_match($item['verb'], ACTIVITY_TAG)) {
+               /// @TODO may hurt performance "joining" two tables + asterisk
+               $r = q("SELECT * FROM `item`, `contact`
+                       WHERE `item`.`contact-id`=`contact`.`id`
+                       AND `item`.`uri`='%s'",
+                       dbesc($item['parent-uri']));
+
+               if (!dbm::is_result($r)) {
+                       return;
+               }
+
+               $obj = $r[0];
 
                $author  = '[url=' . zrl($item['author-link']) . ']' . $item['author-name'] . '[/url]';
                $objauthor =  '[url=' . zrl($obj['author-link']) . ']' . $obj['author-name'] . '[/url]';
 
-               switch($obj['verb']){
+               switch ($obj['verb']) {
                        case ACTIVITY_POST:
-                               switch ($obj['object-type']){
+                               switch ($obj['object-type']) {
                                        case ACTIVITY_OBJ_EVENT:
                                                $post_type = t('event');
                                                break;
@@ -262,13 +289,15 @@ function localize_item(&$item){
                                }
                                break;
                        default:
-                               if($obj['resource-id']){
+                               if ($obj['resource-id']) {
                                        $post_type = t('photo');
                                        $m=array(); preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
                                        $rr['plink'] = $m[1];
                                } else {
                                        $post_type = t('status');
                                }
+                               // Let's break everthing ... ;-)
+                               break;
                }
                $plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
 
@@ -278,22 +307,24 @@ function localize_item(&$item){
                $item['body'] = sprintf( t('%1$s tagged %2$s\'s %3$s with %4$s'), $author, $objauthor, $plink, $tag );
 
        }
-       if (activity_match($item['verb'],ACTIVITY_FAVORITE)){
+       if (activity_match($item['verb'], ACTIVITY_FAVORITE)) {
 
-               if ($item['object-type']== "")
+               if ($item['object-type'] == "") {
                        return;
+               }
 
                $Aname = $item['author-name'];
                $Alink = $item['author-link'];
 
-               $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
+               $xmlhead = "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">";
 
                $obj = parse_xml_string($xmlhead.$item['object']);
-               if(strlen($obj->id)) {
-                       $r = q("select * from item where uri = '%s' and uid = %d limit 1",
+               if (strlen($obj->id)) {
+                       $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
                                        dbesc($obj->id),
                                        intval($item['uid'])
                        );
+
                        if (dbm::is_result($r) && $r[0]['plink']) {
                                $target = $r[0];
                                $Bname = $target['author-name'];
@@ -302,21 +333,21 @@ function localize_item(&$item){
                                $B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]';
                                $P = '[url=' . $target['plink'] . ']' . t('post/item') . '[/url]';
                                $item['body'] = sprintf( t('%1$s marked %2$s\'s %3$s as favorite'), $A, $B, $P)."\n";
-
                        }
                }
        }
        $matches = null;
-       if(preg_match_all('/@\[url=(.*?)\]/is',$item['body'],$matches,PREG_SET_ORDER)) {
-               foreach($matches as $mtch) {
-                       if(! strpos($mtch[1],'zrl='))
-                               $item['body'] = str_replace($mtch[0],'@[url=' . zrl($mtch[1]). ']',$item['body']);
+       if (preg_match_all('/@\[url=(.*?)\]/is', $item['body'], $matches, PREG_SET_ORDER)) {
+               foreach ($matches as $mtch) {
+                       if (! strpos($mtch[1], 'zrl=')) {
+                               $item['body'] = str_replace($mtch[0], '@[url=' . zrl($mtch[1]) . ']', $item['body']);
+                       }
                }
        }
 
        // add zrl's to public images
        $photo_pattern = "/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is";
-       if(preg_match($photo_pattern,$item['body'])) {
+       if (preg_match($photo_pattern, $item['body'])) {
                $photo_replace = '[url=' . zrl('$1' . '/photos/' . '$2' . '/image/' . '$3' ,true) . '][img' . '$4' . ']h' . '$5'  . '[/img][/url]';
                $item['body'] = bb_tag_preg_replace($photo_pattern, $photo_replace, 'url', $item['body']);
        }
@@ -326,27 +357,26 @@ function localize_item(&$item){
        $x = stristr($item['plink'],'/display/');
        if ($x) {
                $sparkle = false;
-               $y = best_link_url($item,$sparkle,true);
+               $y = best_link_url($item, $sparkle, true);
 
-               if (strstr($y,'/redir/')) {
+               if (strstr($y, '/redir/')) {
                        $item['plink'] = $y . '?f=&url=' . $item['plink'];
                }
        }
-
-
-
 }
 
 /**
  * Count the total of comments on this item and its desendants
+ * @TODO proper type-hint + doc-tag
  */
 function count_descendants($item) {
        $total = count($item['children']);
 
-       if($total > 0) {
-               foreach($item['children'] as $child) {
-                       if(! visible_activity($child))
+       if ($total > 0) {
+               foreach ($item['children'] as $child) {
+                       if (! visible_activity($child)) {
                                $total --;
+                       }
                        $total += count_descendants($child);
                }
        }
@@ -356,18 +386,19 @@ function count_descendants($item) {
 
 function visible_activity($item) {
 
-       // likes (etc.) can apply to other things besides posts. Check if they are post children,
-       // in which case we handle them specially
-
+       /*
+        * likes (etc.) can apply to other things besides posts. Check if they are post children,
+        * in which case we handle them specially
+        */
        $hidden_activities = array(ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE);
-       foreach($hidden_activities as $act) {
-               if(activity_match($item['verb'],$act)) {
+       foreach ($hidden_activities as $act) {
+               if (activity_match($item['verb'], $act)) {
                        return false;
                }
        }
 
-       if(activity_match($item['verb'],ACTIVITY_FOLLOW) && $item['object-type'] === ACTIVITY_OBJ_NOTE) {
-               if(! (($item['self']) && ($item['uid'] == local_user()))) {
+       if (activity_match($item['verb'], ACTIVITY_FOLLOW) && $item['object-type'] === ACTIVITY_OBJ_NOTE) {
+               if (! (($item['self']) && ($item['uid'] == local_user()))) {
                        return false;
                }
        }
@@ -379,9 +410,8 @@ function visible_activity($item) {
  * @brief SQL query for items
  */
 function item_query() {
-
-       return "SELECT ".item_fieldlists()." FROM `item` ".
-               item_joins()." WHERE ".item_condition();
+       return "SELECT " . item_fieldlists() . " FROM `item` " .
+               item_joins() . " WHERE " . item_condition();
 }
 
 /**
@@ -439,7 +469,6 @@ These Fields are not added below (yet). They are here to for bug search.
  * @brief SQL join for contacts that are needed for displaying items
  */
 function item_joins() {
-
        return "STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND
                (NOT `contact`.`blocked` OR `contact`.`pending`)
                LEFT JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
@@ -450,10 +479,10 @@ function item_joins() {
  * @brief SQL condition for items that are needed for displaying items
  */
 function item_condition() {
-
        return "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
 }
 
+if (!function_exists('conversation')) {
 /**
  * "Render" a conversation or list of items for HTML display.
  * There are two major forms of display:
@@ -464,13 +493,11 @@ function item_condition() {
  * that are based on unique features of the calling module.
  *
  */
-
-if(!function_exists('conversation')) {
 function conversation(App $a, $items, $mode, $update, $preview = false) {
 
-       require_once('include/bbcode.php');
-       require_once('include/Contact.php');
-       require_once('mod/proxy.php');
+       require_once 'include/bbcode.php';
+       require_once 'include/Contact.php';
+       require_once 'mod/proxy.php';
 
        $ssl_state = ((local_user()) ? true : false);
 
@@ -480,100 +507,100 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
 
        $arr_blocked = null;
 
-       if(local_user()) {
-               $str_blocked = get_pconfig(local_user(),'system','blocked');
-               if($str_blocked) {
-                       $arr_blocked = explode(',',$str_blocked);
-                       for($x = 0; $x < count($arr_blocked); $x ++)
+       if (local_user()) {
+               $str_blocked = get_pconfig(local_user(), 'system', 'blocked');
+               if ($str_blocked) {
+                       $arr_blocked = explode(',', $str_blocked);
+                       for ($x = 0; $x < count($arr_blocked); $x ++) {
                                $arr_blocked[$x] = trim($arr_blocked[$x]);
+                       }
                }
 
        }
 
        $previewing = (($preview) ? ' preview ' : '');
 
-       if($mode === 'network') {
+       if ($mode === 'network') {
                $profile_owner = local_user();
                $page_writeable = true;
-               if(!$update) {
-                       // The special div is needed for liveUpdate to kick in for this page.
-                       // We only launch liveUpdate if you aren't filtering in some incompatible
-                       // way and also you aren't writing a comment (discovered in javascript).
-
+               if (!$update) {
+                       /*
+                        * The special div is needed for liveUpdate to kick in for this page.
+                        * We only launch liveUpdate if you aren't filtering in some incompatible
+                        * way and also you aren't writing a comment (discovered in javascript).
+                        */
                        $live_update_div = '<div id="live-network"></div>' . "\r\n"
                                . "<script> var profile_uid = " . $_SESSION['uid']
-                               . "; var netargs = '" . substr($a->cmd,8)
+                               . "; var netargs = '" . substr($a->cmd, 8)
                                . '?f='
-                               . ((x($_GET,'cid'))    ? '&cid='    . $_GET['cid']    : '')
-                               . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '')
-                               . ((x($_GET,'star'))   ? '&star='   . $_GET['star']   : '')
-                               . ((x($_GET,'order'))  ? '&order='  . $_GET['order']  : '')
-                               . ((x($_GET,'bmark'))  ? '&bmark='  . $_GET['bmark']  : '')
-                               . ((x($_GET,'liked'))  ? '&liked='  . $_GET['liked']  : '')
-                               . ((x($_GET,'conv'))   ? '&conv='   . $_GET['conv']   : '')
-                               . ((x($_GET,'spam'))   ? '&spam='   . $_GET['spam']   : '')
-                               . ((x($_GET,'nets'))   ? '&nets='   . $_GET['nets']   : '')
-                               . ((x($_GET,'cmin'))   ? '&cmin='   . $_GET['cmin']   : '')
-                               . ((x($_GET,'cmax'))   ? '&cmax='   . $_GET['cmax']   : '')
-                               . ((x($_GET,'file'))   ? '&file='   . $_GET['file']   : '')
+                               . ((x($_GET, 'cid'))    ? '&cid='    . $_GET['cid']    : '')
+                               . ((x($_GET, 'search')) ? '&search=' . $_GET['search'] : '')
+                               . ((x($_GET, 'star'))   ? '&star='   . $_GET['star']   : '')
+                               . ((x($_GET, 'order'))  ? '&order='  . $_GET['order']  : '')
+                               . ((x($_GET, 'bmark'))  ? '&bmark='  . $_GET['bmark']  : '')
+                               . ((x($_GET, 'liked'))  ? '&liked='  . $_GET['liked']  : '')
+                               . ((x($_GET, 'conv'))   ? '&conv='   . $_GET['conv']   : '')
+                               . ((x($_GET, 'spam'))   ? '&spam='   . $_GET['spam']   : '')
+                               . ((x($_GET, 'nets'))   ? '&nets='   . $_GET['nets']   : '')
+                               . ((x($_GET, 'cmin'))   ? '&cmin='   . $_GET['cmin']   : '')
+                               . ((x($_GET, 'cmax'))   ? '&cmax='   . $_GET['cmax']   : '')
+                               . ((x($_GET, 'file'))   ? '&file='   . $_GET['file']   : '')
 
                                . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                }
-       }
-       else if($mode === 'profile') {
+       } elseif ($mode === 'profile') {
                $profile_owner = $a->profile['profile_uid'];
                $page_writeable = can_write_wall($a,$profile_owner);
 
-               if(!$update) {
+               if (!$update) {
                        $tab = notags(trim($_GET['tab']));
                        $tab = ( $tab ? $tab : 'posts' );
-                       if($tab === 'posts') {
-                               // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
-                               // because browser prefetching might change it on us. We have to deliver it with the page.
+                       if ($tab === 'posts') {
+                               /*
+                                * This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
+                                * because browser prefetching might change it on us. We have to deliver it with the page.
+                                */
 
                                $live_update_div = '<div id="live-profile"></div>' . "\r\n"
                                        . "<script> var profile_uid = " . $a->profile['profile_uid']
                                        . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                        }
                }
-       }
-       else if($mode === 'notes') {
+       } elseif ($mode === 'notes') {
                $profile_owner = local_user();
                $page_writeable = true;
-               if(!$update) {
+               if (!$update) {
                        $live_update_div = '<div id="live-notes"></div>' . "\r\n"
                                . "<script> var profile_uid = " . local_user()
                                . "; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                }
-       }
-       else if($mode === 'display') {
+       } elseif ($mode === 'display') {
                $profile_owner = $a->profile['uid'];
                $page_writeable = can_write_wall($a,$profile_owner);
-               if(!$update) {
+               if (!$update) {
                        $live_update_div = '<div id="live-display"></div>' . "\r\n"
                                . "<script> var profile_uid = " . $_SESSION['uid'] . ";"
                                . " var profile_page = 1; </script>";
                }
-       }
-       else if($mode === 'community') {
+       } elseif ($mode === 'community') {
                $profile_owner = 0;
                $page_writeable = false;
-               if(!$update) {
+               if (!$update) {
                        $live_update_div = '<div id="live-community"></div>' . "\r\n"
                                . "<script> var profile_uid = -1; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                }
-       }
-       else if($mode === 'search') {
+       } elseif ($mode === 'search') {
                $live_update_div = '<div id="live-search"></div>' . "\r\n";
        }
 
        $page_dropping = ((local_user() && local_user() == $profile_owner) ? true : false);
 
 
-       if($update)
+       if ($update) {
                $return_url = $_SESSION['return_url'];
-       else
+       } else {
                $return_url = $_SESSION['return_url'] = $a->query_string;
+       }
 
        $cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview);
        call_hooks('conversation_start',$cb);
@@ -594,28 +621,32 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
 
        $page_template = get_markup_template("conversation.tpl");
 
-       if($items && count($items)) {
+       if ($items && count($items)) {
 
-               if($mode === 'network-new' || $mode === 'search' || $mode === 'community') {
+               if ($mode === 'network-new' || $mode === 'search' || $mode === 'community') {
 
-                       // "New Item View" on network page or search page results
-                       // - just loop through the items and format them minimally for display
+                       /*
+                        * "New Item View" on network page or search page results
+                        * - just loop through the items and format them minimally for display
+                        */
 
-//                     $tpl = get_markup_template('search_item.tpl');
+                       /// @TODO old lost code?
+                       // $tpl = get_markup_template('search_item.tpl');
                        $tpl = 'search_item.tpl';
 
-                       foreach($items as $item) {
+                       foreach ($items as $item) {
 
-                               if($arr_blocked) {
+                               if ($arr_blocked) {
                                        $blocked = false;
-                                       foreach($arr_blocked as $b) {
-                                               if($b && link_compare($item['author-link'],$b)) {
+                                       foreach ($arr_blocked as $b) {
+                                               if ($b && link_compare($item['author-link'], $b)) {
                                                        $blocked = true;
                                                        break;
                                                }
                                        }
-                                       if($blocked)
+                                       if ($blocked) {
                                                continue;
+                                       }
                                }
 
 
@@ -626,70 +657,76 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
                                $owner_name  = '';
                                $sparkle     = '';
 
-                               if($mode === 'search' || $mode === 'community') {
-                                       if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
+                               if ($mode === 'search' || $mode === 'community') {
+                                       if (((activity_match($item['verb'], ACTIVITY_LIKE)) || (activity_match($item['verb'], ACTIVITY_DISLIKE)))
                                                && ($item['id'] != $item['parent']))
                                                continue;
                                        $nickname = $item['nickname'];
-                               }
-                               else
+                               } else {
                                        $nickname = $a->user['nickname'];
+                               }
 
                                // prevent private email from leaking.
-                               if($item['network'] === NETWORK_MAIL && local_user() != $item['uid'])
-                                               continue;
+                               if ($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
+                                       continue;
+                               }
 
-                               $profile_name   = ((strlen($item['author-name']))   ? $item['author-name']   : $item['name']);
-                               if($item['author-link'] && (! $item['author-name']))
+                               $profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
+                               if ($item['author-link'] && (! $item['author-name'])) {
                                        $profile_name = $item['author-link'];
+                               }
 
-
-
-                               $tags=array();
+                               $tags = array();
                                $hashtags = array();
                                $mentions = array();
 
                                $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"] == "")
-                                               $tag["url"] = $searchpath.strtolower($tag["term"]);
+                                       if ($tag["url"] == "") {
+                                               $tag["url"] = $searchpath . strtolower($tag["term"]);
+                                       }
 
                                        if ($tag["type"] == TERM_HASHTAG) {
-                                               $hashtags[] = "#<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
+                                               $hashtags[] = "#<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
                                                $prefix = "#";
                                        } elseif ($tag["type"] == TERM_MENTION) {
-                                               $mentions[] = "@<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
+                                               $mentions[] = "@<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
                                                $prefix = "@";
                                        }
-                                       $tags[] = $prefix."<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
+                                       $tags[] = $prefix."<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
                                }
 
                                $sp = false;
                                $profile_link = best_link_url($item,$sp);
-                               if($profile_link === 'mailbox')
+                               if ($profile_link === 'mailbox') {
                                        $profile_link = '';
-                               if($sp)
+                               }
+
+                               if ($sp) {
                                        $sparkle = ' sparkle';
-                               else
+                               } else {
                                        $profile_link = zrl($profile_link);
+                               }
 
-                               if (!isset($item['author-thumb']) OR ($item['author-thumb'] == "")) {
+                               if (!x($item, 'author-thumb') OR ($item['author-thumb'] == "")) {
                                        $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
-                                       if ($author_contact["thumb"])
+                                       if ($author_contact["thumb"]) {
                                                $item['author-thumb'] = $author_contact["thumb"];
-                                       else
+                                       } else {
                                                $item['author-thumb'] = $item['author-avatar'];
+                                       }
                                }
 
                                if (!isset($item['owner-thumb']) OR ($item['owner-thumb'] == "")) {
                                        $owner_contact = get_contact_details_by_url($item['owner-link'], $profile_owner);
-                                       if ($owner_contact["thumb"])
+                                       if ($owner_contact["thumb"]) {
                                                $item['owner-thumb'] = $owner_contact["thumb"];
-                                       else
+                                       } else {
                                                $item['owner-thumb'] = $item['owner-avatar'];
+                                       }
                                }
 
                                $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
@@ -698,11 +735,11 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
                                $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate));
 
                                localize_item($item);
-                               if($mode === 'network-new')
+                               if ($mode === 'network-new') {
                                        $dropping = true;
-                               else
+                               } else {
                                        $dropping = false;
-
+                               }
 
                                $drop = array(
                                        'dropping' => $dropping,
@@ -718,12 +755,11 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
                                $likebuttons = false;
                                $shareable = false;
 
-                               $body = prepare_body($item,true, $preview);
-
+                               $body = prepare_body($item, true, $preview);
 
                                list($categories, $folders) = get_cats_and_terms($item);
 
-                               if($a->theme['template_engine'] === 'internal') {
+                               if ($a->theme['template_engine'] === 'internal') {
                                        $profile_name_e = template_escape($profile_name);
                                        $item['title_e'] = template_escape($item['title']);
                                        $body_e = template_escape($body);
@@ -732,8 +768,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
                                        $mentions_e = template_escape($mentions);
                                        $location_e = template_escape($location);
                                        $owner_name_e = template_escape($owner_name);
-                               }
-                               else {
+                               } else {
                                        $profile_name_e = $profile_name;
                                        $item['title_e'] = $item['title'];
                                        $body_e = $body;
@@ -744,8 +779,9 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
                                        $owner_name_e = $owner_name;
                                }
 
-                               if ($item['item_network'] == "")
+                               if ($item['item_network'] == "") {
                                        $item['item_network'] = $item['network'];
+                               }
 
                                $tmp_item = array(
                                        'template' => $tpl,
@@ -802,47 +838,45 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
                                $threads[$threadsid]['items'] = array($arr['output']);
 
                        }
-               }
-               else
-               {
+               } else {
                        // Normal View
                        $page_template = get_markup_template("threaded_conversation.tpl");
 
-                       require_once('object/Conversation.php');
-                       require_once('object/Item.php');
+                       require_once 'object/Conversation.php';
+                       require_once 'object/Item.php';
 
                        $conv = new Conversation($mode, $preview);
 
-                       // get all the topmost parents
-                       // this shouldn't be needed, as we should have only them in our array
-                       // But for now, this array respects the old style, just in case
-
+                       /*
+                        * get all the topmost parents
+                        * this shouldn't be needed, as we should have only them in our array
+                        * But for now, this array respects the old style, just in case
+                        */
                        $threads = array();
-                       foreach($items as $item) {
+                       foreach ($items as $item) {
 
-                               if($arr_blocked) {
+                               if ($arr_blocked) {
                                        $blocked = false;
-                                       foreach($arr_blocked as $b) {
-
-                                               if($b && link_compare($item['author-link'],$b)) {
+                                       foreach ($arr_blocked as $b) {
+                                               if ($b && link_compare($item['author-link'], $b)) {
                                                        $blocked = true;
                                                        break;
                                                }
                                        }
-                                       if($blocked)
+                                       if ($blocked) {
                                                continue;
+                                       }
                                }
 
-
-
                                // Can we put this after the visibility check?
                                builtin_activity_puller($item, $conv_responses);
 
                                // Only add what is visible
-                               if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
+                               if ($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
                                        continue;
                                }
-                               if(! visible_activity($item)) {
+
+                               if (! visible_activity($item)) {
                                        continue;
                                }
 
@@ -850,7 +884,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
 
                                $item['pagedrop'] = $page_dropping;
 
-                               if($item['id'] == $item['parent']) {
+                               if ($item['id'] == $item['parent']) {
                                        $item_object = new Item($item);
                                        $conv->add_thread($item_object);
                                }
@@ -858,7 +892,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
 
                        $threads = $conv->get_template_data($conv_responses);
 
-                       if(!$threads) {
+                       if (!$threads) {
                                logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
                                $threads = array();
                        }
@@ -873,13 +907,13 @@ function conversation(App $a, $items, $mode, $update, $preview = false) {
                '$mode' => $mode,
                '$user' => $a->user,
                '$threads' => $threads,
-               '$dropping' => ($page_dropping && feature_enabled(local_user(),'multi_delete') ? t('Delete Selected Items') : False),
+               '$dropping' => ($page_dropping && feature_enabled(local_user(), 'multi_delete') ? t('Delete Selected Items') : False),
        ));
 
        return $o;
 }}
 
-function best_link_url($item,&$sparkle,$ssl_state = false) {
+function best_link_url($item, &$sparkle, $ssl_state = false) {
 
        $best_url = '';
        $sparkle  = false;
@@ -889,16 +923,17 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
        if (local_user()) {
                $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' AND NOT `pending` LIMIT 1",
                        dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
-               if ($r) {
-                       $best_url = 'redir/'.$r[0]['id'];
+               if (dbm::is_result($r)) {
+                       $best_url = 'redir/' . $r[0]['id'];
                        $sparkle = true;
                }
        }
-       if(! $best_url) {
-               if(strlen($item['author-link']))
+       if (! $best_url) {
+               if (strlen($item['author-link'])) {
                        $best_url = $item['author-link'];
-               else
+               } else {
                        $best_url = $item['url'];
+               }
        }
 
        return $best_url;
@@ -906,11 +941,10 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
 
 
 if (! function_exists('item_photo_menu')) {
-function item_photo_menu($item)
-{
+function item_photo_menu($item) {
        $ssl_state = false;
 
-       if(local_user()) {
+       if (local_user()) {
                $ssl_state = true;
        }
 
@@ -938,13 +972,13 @@ function item_photo_menu($item)
        $rel = 0;
        $r = q("SELECT `id`, `network`, `rel` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1",
                intval(local_user()), dbesc(normalise_link($item['author-link'])));
-       if ($r) {
+       if (dbm::is_result($r)) {
                $cid = $r[0]['id'];
                $network = $r[0]['network'];
                $rel = $r[0]['rel'];
        }
 
-       if($sparkle) {
+       if ($sparkle) {
                $status_link = $profile_link . '?url=status';
                $photos_link = $profile_link . '?url=photos';
                $profile_link = $profile_link . '?url=profile';
@@ -964,7 +998,7 @@ function item_photo_menu($item)
        }
 
        if (local_user()) {
-               $menu = Array(
+               $menu = array(
                        t('Follow Thread') => $sub_link,
                        t('View Status') => $status_link,
                        t('View Profile') => $profile_link,
@@ -1004,6 +1038,7 @@ function item_photo_menu($item)
        return $o;
 }}
 
+if (! function_exists('builtin_activity_puller')) {
 /**
  * @brief Checks item to see if it is one of the builtin activities (like/dislike, event attendance, consensus items, etc.)
  * Increments the count of each matching activity and adds a link to the author as needed.
@@ -1012,13 +1047,12 @@ function item_photo_menu($item)
  * @param array &$conv_responses (already created with builtin activity structure)
  * @return void
  */
-if(! function_exists('builtin_activity_puller')) {
 function builtin_activity_puller($item, &$conv_responses) {
-       foreach($conv_responses as $mode => $v) {
+       foreach ($conv_responses as $mode => $v) {
                $url = '';
                $sparkle = '';
 
-               switch($mode) {
+               switch ($mode) {
                        case 'like':
                                $verb = ACTIVITY_LIKE;
                                break;
@@ -1039,32 +1073,36 @@ function builtin_activity_puller($item, &$conv_responses) {
                                break;
                }
 
-               if((activity_match($item['verb'], $verb)) && ($item['id'] != $item['parent'])) {
+               if ((activity_match($item['verb'], $verb)) && ($item['id'] != $item['parent'])) {
                        $url = $item['author-link'];
-                       if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === NETWORK_DFRN) && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
+                       if ((local_user()) && (local_user() == $item['uid']) && ($item['network'] === NETWORK_DFRN) && (! $item['self']) && (link_compare($item['author-link'], $item['url']))) {
                                $url = 'redir/' . $item['contact-id'];
                                $sparkle = ' class="sparkle" ';
-                       }
-                       else
+                       } else {
                                $url = zrl($url);
+                       }
 
                        $url = '<a href="'. $url . '"'. $sparkle .'>' . htmlentities($item['author-name']) . '</a>';
 
-                       if(! $item['thr-parent'])
+                       if (! $item['thr-parent']) {
                                $item['thr-parent'] = $item['parent-uri'];
+                       }
 
-                       if(! ((isset($conv_responses[$mode][$item['thr-parent'] . '-l']))
-                               && (is_array($conv_responses[$mode][$item['thr-parent'] . '-l']))))
+                       if (! ((isset($conv_responses[$mode][$item['thr-parent'] . '-l']))
+                               && (is_array($conv_responses[$mode][$item['thr-parent'] . '-l'])))) {
                                $conv_responses[$mode][$item['thr-parent'] . '-l'] = array();
+                       }
 
                        // only list each unique author once
-                       if(in_array($url,$conv_responses[$mode][$item['thr-parent'] . '-l']))
+                       if (in_array($url,$conv_responses[$mode][$item['thr-parent'] . '-l'])) {
                                continue;
+                       }
 
-                       if(! isset($conv_responses[$mode][$item['thr-parent']]))
+                       if (! isset($conv_responses[$mode][$item['thr-parent']])) {
                                $conv_responses[$mode][$item['thr-parent']] = 1;
-                       else
+                       } else {
                                $conv_responses[$mode][$item['thr-parent']] ++;
+                       }
 
                        if (public_contact() == $item['author-id']) {
                                $conv_responses[$mode][$item['thr-parent'] . '-self'] = 1;
@@ -1078,24 +1116,25 @@ function builtin_activity_puller($item, &$conv_responses) {
        }
 }}
 
-// Format the vote text for a profile item
-// $cnt = number of people who vote the item
-// $arr = array of pre-linked names of likers/dislikers
-// $type = one of 'like, 'dislike', 'attendyes', 'attendno', 'attendmaybe'
-// $id  = item id
-// returns formatted text
-
-if(! function_exists('format_like')) {
-function format_like($cnt,$arr,$type,$id) {
+if (! function_exists('format_like')) {
+/**
+ * Format the vote text for a profile item
+ * @param int $cnt = number of people who vote the item
+ * @param array $arr = array of pre-linked names of likers/dislikers
+ * @param string $type = one of 'like, 'dislike', 'attendyes', 'attendno', 'attendmaybe'
+ * @param int $id  = item id
+ * @return formatted text
+ */
+function format_like($cnt, array $arr, $type, $id) {
        $o = '';
        $expanded = '';
 
-       if($cnt == 1) {
+       if ($cnt == 1) {
                $likers = $arr[0];
 
                // Phrase if there is only one liker. In other cases it will be uses for the expanded
                // list which show all likers
-               switch($type) {
+               switch ($type) {
                        case 'like' :
                                $phrase = sprintf( t('%s likes this.'), $likers);
                                break;
@@ -1114,16 +1153,17 @@ function format_like($cnt,$arr,$type,$id) {
                }
        }
 
-       if($cnt > 1) {
+       if ($cnt > 1) {
                $total = count($arr);
-               if($total >= MAX_LIKERS)
+               if ($total >= MAX_LIKERS) {
                        $arr = array_slice($arr, 0, MAX_LIKERS - 1);
-               if($total < MAX_LIKERS) {
+               }
+               if ($total < MAX_LIKERS) {
                        $last = t('and') . ' ' . $arr[count($arr)-1];
                        $arr2 = array_slice($arr, 0, -1);
                        $str = implode(', ', $arr2) . ' ' . $last;
                }
-               if($total >= MAX_LIKERS) {
+               if ($total >= MAX_LIKERS) {
                        $str = implode(', ', $arr);
                        $str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
                }
@@ -1132,7 +1172,7 @@ function format_like($cnt,$arr,$type,$id) {
 
                $spanatts = "class=\"fakelink\" onclick=\"openClose('{$type}list-$id');\"";
 
-               switch($type) {
+               switch ($type) {
                        case 'like':
                                $phrase = sprintf( t('<span  %1$s>%2$d people</span> like this'), $spanatts, $cnt);
                                $explikers = sprintf( t('%s like this.'), $likers);
@@ -1169,11 +1209,10 @@ function format_like($cnt,$arr,$type,$id) {
        return $o;
 }}
 
-
-function status_editor($a,$x, $notes_cid = 0, $popup=false) {
+function status_editor(App $a, $x, $notes_cid = 0, $popup = false) {
        $o = '';
 
-       $geotag = (($x['allow_location']) ? replace_macros(get_markup_template('jot_geotag.tpl'), array()) : '');
+       $geotag = (x($x, 'allow_location') ? replace_macros(get_markup_template('jot_geotag.tpl'), array()) : '');
 
        $tpl = get_markup_template('jot-header.tpl');
        $a->page['htmlhead'] .= replace_macros($tpl, array(
@@ -1211,24 +1250,27 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
 
        // Private/public post links for the non-JS ACL form
        $private_post = 1;
-       if($_REQUEST['public'])
+       if (x($_REQUEST, 'public')) {
                $private_post = 0;
+       }
 
        $query_str = $a->query_string;
-       if(strpos($query_str, 'public=1') !== false)
+       if (strpos($query_str, 'public=1') !== false) {
                $query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str);
+       }
 
-       // I think $a->query_string may never have ? in it, but I could be wrong
-       // It looks like it's from the index.php?q=[etc] rewrite that the web
-       // server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
-       if(strpos($query_str, '?') === false)
+       /*
+        * I think $a->query_string may never have ? in it, but I could be wrong
+        * It looks like it's from the index.php?q=[etc] rewrite that the web
+        * server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
+        */
+       if (strpos($query_str, '?') === false) {
                $public_post_link = '?public=1';
-       else
+       } else {
                $public_post_link = '&public=1';
+       }
 
-
-
-//     $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
+       // $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
        $tpl = get_markup_template("jot.tpl");
 
        $o .= replace_macros($tpl,array(
@@ -1252,7 +1294,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
                '$title' => $x['title'],
                '$placeholdertitle' => t('Set title'),
                '$category' => $x['category'],
-               '$placeholdercategory' => (feature_enabled(local_user(),'categories') ? t('Categories (comma-separated list)') : ''),
+               '$placeholdercategory' => (feature_enabled(local_user(), 'categories') ? t('Categories (comma-separated list)') : ''),
                '$wait' => t('Please wait'),
                '$permset' => t('Permission settings'),
                '$shortpermset' => t('permissions'),
@@ -1290,9 +1332,8 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
        ));
 
 
-       if ($popup==true){
+       if ($popup == true) {
                $o = '<div id="jot-popup" style="display: none;">'.$o.'</div>';
-
        }
 
        return $o;
@@ -1302,20 +1343,20 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
 function get_item_children($arr, $parent) {
        $children = array();
        $a = get_app();
-       foreach($arr as $item) {
-               if($item['id'] != $item['parent']) {
-                       if(get_config('system','thread_allow') && $a->theme_thread_allow) {
+       foreach ($arr as $item) {
+               if ($item['id'] != $item['parent']) {
+                       if (get_config('system', 'thread_allow') && $a->theme_thread_allow) {
                                // Fallback to parent-uri if thr-parent is not set
                                $thr_parent = $item['thr-parent'];
-                               if($thr_parent == '')
+                               if ($thr_parent == '') {
                                        $thr_parent = $item['parent-uri'];
+                               }
 
-                               if($thr_parent == $parent['uri']) {
+                               if ($thr_parent == $parent['uri']) {
                                        $item['children'] = get_item_children($arr, $item);
                                        $children[] = $item;
                                }
-                       }
-                       else if($item['parent'] == $parent['id']) {
+                       } elseif ($item['parent'] == $parent['id']) {
                                $children[] = $item;
                        }
                }
@@ -1323,66 +1364,82 @@ function get_item_children($arr, $parent) {
        return $children;
 }
 
+/// @TODO Add type-hint
 function sort_item_children($items) {
        $result = $items;
-       usort($result,'sort_thr_created_rev');
-       foreach($result as $k => $i) {
-               if(count($result[$k]['children'])) {
+       usort($result, 'sort_thr_created_rev');
+       foreach ($result as $k => $i) {
+               if (count($result[$k]['children'])) {
                        $result[$k]['children'] = sort_item_children($result[$k]['children']);
                }
        }
        return $result;
 }
 
+/// @TODO Add type-hint
 function add_children_to_list($children, &$arr) {
-       foreach($children as $y) {
+       foreach ($children as $y) {
                $arr[] = $y;
-               if(count($y['children']))
+               if (count($y['children'])) {
                        add_children_to_list($y['children'], $arr);
+               }
        }
 }
 
-function conv_sort($arr,$order) {
+/// @TODO Add type-hint
+function conv_sort($arr, $order) {
 
-       if((!(is_array($arr) && count($arr))))
+       if ((!(is_array($arr) && count($arr)))) {
                return array();
+       }
 
        $parents = array();
        $children = array();
        $newarr = array();
 
-       // This is a preparation for having two different items with the same uri in one thread
-       // This will otherwise lead to an endless loop.
-       foreach($arr as $x)
-               if (!isset($newarr[$x['uri']]))
+       /*
+        * This is a preparation for having two different items with the same uri in one thread
+        * This will otherwise lead to an endless loop.
+        */
+       foreach ($arr as $x) {
+               if (!isset($newarr[$x['uri']])) {
                        $newarr[$x['uri']] = $x;
+               }
+       }
 
        $arr = $newarr;
 
-       foreach($arr as $x)
-               if($x['id'] == $x['parent'])
-                               $parents[] = $x;
+       foreach ($arr as $x) {
+               if ($x['id'] == $x['parent']) {
+                       $parents[] = $x;
+               }
+       }
 
-       if(stristr($order,'created'))
-               usort($parents,'sort_thr_created');
-       elseif(stristr($order,'commented'))
-               usort($parents,'sort_thr_commented');
+       if (stristr($order, 'created')) {
+               usort($parents, 'sort_thr_created');
+       } elseif (stristr($order, 'commented')) {
+               usort($parents, 'sort_thr_commented');
+       }
 
-       if(count($parents))
-               foreach($parents as $i=>$_x)
+       if (count($parents)) {
+               foreach ($parents as $i => $_x) {
                        $parents[$i]['children'] = get_item_children($arr, $_x);
+               }
+       }
 
-       /*foreach($arr as $x) {
-               if($x['id'] != $x['parent']) {
+       /// @TODO Old-lost code?
+       /*foreach ($arr as $x) {
+               if ($x['id'] != $x['parent']) {
                        $p = find_thread_parent_index($parents,$x);
-                       if($p !== false)
+                       if ($p !== false)
                                $parents[$p]['children'][] = $x;
                }
        }*/
-       if(count($parents)) {
-               foreach($parents as $k => $v) {
-                       if(count($parents[$k]['children'])) {
+       if (count($parents)) {
+               foreach ($parents as $k => $v) {
+                       if (count($parents[$k]['children'])) {
                                $parents[$k]['children'] = sort_item_children($parents[$k]['children']);
+                               /// @TODO Old-lost code?
                                /*$y = $parents[$k]['children'];
                                usort($y,'sort_thr_created_rev');
                                $parents[$k]['children'] = $y;*/
@@ -1391,92 +1448,103 @@ function conv_sort($arr,$order) {
        }
 
        $ret = array();
-       if(count($parents)) {
-               foreach($parents as $x) {
+       if (count($parents)) {
+               foreach ($parents as $x) {
                        $ret[] = $x;
-                       if(count($x['children']))
+                       if (count($x['children'])) {
                                add_children_to_list($x['children'], $ret);
-                               /*foreach($x['children'] as $y)
+                               /// @TODO Old-lost code?
+                               /*foreach ($x['children'] as $y)
                                        $ret[] = $y;*/
+                       }
                }
        }
 
        return $ret;
 }
 
-
-function sort_thr_created($a,$b) {
-       return strcmp($b['created'],$a['created']);
+/// @TODO Add type-hint
+function sort_thr_created($a, $b) {
+       return strcmp($b['created'], $a['created']);
 }
 
-function sort_thr_created_rev($a,$b) {
-       return strcmp($a['created'],$b['created']);
+/// @TODO Add type-hint
+function sort_thr_created_rev($a, $b) {
+       return strcmp($a['created'], $b['created']);
 }
 
-function sort_thr_commented($a,$b) {
-       return strcmp($b['commented'],$a['commented']);
+/// @TODO Add type-hint
+function sort_thr_commented($a, $b) {
+       return strcmp($b['commented'], $a['commented']);
 }
 
-function find_thread_parent_index($arr,$x) {
-       foreach($arr as $k => $v)
-               if($v['id'] == $x['parent'])
+/// @TODO Add type-hint
+function find_thread_parent_index($arr, $x) {
+       foreach ($arr as $k => $v) {
+               if ($v['id'] == $x['parent']) {
                        return $k;
+               }
+       }
        return false;
 }
 
+/// @TODO Add type-hint
 function render_location_dummy($item) {
-       if ($item['location'] != "")
+       if ($item['location'] != "") {
                return $item['location'];
+       }
 
-       if ($item['coord'] != "")
+       if ($item['coord'] != "") {
                return $item['coord'];
+       }
 }
 
-function get_responses($conv_responses,$response_verbs,$ob,$item) {
+/// @TODO Add type-hint
+function get_responses($conv_responses, $response_verbs, $ob, $item) {
        $ret = array();
-       foreach($response_verbs as $v) {
+       foreach ($response_verbs as $v) {
                $ret[$v] = array();
-               $ret[$v]['count'] = ((x($conv_responses[$v],$item['uri'])) ? $conv_responses[$v][$item['uri']] : '');
-               $ret[$v]['list']  = ((x($conv_responses[$v],$item['uri'])) ? $conv_responses[$v][$item['uri'] . '-l'] : '');
-               $ret[$v]['self']  = ((x($conv_responses[$v],$item['uri'])) ? $conv_responses[$v][$item['uri'] . '-self'] : '0');
-               if(count($ret[$v]['list']) > MAX_LIKERS) {
+               $ret[$v]['count'] = ((x($conv_responses[$v], $item['uri'])) ? $conv_responses[$v][$item['uri']] : '');
+               $ret[$v]['list']  = ((x($conv_responses[$v], $item['uri'])) ? $conv_responses[$v][$item['uri'] . '-l'] : '');
+               $ret[$v]['self']  = ((x($conv_responses[$v], $item['uri'])) ? $conv_responses[$v][$item['uri'] . '-self'] : '0');
+               if (count($ret[$v]['list']) > MAX_LIKERS) {
                        $ret[$v]['list_part'] = array_slice($ret[$v]['list'], 0, MAX_LIKERS);
                        array_push($ret[$v]['list_part'], '<a href="#" data-toggle="modal" data-target="#' . $v . 'Modal-'
                                . (($ob) ? $ob->get_id() : $item['id']) . '"><b>' . t('View all') . '</b></a>');
-               }
-               else {
+               } else {
                        $ret[$v]['list_part'] = '';
                }
-               $ret[$v]['button'] = get_response_button_text($v,$ret[$v]['count']);
+               $ret[$v]['button'] = get_response_button_text($v, $ret[$v]['count']);
                $ret[$v]['title'] = $conv_responses[$v]['title'];
        }
 
        $count = 0;
-       foreach($ret as $key) {
-               if ($key['count'] == true)
+       foreach ($ret as $key) {
+               if ($key['count'] == true) {
                        $count++;
+               }
        }
        $ret['count'] = $count;
 
        return $ret;
 }
 
-function get_response_button_text($v,$count) {
-       switch($v) {
+function get_response_button_text($v, $count) {
+       switch ($v) {
                case 'like':
-                       return tt('Like','Likes',$count,'noun');
+                       return tt('Like', 'Likes', $count, 'noun');
                        break;
                case 'dislike':
-                       return tt('Dislike','Dislikes',$count,'noun');
+                       return tt('Dislike', 'Dislikes', $count, 'noun');
                        break;
                case 'attendyes':
-                       return tt('Attending','Attending',$count,'noun');
+                       return tt('Attending', 'Attending', $count, 'noun');
                        break;
                case 'attendno':
-                       return tt('Not Attending','Not Attending',$count,'noun');
+                       return tt('Not Attending', 'Not Attending', $count, 'noun');
                        break;
                case 'attendmaybe':
-                       return tt('Undecided','Undecided',$count,'noun');
+                       return tt('Undecided', 'Undecided', $count, 'noun');
                        break;
        }
 }
index 58a3fcf9ce9e5f54ad8dabca0fde89821e44dce1..c4299dd4c2eea874671b6fc0df4baf69ad2daf01 100644 (file)
@@ -4,7 +4,7 @@ use \Friendica\Core\Config;
 function cron_run(&$argv, &$argc){
        global $a;
 
-       require_once('include/datetime.php');
+       require_once 'include/datetime.php';
 
        // Poll contacts with specific parameters
        if ($argc > 1) {
@@ -12,15 +12,16 @@ function cron_run(&$argv, &$argc){
                return;
        }
 
-       $last = get_config('system','last_cron');
+       $last = get_config('system', 'last_cron');
 
-       $poll_interval = intval(get_config('system','cron_interval'));
+       $poll_interval = intval(get_config('system', 'cron_interval'));
        if (! $poll_interval) {
                $poll_interval = 10;
        }
+
        if ($last) {
                $next = $last + ($poll_interval * 60);
-               if($next > time()) {
+               if ($next > time()) {
                        logger('cron intervall not reached');
                        return;
                }
@@ -62,10 +63,10 @@ function cron_run(&$argv, &$argc){
        proc_run(PRIORITY_LOW, "include/cronjobs.php", "repair_database");
 
        // once daily run birthday_updates and then expire in background
-       $d1 = get_config('system','last_expire_day');
-       $d2 = intval(datetime_convert('UTC','UTC','now','d'));
+       $d1 = get_config('system', 'last_expire_day');
+       $d2 = intval(datetime_convert('UTC', 'UTC', 'now', 'd'));
 
-       if($d2 != intval($d1)) {
+       if ($d2 != intval($d1)) {
 
                proc_run(PRIORITY_LOW, "include/cronjobs.php", "update_contact_birthdays");
 
@@ -73,7 +74,7 @@ function cron_run(&$argv, &$argc){
 
                proc_run(PRIORITY_LOW, "include/discover_poco.php", "suggestions");
 
-               set_config('system','last_expire_day',$d2);
+               set_config('system', 'last_expire_day', $d2);
 
                proc_run(PRIORITY_LOW, 'include/expire.php');
 
@@ -87,7 +88,7 @@ function cron_run(&$argv, &$argc){
 
        logger('cron: end');
 
-       set_config('system','last_cron', time());
+       set_config('system', 'last_cron', time());
 
        return;
 }
@@ -130,7 +131,7 @@ function cron_poll_contacts($argc, $argv) {
        // and which have a polling address and ignore Diaspora since
        // we are unable to match those posts with a Diaspora GUID and prevent duplicates.
 
-       $abandon_days = intval(get_config('system','account_abandon_days'));
+       $abandon_days = intval(get_config('system', 'account_abandon_days'));
        if ($abandon_days < 1) {
                $abandon_days = 0;
        }
@@ -156,7 +157,7 @@ function cron_poll_contacts($argc, $argv) {
                dbesc(NETWORK_MAIL2)
        );
 
-       if (!count($contacts)) {
+       if (!dbm::is_result($contacts)) {
                return;
        }
 
@@ -170,7 +171,7 @@ function cron_poll_contacts($argc, $argv) {
                        continue;
                }
 
-               foreach($res as $contact) {
+               foreach ($res as $contact) {
 
                        $xml = false;
 
@@ -183,49 +184,48 @@ function cron_poll_contacts($argc, $argv) {
                        }
 
                        if ($contact['subhub'] AND in_array($contact['network'], array(NETWORK_DFRN, NETWORK_ZOT, NETWORK_OSTATUS))) {
-                               // We should be getting everything via a hub. But just to be sure, let's check once a day.
-                               // (You can make this more or less frequent if desired by setting 'pushpoll_frequency' appropriately)
-                               // This also lets us update our subscription to the hub, and add or replace hubs in case it
-                               // changed. We will only update hubs once a day, regardless of 'pushpoll_frequency'.
-
-                               $poll_interval = get_config('system','pushpoll_frequency');
+                               /*
+                                * We should be getting everything via a hub. But just to be sure, let's check once a day.
+                                * (You can make this more or less frequent if desired by setting 'pushpoll_frequency' appropriately)
+                                * This also lets us update our subscription to the hub, and add or replace hubs in case it
+                                * changed. We will only update hubs once a day, regardless of 'pushpoll_frequency'.
+                                */
+                               $poll_interval = get_config('system', 'pushpoll_frequency');
                                $contact['priority'] = (($poll_interval !== false) ? intval($poll_interval) : 3);
                        }
 
-                       if($contact['priority'] AND !$force) {
-
-                               $update     = false;
+                       if ($contact['priority'] AND !$force) {
+                               $update = false;
 
                                $t = $contact['last-update'];
 
-                               /**
+                               /*
                                 * Based on $contact['priority'], should we poll this site now? Or later?
                                 */
-
                                switch ($contact['priority']) {
                                        case 5:
-                                               if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 month")) {
+                                               if (datetime_convert('UTC', 'UTC', 'now') > datetime_convert('UTC', 'UTC', $t . " + 1 month")) {
                                                        $update = true;
                                                }
                                                break;
                                        case 4:
-                                               if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 week")) {
+                                               if (datetime_convert('UTC', 'UTC', 'now') > datetime_convert('UTC', 'UTC', $t . " + 1 week")) {
                                                        $update = true;
                                                }
                                                break;
                                        case 3:
-                                               if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) {
+                                               if (datetime_convert('UTC', 'UTC', 'now') > datetime_convert('UTC', 'UTC', $t . " + 1 day")) {
                                                        $update = true;
                                                }
                                                break;
                                        case 2:
-                                               if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 12 hour")) {
+                                               if (datetime_convert('UTC', 'UTC', 'now') > datetime_convert('UTC', 'UTC', $t . " + 12 hour")) {
                                                        $update = true;
                                                }
                                                break;
                                        case 1:
                                        default:
-                                               if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 hour")) {
+                                               if (datetime_convert('UTC', 'UTC', 'now') > datetime_convert('UTC', 'UTC', $t . " + 1 hour")) {
                                                        $update = true;
                                                }
                                                break;
@@ -235,7 +235,7 @@ function cron_poll_contacts($argc, $argv) {
                                }
                        }
 
-                       logger("Polling ".$contact["network"]." ".$contact["id"]." ".$contact["nick"]." ".$contact["name"]);
+                       logger("Polling " . $contact["network"] . " " . $contact["id"] . " " . $contact["nick"] . " " . $contact["name"]);
 
                        if (($contact['network'] == NETWORK_FEED) AND ($contact['priority'] <= 3)) {
                                proc_run(PRIORITY_MEDIUM, 'include/onepoll.php', intval($contact['id']));
index bea0f6a198a13121fc9df746b5e8db8cf8b3eddf..a519dee22433650e5839d6e4ed71e53f06dcd408 100644 (file)
@@ -2,43 +2,45 @@
 
 use \Friendica\Core\Config;
 
-function cronhooks_run(&$argv, &$argc){
+function cronhooks_run(&$argv, &$argc) {
        global $a;
 
-       require_once('include/datetime.php');
+       require_once 'include/datetime.php';
 
        if (($argc == 2) AND is_array($a->hooks) AND array_key_exists("cron", $a->hooks)) {
-                foreach ($a->hooks["cron"] as $hook)
+               foreach ($a->hooks["cron"] as $hook) {
                        if ($hook[1] == $argv[1]) {
-                               logger("Calling cron hook '".$hook[1]."'", LOGGER_DEBUG);
+                               logger("Calling cron hook '" . $hook[1] . "'", LOGGER_DEBUG);
                                call_single_hook($a, $name, $hook, $data);
                        }
+               }
                return;
        }
 
        $last = get_config('system', 'last_cronhook');
 
-       $poll_interval = intval(get_config('system','cronhook_interval'));
-       if(! $poll_interval)
+       $poll_interval = intval(get_config('system', 'cronhook_interval'));
+       if (! $poll_interval) {
                $poll_interval = 9;
+       }
 
-       if($last) {
+       if ($last) {
                $next = $last + ($poll_interval * 60);
-               if($next > time()) {
+               if ($next > time()) {
                        logger('cronhook intervall not reached');
                        return;
                }
        }
 
-       $a->set_baseurl(get_config('system','url'));
+       $a->set_baseurl(get_config('system', 'url'));
 
        logger('cronhooks: start');
 
        $d = datetime_convert();
 
        if (is_array($a->hooks) AND array_key_exists("cron", $a->hooks)) {
-                foreach ($a->hooks["cron"] as $hook) {
-                       logger("Calling cronhooks for '".$hook[1]."'", LOGGER_DEBUG);
+               foreach ($a->hooks["cron"] as $hook) {
+                       logger("Calling cronhooks for '" . $hook[1] . "'", LOGGER_DEBUG);
                        proc_run(PRIORITY_MEDIUM, "include/cronhooks.php", $hook[1]);
                }
        }
index 09688586a3599fe19214c01f88ae0564a0d52321..7221d52a203d981c683dc0de3947510a7fdc75f3 100644 (file)
@@ -554,8 +554,9 @@ class dfrn {
                        xml::add_element($doc, $author, "poco:displayName", $profile["name"]);
                        xml::add_element($doc, $author, "poco:updated", $namdate);
 
-                       if (trim($profile["dob"]) > '0001-01-01')
+                       if (trim($profile["dob"]) > '0001-01-01') {
                                xml::add_element($doc, $author, "poco:birthday", "0000-".date("m-d", strtotime($profile["dob"])));
+                       }
 
                        xml::add_element($doc, $author, "poco:note", $profile["about"]);
                        xml::add_element($doc, $author, "poco:preferredUsername", $profile["nickname"]);
index 670337e0871b9c567d7e04fd301e3a505b124729..a21624a212a35219672db2d8a274d60253f8136d 100644 (file)
@@ -202,6 +202,9 @@ function profile_sidebar($profile, $block = 0) {
        $address = false;
 //             $pdesc = true;
 
+       // This function can also use contact information in $profile
+       $is_contact = x($profile, 'cid');
+
        if((! is_array($profile)) && (! count($profile)))
                return $o;
 
@@ -281,7 +284,7 @@ function profile_sidebar($profile, $block = 0) {
        }
 
        // show edit profile to yourself
-       if ($profile['uid'] == local_user() && feature_enabled(local_user(),'multi_profiles')) {
+       if (!$is_contact && $profile['uid'] == local_user() && feature_enabled(local_user(),'multi_profiles')) {
                $profile['edit'] = array(App::get_baseurl(). '/profiles', t('Profiles'),"", t('Manage/edit profiles'));
                $r = q("SELECT * FROM `profile` WHERE `uid` = %d",
                                local_user());
@@ -310,7 +313,7 @@ function profile_sidebar($profile, $block = 0) {
 
                }
        }
-       if ($profile['uid'] == local_user() && !feature_enabled(local_user(),'multi_profiles')) {
+       if (!$is_contact && $profile['uid'] == local_user() && !feature_enabled(local_user(),'multi_profiles')) {
                $profile['edit'] = array(App::get_baseurl(). '/profiles/'.$profile['id'], t('Edit profile'),"", t('Edit profile'));
                $profile['menu'] = array(
                        'chg_photo' => t('Change profile photo'),
index f3885d21f91584f3108aef6c1b81f3443a81e2b9..2500e08d54ad78c5407d3a9405b7bc6631ab324e 100644 (file)
@@ -6,31 +6,33 @@
 
 use \Friendica\ParseUrl;
 
-require_once('include/bbcode.php');
-require_once('include/oembed.php');
-require_once('include/salmon.php');
-require_once('include/crypto.php');
-require_once('include/Photo.php');
-require_once('include/tags.php');
-require_once('include/files.php');
-require_once('include/text.php');
-require_once('include/email.php');
-require_once('include/threads.php');
-require_once('include/socgraph.php');
-require_once('include/plaintext.php');
-require_once('include/ostatus.php');
-require_once('include/feed.php');
-require_once('include/Contact.php');
-require_once('mod/share.php');
-require_once('include/enotify.php');
-require_once('include/dfrn.php');
-require_once('include/group.php');
-
-require_once('library/defuse/php-encryption-1.2.1/Crypto.php');
+require_once 'include/bbcode.php';
+require_once 'include/oembed.php';
+require_once 'include/salmon.php';
+require_once 'include/crypto.php';
+require_once 'include/Photo.php';
+require_once 'include/tags.php';
+require_once 'include/files.php';
+require_once 'include/text.php';
+require_once 'include/email.php';
+require_once 'include/threads.php';
+require_once 'include/socgraph.php';
+require_once 'include/plaintext.php';
+require_once 'include/ostatus.php';
+require_once 'include/feed.php';
+require_once 'include/Contact.php';
+require_once 'mod/share.php';
+require_once 'include/enotify.php';
+require_once 'include/dfrn.php';
+require_once 'include/group.php';
+
+/// @TODO one day with composer autoloader no more needed
+require_once 'library/defuse/php-encryption-1.2.1/Crypto.php';
 
 function construct_verb($item) {
-       if ($item['verb'])
+       if ($item['verb']) {
                return $item['verb'];
+       }
        return ACTIVITY_POST;
 }
 
@@ -60,7 +62,7 @@ function limit_body_size($body) {
                $img_start = strpos($orig_body, '[img');
                $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
                $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
-               while(($img_st_close !== false) && ($img_end !== false)) {
+               while (($img_st_close !== false) && ($img_end !== false)) {
 
                        $img_st_close++; // make it point to AFTER the closing bracket
                        $img_end += $img_start;
@@ -69,7 +71,7 @@ function limit_body_size($body) {
                        if (! strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
                                // This is an embedded image
 
-                               if ( ($textlen + $img_start) > $maxlen ) {
+                               if (($textlen + $img_start) > $maxlen ) {
                                        if ($textlen < $maxlen) {
                                                logger('limit_body_size: the limit happens before an embedded image', LOGGER_DEBUG);
                                                $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
@@ -83,7 +85,7 @@ function limit_body_size($body) {
                                $new_body = $new_body . substr($orig_body, $img_start, $img_end - $img_start);
                        } else {
 
-                               if ( ($textlen + $img_end) > $maxlen ) {
+                               if (($textlen + $img_end) > $maxlen ) {
                                        if ($textlen < $maxlen) {
                                                logger('limit_body_size: the limit happens before the end of a non-embedded image', LOGGER_DEBUG);
                                                $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
@@ -96,15 +98,17 @@ function limit_body_size($body) {
                        }
                        $orig_body = substr($orig_body, $img_end);
 
-                       if ($orig_body === false) // in case the body ends on a closing image tag
+                       if ($orig_body === false) {
+                               // in case the body ends on a closing image tag
                                $orig_body = '';
+                       }
 
                        $img_start = strpos($orig_body, '[img');
                        $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
                        $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
                }
 
-               if ( ($textlen + strlen($orig_body)) > $maxlen) {
+               if (($textlen + strlen($orig_body)) > $maxlen) {
                        if ($textlen < $maxlen) {
                                logger('limit_body_size: the limit happens after the end of the last image', LOGGER_DEBUG);
                                $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
@@ -117,8 +121,9 @@ function limit_body_size($body) {
                }
 
                return $new_body;
-       } else
+       } else {
                return $body;
+       }
 }}
 
 function title_is_body($title, $body) {
@@ -126,15 +131,16 @@ function title_is_body($title, $body) {
        $title = strip_tags($title);
        $title = trim($title);
        $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
-       $title = str_replace(array("\n", "\r", "\t", " "), array("","","",""), $title);
+       $title = str_replace(array("\n", "\r", "\t", " "), array("", "", "", ""), $title);
 
        $body = strip_tags($body);
        $body = trim($body);
        $body = html_entity_decode($body, ENT_QUOTES, 'UTF-8');
-       $body = str_replace(array("\n", "\r", "\t", " "), array("","","",""), $body);
+       $body = str_replace(array("\n", "\r", "\t", " "), array("", "", "", ""), $body);
 
-       if (strlen($title) < strlen($body))
+       if (strlen($title) < strlen($body)) {
                $body = substr($body, 0, strlen($title));
+       }
 
        if (($title != $body) and (substr($title, -3) == "...")) {
                $pos = strrpos($title, "...");
@@ -144,7 +150,7 @@ function title_is_body($title, $body) {
                }
        }
 
-       return($title == $body);
+       return ($title == $body);
 }
 
 function add_page_info_data($data) {
@@ -212,8 +218,8 @@ function add_page_info_data($data) {
                foreach ($data["keywords"] AS $keyword) {
                        /// @todo make a positive list of allowed characters
                        $hashtag = str_replace(array(" ", "+", "/", ".", "#", "'", "’", "`", "(", ")", "„", "“"),
-                                               array("","", "", "", "", "", "", "", "", "", "", ""), $keyword);
-                       $hashtags .= "#[url=".App::get_baseurl()."/search?tag=".rawurlencode($hashtag)."]".$hashtag."[/url] ";
+                                               array("", "", "", "", "", "", "", "", "", "", "", ""), $keyword);
+                       $hashtags .= "#[url=" . App::get_baseurl() . "/search?tag=" . rawurlencode($hashtag) . "]" . $hashtag . "[/url] ";
                }
        }
 
@@ -224,25 +230,28 @@ function query_page_info($url, $no_photos = false, $photo = "", $keywords = fals
 
        $data = ParseUrl::getSiteinfoCached($url, true);
 
-       if ($photo != "")
+       if ($photo != "") {
                $data["images"][0]["src"] = $photo;
+       }
 
-       logger('fetch page info for '.$url.' '.print_r($data, true), LOGGER_DEBUG);
+       logger('fetch page info for ' . $url . ' ' . print_r($data, true), LOGGER_DEBUG);
 
-       if (!$keywords AND isset($data["keywords"]))
+       if (!$keywords AND isset($data["keywords"])) {
                unset($data["keywords"]);
+       }
 
        if (($keyword_blacklist != "") AND isset($data["keywords"])) {
-               $list = explode(",", $keyword_blacklist);
+               $list = explode(", ", $keyword_blacklist);
                foreach ($list AS $keyword) {
                        $keyword = trim($keyword);
                        $index = array_search($keyword, $data["keywords"]);
-                       if ($index !== false)
+                       if ($index !== false) {
                                unset($data["keywords"][$index]);
+                       }
                }
        }
 
-       return($data);
+       return $data;
 }
 
 function add_page_keywords($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") {
@@ -252,16 +261,17 @@ function add_page_keywords($url, $no_photos = false, $photo = "", $keywords = fa
        if (isset($data["keywords"]) AND count($data["keywords"])) {
                foreach ($data["keywords"] AS $keyword) {
                        $hashtag = str_replace(array(" ", "+", "/", ".", "#", "'"),
-                                               array("","", "", "", "", ""), $keyword);
+                               array("", "", "", "", "", ""), $keyword);
 
-                       if ($tags != "")
-                               $tags .= ",";
+                       if ($tags != "") {
+                               $tags .= ", ";
+                       }
 
-                       $tags .= "#[url=".App::get_baseurl()."/search?tag=".rawurlencode($hashtag)."]".$hashtag."[/url]";
+                       $tags .= "#[url=" . App::get_baseurl() . "/search?tag=" . rawurlencode($hashtag) . "]" . $hashtag . "[/url]";
                }
        }
 
-       return($tags);
+       return $tags;
 }
 
 function add_page_info($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") {
@@ -269,52 +279,58 @@ function add_page_info($url, $no_photos = false, $photo = "", $keywords = false,
 
        $text = add_page_info_data($data);
 
-       return($text);
+       return $text;
 }
 
 function add_page_info_to_body($body, $texturl = false, $no_photos = false) {
 
-       logger('add_page_info_to_body: fetch page info for body '.$body, LOGGER_DEBUG);
+       logger('add_page_info_to_body: fetch page info for body ' . $body, LOGGER_DEBUG);
 
        $URLSearchString = "^\[\]";
 
        // Fix for Mastodon where the mentions are in a different format
        $body = preg_replace("/\[url\=([$URLSearchString]*)\]([#!@])(.*?)\[\/url\]/ism",
-                               '$2[url=$1]$3[/url]', $body);
+               '$2[url=$1]$3[/url]', $body);
 
        // Adding these spaces is a quick hack due to my problems with regular expressions :)
-       preg_match("/[^!#@]\[url\]([$URLSearchString]*)\[\/url\]/ism", " ".$body, $matches);
+       preg_match("/[^!#@]\[url\]([$URLSearchString]*)\[\/url\]/ism", " " . $body, $matches);
 
-       if (!$matches)
-               preg_match("/[^!#@]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", " ".$body, $matches);
+       if (!$matches) {
+               preg_match("/[^!#@]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", " " . $body, $matches);
+       }
 
        // Convert urls without bbcode elements
        if (!$matches AND $texturl) {
                preg_match("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", " ".$body, $matches);
 
                // Yeah, a hack. I really hate regular expressions :)
-               if ($matches)
+               if ($matches) {
                        $matches[1] = $matches[2];
+               }
        }
 
-       if ($matches)
+       if ($matches) {
                $footer = add_page_info($matches[1], $no_photos);
+       }
 
        // Remove the link from the body if the link is attached at the end of the post
        if (isset($footer) AND (trim($footer) != "") AND (strpos($footer, $matches[1]))) {
                $removedlink = trim(str_replace($matches[1], "", $body));
-               if (($removedlink == "") OR strstr($body, $removedlink))
+               if (($removedlink == "") OR strstr($body, $removedlink)) {
                        $body = $removedlink;
+               }
 
                $url = str_replace(array('/', '.'), array('\/', '\.'), $matches[1]);
-               $removedlink = preg_replace("/\[url\=".$url."\](.*?)\[\/url\]/ism", '', $body);
-               if (($removedlink == "") OR strstr($body, $removedlink))
+               $removedlink = preg_replace("/\[url\=" . $url . "\](.*?)\[\/url\]/ism", '', $body);
+               if (($removedlink == "") OR strstr($body, $removedlink)) {
                        $body = $removedlink;
+               }
        }
 
        // Add the page information to the bottom
-       if (isset($footer) AND (trim($footer) != ""))
+       if (isset($footer) AND (trim($footer) != "")) {
                $body .= $footer;
+       }
 
        return $body;
 }
@@ -328,12 +344,13 @@ function add_page_info_to_body($body, $texturl = false, $no_photos = false) {
  */
 function item_add_language_opt(&$arr) {
 
-       if (version_compare(PHP_VERSION, '5.3.0', '<')) return; // LanguageDetect.php not available ?
+       if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+                // LanguageDetect.php not available ?
+               return;
+       }
 
-       if ( x($arr, 'postopts') )
-       {
-               if ( strstr($arr['postopts'], 'lang=') )
-               {
+       if (x($arr, 'postopts') ) {
+               if (strstr($arr['postopts'], 'lang=') ) {
                        // do not override
                        /// @TODO Add parameter to request overriding
                        return;
@@ -344,8 +361,9 @@ function item_add_language_opt(&$arr) {
        }
 
        require_once('library/langdet/Text/LanguageDetect.php');
-       $naked_body = preg_replace('/\[(.+?)\]/','',$arr['body']);
-       $l = new Text_LanguageDetect;
+
+       $naked_body = preg_replace('/\[(.+?)\]/','', $arr['body']);
+       $l = new Text_LanguageDetect();
        //$lng = $l->detectConfidence($naked_body);
        //$arr['postopts'] = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : '');
        $lng = $l->detect($naked_body, 3);
@@ -355,7 +373,7 @@ function item_add_language_opt(&$arr) {
                $postopts .= 'lang=';
                $sep = "";
                foreach ($lng as $language => $score) {
-                       $postopts .= $sep . $language.";".$score;
+                       $postopts .= $sep . $language . ";" . $score;
                        $sep = ':';
                }
                $arr['postopts'] = $postopts;
@@ -392,7 +410,9 @@ function uri_to_guid($uri, $host = "") {
        return $guid_prefix.$host_hash;
 }
 
-function item_store($arr,$force_parent = false, $notify = false, $dontcache = false) {
+/// @TODO Maybe $arr must be called-by-reference? This function modifies it
+/// @TODO add type-hint array
+function item_store($arr, $force_parent = false, $notify = false, $dontcache = false) {
 
        $a = get_app();
 
@@ -416,11 +436,13 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                }
        }
 
-       // If a Diaspora signature structure was passed in, pull it out of the
-       // item array and set it aside for later storage.
+       /*
+        * If a Diaspora signature structure was passed in, pull it out of the
+        * item array and set it aside for later storage.
+        */
 
        $dsprsig = null;
-       if (x($arr,'dsprsig')) {
+       if (x($arr, 'dsprsig')) {
                $encoded_signature = $arr['dsprsig'];
                $dsprsig = json_decode(base64_decode($arr['dsprsig']));
                unset($arr['dsprsig']);
@@ -428,27 +450,28 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
 
        // Converting the plink
        if ($arr['network'] == NETWORK_OSTATUS) {
-               if (isset($arr['plink']))
+               if (isset($arr['plink'])) {
                        $arr['plink'] = ostatus::convert_href($arr['plink']);
-               elseif (isset($arr['uri']))
+               } elseif (isset($arr['uri'])) {
                        $arr['plink'] = ostatus::convert_href($arr['uri']);
+               }
        }
 
-       if (x($arr, 'gravity'))
+       if (x($arr, 'gravity')) {
                $arr['gravity'] = intval($arr['gravity']);
-       elseif ($arr['parent-uri'] === $arr['uri'])
+       } elseif ($arr['parent-uri'] === $arr['uri']) {
                $arr['gravity'] = 0;
-       elseif (activity_match($arr['verb'],ACTIVITY_POST))
+       } elseif (activity_match($arr['verb'],ACTIVITY_POST)) {
                $arr['gravity'] = 6;
-       else
+       } else {
                $arr['gravity'] = 6;   // extensible catchall
+       }
 
-       if (! x($arr,'type'))
+       if (! x($arr, 'type')) {
                $arr['type']      = 'remote';
+       }
 
-
-
-       /* check for create  date and expire time */
+       // check for create  date and expire time
        $uid = intval($arr['uid']);
        $r = q("SELECT expire FROM user WHERE uid = %d", intval($uid));
        if (dbm::is_result($r)) {
@@ -463,8 +486,11 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                }
        }
 
-       // Do we already have this item?
-       // We have to check several networks since Friendica posts could be repeated via OStatus (maybe Diasporsa as well)
+       /*
+        * Do we already have this item?
+        * We have to check several networks since Friendica posts could be repeated
+        * via OStatus (maybe Diasporsa as well)
+        */
        if (in_array(trim($arr['network']), array(NETWORK_DIASPORA, NETWORK_DFRN, NETWORK_OSTATUS, ""))) {
                $r = q("SELECT `id`, `network` FROM `item` WHERE `uri` = '%s' AND `uid` = %d AND `network` IN ('%s', '%s', '%s')  LIMIT 1",
                                dbesc(trim($arr['uri'])),
@@ -473,14 +499,17 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                                dbesc(NETWORK_DFRN),
                                dbesc(NETWORK_OSTATUS)
                        );
-               if ($r) {
+               if (dbm::is_result($r)) {
                        // We only log the entries with a different user id than 0. Otherwise we would have too many false positives
-                       if ($uid != 0)
+                       if ($uid != 0) {
                                logger("Item with uri ".$arr['uri']." already existed for user ".$uid." with id ".$r[0]["id"]." target network ".$r[0]["network"]." - new network: ".$arr['network']);
-                       return($r[0]["id"]);
+                       }
+
+                       return $r[0]["id"];
                }
        }
 
+       /// @TODO old-lost code?
        // Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
        // Deactivated, since the bbcode parser can handle with it - and it destroys posts with some smileys that contain "<"
        //if ((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
@@ -488,76 +517,79 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
 
        item_add_language_opt($arr);
 
-       if ($notify)
+       if ($notify) {
                $guid_prefix = "";
-       elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != ""))
+       } elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) {
                $arr['guid'] = uri_to_guid($arr['plink']);
-       elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != ""))
+       } elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
                $arr['guid'] = uri_to_guid($arr['uri']);
-       else {
+       else {
                $parsed = parse_url($arr["author-link"]);
                $guid_prefix = hash("crc32", $parsed["host"]);
        }
 
-       $arr['wall']          = ((x($arr,'wall'))          ? intval($arr['wall'])                : 0);
-       $arr['guid']          = ((x($arr,'guid'))          ? notags(trim($arr['guid']))          : get_guid(32, $guid_prefix));
-       $arr['uri']           = ((x($arr,'uri'))           ? notags(trim($arr['uri']))           : item_new_uri($a->get_hostname(), $uid, $arr['guid']));
-       $arr['extid']         = ((x($arr,'extid'))         ? notags(trim($arr['extid']))         : '');
-       $arr['author-name']   = ((x($arr,'author-name'))   ? trim($arr['author-name'])   : '');
-       $arr['author-link']   = ((x($arr,'author-link'))   ? notags(trim($arr['author-link']))   : '');
-       $arr['author-avatar'] = ((x($arr,'author-avatar')) ? notags(trim($arr['author-avatar'])) : '');
-       $arr['owner-name']    = ((x($arr,'owner-name'))    ? trim($arr['owner-name'])    : '');
-       $arr['owner-link']    = ((x($arr,'owner-link'))    ? notags(trim($arr['owner-link']))    : '');
-       $arr['owner-avatar']  = ((x($arr,'owner-avatar'))  ? notags(trim($arr['owner-avatar']))  : '');
-       $arr['created']       = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert());
-       $arr['edited']        = ((x($arr,'edited')  !== false) ? datetime_convert('UTC','UTC',$arr['edited'])  : datetime_convert());
-       $arr['commented']     = ((x($arr,'commented')  !== false) ? datetime_convert('UTC','UTC',$arr['commented'])  : datetime_convert());
-       $arr['received']      = ((x($arr,'received')  !== false) ? datetime_convert('UTC','UTC',$arr['received'])  : datetime_convert());
-       $arr['changed']       = ((x($arr,'changed')  !== false) ? datetime_convert('UTC','UTC',$arr['changed'])  : datetime_convert());
-       $arr['title']         = ((x($arr,'title'))         ? trim($arr['title'])         : '');
-       $arr['location']      = ((x($arr,'location'))      ? trim($arr['location'])      : '');
-       $arr['coord']         = ((x($arr,'coord'))         ? notags(trim($arr['coord']))         : '');
-       $arr['last-child']    = ((x($arr,'last-child'))    ? intval($arr['last-child'])          : 0 );
-       $arr['visible']       = ((x($arr,'visible') !== false) ? intval($arr['visible'])         : 1 );
+       $arr['wall']          = ((x($arr, 'wall'))          ? intval($arr['wall'])                : 0);
+       $arr['guid']          = ((x($arr, 'guid'))          ? notags(trim($arr['guid']))          : get_guid(32, $guid_prefix));
+       $arr['uri']           = ((x($arr, 'uri'))           ? notags(trim($arr['uri']))           : item_new_uri($a->get_hostname(), $uid, $arr['guid']));
+       $arr['extid']         = ((x($arr, 'extid'))         ? notags(trim($arr['extid']))         : '');
+       $arr['author-name']   = ((x($arr, 'author-name'))   ? trim($arr['author-name'])   : '');
+       $arr['author-link']   = ((x($arr, 'author-link'))   ? notags(trim($arr['author-link']))   : '');
+       $arr['author-avatar'] = ((x($arr, 'author-avatar')) ? notags(trim($arr['author-avatar'])) : '');
+       $arr['owner-name']    = ((x($arr, 'owner-name'))    ? trim($arr['owner-name'])    : '');
+       $arr['owner-link']    = ((x($arr, 'owner-link'))    ? notags(trim($arr['owner-link']))    : '');
+       $arr['owner-avatar']  = ((x($arr, 'owner-avatar'))  ? notags(trim($arr['owner-avatar']))  : '');
+       $arr['created']       = ((x($arr, 'created') !== false) ? datetime_convert('UTC','UTC', $arr['created']) : datetime_convert());
+       $arr['edited']        = ((x($arr, 'edited')  !== false) ? datetime_convert('UTC','UTC', $arr['edited'])  : datetime_convert());
+       $arr['commented']     = ((x($arr, 'commented')  !== false) ? datetime_convert('UTC','UTC', $arr['commented'])  : datetime_convert());
+       $arr['received']      = ((x($arr, 'received')  !== false) ? datetime_convert('UTC','UTC', $arr['received'])  : datetime_convert());
+       $arr['changed']       = ((x($arr, 'changed')  !== false) ? datetime_convert('UTC','UTC', $arr['changed'])  : datetime_convert());
+       $arr['title']         = ((x($arr, 'title'))         ? trim($arr['title'])         : '');
+       $arr['location']      = ((x($arr, 'location'))      ? trim($arr['location'])      : '');
+       $arr['coord']         = ((x($arr, 'coord'))         ? notags(trim($arr['coord']))         : '');
+       $arr['last-child']    = ((x($arr, 'last-child'))    ? intval($arr['last-child'])          : 0 );
+       $arr['visible']       = ((x($arr, 'visible') !== false) ? intval($arr['visible'])         : 1 );
        $arr['deleted']       = 0;
-       $arr['parent-uri']    = ((x($arr,'parent-uri'))    ? notags(trim($arr['parent-uri']))    : $arr['uri']);
-       $arr['verb']          = ((x($arr,'verb'))          ? notags(trim($arr['verb']))          : '');
-       $arr['object-type']   = ((x($arr,'object-type'))   ? notags(trim($arr['object-type']))   : '');
-       $arr['object']        = ((x($arr,'object'))        ? trim($arr['object'])                : '');
-       $arr['target-type']   = ((x($arr,'target-type'))   ? notags(trim($arr['target-type']))   : '');
-       $arr['target']        = ((x($arr,'target'))        ? trim($arr['target'])                : '');
-       $arr['plink']         = ((x($arr,'plink'))         ? notags(trim($arr['plink']))         : '');
-       $arr['allow_cid']     = ((x($arr,'allow_cid'))     ? trim($arr['allow_cid'])             : '');
-       $arr['allow_gid']     = ((x($arr,'allow_gid'))     ? trim($arr['allow_gid'])             : '');
-       $arr['deny_cid']      = ((x($arr,'deny_cid'))      ? trim($arr['deny_cid'])              : '');
-       $arr['deny_gid']      = ((x($arr,'deny_gid'))      ? trim($arr['deny_gid'])              : '');
-       $arr['private']       = ((x($arr,'private'))       ? intval($arr['private'])             : 0 );
-       $arr['bookmark']      = ((x($arr,'bookmark'))      ? intval($arr['bookmark'])            : 0 );
-       $arr['body']          = ((x($arr,'body'))          ? trim($arr['body'])                  : '');
-       $arr['tag']           = ((x($arr,'tag'))           ? notags(trim($arr['tag']))           : '');
-       $arr['attach']        = ((x($arr,'attach'))        ? notags(trim($arr['attach']))        : '');
-       $arr['app']           = ((x($arr,'app'))           ? notags(trim($arr['app']))           : '');
-       $arr['origin']        = ((x($arr,'origin'))        ? intval($arr['origin'])              : 0 );
-       $arr['network']       = ((x($arr,'network'))       ? trim($arr['network'])               : '');
-       $arr['postopts']      = ((x($arr,'postopts'))      ? trim($arr['postopts'])              : '');
-       $arr['resource-id']   = ((x($arr,'resource-id'))   ? trim($arr['resource-id'])           : '');
-       $arr['event-id']      = ((x($arr,'event-id'))      ? intval($arr['event-id'])            : 0 );
-       $arr['inform']        = ((x($arr,'inform'))        ? trim($arr['inform'])                : '');
-       $arr['file']          = ((x($arr,'file'))          ? trim($arr['file'])                  : '');
+       $arr['parent-uri']    = ((x($arr, 'parent-uri'))    ? notags(trim($arr['parent-uri']))    : $arr['uri']);
+       $arr['verb']          = ((x($arr, 'verb'))          ? notags(trim($arr['verb']))          : '');
+       $arr['object-type']   = ((x($arr, 'object-type'))   ? notags(trim($arr['object-type']))   : '');
+       $arr['object']        = ((x($arr, 'object'))        ? trim($arr['object'])                : '');
+       $arr['target-type']   = ((x($arr, 'target-type'))   ? notags(trim($arr['target-type']))   : '');
+       $arr['target']        = ((x($arr, 'target'))        ? trim($arr['target'])                : '');
+       $arr['plink']         = ((x($arr, 'plink'))         ? notags(trim($arr['plink']))         : '');
+       $arr['allow_cid']     = ((x($arr, 'allow_cid'))     ? trim($arr['allow_cid'])             : '');
+       $arr['allow_gid']     = ((x($arr, 'allow_gid'))     ? trim($arr['allow_gid'])             : '');
+       $arr['deny_cid']      = ((x($arr, 'deny_cid'))      ? trim($arr['deny_cid'])              : '');
+       $arr['deny_gid']      = ((x($arr, 'deny_gid'))      ? trim($arr['deny_gid'])              : '');
+       $arr['private']       = ((x($arr, 'private'))       ? intval($arr['private'])             : 0 );
+       $arr['bookmark']      = ((x($arr, 'bookmark'))      ? intval($arr['bookmark'])            : 0 );
+       $arr['body']          = ((x($arr, 'body'))          ? trim($arr['body'])                  : '');
+       $arr['tag']           = ((x($arr, 'tag'))           ? notags(trim($arr['tag']))           : '');
+       $arr['attach']        = ((x($arr, 'attach'))        ? notags(trim($arr['attach']))        : '');
+       $arr['app']           = ((x($arr, 'app'))           ? notags(trim($arr['app']))           : '');
+       $arr['origin']        = ((x($arr, 'origin'))        ? intval($arr['origin'])              : 0 );
+       $arr['network']       = ((x($arr, 'network'))       ? trim($arr['network'])               : '');
+       $arr['postopts']      = ((x($arr, 'postopts'))      ? trim($arr['postopts'])              : '');
+       $arr['resource-id']   = ((x($arr, 'resource-id'))   ? trim($arr['resource-id'])           : '');
+       $arr['event-id']      = ((x($arr, 'event-id'))      ? intval($arr['event-id'])            : 0 );
+       $arr['inform']        = ((x($arr, 'inform'))        ? trim($arr['inform'])                : '');
+       $arr['file']          = ((x($arr, 'file'))          ? trim($arr['file'])                  : '');
 
        // Items cannot be stored before they happen ...
-       if ($arr['created'] > datetime_convert())
+       if ($arr['created'] > datetime_convert()) {
                $arr['created'] = datetime_convert();
+       }
 
        // We haven't invented time travel by now.
-       if ($arr['edited'] > datetime_convert())
+       if ($arr['edited'] > datetime_convert()) {
                $arr['edited'] = datetime_convert();
+       }
 
-       if (($arr['author-link'] == "") AND ($arr['owner-link'] == ""))
-               logger("Both author-link and owner-link are empty. Called by: ".App::callstack(), LOGGER_DEBUG);
+       if (($arr['author-link'] == "") AND ($arr['owner-link'] == "")) {
+               logger("Both author-link and owner-link are empty. Called by: " . App::callstack(), LOGGER_DEBUG);
+       }
 
        if ($arr['plink'] == "") {
-               $arr['plink'] = App::get_baseurl().'/display/'.urlencode($arr['guid']);
+               $arr['plink'] = App::get_baseurl() . '/display/' . urlencode($arr['guid']);
        }
 
        if ($arr['network'] == "") {
@@ -573,59 +605,74 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                                dbesc(normalise_link($arr['author-link']))
                        );
 
-               if (!dbm::is_result($r))
+               if (!dbm::is_result($r)) {
                        $r = q("SELECT `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
                                intval($arr['contact-id']),
                                intval($arr['uid'])
                        );
+               }
 
-               if (dbm::is_result($r))
+               if (dbm::is_result($r)) {
                        $arr['network'] = $r[0]["network"];
+               }
 
                // Fallback to friendica (why is it empty in some cases?)
-               if ($arr['network'] == "")
+               if ($arr['network'] == "") {
                        $arr['network'] = NETWORK_DFRN;
+               }
 
-               logger("item_store: Set network to ".$arr["network"]." for ".$arr["uri"], LOGGER_DEBUG);
+               logger("item_store: Set network to " . $arr["network"] . " for " . $arr["uri"], LOGGER_DEBUG);
        }
 
        // The contact-id should be set before "item_store" was called - but there seems to be some issues
        if ($arr["contact-id"] == 0) {
-               // First we are looking for a suitable contact that matches with the author of the post
-               // This is done only for comments (See below explanation at "gcontact-id")
-               if ($arr['parent-uri'] != $arr['uri'])
+               /*
+                * First we are looking for a suitable contact that matches with the author of the post
+                * This is done only for comments (See below explanation at "gcontact-id")
+                */
+               if ($arr['parent-uri'] != $arr['uri']) {
                        $arr["contact-id"] = get_contact($arr['author-link'], $uid);
+               }
 
                // If not present then maybe the owner was found
-               if ($arr["contact-id"] == 0)
+               if ($arr["contact-id"] == 0) {
                        $arr["contact-id"] = get_contact($arr['owner-link'], $uid);
+               }
 
                // Still missing? Then use the "self" contact of the current user
                if ($arr["contact-id"] == 0) {
                        $r = q("SELECT `id` FROM `contact` WHERE `self` AND `uid` = %d", intval($uid));
-                       if ($r)
+
+                       if (dbm::is_result($r)) {
                                $arr["contact-id"] = $r[0]["id"];
+                       }
                }
+
                logger("Contact-id was missing for post ".$arr["guid"]." from user id ".$uid." - now set to ".$arr["contact-id"], LOGGER_DEBUG);
        }
 
        if ($arr["gcontact-id"] == 0) {
-               // The gcontact should mostly behave like the contact. But is is supposed to be global for the system.
-               // This means that wall posts, repeated posts, etc. should have the gcontact id of the owner.
-               // On comments the author is the better choice.
-               if ($arr['parent-uri'] === $arr['uri'])
+               /*
+                * The gcontact should mostly behave like the contact. But is is supposed to be global for the system.
+                * This means that wall posts, repeated posts, etc. should have the gcontact id of the owner.
+                * On comments the author is the better choice.
+                */
+               if ($arr['parent-uri'] === $arr['uri']) {
                        $arr["gcontact-id"] = get_gcontact_id(array("url" => $arr['owner-link'], "network" => $arr['network'],
                                                                 "photo" => $arr['owner-avatar'], "name" => $arr['owner-name']));
-               else
+               } else {
                        $arr["gcontact-id"] = get_gcontact_id(array("url" => $arr['author-link'], "network" => $arr['network'],
                                                                 "photo" => $arr['author-avatar'], "name" => $arr['author-name']));
+               }
        }
 
-       if ($arr["author-id"] == 0)
+       if ($arr["author-id"] == 0) {
                $arr["author-id"] = get_contact($arr["author-link"], 0);
+       }
 
-       if ($arr["owner-id"] == 0)
+       if ($arr["owner-id"] == 0) {
                $arr["owner-id"] = get_contact($arr["owner-link"], 0);
+       }
 
        if ($arr['guid'] != "") {
                // Checking if there is already an item with the same guid
@@ -675,8 +722,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                                        dbesc($r[0]['parent-uri']),
                                        intval($arr['uid'])
                                );
-                               if ($z && count($z))
+
+                               if (dbm::is_result($z)) {
                                        $r = $z;
+                               }
                        }
 
                        $parent_id      = $r[0]['id'];
@@ -688,20 +737,23 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                        $arr['wall']    = $r[0]['wall'];
                        $notify_type    = 'comment-new';
 
-                       // if the parent is private, force privacy for the entire conversation
-                       // This differs from the above settings as it subtly allows comments from
-                       // email correspondents to be private even if the overall thread is not.
-
-                       if ($r[0]['private'])
+                       /*
+                        * If the parent is private, force privacy for the entire conversation
+                        * This differs from the above settings as it subtly allows comments from
+                        * email correspondents to be private even if the overall thread is not.
+                        */
+                       if ($r[0]['private']) {
                                $arr['private'] = $r[0]['private'];
+                       }
 
-                       // Edge case. We host a public forum that was originally posted to privately.
-                       // The original author commented, but as this is a comment, the permissions
-                       // weren't fixed up so it will still show the comment as private unless we fix it here.
-
-                       if ((intval($r[0]['forum_mode']) == 1) && (! $r[0]['private']))
+                       /*
+                        * Edge case. We host a public forum that was originally posted to privately.
+                        * The original author commented, but as this is a comment, the permissions
+                        * weren't fixed up so it will still show the comment as private unless we fix it here.
+                        */
+                       if ((intval($r[0]['forum_mode']) == 1) && (! $r[0]['private'])) {
                                $arr['private'] = 0;
-
+                       }
 
                        // If its a post from myself then tag the thread as "mention"
                        logger("item_store: Checking if parent ".$parent_id." has to be tagged as mention for user ".$arr['uid'], LOGGER_DEBUG);
@@ -716,10 +768,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                                }
                        }
                } else {
-
-                       // Allow one to see reply tweets from status.net even when
-                       // we don't have or can't see the original post.
-
+                       /*
+                        * Allow one to see reply tweets from status.net even when
+                        * we don't have or can't see the original post.
+                        */
                        if ($force_parent) {
                                logger('item_store: $force_parent=true, reply converted to top-level post.');
                                $parent_id = 0;
@@ -779,14 +831,15 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
        } else {
                $isglobal = q("SELECT `global` FROM `item` WHERE `uid` = 0 AND `uri` = '%s'", dbesc($arr["uri"]));
 
-               $arr["global"] = (count($isglobal) > 0);
+               $arr["global"] = (dbm::is_result($isglobal) && count($isglobal) > 0);
        }
 
        // ACL settings
-       if (strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid))
+       if (strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid)) {
                $private = 1;
-       else
+       } else {
                $private = $arr['private'];
+       }
 
        $arr["allow_cid"] = $allow_cid;
        $arr["allow_gid"] = $allow_gid;
@@ -798,19 +851,22 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
        // Fill the cache field
        put_item_in_cache($arr);
 
-       if ($notify)
-               call_hooks('post_local',$arr);
-       else
-               call_hooks('post_remote',$arr);
+       if ($notify) {
+               call_hooks('post_local', $arr);
+       } else {
+               call_hooks('post_remote', $arr);
+       }
 
-       if (x($arr,'cancel')) {
+       if (x($arr, 'cancel')) {
                logger('item_store: post cancelled by plugin.');
                return 0;
        }
 
-       // Check for already added items.
-       // There is a timing issue here that sometimes creates double postings.
-       // An unique index would help - but the limitations of MySQL (maximum size of index values) prevent this.
+       /*
+        * Check for already added items.
+        * There is a timing issue here that sometimes creates double postings.
+        * An unique index would help - but the limitations of MySQL (maximum size of index values) prevent this.
+        */
        if ($arr["uid"] == 0) {
                $r = qu("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = 0 LIMIT 1", dbesc(trim($arr['uri'])));
                if (dbm::is_result($r)) {
@@ -895,7 +951,7 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
 
        if ($r[0]["entries"] > 1) {
                // There are duplicates. We delete our just created entry.
-               logger('Duplicated post occurred. uri = '.$arr['uri'].' uid = '.$arr['uid']);
+               logger('Duplicated post occurred. uri = ' . $arr['uri'] . ' uid = ' . $arr['uid']);
 
                // Yes, we could do a rollback here - but we are having many users with MyISAM.
                q("DELETE FROM `item` WHERE `id` = %d", intval($current_post));
@@ -911,8 +967,9 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
        logger('item_store: created item '.$current_post);
        item_set_last_item($arr);
 
-       if (!$parent_id || ($arr['parent-uri'] === $arr['uri']))
+       if (!$parent_id || ($arr['parent-uri'] === $arr['uri'])) {
                $parent_id = $current_post;
+       }
 
        // Set parent id
        $r = q("UPDATE `item` SET `parent` = %d WHERE `id` = %d",
@@ -925,28 +982,31 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
 
        // update the commented timestamp on the parent
        // Only update "commented" if it is really a comment
-       if (($arr['verb'] == ACTIVITY_POST) OR !get_config("system", "like_no_comment"))
+       if (($arr['verb'] == ACTIVITY_POST) OR !get_config("system", "like_no_comment")) {
                q("UPDATE `item` SET `commented` = '%s', `changed` = '%s' WHERE `id` = %d",
                        dbesc(datetime_convert()),
                        dbesc(datetime_convert()),
                        intval($parent_id)
                );
-       else
+       } else {
                q("UPDATE `item` SET `changed` = '%s' WHERE `id` = %d",
                        dbesc(datetime_convert()),
                        intval($parent_id)
                );
+       }
 
        if ($dsprsig) {
 
-               // Friendica servers lower than 3.4.3-2 had double encoded the signature ...
-               // We can check for this condition when we decode and encode the stuff again.
+               /*
+                * Friendica servers lower than 3.4.3-2 had double encoded the signature ...
+                * We can check for this condition when we decode and encode the stuff again.
+                */
                if (base64_encode(base64_decode(base64_decode($dsprsig->signature))) == base64_decode($dsprsig->signature)) {
                        $dsprsig->signature = base64_decode($dsprsig->signature);
                        logger("Repaired double encoded signature from handle ".$dsprsig->signer, LOGGER_DEBUG);
                }
 
-               q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
+               q("INSERT INTO `sign` (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
                        intval($current_post),
                        dbesc($dsprsig->signed_text),
                        dbesc($dsprsig->signature),
@@ -954,10 +1014,12 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                );
        }
 
-       $deleted = tag_deliver($arr['uid'],$current_post);
+       $deleted = tag_deliver($arr['uid'], $current_post);
 
-       // current post can be deleted if is for a community page and no mention are
-       // in it.
+       /*
+        * current post can be deleted if is for a community page and no mention are
+        * in it.
+        */
        if (!$deleted AND !$dontcache) {
 
                $r = q('SELECT * FROM `item` WHERE `id` = %d', intval($current_post));
@@ -980,13 +1042,17 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
 
        q("COMMIT");
 
-       // Due to deadlock issues with the "term" table we are doing these steps after the commit.
-       // This is not perfect - but a workable solution until we found the reason for the problem.
+       /*
+        * Due to deadlock issues with the "term" table we are doing these steps after the commit.
+        * This is not perfect - but a workable solution until we found the reason for the problem.
+        */
        create_tags_from_item($current_post);
        create_files_from_item($current_post);
 
-       // If this is now the last-child, force all _other_ children of this parent to *not* be last-child
-       // It is done after the transaction to avoid dead locks.
+       /*
+        * If this is now the last-child, force all _other_ children of this parent to *not* be last-child
+        * It is done after the transaction to avoid dead locks.
+        */
        if ($arr['last-child']) {
                $r = q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d AND `id` != %d",
                        dbesc($arr['uri']),
@@ -1027,7 +1093,7 @@ function item_set_last_item($arr) {
        if (!$update AND ($arr["network"] == NETWORK_DFRN) AND ($arr["parent-uri"] === $arr["uri"])) {
                $isforum = q("SELECT `forum` FROM `contact` WHERE `id` = %d AND `forum`",
                                intval($arr['contact-id']));
-               if ($isforum) {
+               if (dbm::is_result($isforum)) {
                        $update = true;
                }
        }
@@ -1062,8 +1128,9 @@ function item_body_set_hashtags(&$item) {
        $tags = get_tags($item["body"]);
 
        // No hashtags?
-       if (!count($tags))
-               return(false);
+       if (!count($tags)) {
+               return false;
+       }
 
        // This sorting is important when there are hashtags that are part of other hashtags
        // Otherwise there could be problems with hashtags like #test and #test2
@@ -1073,6 +1140,7 @@ function item_body_set_hashtags(&$item) {
 
        $URLSearchString = "^\[\]";
 
+       /// @TODO old-lost code?
        // All hashtags should point to the home server
        //$item["body"] = preg_replace("/#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
        //              "#[url=".App::get_baseurl()."/search?tag=$2]$2[/url]", $item["body"]);
@@ -1082,41 +1150,39 @@ function item_body_set_hashtags(&$item) {
 
        // mask hashtags inside of url, bookmarks and attachments to avoid urls in urls
        $item["body"] = preg_replace_callback("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
-               function ($match){
-                       return("[url=".str_replace("#", "&num;", $match[1])."]".str_replace("#", "&num;", $match[2])."[/url]");
-               },$item["body"]);
+               function ($match) {
+                       return ("[url=" . str_replace("#", "&num;", $match[1]) . "]" . str_replace("#", "&num;", $match[2]) . "[/url]");
+               }, $item["body"]);
 
        $item["body"] = preg_replace_callback("/\[bookmark\=([$URLSearchString]*)\](.*?)\[\/bookmark\]/ism",
-               function ($match){
-                       return("[bookmark=".str_replace("#", "&num;", $match[1])."]".str_replace("#", "&num;", $match[2])."[/bookmark]");
-               },$item["body"]);
+               function ($match) {
+                       return ("[bookmark=" . str_replace("#", "&num;", $match[1]) . "]" . str_replace("#", "&num;", $match[2]) . "[/bookmark]");
+               }, $item["body"]);
 
        $item["body"] = preg_replace_callback("/\[attachment (.*)\](.*?)\[\/attachment\]/ism",
-               function ($match){
-                       return("[attachment ".str_replace("#", "&num;", $match[1])."]".$match[2]."[/attachment]");
-               },$item["body"]);
+               function ($match) {
+                       return ("[attachment " . str_replace("#", "&num;", $match[1]) . "]" . $match[2] . "[/attachment]");
+               }, $item["body"]);
 
        // Repair recursive urls
        $item["body"] = preg_replace("/&num;\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
                        "&num;$2", $item["body"]);
 
-
-       foreach($tags as $tag) {
-               if (strpos($tag,'#') !== 0)
-                       continue;
-
-               if (strpos($tag,'[url='))
+       foreach ($tags as $tag) {
+               if ((strpos($tag, '#') !== 0) || (strpos($tag, '[url='))) {
                        continue;
+               }
 
                $basetag = str_replace('_',' ',substr($tag,1));
 
-               $newtag = '#[url='.App::get_baseurl().'/search?tag='.rawurlencode($basetag).']'.$basetag.'[/url]';
+               $newtag = '#[url=' . App::get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
 
                $item["body"] = str_replace($tag, $newtag, $item["body"]);
 
-               if (!stristr($item["tag"],"/search?tag=".$basetag."]".$basetag."[/url]")) {
-                       if (strlen($item["tag"]))
+               if (!stristr($item["tag"], "/search?tag=" . $basetag . "]" . $basetag . "[/url]")) {
+                       if (strlen($item["tag"])) {
                                $item["tag"] = ','.$item["tag"];
+                       }
                        $item["tag"] = $newtag.$item["tag"];
                }
        }
@@ -1127,10 +1193,12 @@ function item_body_set_hashtags(&$item) {
 
 function get_item_guid($id) {
        $r = q("SELECT `guid` FROM `item` WHERE `id` = %d LIMIT 1", intval($id));
-       if (dbm::is_result($r))
-               return($r[0]["guid"]);
-       else
-               return("");
+       if (dbm::is_result($r)) {
+               return $r[0]["guid"];
+       } else {
+               /// @TODO This else-block can be elimited again
+               return "";
+       }
 }
 
 function get_item_id($guid, $uid = 0) {
@@ -1138,8 +1206,9 @@ function get_item_id($guid, $uid = 0) {
        $nick = "";
        $id = 0;
 
-       if ($uid == 0)
+       if ($uid == 0) {
                $uid == local_user();
+       }
 
        // Does the given user have this item?
        if ($uid) {
@@ -1165,14 +1234,15 @@ function get_item_id($guid, $uid = 0) {
                        $nick = $r[0]["nickname"];
                }
        }
-       return(array("nick" => $nick, "id" => $id));
+       return array("nick" => $nick, "id" => $id);
 }
 
 // return - test
-function get_item_contact($item,$contacts) {
-       if (! count($contacts) || (! is_array($item)))
+function get_item_contact($item, $contacts) {
+       if (! count($contacts) || (! is_array($item))) {
                return false;
-       foreach($contacts as $contact) {
+       }
+       foreach ($contacts as $contact) {
                if ($contact['id'] == $item['contact-id']) {
                        return $contact;
                        break; // NOTREACHED
@@ -1187,15 +1257,13 @@ function get_item_contact($item,$contacts) {
  * @param int $item_id
  * @return bool true if item was deleted, else false
  */
-function tag_deliver($uid,$item_id) {
-
-       //
+function tag_deliver($uid, $item_id) {
 
        $a = get_app();
 
        $mention = false;
 
-       $u = q("select * from user where uid = %d limit 1",
+       $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
                intval($uid)
        );
 
@@ -1219,24 +1287,25 @@ function tag_deliver($uid,$item_id) {
 
        $link = normalise_link(App::get_baseurl() . '/profile/' . $u[0]['nickname']);
 
-       // Diaspora uses their own hardwired link URL in @-tags
-       // instead of the one we supply with webfinger
-
+       /*
+        * Diaspora uses their own hardwired link URL in @-tags
+        * instead of the one we supply with webfinger
+        */
        $dlink = normalise_link(App::get_baseurl() . '/u/' . $u[0]['nickname']);
 
-       $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism',$item['body'],$matches,PREG_SET_ORDER);
+       $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism', $item['body'], $matches, PREG_SET_ORDER);
        if ($cnt) {
-               foreach($matches as $mtch) {
-                       if (link_compare($link,$mtch[1]) || link_compare($dlink,$mtch[1])) {
+               foreach ($matches as $mtch) {
+                       if (link_compare($link, $mtch[1]) || link_compare($dlink, $mtch[1])) {
                                $mention = true;
                                logger('tag_deliver: mention found: ' . $mtch[2]);
                        }
                }
        }
 
-       if (! $mention){
-               if ( ($community_page || $prvgroup) &&
-                         (!$item['wall']) && (!$item['origin']) && ($item['id'] == $item['parent'])){
+       if (! $mention) {
+               if (($community_page || $prvgroup) &&
+                         (!$item['wall']) && (!$item['origin']) && ($item['id'] == $item['parent'])) {
                        // mmh.. no mention.. community page or private group... no wall.. no origin.. top-post (not a comment)
                        // delete it!
                        logger("tag_deliver: no-mention top-level post to communuty or private group. delete.");
@@ -1253,21 +1322,21 @@ function tag_deliver($uid,$item_id) {
 
        call_hooks('tagged', $arr);
 
-       if ((! $community_page) && (! $prvgroup))
+       if ((! $community_page) && (! $prvgroup)) {
                return;
+       }
 
-
-       // tgroup delivery - setup a second delivery chain
-       // prevent delivery looping - only proceed
-       // if the message originated elsewhere and is a top-level post
-
-       if (($item['wall']) || ($item['origin']) || ($item['id'] != $item['parent']))
+       /*
+        * tgroup delivery - setup a second delivery chain
+        * prevent delivery looping - only proceed
+        * if the message originated elsewhere and is a top-level post
+        */
+       if (($item['wall']) || ($item['origin']) || ($item['id'] != $item['parent'])) {
                return;
+       }
 
        // now change this copy of the post to a forum head message and deliver to all the tgroup members
-
-
-       $c = q("select name, url, thumb from contact where self = 1 and uid = %d limit 1",
+       $c = q("SELECT `name`, `url`, `thumb` FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
                intval($u[0]['uid'])
        );
        if (! dbm::is_result($c)) {
@@ -1301,14 +1370,15 @@ function tag_deliver($uid,$item_id) {
 
 
 
-function tgroup_check($uid,$item) {
+function tgroup_check($uid, $item) {
 
        $mention = false;
 
        // check that the message originated elsewhere and is a top-level post
 
-       if (($item['wall']) || ($item['origin']) || ($item['uri'] != $item['parent-uri']))
+       if (($item['wall']) || ($item['origin']) || ($item['uri'] != $item['parent-uri'])) {
                return false;
+       }
 
        /// @TODO Encapsulate this or find it encapsulated and replace all occurrances
        $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
@@ -1321,18 +1391,18 @@ function tgroup_check($uid,$item) {
        $community_page = (($u[0]['page-flags'] == PAGE_COMMUNITY) ? true : false);
        $prvgroup = (($u[0]['page-flags'] == PAGE_PRVGROUP) ? true : false);
 
-
        $link = normalise_link(App::get_baseurl() . '/profile/' . $u[0]['nickname']);
 
-       // Diaspora uses their own hardwired link URL in @-tags
-       // instead of the one we supply with webfinger
-
+       /*
+        * Diaspora uses their own hardwired link URL in @-tags
+        * instead of the one we supply with webfinger
+        */
        $dlink = normalise_link(App::get_baseurl() . '/u/' . $u[0]['nickname']);
 
-       $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism',$item['body'],$matches,PREG_SET_ORDER);
+       $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism', $item['body'], $matches, PREG_SET_ORDER);
        if ($cnt) {
                foreach ($matches as $mtch) {
-                       if (link_compare($link,$mtch[1]) || link_compare($dlink,$mtch[1])) {
+                       if (link_compare($link, $mtch[1]) || link_compare($dlink, $mtch[1])) {
                                $mention = true;
                                logger('tgroup_check: mention found: ' . $mtch[2]);
                        }
@@ -1343,23 +1413,25 @@ function tgroup_check($uid,$item) {
                return false;
        }
 
-       /// @TODO Combines both return statements into one
+       /// @TODO Combine both return statements into one
        return (($community_page) || ($prvgroup));
 }
 
-/*
-  This function returns true if $update has an edited timestamp newer
-  than $existing, i.e. $update contains new data which should override
-  what's already there.  If there is no timestamp yet, the update is
-  assumed to be newer.  If the update has no timestamp, the existing
-  item is assumed to be up-to-date.  If the timestamps are equal it
-  assumes the update has been seen before and should be ignored.
-  */
-function edited_timestamp_is_newer($existing, $update) {
-       if (!x($existing,'edited') || !$existing['edited']) {
+/**
+ * This function returns true if $update has an edited timestamp newer
+ * than $existing, i.e. $update contains new data which should override
+ * what's already there.  If there is no timestamp yet, the update is
+ * assumed to be newer.  If the update has no timestamp, the existing
+ * item is assumed to be up-to-date.  If the timestamps are equal it
+ * assumes the update has been seen before and should be ignored.
+ *
+ * @todo fix type-hints (both array)
+ */
+function edited_timestamp_is_newer ($existing, $update) {
+       if (!x($existing, 'edited') || !$existing['edited']) {
                return true;
        }
-       if (!x($update,'edited') || !$update['edited']) {
+       if (!x($update, 'edited') || !$update['edited']) {
                return false;
        }
 
@@ -1393,16 +1465,17 @@ function edited_timestamp_is_newer($existing, $update) {
  * model where comments can have sub-threads. That would require some massive sorting
  * to get all the feed items into a mostly linear ordering, and might still require
  * recursion.
+ *
+ * @todo find proper type-hints
  */
-
-function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) {
+function consume_feed($xml, $importer, &$contact, &$hub, $datedir = 0, $pass = 0) {
        if ($contact['network'] === NETWORK_OSTATUS) {
                if ($pass < 2) {
                        // Test - remove before flight
                        //$tempfile = tempnam(get_temppath(), "ostatus2");
                        //file_put_contents($tempfile, $xml);
                        logger("Consume OStatus messages ", LOGGER_DEBUG);
-                       ostatus::import($xml,$importer,$contact, $hub);
+                       ostatus::import($xml, $importer, $contact, $hub);
                }
                return;
        }
@@ -1410,7 +1483,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
        if ($contact['network'] === NETWORK_FEED) {
                if ($pass < 2) {
                        logger("Consume feeds", LOGGER_DEBUG);
-                       feed_import($xml,$importer,$contact, $hub);
+                       feed_import($xml, $importer, $contact, $hub);
                }
                return;
        }
@@ -1418,7 +1491,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
        if ($contact['network'] === NETWORK_DFRN) {
                logger("Consume DFRN messages", LOGGER_DEBUG);
 
-               $r = q("SELECT  `contact`.*, `contact`.`uid` AS `importer_uid`,
+               $r = q("SELECT `contact`.*, `contact`.`uid` AS `importer_uid`,
                                        `contact`.`pubkey` AS `cpubkey`,
                                        `contact`.`prvkey` AS `cprvkey`,
                                        `contact`.`thumb` AS `thumb`,
@@ -1430,34 +1503,40 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                        WHERE `contact`.`id` = %d AND `user`.`uid` = %d",
                        dbesc($contact["id"]), dbesc($importer["uid"])
                );
-               if ($r) {
+               if (dbm::is_result($r)) {
                        logger("Now import the DFRN feed");
-                       dfrn::import($xml,$r[0], true);
+                       dfrn::import($xml, $r[0], true);
                        return;
                }
        }
 }
 
+/// @TODO type-hint is array
 function item_is_remote_self($contact, &$datarray) {
        $a = get_app();
 
-       if (!$contact['remote_self'])
+       if (!$contact['remote_self']) {
                return false;
+       }
 
        // Prevent the forwarding of posts that are forwarded
-       if ($datarray["extid"] == NETWORK_DFRN)
+       if ($datarray["extid"] == NETWORK_DFRN) {
                return false;
+       }
 
        // Prevent to forward already forwarded posts
-       if ($datarray["app"] == $a->get_hostname())
+       if ($datarray["app"] == $a->get_hostname()) {
                return false;
+       }
 
        // Only forward posts
-       if ($datarray["verb"] != ACTIVITY_POST)
+       if ($datarray["verb"] != ACTIVITY_POST) {
                return false;
+       }
 
-       if (($contact['network'] != NETWORK_FEED) AND $datarray['private'])
+       if (($contact['network'] != NETWORK_FEED) AND $datarray['private']) {
                return false;
+       }
 
        $datarray2 = $datarray;
        logger('remote-self start - Contact '.$contact['url'].' - '.$contact['remote_self'].' Item '.print_r($datarray, true), LOGGER_DEBUG);
@@ -1479,25 +1558,28 @@ function item_is_remote_self($contact, &$datarray) {
                if ($contact['network'] != NETWORK_FEED) {
                        $datarray["guid"] = get_guid(32);
                        unset($datarray["plink"]);
-                       $datarray["uri"] = item_new_uri($a->get_hostname(),$contact['uid'], $datarray["guid"]);
+                       $datarray["uri"] = item_new_uri($a->get_hostname(), $contact['uid'], $datarray["guid"]);
                        $datarray["parent-uri"] = $datarray["uri"];
                        $datarray["extid"] = $contact['network'];
                        $urlpart = parse_url($datarray2['author-link']);
                        $datarray["app"] = $urlpart["host"];
-               } else
+               } else {
                        $datarray['private'] = 0;
+               }
        }
 
        if ($contact['network'] != NETWORK_FEED) {
                // Store the original post
                $r = item_store($datarray2, false, false);
                logger('remote-self post original item - Contact '.$contact['url'].' return '.$r.' Item '.print_r($datarray2, true), LOGGER_DEBUG);
-       } else
+       } else {
                $datarray["app"] = "Feed";
+       }
 
        return true;
 }
 
+/// @TODO find proper type-hints
 function new_follower($importer, $contact, $datarray, $item, $sharing = false) {
        $url = notags(trim($datarray['author-link']));
        $name = notags(trim($datarray['author-name']));
@@ -1548,6 +1630,7 @@ function new_follower($importer, $contact, $datarray, $item, $sharing = false) {
                        update_contact_avatar($photo, $importer["uid"], $contact_record["id"], true);
                }
 
+               /// @TODO Encapsulate this into a function/method
                $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
                        intval($importer['uid'])
                );
@@ -1636,17 +1719,18 @@ function subscribe_to_hub($url, $importer, $contact, $hubmode = 'subscribe') {
                );
        }
 
-       // Diaspora has different message-ids in feeds than they do
-       // through the direct Diaspora protocol. If we try and use
-       // the feed, we'll get duplicates. So don't.
-
-       if ((! dbm::is_result($r)) || $contact['network'] === NETWORK_DIASPORA)
+       /*
+        * Diaspora has different message-ids in feeds than they do
+        * through the direct Diaspora protocol. If we try and use
+        * the feed, we'll get duplicates. So don't.
+        */
+       if ((! dbm::is_result($r)) || $contact['network'] === NETWORK_DIASPORA) {
                return;
+       }
 
        $push_url = get_config('system','url') . '/pubsub/' . $r[0]['nickname'] . '/' . $contact['id'];
 
        // Use a single verify token, even if multiple hubs
-
        $verify_token = ((strlen($contact['hub-verify'])) ? $contact['hub-verify'] : random_string());
 
        $params= 'hub.mode=' . $hubmode . '&hub.callback=' . urlencode($push_url) . '&hub.topic=' . urlencode($contact['poll']) . '&hub.verify=async&hub.verify_token=' . $verify_token;
@@ -1660,7 +1744,7 @@ function subscribe_to_hub($url, $importer, $contact, $hubmode = 'subscribe') {
                );
        }
 
-       post_url($url,$params);
+       post_url($url, $params);
 
        logger('subscribe_to_hub: returns: ' . $a->get_curl_code(), LOGGER_DEBUG);
 
@@ -1670,8 +1754,9 @@ function subscribe_to_hub($url, $importer, $contact, $hubmode = 'subscribe') {
 
 function fix_private_photos($s, $uid, $item = null, $cid = 0) {
 
-       if (get_config('system','disable_embedded'))
+       if (get_config('system','disable_embedded')) {
                return $s;
+       }
 
        $a = get_app();
 
@@ -1684,7 +1769,7 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
        $img_start = strpos($orig_body, '[img');
        $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
        $img_len = ($img_start !== false ? strpos(substr($orig_body, $img_start + $img_st_close + 1), '[/img]') : false);
-       while( ($img_st_close !== false) && ($img_len !== false) ) {
+       while ( ($img_st_close !== false) && ($img_len !== false) ) {
 
                $img_st_close++; // make it point to AFTER the closing bracket
                $image = substr($orig_body, $img_start + $img_st_close, $img_len);
@@ -1696,27 +1781,28 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
                        // Only embed locally hosted photos
                        $replace = false;
                        $i = basename($image);
-                       $i = str_replace(array('.jpg','.png','.gif'),array('','',''),$i);
-                       $x = strpos($i,'-');
+                       $i = str_replace(array('.jpg', '.png', '.gif'),array('', '',''), $i);
+                       $x = strpos($i, '-');
 
                        if ($x) {
-                               $res = substr($i,$x+1);
-                               $i = substr($i,0,$x);
+                               $res = substr($i, $x + 1);
+                               $i = substr($i, 0, $x);
                                $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d AND `uid` = %d",
                                        dbesc($i),
                                        intval($res),
                                        intval($uid)
-                               );
-                               if ($r) {
-
-                                       // Check to see if we should replace this photo link with an embedded image
-                                       // 1. No need to do so if the photo is public
-                                       // 2. If there's a contact-id provided, see if they're in the access list
-                                       //    for the photo. If so, embed it.
-                                       // 3. Otherwise, if we have an item, see if the item permissions match the photo
-                                       //    permissions, regardless of order but first check to see if they're an exact
-                                       //    match to save some processing overhead.
 
+                               );
+                               if (dbm::is_result($r)) {
+                                       /*
+                                        * Check to see if we should replace this photo link with an embedded image
+                                        * 1. No need to do so if the photo is public
+                                        * 2. If there's a contact-id provided, see if they're in the access list
+                                        *    for the photo. If so, embed it.
+                                        * 3. Otherwise, if we have an item, see if the item permissions match the photo
+                                        *    permissions, regardless of order but first check to see if they're an exact
+                                        *    match to save some processing overhead.
+                                        */
                                        if (has_permissions($r[0])) {
                                                if ($cid) {
                                                        $recips = enumerate_permissions($r[0]);
@@ -1724,8 +1810,9 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
                                                                $replace = true;
                                                        }
                                                } elseif ($item) {
-                                                       if (compare_permissions($item,$r[0]))
+                                                       if (compare_permissions($item, $r[0])) {
                                                                $replace = true;
+                                                       }
                                                }
                                        }
                                        if ($replace) {
@@ -1757,8 +1844,9 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
 
                $new_body = $new_body . substr($orig_body, 0, $img_start + $img_st_close) . $image . '[/img]';
                $orig_body = substr($orig_body, $img_start + $img_st_close + $img_len + strlen('[/img]'));
-               if ($orig_body === false)
+               if ($orig_body === false) {
                        $orig_body = '';
+               }
 
                $img_start = strpos($orig_body, '[img');
                $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
@@ -1767,63 +1855,75 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
 
        $new_body = $new_body . $orig_body;
 
-       return($new_body);
+       return $new_body;
 }
 
+/// @TODO type-hint is array
 function has_permissions($obj) {
-       if (($obj['allow_cid'] != '') || ($obj['allow_gid'] != '') || ($obj['deny_cid'] != '') || ($obj['deny_gid'] != ''))
-               return true;
-       return false;
+       return (
+               (
+                       x($obj, 'allow_cid')
+               ) || (
+                       x($obj, 'allow_gid')
+               ) || (
+                       x($obj, 'deny_cid')
+               ) || (
+                       x($obj, 'deny_gid')
+               )
+       );
 }
 
-function compare_permissions($obj1,$obj2) {
+/// @TODO type-hint is array
+function compare_permissions($obj1, $obj2) {
        // first part is easy. Check that these are exactly the same.
        if (($obj1['allow_cid'] == $obj2['allow_cid'])
                && ($obj1['allow_gid'] == $obj2['allow_gid'])
                && ($obj1['deny_cid'] == $obj2['deny_cid'])
-               && ($obj1['deny_gid'] == $obj2['deny_gid']))
+               && ($obj1['deny_gid'] == $obj2['deny_gid'])) {
                return true;
+       }
 
        // This is harder. Parse all the permissions and compare the resulting set.
-
        $recipients1 = enumerate_permissions($obj1);
        $recipients2 = enumerate_permissions($obj2);
        sort($recipients1);
        sort($recipients2);
-       if ($recipients1 == $recipients2)
-               return true;
-       return false;
+
+       /// @TODO Comparison of arrays, maybe use array_diff_assoc() here?
+       return ($recipients1 == $recipients2);
 }
 
 // returns an array of contact-ids that are allowed to see this object
-
+/// @TODO type-hint is array
 function enumerate_permissions($obj) {
        $allow_people = expand_acl($obj['allow_cid']);
        $allow_groups = expand_groups(expand_acl($obj['allow_gid']));
        $deny_people  = expand_acl($obj['deny_cid']);
        $deny_groups  = expand_groups(expand_acl($obj['deny_gid']));
-       $recipients   = array_unique(array_merge($allow_people,$allow_groups));
-       $deny         = array_unique(array_merge($deny_people,$deny_groups));
-       $recipients   = array_diff($recipients,$deny);
+       $recipients   = array_unique(array_merge($allow_people, $allow_groups));
+       $deny         = array_unique(array_merge($deny_people, $deny_groups));
+       $recipients   = array_diff($recipients, $deny);
        return $recipients;
 }
 
 function item_getfeedtags($item) {
        $ret = array();
        $matches = false;
-       $cnt = preg_match_all('|\#\[url\=(.*?)\](.*?)\[\/url\]|',$item['tag'],$matches);
+       $cnt = preg_match_all('|\#\[url\=(.*?)\](.*?)\[\/url\]|', $item['tag'], $matches);
        if ($cnt) {
-               for($x = 0; $x < $cnt; $x ++) {
-                       if ($matches[1][$x])
-                               $ret[$matches[2][$x]] = array('#',$matches[1][$x], $matches[2][$x]);
+               for ($x = 0; $x < $cnt; $x ++) {
+                       if ($matches[1][$x]) {
+                               $ret[$matches[2][$x]] = array('#', $matches[1][$x], $matches[2][$x]);
+                       }
                }
        }
        $matches = false;
-       $cnt = preg_match_all('|\@\[url\=(.*?)\](.*?)\[\/url\]|',$item['tag'],$matches);
+       $cnt = preg_match_all('|\@\[url\=(.*?)\](.*?)\[\/url\]|', $item['tag'], $matches);
        if ($cnt) {
-               for($x = 0; $x < $cnt; $x ++) {
-                       if ($matches[1][$x])
-                               $ret[] = array('@',$matches[1][$x], $matches[2][$x]);
+               for ($x = 0; $x < $cnt; $x ++) {
+                       if ($matches[1][$x]) {
+                               $ret[] = array('@', $matches[1][$x], $matches[2][$x]);
+                       }
                }
        }
        return $ret;
@@ -1831,23 +1931,29 @@ function item_getfeedtags($item) {
 
 function item_expire($uid, $days, $network = "", $force = false) {
 
-       if ((! $uid) || ($days < 1))
+       if ((! $uid) || ($days < 1)) {
                return;
+       }
 
-       // $expire_network_only = save your own wall posts
-       // and just expire conversations started by others
-
-       $expire_network_only = get_pconfig($uid,'expire','network_only');
+       /*
+        * $expire_network_only = save your own wall posts
+        * and just expire conversations started by others
+        */
+       $expire_network_only = get_pconfig($uid,'expire', 'network_only');
        $sql_extra = ((intval($expire_network_only)) ? " AND wall = 0 " : "");
 
        if ($network != "") {
                $sql_extra .= sprintf(" AND network = '%s' ", dbesc($network));
-               // There is an index "uid_network_received" but not "uid_network_created"
-               // This avoids the creation of another index just for one purpose.
-               // And it doesn't really matter wether to look at "received" or "created"
+
+               /*
+                * There is an index "uid_network_received" but not "uid_network_created"
+                * This avoids the creation of another index just for one purpose.
+                * And it doesn't really matter wether to look at "received" or "created"
+                */
                $range = "AND `received` < UTC_TIMESTAMP() - INTERVAL %d DAY ";
-       } else
+       } else {
                $range = "AND `created` < UTC_TIMESTAMP() - INTERVAL %d DAY ";
+       }
 
        $r = q("SELECT `file`, `resource-id`, `starred`, `type`, `id` FROM `item`
                WHERE `uid` = %d $range
@@ -1858,61 +1964,66 @@ function item_expire($uid, $days, $network = "", $force = false) {
                intval($days)
        );
 
-       if (! dbm::is_result($r))
+       if (! dbm::is_result($r)) {
                return;
+       }
 
-       $expire_items = get_pconfig($uid, 'expire','items');
-       $expire_items = (($expire_items===false)?1:intval($expire_items)); // default if not set: 1
+       $expire_items = get_pconfig($uid, 'expire', 'items');
+       $expire_items = (($expire_items === false) ? 1 : intval($expire_items)); // default if not set: 1
 
        // Forcing expiring of items - but not notes and marked items
-       if ($force)
+       if ($force) {
                $expire_items = true;
+       }
 
-       $expire_notes = get_pconfig($uid, 'expire','notes');
-       $expire_notes = (($expire_notes===false)?1:intval($expire_notes)); // default if not set: 1
+       $expire_notes = get_pconfig($uid, 'expire', 'notes');
+       $expire_notes = (($expire_notes === false) ? 1 : intval($expire_notes)); // default if not set: 1
 
-       $expire_starred = get_pconfig($uid, 'expire','starred');
-       $expire_starred = (($expire_starred===false)?1:intval($expire_starred)); // default if not set: 1
+       $expire_starred = get_pconfig($uid, 'expire', 'starred');
+       $expire_starred = (($expire_starred === false) ? 1 : intval($expire_starred)); // default if not set: 1
 
-       $expire_photos = get_pconfig($uid, 'expire','photos');
-       $expire_photos = (($expire_photos===false)?0:intval($expire_photos)); // default if not set: 0
+       $expire_photos = get_pconfig($uid, 'expire', 'photos');
+       $expire_photos = (($expire_photos === false) ? 0 : intval($expire_photos)); // default if not set: 0
 
        logger('expire: # items=' . count($r). "; expire items: $expire_items, expire notes: $expire_notes, expire starred: $expire_starred, expire photos: $expire_photos");
 
-       foreach($r as $item) {
+       foreach ($r as $item) {
 
                // don't expire filed items
 
-               if (strpos($item['file'],'[') !== false)
+               if (strpos($item['file'],'[') !== false) {
                        continue;
+               }
 
                // Only expire posts, not photos and photo comments
 
-               if ($expire_photos==0 && strlen($item['resource-id']))
+               if ($expire_photos == 0 && strlen($item['resource-id'])) {
                        continue;
-               if ($expire_starred==0 && intval($item['starred']))
+               } elseif ($expire_starred == 0 && intval($item['starred'])) {
                        continue;
-               if ($expire_notes==0 && $item['type']=='note')
+               } elseif ($expire_notes == 0 && $item['type'] == 'note') {
                        continue;
-               if ($expire_items==0 && $item['type']!='note')
+               } elseif ($expire_items == 0 && $item['type'] != 'note') {
                        continue;
+               }
 
-               drop_item($item['id'],false);
+               drop_item($item['id'], false);
        }
 
-       proc_run(PRIORITY_HIGH,"include/notifier.php", "expire", $uid);
+       proc_run(PRIORITY_HIGH, "include/notifier.php", "expire", $uid);
 
 }
 
-
+/// @TODO type-hint is array
 function drop_items($items) {
        $uid = 0;
 
-       if (! local_user() && ! remote_user())
+       if (! local_user() && ! remote_user()) {
                return;
+       }
 
        if (count($items)) {
-               foreach($items as $item) {
+               foreach ($items as $item) {
                        $owner = drop_item($item,false);
                        if ($owner && ! $uid)
                                $uid = $owner;
@@ -1921,12 +2032,13 @@ function drop_items($items) {
 
        // multiple threads may have been deleted, send an expire notification
 
-       if ($uid)
-               proc_run(PRIORITY_HIGH,"include/notifier.php", "expire", $uid);
+       if ($uid) {
+               proc_run(PRIORITY_HIGH, "include/notifier.php", "expire", $uid);
+       }
 }
 
 
-function drop_item($id,$interactive = true) {
+function drop_item($id, $interactive = true) {
 
        $a = get_app();
 
@@ -1937,8 +2049,9 @@ function drop_item($id,$interactive = true) {
        );
 
        if (! dbm::is_result($r)) {
-               if (! $interactive)
+               if (! $interactive) {
                        return 0;
+               }
                notice( t('Item not found.') . EOL);
                goaway(App::get_baseurl() . '/' . $_SESSION['return_url']);
        }
@@ -1952,7 +2065,7 @@ function drop_item($id,$interactive = true) {
        // check if logged in user is either the author or owner of this item
 
        if (is_array($_SESSION['remote'])) {
-               foreach($_SESSION['remote'] as $visitor) {
+               foreach ($_SESSION['remote'] as $visitor) {
                        if ($visitor['uid'] == $item['uid'] && $visitor['cid'] == $item['contact-id']) {
                                $contact_id = $visitor['cid'];
                                break;
@@ -1969,7 +2082,7 @@ function drop_item($id,$interactive = true) {
                        // so add any arguments as hidden inputs
                        $query = explode_querystring($a->query_string);
                        $inputs = array();
-                       foreach($query['args'] as $arg) {
+                       foreach ($query['args'] as $arg) {
                                if (strpos($arg, 'confirm=') === false) {
                                        $arg_parts = explode('=', $arg);
                                        $inputs[] = array('name' => $arg_parts[0], 'value' => $arg_parts[1]);
@@ -2006,27 +2119,28 @@ function drop_item($id,$interactive = true) {
                // clean up categories and tags so they don't end up as orphans
 
                $matches = false;
-               $cnt = preg_match_all('/<(.*?)>/',$item['file'],$matches,PREG_SET_ORDER);
+               $cnt = preg_match_all('/<(.*?)>/', $item['file'], $matches, PREG_SET_ORDER);
                if ($cnt) {
-                       foreach($matches as $mtch) {
-                               file_tag_unsave_file($item['uid'],$item['id'],$mtch[1],true);
+                       foreach ($matches as $mtch) {
+                               file_tag_unsave_file($item['uid'], $item['id'], $mtch[1],true);
                        }
                }
 
                $matches = false;
 
-               $cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER);
+               $cnt = preg_match_all('/\[(.*?)\]/', $item['file'], $matches, PREG_SET_ORDER);
                if ($cnt) {
-                       foreach($matches as $mtch) {
-                               file_tag_unsave_file($item['uid'],$item['id'],$mtch[1],false);
+                       foreach ($matches as $mtch) {
+                               file_tag_unsave_file($item['uid'], $item['id'], $mtch[1],false);
                        }
                }
 
-               // If item is a link to a photo resource, nuke all the associated photos
-               // (visitors will not have photo resources)
-               // This only applies to photos uploaded from the photos page. Photos inserted into a post do not
-               // generate a resource-id and therefore aren't intimately linked to the item.
-
+               /*
+                * If item is a link to a photo resource, nuke all the associated photos
+                * (visitors will not have photo resources)
+                * This only applies to photos uploaded from the photos page. Photos inserted into a post do not
+                * generate a resource-id and therefore aren't intimately linked to the item.
+                */
                if (strlen($item['resource-id'])) {
                        q("DELETE FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d ",
                                dbesc($item['resource-id']),
@@ -2036,7 +2150,6 @@ function drop_item($id,$interactive = true) {
                }
 
                // If item is a link to an event, nuke the event record.
-
                if (intval($item['event-id'])) {
                        q("DELETE FROM `event` WHERE `id` = %d AND `uid` = %d",
                                intval($item['event-id']),
@@ -2046,8 +2159,7 @@ function drop_item($id,$interactive = true) {
                }
 
                // If item has attachments, drop them
-
-               foreach(explode(",",$item['attach']) as $attach){
+               foreach (explode(", ", $item['attach']) as $attach) {
                        preg_match("|attach/(\d+)|", $attach, $matches);
                        q("DELETE FROM `attach` WHERE `id` = %d AND `uid` = %d",
                                intval($matches[1]),
@@ -2060,7 +2172,7 @@ function drop_item($id,$interactive = true) {
                // clean up item_id and sign meta-data tables
 
                /*
-               // Old code - caused very long queries and warning entries in the mysql logfiles:
+               /// @TODO Old code - caused very long queries and warning entries in the mysql logfiles:
 
                $r = q("DELETE FROM item_id where iid in (select id from item where parent = %d and uid = %d)",
                        intval($item['id']),
@@ -2076,29 +2188,28 @@ function drop_item($id,$interactive = true) {
                // The new code splits the queries since the mysql optimizer really has bad problems with subqueries
 
                // Creating list of parents
-               $r = q("select id from item where parent = %d and uid = %d",
+               $r = q("SELECT `id` FROM `item` WHERE `parent` = %d AND `uid` = %d",
                        intval($item['id']),
                        intval($item['uid'])
                );
 
                $parentid = "";
 
-               foreach ($r AS $row) {
-                       if ($parentid != "")
+               foreach ($r as $row) {
+                       if ($parentid != "") {
                                $parentid .= ", ";
+                       }
 
                        $parentid .= $row["id"];
                }
 
                // Now delete them
                if ($parentid != "") {
-                       $r = q("DELETE FROM item_id where iid in (%s)", dbesc($parentid));
-
-                       $r = q("DELETE FROM sign where iid in (%s)", dbesc($parentid));
+                       $r = q("DELETE FROM `item_id` WHERE `iid` IN (%s)", dbesc($parentid));
+                       $r = q("DELETE FROM `sign` WHERE `iid` IN (%s)", dbesc($parentid));
                }
 
                // If it's the parent of a comment thread, kill all the kids
-
                if ($item['uri'] == $item['parent-uri']) {
                        $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = ''
                                WHERE `parent-uri` = '%s' AND `uid` = %d ",
@@ -2134,15 +2245,17 @@ function drop_item($id,$interactive = true) {
 
                // send the notification upstream/downstream as the case may be
 
-               proc_run(PRIORITY_HIGH,"include/notifier.php", "drop", $drop_id);
+               proc_run(PRIORITY_HIGH, "include/notifier.php", "drop", $drop_id);
 
-               if (! $interactive)
+               if (! $interactive) {
                        return $owner;
+               }
                goaway(App::get_baseurl() . '/' . $_SESSION['return_url']);
                //NOTREACHED
        } else {
-               if (! $interactive)
+               if (! $interactive) {
                        return 0;
+               }
                notice( t('Permission denied.') . EOL);
                goaway(App::get_baseurl() . '/' . $_SESSION['return_url']);
                //NOTREACHED
@@ -2151,101 +2264,113 @@ function drop_item($id,$interactive = true) {
 }
 
 
-function first_post_date($uid,$wall = false) {
-       $r = q("select id, created from item
-               where uid = %d and wall = %d and deleted = 0 and visible = 1 AND moderated = 0
-               and id = parent
-               order by created asc limit 1",
+function first_post_date($uid, $wall = false) {
+       $r = q("SELECT `id`, `created` FROM `item`
+               WHERE `uid` = %d AND `wall` = %d AND `deleted` = 0 AND `visible` = 1 AND `moderated` = 0
+               AND `id` = `parent`
+               ORDER BY `created` ASC LIMIT 1",
                intval($uid),
                intval($wall ? 1 : 0)
        );
        if (dbm::is_result($r)) {
-//             logger('first_post_date: ' . $r[0]['id'] . ' ' . $r[0]['created'], LOGGER_DATA);
-               return substr(datetime_convert('',date_default_timezone_get(),$r[0]['created']),0,10);
+               // logger('first_post_date: ' . $r[0]['id'] . ' ' . $r[0]['created'], LOGGER_DATA);
+               return substr(datetime_convert('',date_default_timezone_get(), $r[0]['created']),0,10);
        }
        return false;
 }
 
 /* modified posted_dates() {below} to arrange the list in years */
 function list_post_dates($uid, $wall) {
-       $dnow = datetime_convert('',date_default_timezone_get(),'now','Y-m-d');
+       $dnow = datetime_convert('',date_default_timezone_get(), 'now','Y-m-d');
 
        $dthen = first_post_date($uid, $wall);
-       if (! $dthen)
+       if (! $dthen) {
                return array();
+       }
 
        // Set the start and end date to the beginning of the month
-       $dnow = substr($dnow,0,8).'01';
-       $dthen = substr($dthen,0,8).'01';
+       $dnow = substr($dnow, 0, 8) . '01';
+       $dthen = substr($dthen, 0, 8) . '01';
 
        $ret = array();
 
-       // Starting with the current month, get the first and last days of every
-       // month down to and including the month of the first post
-       while(substr($dnow, 0, 7) >= substr($dthen, 0, 7)) {
-               $dyear = intval(substr($dnow,0,4));
-               $dstart = substr($dnow,0,8) . '01';
-               $dend = substr($dnow,0,8) . get_dim(intval($dnow),intval(substr($dnow,5)));
-               $start_month = datetime_convert('','',$dstart,'Y-m-d');
-               $end_month = datetime_convert('','',$dend,'Y-m-d');
-               $str = day_translate(datetime_convert('','',$dnow,'F'));
-               if (! $ret[$dyear])
+       /*
+        * Starting with the current month, get the first and last days of every
+        * month down to and including the month of the first post
+        */
+       while (substr($dnow, 0, 7) >= substr($dthen, 0, 7)) {
+               $dyear = intval(substr($dnow, 0, 4));
+               $dstart = substr($dnow, 0, 8) . '01';
+               $dend = substr($dnow, 0, 8) . get_dim(intval($dnow), intval(substr($dnow, 5)));
+               $start_month = datetime_convert('', '', $dstart, 'Y-m-d');
+               $end_month = datetime_convert('', '', $dend, 'Y-m-d');
+               $str = day_translate(datetime_convert('', '', $dnow, 'F'));
+               if (!$ret[$dyear]) {
                        $ret[$dyear] = array();
-               $ret[$dyear][] = array($str,$end_month,$start_month);
-               $dnow = datetime_convert('','',$dnow . ' -1 month', 'Y-m-d');
+               }
+               $ret[$dyear][] = array($str, $end_month, $start_month);
+               $dnow = datetime_convert('', '', $dnow . ' -1 month', 'Y-m-d');
        }
        return $ret;
 }
 
-function posted_dates($uid,$wall) {
-       $dnow = datetime_convert('',date_default_timezone_get(),'now','Y-m-d');
+function posted_dates($uid, $wall) {
+       $dnow = datetime_convert('', date_default_timezone_get(), 'now', 'Y-m-d');
 
-       $dthen = first_post_date($uid,$wall);
-       if (! $dthen)
+       $dthen = first_post_date($uid, $wall);
+       if (! $dthen) {
                return array();
+       }
 
        // Set the start and end date to the beginning of the month
-       $dnow = substr($dnow,0,8).'01';
-       $dthen = substr($dthen,0,8).'01';
+       $dnow = substr($dnow, 0, 8) . '01';
+       $dthen = substr($dthen, 0, 8) . '01';
 
        $ret = array();
-       // Starting with the current month, get the first and last days of every
-       // month down to and including the month of the first post
-       while(substr($dnow, 0, 7) >= substr($dthen, 0, 7)) {
-               $dstart = substr($dnow,0,8) . '01';
-               $dend = substr($dnow,0,8) . get_dim(intval($dnow),intval(substr($dnow,5)));
-               $start_month = datetime_convert('','',$dstart,'Y-m-d');
-               $end_month = datetime_convert('','',$dend,'Y-m-d');
-               $str = day_translate(datetime_convert('','',$dnow,'F Y'));
-               $ret[] = array($str,$end_month,$start_month);
-               $dnow = datetime_convert('','',$dnow . ' -1 month', 'Y-m-d');
+       /*
+        * Starting with the current month, get the first and last days of every
+        * month down to and including the month of the first post
+        */
+       while (substr($dnow, 0, 7) >= substr($dthen, 0, 7)) {
+               $dstart = substr($dnow, 0, 8) . '01';
+               $dend = substr($dnow, 0, 8) . get_dim(intval($dnow), intval(substr($dnow, 5)));
+               $start_month = datetime_convert('', '', $dstart, 'Y-m-d');
+               $end_month = datetime_convert('', '', $dend, 'Y-m-d');
+               $str = day_translate(datetime_convert('', '', $dnow, 'F Y'));
+               $ret[] = array($str, $end_month, $start_month);
+               $dnow = datetime_convert('', '', $dnow . ' -1 month', 'Y-m-d');
        }
        return $ret;
 }
 
 
-function posted_date_widget($url,$uid,$wall) {
+function posted_date_widget($url, $uid, $wall) {
        $o = '';
 
-       if (! feature_enabled($uid,'archives'))
+       if (! feature_enabled($uid, 'archives')) {
                return $o;
+       }
 
        // For former Facebook folks that left because of "timeline"
-
-/*     if ($wall && intval(get_pconfig($uid,'system','no_wall_archive_widget')))
-               return $o;*/
+       /*
+        * @TODO old-lost code?
+       if ($wall && intval(get_pconfig($uid, 'system', 'no_wall_archive_widget')))
+               return $o;
+       */
 
        $visible_years = get_pconfig($uid,'system','archive_visible_years');
-       if (! $visible_years)
+       if (! $visible_years) {
                $visible_years = 5;
+       }
 
-       $ret = list_post_dates($uid,$wall);
+       $ret = list_post_dates($uid, $wall);
 
-       if (! dbm::is_result($ret))
+       if (! dbm::is_result($ret)) {
                return $o;
+       }
 
-       $cutoff_year = intval(datetime_convert('',date_default_timezone_get(),'now','Y')) - $visible_years;
-       $cutoff = ((array_key_exists($cutoff_year,$ret))? true : false);
+       $cutoff_year = intval(datetime_convert('',date_default_timezone_get(), 'now', 'Y')) - $visible_years;
+       $cutoff = ((array_key_exists($cutoff_year, $ret))? true : false);
 
        $o = replace_macros(get_markup_template('posted_date_widget.tpl'),array(
                '$title' => t('Archives'),
index 335869eda2104ff69a6cd6cbdebab9314ac8038e..b42dcec119c76ca02af9e738627df22e2db60fb4 100644 (file)
@@ -44,7 +44,7 @@ function get_browser_language() {
        // check if we have translations for the preferred languages and pick the 1st that has
        for ($i=0; $i<count($lang_list); $i++) {
                $lang = $lang_list[$i];
-               if(file_exists("view/lang/$lang") && is_dir("view/lang/$lang")) {
+               if ($lang === 'en' || (file_exists("view/lang/$lang") && is_dir("view/lang/$lang"))) {
                        $preferred = $lang;
                        break;
                }
index 4924ac12895b9273b8a62123e4da71a5b56067f1..054f5096026f96b222bcd9134807b1e8d0d67650 100644 (file)
--- a/js/acl.js
+++ b/js/acl.js
@@ -65,7 +65,7 @@ ACL.prototype.add_mention = function(id) {
        if (this.element.val().indexOf( searchText) >= 0 ) {
                return;
        }
-       this.element.val(searchText + this.element.val());
+       this.element.val(searchText + this.element.val()).trigger('change');
 }
 
 ACL.prototype.on_submit = function(){
index 8702abbcf92e3b23b3522a2655a827eb6bd2d3bd..3ed9fa30f9f2b23ae3007dda2348b0c9bb963abd 100644 (file)
@@ -166,7 +166,7 @@ function listNewLineAutocomplete(id) {
        if (word != null) {
                var textBefore = text.value.substring(0, caretPos);
                var textAfter  = text.value.substring(caretPos, text.length);
-               $('#' + id).val(textBefore + '\r\n[*] ' + textAfter);
+               $('#' + id).val(textBefore + '\r\n[*] ' + textAfter).trigger('change');
                setCaretPosition(text, caretPos + 5);
                return true;
        }
index c85aab4a2786ec74446a00b3695c106f7f424d2f..5df33ed590c8f0000286cf86144c3c10697b89a7 100644 (file)
                        var start = textarea.selectionStart;
                        var end = textarea.selectionEnd;
                        textarea.value = textarea.value.substring(0, start) + bbcode + textarea.value.substring(end, textarea.value.length);
+                       $(textarea).trigger('change');
                });
 
 
index fbd296a9da565b5b09f45a1349ae2ee12dfa2af6..8854723b767adb46985200c077fcf16f2d189e84 100755 (executable)
@@ -48,7 +48,7 @@ function install_post(App $a) {
                                $db = new dba($dbhost, $dbuser, $dbpass, '', true);
 
                                if(! get_db_errno()) {
-                                       $r = q("CREATE DATABASE '%s'",
+                                       $r = q("CREATE DATABASE '%s' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci",
                                                        dbesc($dbdata)
                                        );
                                        if ($r) {
index 0c08b66ce0459d9b83fbb8bea5a3b760221f79ad..bab5fd6274e4ed2c5e47cb849f1195747377beea 100644 (file)
@@ -292,7 +292,7 @@ function notifications_content(App $a) {
                                '$item_link' => $it['link'],
                                '$item_image' => $it['image'],
                                '$item_url' => $it['url'],
-                               '$item_text' => htmlentities($it['text']),
+                               '$item_text' => $it['text'],
                                '$item_when' => $it['when'],
                                '$item_ago' => $it['ago'],
                                '$item_seen' => $it['seen'],
index 6b7f0b862ef959ba8592e718d06dcb3f9c8ac0ba..39db0d73c42e0cfea95323a0049dfd723f8b38ad 100644 (file)
@@ -100,7 +100,7 @@ sudo ln -fs /vagrant /var/www
 cp /vagrant/util/htconfig.vagrant.php /vagrant/.htconfig.php
 
 # create the friendica database
-echo "create database friendica" | mysql -u root -proot
+echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | mysql -u root -proot
 # import test database
 $MYSQL -uroot -proot friendica < /vagrant/friendica_test_data.sql
 
index f8a6bc1c90f4cdc500cbc8ddc856bb9c9e2904e1..03a70986becb7eb64a4121fd26e946edf85f5803 100644 (file)
@@ -15,7 +15,7 @@ $db_user = '{{$dbuser}}';
 $db_pass = '{{$dbpass}}';
 $db_data = '{{$dbdata}}';
 
-// Set the database connection charset to UTF8.
+// Set the database connection charset to full Unicode (utf8mb4).
 // Changing this value will likely corrupt the special characters.
 // You have been warned.
 $a->config['system']['db_charset'] = "utf8mb4";
diff --git a/view/theme/frio/img/dynamic.php b/view/theme/frio/img/dynamic.php
deleted file mode 100644 (file)
index 591ea9e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php return array (
-  'components' => 
-  array (
-    'db' => 
-    array (
-      'class' => 'yii\\db\\Connection',
-      'dsn' => 'mysql:host=127.0.0.1;dbname=installer',
-      'username' => 'root',
-      'password' => 'root',
-      'charset' => 'utf8',
-    ),
-    'user' => 
-    array (
-    ),
-    'mailer' => 
-    array (
-      'transport' => 
-      array (
-        'class' => 'Swift_MailTransport',
-      ),
-    ),
-    'view' => 
-    array (
-      'theme' => 
-      array (
-        'name' => 'HumHub',
-      ),
-    ),
-    'formatter' => 
-    array (
-      'defaultTimeZone' => 'Europe/Berlin',
-    ),
-    'formatterApp' => 
-    array (
-      'defaultTimeZone' => 'Europe/Berlin',
-      'timeZone' => 'Europe/Berlin',
-    ),
-  ),
-  'params' => 
-  array (
-    'installer' => 
-    array (
-      'db' => 
-      array (
-        'installer_hostname' => '127.0.0.1',
-        'installer_database' => 'installer',
-      ),
-    ),
-    'config_created_at' => 1440430541,
-    'installed' => true,
-  ),
-  'name' => 'Installer',
-  'language' => 'de',
-  'timeZone' => 'Europe/Berlin',
-); ?>
\ No newline at end of file
index d212ee0038ee7d2d35e065ba0c9a0be0a024e47b..8794658dd6911ff8ac74ecc755f4eab9c79a0183 100644 (file)
@@ -30,6 +30,8 @@ function insertFormatting(BBcode,id) {
                }
        }
 
+       $(textarea).trigger('change');
+
        return true;
 }
 
index 4e32f9128c496ff3dc94cb72036e2256bd6d0ca4..b46599eddf11b85464ffb7c3215b66aa406627ad 100644 (file)
@@ -275,7 +275,46 @@ $(document).ready(function(){
 
        });
 
+       /*
+        * This event handler hides all comment UI when the user clicks anywhere on the page
+        * It ensures that we aren't closing the current comment box
+        *
+        * We are making an exception for buttons because of a race condition with the
+        * comment opening button that results in an already closed comment UI.
+        */
+       $(document).on('click', function(event) {
+               if (event.target.type === 'button') {
+                       return true;
+               }
+
+               var $dontclosethis = $(event.target).closest('.wall-item-comment-wrapper').find('.comment-edit-form');
+               $('.wall-item-comment-wrapper .comment-edit-submit-wrapper:visible').each(function() {
+                       var $parent = $(this).parent('.comment-edit-form');
+                       var itemId = $parent.data('itemId');
+
+                       if ($dontclosethis[0] != $parent[0]) {
+                               var textarea = $parent.find('textarea').get(0)
 
+                               commentCloseUI(textarea, itemId);
+                       }
+               });
+       });
+
+       // Customize some elements when the app is used in standalone mode on Android
+       if (window.matchMedia('(display-mode: standalone)').matches) {
+               // Open links to source outside of the webview
+               $('body').on('click', '.plink', function (e) {
+                       $(e.target).attr('target', '_blank');
+               });
+       }
+
+       /*
+        * This event listeners ensures that the textarea size is updated event if the
+        * value is changed externally (textcomplete, insertFormatting, fbrowser...)
+        */
+       $(document).on('change', 'textarea', function(event) {
+               autosize.update(event.target);
+       });
 });
 
 function openClose(theID) {
index 8ce7805bbd4785ac0b19b6b4d7163c44a1f74945..168576b3d4ca4c4d8345fbd16b6a95810c183326 100644 (file)
@@ -4,7 +4,7 @@
 {{else}}
 <div class="comment-wwedit-wrapper" id="comment-edit-wrapper-{{$id}}" style="display: block;">
 {{/if}}
-       <form class="comment-edit-form" style="display: block;" id="comment-edit-form-{{$id}}" action="item" method="post" onsubmit="post_comment({{$id}}); return false;">
+       <form class="comment-edit-form" style="display: block;" data-item-id="{{$id}}" id="comment-edit-form-{{$id}}" action="item" method="post" onsubmit="post_comment({{$id}}); return false;">
                <input type="hidden" name="type" value="{{$type}}" />
                <input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
                <input type="hidden" name="parent" value="{{$parent}}" />
@@ -14,7 +14,7 @@
                <input type="hidden" name="post_id_random" value="{{$rand_num}}" />
 
                <div class="bb form-group">
-                       <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty form-control text-autosize" name="body" placeholder="{{$comment}}" onFocus="commentOpenUI(this,{{$id}});" onBlur="commentCloseUI(this,{{$id}});"></textarea>
+                       <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty form-control text-autosize" name="body" placeholder="{{$comment}}" onFocus="commentOpenUI(this,{{$id}});"></textarea>
                </div>
                {{if $qcomment}}
                        <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});">