]> git.mxchange.org Git - friendica.git/commitdiff
Merge develop into 20171122_-_port_tagcloud
authorrabuzarus <rabuzarus@t-online.de>
Sat, 25 Nov 2017 22:41:20 +0000 (23:41 +0100)
committerrabuzarus <rabuzarus@t-online.de>
Sat, 25 Nov 2017 22:41:20 +0000 (23:41 +0100)
Conflicts:
include/features.php

65 files changed:
doc/SSL.md
doc/htconfig.md
include/HTTPExceptions.php [deleted file]
include/api.php
include/bbcode.php
include/conversation.php
include/dba.php
include/event.php
include/features.php
include/feed.php
include/follow.php
include/group.php
include/items.php
include/like.php
include/oauth.php
include/oembed.php
include/plugin.php
include/queue_fn.php
include/threads.php
mod/contacts.php
mod/dfrn_confirm.php
mod/dfrn_notify.php
mod/fetch.php
mod/item.php
mod/p.php
mod/receive.php
scripts/auth_ejabberd.php
src/App.php
src/Network/HTTPException.php [new file with mode: 0644]
src/Network/HTTPException/BadGatewayException.php [new file with mode: 0644]
src/Network/HTTPException/BadRequestException.php [new file with mode: 0644]
src/Network/HTTPException/ConflictException.php [new file with mode: 0644]
src/Network/HTTPException/ExpectationFailedException.php [new file with mode: 0644]
src/Network/HTTPException/ForbiddenException.php [new file with mode: 0644]
src/Network/HTTPException/GatewayTimeoutException.php [new file with mode: 0644]
src/Network/HTTPException/GoneException.php [new file with mode: 0644]
src/Network/HTTPException/ImATeapotException.php [new file with mode: 0644]
src/Network/HTTPException/InternalServerErrorException.php [new file with mode: 0644]
src/Network/HTTPException/LenghtRequiredException.php [new file with mode: 0644]
src/Network/HTTPException/MethodNotAllowedException.php [new file with mode: 0644]
src/Network/HTTPException/NonAcceptableException.php [new file with mode: 0644]
src/Network/HTTPException/NotFoundException.php [new file with mode: 0644]
src/Network/HTTPException/NotImplementedException.php [new file with mode: 0644]
src/Network/HTTPException/PreconditionFailedException.php [new file with mode: 0644]
src/Network/HTTPException/ServiceUnavaiableException.php [new file with mode: 0644]
src/Network/HTTPException/TooManyRequestsException.php [new file with mode: 0644]
src/Network/HTTPException/UnauthorizedException.php [new file with mode: 0644]
src/Network/HTTPException/UnprocessableEntityException.php [new file with mode: 0644]
src/Network/HTTPException/UnsupportedMediaTypeException.php [new file with mode: 0644]
src/Object/Contact.php
src/Protocol/DFRN.php
src/Protocol/Diaspora.php
src/Protocol/OStatus.php
src/Util/ExAuth.php [new file with mode: 0644]
src/Worker/CronJobs.php
src/Worker/Delivery.php
src/Worker/Notifier.php
src/Worker/ProfileUpdate.php
util/bookmarklet-share2friendica/README.md [new file with mode: 0644]
util/bookmarklet-share2friendica/bookmarklet-share2friendica.js [new file with mode: 0644]
util/global_community_block.php [new file with mode: 0755]
util/global_community_silence.php [new file with mode: 0755]
view/templates/contact_edit.tpl
view/theme/frio/templates/contact_edit.tpl
view/theme/vier/templates/contact_edit.tpl

index 95de83305fbe060db83bf5bfab68bca5b8e1b864..9d2bee775681ede587dc54d683d6e2fa149707d1 100644 (file)
@@ -69,30 +69,28 @@ If you can successfully access your Friendica instance through https, there are
 This is the simplest way to enforce site-wide secure access.
 Every time a user tries to access any Friendica page by any mean (manual address bar entry or link), the web server issues a Permanent Redirect response with the secure protocol prepended to the requested URL.
 
-With Apache, simply add the following lines to the [code].htaccess[/code] file in the root folder of your Friendica instance (thanks to [url=https://github.com/AlfredSK]AlfredSK[/url]):
+With Apache, enable the modules rewrite and ssl (with a shared hosting provider, this should be enabled already):
 
-[code]
-#Force SSL connections
+       sudo a2enmod rewrite ssl
 
-RewriteEngine On
-RewriteCond %{SERVER_PORT} 80
-RewriteRule ^(.*)$ https://your.friendica.domain/$1 [R=301,L]
-[/code]
+Add the following lines to the .htaccess file in the root folder of your Friendica instance (thanks to [url=https://github.com/AlfredSK]AlfredSK[/url]):
 
-With nginx, configure your [code]server[/code] directive this way (thanks to [url=https://bjornjohansen.no/redirect-to-https-with-nginx/]Bjørn Johansen[/url]):
+        RewriteEngine On
+        RewriteCond %{SERVER_PORT} 80
+        RewriteRule ^(.*)$ https://your.friendica.domain/$1 [R=301,L]
 
-[code]
-server {
-       listen 80;
-       listen [::]:80;
-       server_name your.friendica.domain;
-       return 301 https://$server_name$request_uri;
-}
-[/code]
+With nginx, configure your server directive this way ([documentation](https://www.nginx.com/blog/creating-nginx-rewrite-rules/)):
+
+        server {
+             listen 80;
+             server_name your.friendica.domain;
+             return 301 https://$server_name$request_uri;
+        }
 
 ### SSL Settings
 
 In the Admin Settings, there are three SSL-related settings:
-- **SSL link policy**: this affects how Friendica generates internal links. If your SSL installation was successful, we recommend "Force all links to SSL" just in case your web server configuration can't be altered like described above.
-- **Force SSL**: This forces all external links to HTTPS, which may solve Mixed-Content issues, but not all websites support HTTPS yet. Use at your own risk.
-- **Verify SSL**: Enabling this will prevent Friendica to interact with self-signed SSL sites. We recommend you leave it on as a self-signed SSL certificate can be a vectorfor a man-in-the-middle attack.
\ No newline at end of file
+
+1. **SSL link policy**: this affects how Friendica generates internal links. If your SSL installation was successful, we recommend "Force all links to SSL" just in case your web server configuration can't be altered like described above.
+2. **Force SSL**: This forces all external links to HTTPS, which may solve Mixed-Content issues, but not all websites support HTTPS yet. Use at your own risk.
+3. **Verify SSL**: Enabling this will prevent Friendica to interact with self-signed SSL sites. We recommend you leave it on as a self-signed SSL certificate can be a vectorfor a man-in-the-middle attack.
index 9e0a2184dfa431e716b3893de5be8994ffceec31..3f5b28b91727443dd748a82b6f70c6f7f6e84791 100644 (file)
@@ -23,6 +23,7 @@ Example: To set the directory value please add this line to your .htconfig.php:
 ## system ##
 
 * **allowed_link_protocols** (Array) - Allowed protocols in links URLs, add at your own risk. http is always allowed.
+* **always_show_preview** (Boolean) - Only show small preview picures. Default value is false.
 * **birthday_input_format** - Default value is "ymd".
 * **block_local_dir** (Boolean) - Blocks the access to the directory of the local users.
 * **auth_cookie_lifetime** (Integer) - Number of days that should pass without any activity before a user who chose "Remember me" when logging in is considered logged out. Defaults to 7.
diff --git a/include/HTTPExceptions.php b/include/HTTPExceptions.php
deleted file mode 100644 (file)
index 8571c99..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/**
- * Throwable exceptions to return HTTP status code
- *
- * This list of Exception has be extracted from
- * here http://racksburg.com/choosing-an-http-status-code/
- */
-
-class HTTPException extends Exception {
-       var $httpcode = 200;
-       var $httpdesc = "";
-       public function __construct($message="", $code = 0, Exception $previous = null) {
-               if ($this->httpdesc=="") {
-                       $this->httpdesc = preg_replace("|([a-z])([A-Z])|",'$1 $2', str_replace("Exception","",get_class($this)));
-               }
-               parent::__construct($message, $code, $previous);
-       }
-}
-
-// 4xx
-class TooManyRequestsException extends HTTPException {
-       var $httpcode = 429;
-}
-
-class UnauthorizedException extends HTTPException {
-       var $httpcode = 401;
-}
-
-class ForbiddenException extends HTTPException {
-       var $httpcode = 403;
-}
-
-class NotFoundException extends HTTPException {
-       var $httpcode = 404;
-}
-
-class GoneException extends HTTPException {
-       var $httpcode = 410;
-}
-
-class MethodNotAllowedException extends HTTPException {
-       var $httpcode = 405;
-}
-
-class NonAcceptableException extends HTTPException {
-       var $httpcode = 406;
-}
-
-class LenghtRequiredException extends HTTPException {
-       var $httpcode = 411;
-}
-
-class PreconditionFailedException extends HTTPException {
-       var $httpcode = 412;
-}
-
-class UnsupportedMediaTypeException extends HTTPException {
-       var $httpcode = 415;
-}
-
-class ExpetationFailesException extends HTTPException {
-       var $httpcode = 417;
-}
-
-class ConflictException extends HTTPException {
-       var $httpcode = 409;
-}
-
-class UnprocessableEntityException extends HTTPException {
-       var $httpcode = 422;
-}
-
-class ImATeapotException extends HTTPException {
-       var $httpcode = 418;
-       var $httpdesc = "I'm A Teapot";
-}
-
-class BadRequestException extends HTTPException {
-       var $httpcode = 400;
-}
-
-// 5xx
-
-class ServiceUnavaiableException extends HTTPException {
-       var $httpcode = 503;
-}
-
-class BadGatewayException extends HTTPException {
-       var $httpcode = 502;
-}
-
-class GatewayTimeoutException extends HTTPException {
-       var $httpcode = 504;
-}
-
-class NotImplementedException extends HTTPException {
-       var $httpcode = 501;
-}
-
-class InternalServerErrorException extends HTTPException {
-       var $httpcode = 500;
-}
-
-
-
index 9f91139d1fc4fa293ab3937f9fe7a879f3f4cc73..a5e80638489572a3b9717bbfb7143944b221bc9e 100644 (file)
@@ -12,11 +12,19 @@ use Friendica\Core\Config;
 use Friendica\Core\NotificationsManager;
 use Friendica\Core\Worker;
 use Friendica\Database\DBM;
+use Friendica\Network\HTTPException;
+use Friendica\Network\HTTPException\BadRequestException;
+use Friendica\Network\HTTPException\ForbiddenException;
+use Friendica\Network\HTTPException\InternalServerErrorException;
+use Friendica\Network\HTTPException\MethodNotAllowedException;
+use Friendica\Network\HTTPException\NotFoundException;
+use Friendica\Network\HTTPException\NotImplementedException;
+use Friendica\Network\HTTPException\UnauthorizedException;
+use Friendica\Network\HTTPException\TooManyRequestsException;
 use Friendica\Object\Contact;
 use Friendica\Protocol\Diaspora;
 use Friendica\Util\XML;
 
-require_once 'include/HTTPExceptions.php';
 require_once 'include/bbcode.php';
 require_once 'include/datetime.php';
 require_once 'include/conversation.php';
@@ -3435,11 +3443,7 @@ function api_fr_photoalbum_delete($type)
        }
 
        // now let's delete all photos from the album
-       $result = q(
-               "DELETE FROM `photo` WHERE `uid` = %d AND `album` = '%s'",
-               intval(api_user()),
-               dbesc($album)
-       );
+       $result = dba::delete('photo', array('uid' => api_user(), 'album' => $album));
 
        // return success of deletion or error message
        if ($result) {
@@ -3722,11 +3726,7 @@ function api_fr_photo_delete($type)
                throw new BadRequestException("photo not available");
        }
        // now we can perform on the deletion of the photo
-       $result = q(
-               "DELETE FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s'",
-               intval(api_user()),
-               dbesc($photo_id)
-       );
+       $result = dba::delete('photo', array('uid' => api_user(), 'resource-id' => $photo_id));
 
        // return success of deletion or error message
        if ($result) {
@@ -4299,7 +4299,7 @@ function api_share_as_retweet(&$item)
 {
        $body = trim($item["body"]);
 
-       if (Diaspora::is_reshare($body, false)===false) {
+       if (Diaspora::isReshare($body, false)===false) {
                return false;
        }
 
@@ -4307,7 +4307,7 @@ function api_share_as_retweet(&$item)
        $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()
+               * we already checked this in diaspora::isReshare()
                * but better one more than one less...
                */
        if ($body == $attributes) {
index 83ea3fcfa61d9ef9500c87c4de90cf167efe305e..196c3ca3c1578e76bf3954ecf542aa53b6ec24b5 100644 (file)
@@ -52,7 +52,10 @@ function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
                $data["title"] = str_replace(array("http://", "https://"), "", $data["title"]);
        }
 
-       if (((strpos($data["text"], "[img=") !== false) || (strpos($data["text"], "[img]") !== false)) && ($data["image"] != "")) {
+       if (((strpos($data["text"], "[img=") !== false)
+               || (strpos($data["text"], "[img]") !== false)
+               || Config::get('system', 'always_show_preview'))
+               && ($data["image"] != "")) {
                $data["preview"] = $data["image"];
                $data["image"] = "";
        }
index 5e764e67069489dd31486ff9e2dc7ae42dd74a6f..c9571072209682f54d711fd8777bf4bb2a2ef8a2 100644 (file)
@@ -1536,8 +1536,8 @@ function conv_sort(array $item_list, $order)
         */
        foreach ($parents as $i => $parent) {
                $parents[$i]['children'] =
-                       get_item_children($item_array, $parent, $thread_allowed)
-                       + get_item_children($item_array, $parent, false);
+                       array_merge(get_item_children($item_array, $parent, $thread_allowed),
+                               get_item_children($item_array, $parent, false));
        }
 
        foreach ($parents as $i => $parent) {
index 79c15c85bdc599292c361a3932e89bfbadb020d9..684f53ea475ff6c942237b011f2c3e74ea665133 100644 (file)
@@ -713,6 +713,12 @@ class dba {
         * @return boolean was the insert successfull?
         */
        public static function insert($table, $param, $on_duplicate_update = false) {
+
+               if (empty($table) || empty($param)) {
+                       logger('Table and fields have to be set');
+                       return false;
+               }
+
                $sql = "INSERT INTO `".self::escape($table)."` (`".implode("`, `", array_keys($param))."`) VALUES (".
                        substr(str_repeat("?, ", count($param)), 0, -2).")";
 
@@ -852,6 +858,12 @@ class dba {
         * @return boolean|array was the delete successfull? When $in_process is set: deletion data
         */
        public static function delete($table, $param, $in_process = false, &$callstack = array()) {
+
+               if (empty($table) || empty($param)) {
+                       logger('Table and condition have to be set');
+                       return false;
+               }
+
                $commands = array();
 
                // Create a key for the loop prevention
@@ -1014,18 +1026,20 @@ class dba {
         * @return boolean was the update successfull?
         */
        public static function update($table, $fields, $condition, $old_fields = array()) {
+
+               if (empty($table) || empty($fields) || empty($condition)) {
+                       logger('Table, fields and condition have to be set');
+                       return false;
+               }
+
                $table = self::escape($table);
 
-               if (count($condition) > 0) {
-                       $array_element = each($condition);
-                       $array_key = $array_element['key'];
-                       if (is_int($array_key)) {
-                               $condition_string = " WHERE ".array_shift($condition);
-                       } else {
-                               $condition_string = " WHERE `".implode("` = ? AND `", array_keys($condition))."` = ?";
-                       }
+               $array_element = each($condition);
+               $array_key = $array_element['key'];
+               if (is_int($array_key)) {
+                       $condition_string = " WHERE ".array_shift($condition);
                } else {
-                       $condition_string = "";
+                       $condition_string = " WHERE `".implode("` = ? AND `", array_keys($condition))."` = ?";
                }
 
                if (is_bool($old_fields)) {
index 9a74551bcf9c3a84d0830e7800e27c3df3328c31..4ecc411b78f8ff1f577747aaf76cfc647ea0c834 100644 (file)
@@ -216,7 +216,7 @@ function event_delete($event_id) {
                return;
        }
 
-       q("DELETE FROM `event` WHERE `id` = %d", intval($event_id));
+       dba::delete('event', array('id' => $event_id));
        logger("Deleted event ".$event_id, LOGGER_DEBUG);
 }
 
index 340394ecea36f275860877378e9c01ed74593886..f199357315034b4b84b09d3b03a86cf03507a8d6 100644 (file)
@@ -14,13 +14,13 @@ use Friendica\Core\PConfig;
  * @return boolean
  */
 function feature_enabled($uid, $feature) {
-       $x = Config::get('feature_lock', $feature);
+       $x = Config::get('feature_lock', $feature, false);
 
-       if (is_null($x)) {
-               $x = PConfig::get($uid, 'feature', $feature);
-               if (is_null($x)) {
-                       $x = Config::get('feature', $feature);
-                       if (is_null($x)) {
+       if (!$x) {
+               $x = PConfig::get($uid, 'feature', $feature, false);
+               if (!$x) {
+                       $x = Config::get('feature', $feature, false);
+                       if (!$x) {
                                $x = get_feature_default($feature);
                        }
                }
@@ -67,53 +67,53 @@ function get_features($filtered = true) {
                'general' => array(
                        t('General Features'),
                        //array('expire',         t('Content Expiration'),              t('Remove old posts/comments after a period of time')),
-                       array('multi_profiles', t('Multiple Profiles'),                 t('Ability to create multiple profiles'), false, Config::get('feature_lock','multi_profiles')),
-                       array('photo_location', t('Photo Location'),                    t('Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map.'), false, Config::get('feature_lock','photo_location')),
-                       array('export_calendar', t('Export Public Calendar'),           t('Ability for visitors to download the public calendar'), false, Config::get('feature_lock','export_calendar')),
+                       array('multi_profiles', t('Multiple Profiles'),                 t('Ability to create multiple profiles'), false, Config::get('feature_lock','multi_profiles', false)),
+                       array('photo_location', t('Photo Location'),                    t('Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map.'), false, Config::get('feature_lock','photo_location', false)),
+                       array('export_calendar', t('Export Public Calendar'),           t('Ability for visitors to download the public calendar'), false, Config::get('feature_lock','export_calendar', false)),
                ),
 
                // Post composition
                'composition' => array(
                        t('Post Composition Features'),
-                       array('preview',        t('Post Preview'),                      t('Allow previewing posts and comments before publishing them'), false, Config::get('feature_lock','preview')),
-                       array('aclautomention', t('Auto-mention Forums'),               t('Add/remove mention when a forum page is selected/deselected in ACL window.'), false, Config::get('feature_lock','aclautomention')),
+                       array('preview',        t('Post Preview'),                      t('Allow previewing posts and comments before publishing them'), false, Config::get('feature_lock','preview', false)),
+                       array('aclautomention', t('Auto-mention Forums'),               t('Add/remove mention when a forum page is selected/deselected in ACL window.'), false, Config::get('feature_lock','aclautomention', false)),
                ),
 
                // Network sidebar widgets
                'widgets' => array(
                        t('Network Sidebar Widgets'),
-                       array('archives',       t('Search by Date'),                    t('Ability to select posts by date ranges'), false, Config::get('feature_lock','archives')),
-                       array('forumlist_widget', t('List Forums'),                     t('Enable widget to display the forums your are connected with'), true, Config::get('feature_lock','forumlist_widget')),
-                       array('groups',         t('Group Filter'),                      t('Enable widget to display Network posts only from selected group'), false, Config::get('feature_lock','groups')),
-                       array('networks',       t('Network Filter'),                    t('Enable widget to display Network posts only from selected network'), false, Config::get('feature_lock','networks')),
-                       array('savedsearch',    t('Saved Searches'),                    t('Save search terms for re-use'), false, Config::get('feature_lock','savedsearch')),
+                       array('archives',       t('Search by Date'),                    t('Ability to select posts by date ranges'), false, Config::get('feature_lock','archives', false)),
+                       array('forumlist_widget', t('List Forums'),                     t('Enable widget to display the forums your are connected with'), true, Config::get('feature_lock','forumlist_widget', false)),
+                       array('groups',         t('Group Filter'),                      t('Enable widget to display Network posts only from selected group'), false, Config::get('feature_lock','groups', false)),
+                       array('networks',       t('Network Filter'),                    t('Enable widget to display Network posts only from selected network'), false, Config::get('feature_lock','networks', false)),
+                       array('savedsearch',    t('Saved Searches'),                    t('Save search terms for re-use'), false, Config::get('feature_lock','savedsearch', false)),
                ),
 
                // Network tabs
                'net_tabs' => array(
                        t('Network Tabs'),
-                       array('personal_tab',   t('Network Personal Tab'),              t('Enable tab to display only Network posts that you\'ve interacted on'), false, Config::get('feature_lock','personal_tab')),
-                       array('new_tab',        t('Network New Tab'),                   t('Enable tab to display only new Network posts (from the last 12 hours)'), false, Config::get('feature_lock','new_tab')),
-                       array('link_tab',       t('Network Shared Links Tab'),          t('Enable tab to display only Network posts with links in them'), false, Config::get('feature_lock','link_tab')),
+                       array('personal_tab',   t('Network Personal Tab'),              t('Enable tab to display only Network posts that you\'ve interacted on'), false, Config::get('feature_lock','personal_tab', false)),
+                       array('new_tab',        t('Network New Tab'),                   t('Enable tab to display only new Network posts (from the last 12 hours)'), false, Config::get('feature_lock','new_tab', false)),
+                       array('link_tab',       t('Network Shared Links Tab'),          t('Enable tab to display only Network posts with links in them'), false, Config::get('feature_lock','link_tab', false)),
                ),
 
                // Item tools
                'tools' => array(
                        t('Post/Comment Tools'),
-                       array('multi_delete',   t('Multiple Deletion'),                 t('Select and delete multiple posts/comments at once'), false, Config::get('feature_lock','multi_delete')),
-                       array('edit_posts',     t('Edit Sent Posts'),                   t('Edit and correct posts and comments after sending'), false, Config::get('feature_lock','edit_posts')),
-                       array('commtag',        t('Tagging'),                           t('Ability to tag existing posts'), false, Config::get('feature_lock','commtag')),
-                       array('categories',     t('Post Categories'),                   t('Add categories to your posts'), false, Config::get('feature_lock','categories')),
-                       array('filing',         t('Saved Folders'),                     t('Ability to file posts under folders'), false, Config::get('feature_lock','filing')),
-                       array('dislike',        t('Dislike Posts'),                     t('Ability to dislike posts/comments'), false, Config::get('feature_lock','dislike')),
-                       array('star_posts',     t('Star Posts'),                        t('Ability to mark special posts with a star indicator'), false, Config::get('feature_lock','star_posts')),
-                       array('ignore_posts',   t('Mute Post Notifications'),           t('Ability to mute notifications for a thread'), false, Config::get('feature_lock','ignore_posts')),
+                       array('multi_delete',   t('Multiple Deletion'),                 t('Select and delete multiple posts/comments at once'), false, Config::get('feature_lock','multi_delete', false)),
+                       array('edit_posts',     t('Edit Sent Posts'),                   t('Edit and correct posts and comments after sending'), false, Config::get('feature_lock','edit_posts', false)),
+                       array('commtag',        t('Tagging'),                           t('Ability to tag existing posts'), false, Config::get('feature_lock','commtag', false)),
+                       array('categories',     t('Post Categories'),                   t('Add categories to your posts'), false, Config::get('feature_lock','categories', false)),
+                       array('filing',         t('Saved Folders'),                     t('Ability to file posts under folders'), false, Config::get('feature_lock','filing', false)),
+                       array('dislike',        t('Dislike Posts'),                     t('Ability to dislike posts/comments'), false, Config::get('feature_lock','dislike', false)),
+                       array('star_posts',     t('Star Posts'),                        t('Ability to mark special posts with a star indicator'), false, Config::get('feature_lock','star_posts', false)),
+                       array('ignore_posts',   t('Mute Post Notifications'),           t('Ability to mute notifications for a thread'), false, Config::get('feature_lock','ignore_posts', false)),
                ),
 
                // Advanced Profile Settings
                'advanced_profile' => array(
                        t('Advanced Profile Settings'),
-                       array('forumlist_profile', t('List Forums'),                    t('Show visitors public community forums at the Advanced Profile Page'), false, Config::get('feature_lock','forumlist_profile')),
+                       array('forumlist_profile', t('List Forums'),                    t('Show visitors public community forums at the Advanced Profile Page'), false, Config::get('feature_lock','forumlist_profile', false)),
                        array('tagadelic',      t('Tag Cloud'),                         t('Provide a personal tag cloud on your profile page'), false, Config::get('feature_lock', 'tagadelic')),
                ),
        );
@@ -126,7 +126,7 @@ function get_features($filtered = true) {
                        $kquantity = count($arr[$k]);
                        for ($y = 0; $y < $kquantity; $y ++) {
                                if (is_array($arr[$k][$y])) {
-                                       if (is_null($arr[$k][$y][4])) {
+                                       if (!$arr[$k][$y][4]) {
                                                $has_items = true;
                                        }
                                        else {
index 22deff535a2383dd47822296ccb7ee680f3c7d90..0be6a5781c361c5bb16e3a90ba9967a53fa579d0 100644 (file)
@@ -344,7 +344,7 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
                        $item["title"] = '';
                }
 
-               if ($contact["fetch_further_information"]) {
+               if (!empty($contact["fetch_further_information"]) && ($contact["fetch_further_information"] < 3)) {
                        $preview = "";
 
                        // Handle enclosures and treat them as preview picture
@@ -384,6 +384,9 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
                        if (!strstr($item["body"], '[url') && ($item['plink'] != '')) {
                                $item["body"] .= "[hr][url]".$item['plink']."[/url]";
                        }
+                       if ($contact["fetch_further_information"] == 3) {
+                               $item["tag"] = add_page_keywords($item["plink"], false, $preview, true, $contact["ffi_keyword_blacklist"]);
+                       }
                }
 
                if (!$simulate) {
index e2f81f12796f2c2aed1e32282e5ce384446afb3d..7e8b25d79755dbbad1afe346d6cf56d6701e3bf8 100644 (file)
@@ -272,7 +272,7 @@ function new_contact($uid, $url, $interactive = false, $network = '') {
                }
 
                if ($contact['network'] == NETWORK_DIASPORA) {
-                       $ret = Diaspora::send_share($a->user,$contact);
+                       $ret = Diaspora::sendShare($a->user, $contact);
                        logger('share returns: '.$ret);
                }
        }
index d3c3a817108d1c22a77b6a5a2ad9c5a92dcffb7b..6e7348c4e269e8416a1fc5124d01cf18fc3297b0 100644 (file)
@@ -79,10 +79,7 @@ function group_rmv($uid,$name) {
                }
 
                // remove all members
-               $r = q("DELETE FROM `group_member` WHERE `uid` = %d AND `gid` = %d ",
-                       intval($uid),
-                       intval($group_id)
-               );
+               dba::delete('group_member', array('uid' => $uid, 'pid' => $group_id));
 
                // remove group
                $r = q("UPDATE `group` SET `deleted` = 1 WHERE `uid` = %d AND `name` = '%s'",
@@ -109,20 +106,19 @@ function group_byname($uid,$name) {
        return false;
 }
 
-function group_rmv_member($uid,$name,$member) {
-       $gid = group_byname($uid,$name);
-       if (! $gid)
-               return false;
-       if (! ( $uid && $gid && $member))
+function group_rmv_member($uid, $name, $member) {
+       $gid = group_byname($uid, $name);
+
+       if (!$gid) {
                return false;
-       $r = q("DELETE FROM `group_member` WHERE `uid` = %d AND `gid` = %d AND `contact-id` = %d",
-               intval($uid),
-               intval($gid),
-               intval($member)
-       );
-       return $r;
+       }
 
+       if (!($uid && $gid && $member)) {
+               return false;
+       }
 
+       $r = dba::delete('group_member', array('uid' => $uid, 'gid' => $gid, 'contact-id' => $member));
+       return $r;
 }
 
 
index 1f5511217404d61b8f1d5b35e6ea05a0fd82e2a6..cffa127288de60037a16d7bd790d1797f59d3861 100644 (file)
@@ -207,7 +207,8 @@ function add_page_info_data($data) {
                $preview = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($data["images"][0]["src"], ENT_QUOTES, 'UTF-8', false));
                // if the preview picture is larger than 500 pixels then show it in a larger mode
                // But only, if the picture isn't higher than large (To prevent huge posts)
-               if (($data["images"][0]["width"] >= 500) && ($data["images"][0]["width"] >= $data["images"][0]["height"])) {
+               if (!Config::get('system', 'always_show_preview') && ($data["images"][0]["width"] >= 500)
+                       && ($data["images"][0]["width"] >= $data["images"][0]["height"])) {
                        $text .= " image='".$preview."'";
                } else {
                        $text .= " preview='".$preview."'";
@@ -426,7 +427,7 @@ function uri_to_guid($uri, $host = "") {
  * @return array Item array with removed conversation data
  */
 function store_conversation($arr) {
-       if (in_array($arr['network'], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) {
+       if (in_array($arr['network'], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)) && !empty($arr['uri'])) {
                $conversation = array('item-uri' => $arr['uri'], 'received' => DBM::date());
 
                if (isset($arr['parent-uri']) && ($arr['parent-uri'] != $arr['uri'])) {
@@ -2122,7 +2123,7 @@ function drop_item($id, $interactive = true) {
        }
 
 
-       if ((local_user() == $item['uid']) || ($contact_id) || (! $interactive)) {
+       if ((local_user() == $item['uid']) || $contact_id || !$interactive) {
 
                // Check if we should do HTML-based delete confirmation
                if ($_REQUEST['confirm']) {
@@ -2189,30 +2190,18 @@ function drop_item($id, $interactive = true) {
                 * 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']),
-                               intval($item['uid'])
-                       );
-                       // ignore the result
+                       dba::delete('photo', array('resource-id' => $item['resource-id'], 'uid' => $item['uid']));
                }
 
                // 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']),
-                               intval($item['uid'])
-                       );
-                       // ignore the result
+                       dba::delete('event', array('id' => $item['event-id'], 'uid' => $item['uid']));
                }
 
                // If item has attachments, drop them
                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]),
-                               local_user()
-                       );
-                       // ignore the result
+                       dba::delete('attach', array('id' => $matches[1], 'uid' => $item['uid']));
                }
 
                // The new code splits the queries since the mysql optimizer really has bad problems with subqueries
index e6f1aab6de11220ed185c91ed8703b718bcacf78..1dcadde705ef93e9885edf07a07af5509e75fa21 100644 (file)
@@ -163,9 +163,7 @@ function do_like($item_id, $verb) {
                // Clean up the Diaspora signatures for this like
                // Go ahead and do it even if Diaspora support is disabled. We still want to clean up
                // if it had been enabled in the past
-               q("DELETE FROM `sign` WHERE `iid` = %d",
-                       intval($like_item['id'])
-               );
+               dba::delete('sign', array('iid' => $like_item['id']));
 
                $like_item_id = $like_item['id'];
                Worker::add(PRIORITY_HIGH, "Notifier", "like", $like_item_id);
@@ -249,7 +247,7 @@ EOT;
        }
 
        // Save the author information for the like in case we need to relay to Diaspora
-       Diaspora::store_like_signature($item_contact, $new_item_id);
+       Diaspora::storeLikeSignature($item_contact, $new_item_id);
 
        $new_item['id'] = $new_item_id;
 
index bb122786851d3d83b3e45ed231353a273f43bc03..c6993d05b00354fdbdc61164007e38597343d8f8 100644 (file)
@@ -113,7 +113,7 @@ class FKOAuthDataStore extends OAuthDataStore {
        }
 
 
-       q("DELETE FROM tokens WHERE id='%s'", $token->key);
+       dba::delete('tokens', array('id' => $token->key));
 
 
        if (!is_null($ret) && $uverifier!==false){
index 74ce90dd1ae530eb36035d17acd10c3c5559cba5..b7c1616feeab0e1f2f550b2ac41081f37d9d759a 100755 (executable)
@@ -28,17 +28,17 @@ function oembed_replacecb($matches){
  * @return bool|object Returns object with embed content or false if no embedable
  *      content exists
  */
-function oembed_fetch_url($embedurl, $no_rich_type = false){
+function oembed_fetch_url($embedurl, $no_rich_type = false) {
        $embedurl = trim($embedurl, "'");
        $embedurl = trim($embedurl, '"');
 
        $a = get_app();
 
-       $r = q("SELECT * FROM `oembed` WHERE `url` = '%s'",
-               dbesc(normalise_link($embedurl)));
+       $condition = array('url' => normalise_link($embedurl));
+       $r = dba::select('oembed', array('content'), $condition, array('limit' => 1));
 
        if (DBM::is_result($r)) {
-               $txt = $r[0]["content"];
+               $txt = $r["content"];
        } else {
                $txt = Cache::get($a->videowidth . $embedurl);
        }
index 2814b246479bf67246adc2d9ab043ce16494b77c..276c36bd2181746d1c76ce5120e434a674ad8c19 100644 (file)
@@ -16,19 +16,16 @@ use Friendica\Database\DBM;
  * @param string $plugin name of the addon
  * @return boolean
  */
-if (! function_exists('uninstall_plugin')){
-function uninstall_plugin($plugin){
+function uninstall_plugin($plugin) {
        logger("Addons: uninstalling " . $plugin);
-       q("DELETE FROM `addon` WHERE `name` = '%s' ",
-               dbesc($plugin)
-       );
+       dba::delete('addon', array('name' => $plugin));
 
        @include_once('addon/' . $plugin . '/' . $plugin . '.php');
        if (function_exists($plugin . '_uninstall')) {
                $func = $plugin . '_uninstall';
                $func();
        }
-}}
+}
 
 /**
  * @brief installs an addon.
@@ -36,12 +33,12 @@ function uninstall_plugin($plugin){
  * @param string $plugin name of the addon
  * @return bool
  */
-if (! function_exists('install_plugin')){
 function install_plugin($plugin) {
        // silently fail if plugin was removed
 
-       if (! file_exists('addon/' . $plugin . '/' . $plugin . '.php'))
+       if (!file_exists('addon/' . $plugin . '/' . $plugin . '.php')) {
                return false;
+       }
        logger("Addons: installing " . $plugin);
        $t = @filemtime('addon/' . $plugin . '/' . $plugin . '.php');
        @include_once('addon/' . $plugin . '/' . $plugin . '.php');
@@ -62,26 +59,24 @@ function install_plugin($plugin) {
                        dba::update('addon', array('hidden' => true), array('name' => $plugin));
                }
                return true;
-       }
-       else {
+       } else {
                logger("Addons: FAILED installing " . $plugin);
                return false;
        }
-
-}}
+}
 
 // reload all updated plugins
 
-if (! function_exists('reload_plugins')) {
 function reload_plugins() {
-       $plugins = Config::get('system','addon');
+       $plugins = Config::get('system', 'addon');
        if (strlen($plugins)) {
 
                $r = q("SELECT * FROM `addon` WHERE `installed` = 1");
-               if (DBM::is_result($r))
+               if (DBM::is_result($r)) {
                        $installed = $r;
-               else
+               } else {
                        $installed = array();
+               }
 
                $parr = explode(',',$plugins);
 
@@ -115,7 +110,7 @@ function reload_plugins() {
                }
        }
 
-}}
+}
 
 /**
  * @brief check if addon is enabled
@@ -137,21 +132,17 @@ function plugin_enabled($plugin) {
  * @param int $priority A priority (defaults to 0)
  * @return mixed|bool
  */
-if (! function_exists('register_hook')) {
-function register_hook($hook,$file,$function,$priority=0) {
-
-       $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1",
-               dbesc($hook),
-               dbesc($file),
-               dbesc($function)
-       );
-       if (DBM::is_result($r))
+function register_hook($hook, $file, $function, $priority=0) {
+       $condition = array('hook' => $hook, 'file' => $file, 'function' => $function);
+       $exists = dba::exists('hook', $condition);
+       if ($exists) {
                return true;
+       }
 
        $r = dba::insert('hook', array('hook' => $hook, 'file' => $file, 'function' => $function, 'priority' => $priority));
 
        return $r;
-}}
+}
 
 /**
  * @brief unregisters a hook.
@@ -161,16 +152,11 @@ function register_hook($hook,$file,$function,$priority=0) {
  * @param string $function the name of the function that the hook called
  * @return array
  */
-if (! function_exists('unregister_hook')) {
-function unregister_hook($hook,$file,$function) {
-
-       $r = q("DELETE FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s'",
-               dbesc($hook),
-               dbesc($file),
-               dbesc($function)
-       );
+function unregister_hook($hook, $file, $function) {
+       $condition = array('hook' => $hook, 'file' => $file, 'function' => $function);
+       $r = dba::delete('hook', $condition);
        return $r;
-}}
+}
 
 
 function load_hooks() {
@@ -224,17 +210,13 @@ function call_single_hook($a, $name, $hook, &$data = null) {
                $func($a, $data);
        } else {
                // remove orphan hooks
-               q("DELETE FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s'",
-                       dbesc($name),
-                       dbesc($hook[0]),
-                       dbesc($hook[1])
-               );
+               $condition = array('hook' => $name, 'file' => $hook[0], 'function' => $hook[1]);
+               dba::delete('hook', $condition);
        }
 }
 
 //check if an app_menu hook exist for plugin $name.
 //Return true if the plugin is an app
-if (! function_exists('plugin_is_app')) {
 function plugin_is_app($name) {
        $a = get_app();
 
@@ -246,7 +228,7 @@ function plugin_is_app($name) {
        }
 
        return false;
-}}
+}
 
 /**
  * @brief Parse plugin comment in search of plugin infos.
@@ -264,8 +246,7 @@ function plugin_is_app($name) {
  * @return array with the plugin information
  */
 
-if (! function_exists('get_plugin_info')){
-function get_plugin_info($plugin){
+function get_plugin_info($plugin) {
 
        $a = get_app();
 
@@ -285,14 +266,14 @@ function get_plugin_info($plugin){
 
        $r = preg_match("|/\*.*\*/|msU", $f, $m);
 
-       if ($r){
+       if ($r) {
                $ll = explode("\n", $m[0]);
                foreach ( $ll as $l ) {
                        $l = trim($l,"\t\n\r */");
-                       if ($l!=""){
+                       if ($l != "") {
                                list($k,$v) = array_map("trim", explode(":",$l,2));
                                $k= strtolower($k);
-                               if ($k=="author"){
+                               if ($k == "author") {
                                        $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m);
                                        if ($r) {
                                                $info['author'][] = array('name'=>$m[1], 'link'=>$m[2]);
@@ -300,7 +281,7 @@ function get_plugin_info($plugin){
                                                $info['author'][] = array('name'=>$v);
                                        }
                                } else {
-                                       if (array_key_exists($k,$info)){
+                                       if (array_key_exists($k,$info)) {
                                                $info[$k]=$v;
                                        }
                                }
@@ -310,7 +291,7 @@ function get_plugin_info($plugin){
 
        }
        return $info;
-}}
+}
 
 
 /**
@@ -329,8 +310,7 @@ function get_plugin_info($plugin){
  * @return array
  */
 
-if (! function_exists('get_theme_info')){
-function get_theme_info($theme){
+function get_theme_info($theme) {
        $info=Array(
                'name' => $theme,
                'description' => "",
@@ -356,14 +336,14 @@ function get_theme_info($theme){
 
        $r = preg_match("|/\*.*\*/|msU", $f, $m);
 
-       if ($r){
+       if ($r) {
                $ll = explode("\n", $m[0]);
                foreach ( $ll as $l ) {
                        $l = trim($l,"\t\n\r */");
-                       if ($l!=""){
+                       if ($l != "") {
                                list($k,$v) = array_map("trim", explode(":",$l,2));
                                $k= strtolower($k);
-                               if ($k=="author"){
+                               if ($k == "author") {
 
                                        $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m);
                                        if ($r) {
@@ -371,8 +351,7 @@ function get_theme_info($theme){
                                        } else {
                                                $info['author'][] = array('name'=>$v);
                                        }
-                               }
-                               elseif ($k=="maintainer"){
+                               } elseif ($k == "maintainer") {
                                        $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m);
                                        if ($r) {
                                                $info['maintainer'][] = array('name'=>$m[1], 'link'=>$m[2]);
@@ -380,7 +359,7 @@ function get_theme_info($theme){
                                                $info['maintainer'][] = array('name'=>$v);
                                        }
                                } else {
-                                       if (array_key_exists($k,$info)){
+                                       if (array_key_exists($k,$info)) {
                                                $info[$k]=$v;
                                        }
                                }
@@ -390,7 +369,7 @@ function get_theme_info($theme){
 
        }
        return $info;
-}}
+}
 
 /**
  * @brief Returns the theme's screenshot.
@@ -411,8 +390,7 @@ function get_theme_screenshot($theme) {
 }
 
 // install and uninstall theme
-if (! function_exists('uninstall_theme')){
-function uninstall_theme($theme){
+function uninstall_theme($theme) {
        logger("Addons: uninstalling theme " . $theme);
 
        include_once("view/theme/$theme/theme.php");
@@ -420,9 +398,8 @@ function uninstall_theme($theme){
                $func = "{$theme}_uninstall";
                $func();
        }
-}}
+}
 
-if (! function_exists('install_theme')){
 function install_theme($theme) {
        // silently fail if theme was removed
 
@@ -443,7 +420,7 @@ function install_theme($theme) {
                return false;
        }
 
-}}
+}
 
 /**
  * @brief Get the full path to relevant theme files by filename
index e6fd14e07ca5dc1c7802c05bd52108bff764f4e1..c4ab229aee3cd10444b1de60431c807721381224 100644 (file)
@@ -13,9 +13,7 @@ function update_queue_time($id) {
 
 function remove_queue_item($id) {
        logger('queue: remove queue item ' . $id);
-       q("DELETE FROM `queue` WHERE `id` = %d",
-               intval($id)
-       );
+       dba::delete('queue', array('id' => $id));
 }
 
 /**
index 107f2f76b13e3a79d0b12ce31cf7d7c695bc755d..00848ccc6e328e55a6c28c82719f9f8e56688f35 100644 (file)
@@ -251,7 +251,7 @@ function delete_thread($itemid, $itemuri = "") {
        }
 
        // Using dba::delete at this time could delete the associated item entries
-       $result = q("DELETE FROM `thread` WHERE `iid` = %d", intval($itemid));
+       $result = dba::e("DELETE FROM `thread` WHERE `iid` = ?", $itemid);
 
        logger("delete_thread: Deleted thread for item ".$itemid." - ".print_r($result, true), LOGGER_DEBUG);
 
index 1859c2aa60fa4659452b3f3711192dd69e41455a..8889e65131747e21cd66c28bae3e4933a5e5baf5 100644 (file)
@@ -576,8 +576,14 @@ function contacts_content(App $a) {
                $lost_contact = (($contact['archive'] && $contact['term-date'] > NULL_DATE && $contact['term-date'] < datetime_convert('','','now')) ? t('Communications lost with this contact!') : '');
 
                if ($contact['network'] == NETWORK_FEED) {
-                       $fetch_further_information = array('fetch_further_information', t('Fetch further information for feeds'), $contact['fetch_further_information'], t('Fetch further information for feeds'),
-                                                                       array('0'=>t('Disabled'), '1'=>t('Fetch information'), '2'=>t('Fetch information and keywords')));
+                       $fetch_further_information = array('fetch_further_information',
+                                                       t('Fetch further information for feeds'),
+                                                       $contact['fetch_further_information'],
+                                                       t("Fetch information like preview pictures, title and teaser from the feed item. You can activate this if the feed doesn't contain much text. Keywords are taken from the meta header in the feed item and are posted as hash tags."),
+                                                               array('0' => t('Disabled'),
+                                                                       '1' => t('Fetch information'),
+                                                                       '3' => t('Fetch keywords'),
+                                                                       '2' => t('Fetch information and keywords')));
                }
                if (in_array($contact['network'], array(NETWORK_FEED, NETWORK_MAIL, NETWORK_MAIL2)))
                        $poll_interval = contact_poll_interval($contact['priority'],(! $poll_enabled));
index 8484ace2cf6f376509ddb8c88f1befe4371e4de9..47871debdb1da9820a9b740f7eb6c18c3af9af79 100644 (file)
@@ -440,7 +440,7 @@ function dfrn_confirm_post(App $a, $handsfree = null) {
                if ((isset($new_relation) && $new_relation == CONTACT_IS_FRIEND)) {
 
                        if (($contact) && ($contact['network'] === NETWORK_DIASPORA)) {
-                               $ret = Diaspora::send_share($user[0],$r[0]);
+                               $ret = Diaspora::sendShare($user[0],$r[0]);
                                logger('share returns: ' . $ret);
                        }
 
index 8e2b18e4963f14bbd131abf8a0983d1f5df69573..61be7966e06b95a036a59bab13d318a08edbb1b1 100644 (file)
@@ -175,7 +175,7 @@ function dfrn_notify_post(App $a) {
                                 *we got a key. old code send only the key, without RINO version.
                                 * we assume RINO 1 if key and no RINO version
                                 */
-                               $data = DFRN::aes_decrypt(hex2bin($data), $final_key);
+                               $data = DFRN::aesDecrypt(hex2bin($data), $final_key);
                                break;
                        case 2:
                                try {
index 8685504fffb22f64770a272f33f52ba35c1c4f97..68f6acc917196a4c3ce16c942063309a6a92c3d2 100644 (file)
@@ -68,12 +68,12 @@ function fetch_init(App $a)
        }
        $user = $r[0];
 
-       $status = Diaspora::build_status($item[0], $user);
-       $xml = Diaspora::build_post_xml($status["type"], $status["message"]);
+       $status = Diaspora::buildStatus($item[0], $user);
+       $xml = Diaspora::buildPostXml($status["type"], $status["message"]);
 
        // Send the envelope
        header("Content-Type: application/magic-envelope+xml; charset=utf-8");
-       echo Diaspora::build_magic_envelope($xml, $user);
+       echo Diaspora::buildMagicEnvelope($xml, $user);
 
        killme();
 }
index 97c26b5f9bad7807474a2bbde97d7de9a05fea9a..4aafa22995667e083bb1f92abd4628280ad26865 100644 (file)
@@ -985,7 +985,7 @@ function item_post(App $a) {
 
 
                // Store the comment signature information in case we need to relay to Diaspora
-               Diaspora::store_comment_signature($datarray, $author, ($self ? $user['prvkey'] : false), $post_id);
+               Diaspora::storeCommentSignature($datarray, $author, ($self ? $user['prvkey'] : false), $post_id);
 
        } else {
                $parent = $post_id;
index 9c1c2b71de90ee54451e7766498502e33ed8a994..f44c32b33523b9ca51dc824f8281b77368407c78 100644 (file)
--- a/mod/p.php
+++ b/mod/p.php
@@ -58,8 +58,8 @@ function p_init($a){
        }
        $user = $r[0];
 
-       $status = Diaspora::build_status($item[0], $user);
-       $xml = Diaspora::build_post_xml($status["type"], $status["message"]);
+       $status = Diaspora::buildStatus($item[0], $user);
+       $xml = Diaspora::buildPostXml($status["type"], $status["message"]);
 
        header("Content-Type: application/xml; charset=utf-8");
        echo $xml;
index a1cb5f48fa87afd15eeefdf646decab85bef5840..8241325bf99398941f8227da1725fda6778836a5 100644 (file)
@@ -49,14 +49,14 @@ function receive_post(App $a) {
                }
 
                logger('mod-diaspora: message is in the new format', LOGGER_DEBUG);
-               $msg = Diaspora::decode_raw($importer, $postdata);
+               $msg = Diaspora::decodeRaw($importer, $postdata);
        } else {
                logger('mod-diaspora: decode message in the old format', LOGGER_DEBUG);
                $msg = Diaspora::decode($importer, $xml);
 
                if ($public && !$msg) {
                        logger('mod-diaspora: decode message in the new format', LOGGER_DEBUG);
-                       $msg = Diaspora::decode_raw($importer, $xml);
+                       $msg = Diaspora::decodeRaw($importer, $xml);
                }
        }
 
@@ -72,7 +72,7 @@ function receive_post(App $a) {
 
        $ret = true;
        if ($public) {
-               Diaspora::dispatch_public($msg);
+               Diaspora::dispatchPublic($msg);
        } else {
                $ret = Diaspora::dispatch($importer, $msg);
        }
index 9ad79004d59338ce1422571009aeb6bc29ebef8d..5c516f3987ef75bf7173fe0cfe1d86eec2f16101 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/php
+#!/usr/bin/env php
 <?php
 /*
  * ejabberd extauth script for the integration with friendica
  *
  * Installation:
  *
- *     - Change it's owner to whichever user is running the server, ie. ejabberd
- *       $ chown ejabberd:ejabberd /path/to/friendica/scripts/auth_ejabberd.php
+ *     - Change it's owner to whichever user is running the server, ie. ejabberd
+ *       $ chown ejabberd:ejabberd /path/to/friendica/scripts/auth_ejabberd.php
  *
  *     - Change the access mode so it is readable only to the user ejabberd and has exec
- *       $ chmod 700 /path/to/friendica/scripts/auth_ejabberd.php
+ *       $ chmod 700 /path/to/friendica/scripts/auth_ejabberd.php
  *
- *     - Edit your ejabberd.cfg file, comment out your auth_method and add:
- *       {auth_method, external}.
- *       {extauth_program, "/path/to/friendica/script/auth_ejabberd.php"}.
+ *     - Edit your ejabberd.cfg file, comment out your auth_method and add:
+ *       {auth_method, external}.
+ *       {extauth_program, "/path/to/friendica/script/auth_ejabberd.php"}.
  *
- *     - Restart your ejabberd service, you should be able to login with your friendica auth info
+ *     - Restart your ejabberd service, you should be able to login with your friendica auth info
  *
  * Other hints:
- *     - if your users have a space or a @ in their nickname, they'll run into trouble
- *       registering with any client so they should be instructed to replace these chars
- *       " " (space) is replaced with "%20"
- *       "@" is replaced with "(a)"
+ *     - if your users have a space or a @ in their nickname, they'll run into trouble
+ *       registering with any client so they should be instructed to replace these chars
+ *       " " (space) is replaced with "%20"
+ *       "@" is replaced with "(a)"
  *
  */
 
 use Friendica\App;
-use Friendica\Core\Config;
-use Friendica\Database\DBM;
+use Friendica\Util\ExAuth;
 
-if (sizeof($_SERVER["argv"]) == 0)
+if (sizeof($_SERVER["argv"]) == 0) {
        die();
+}
 
 $directory = dirname($_SERVER["argv"][0]);
 
-if (substr($directory, 0, 1) != "/")
-       $directory = $_SERVER["PWD"]."/".$directory;
+if (substr($directory, 0, 1) != DIRECTORY_SEPARATOR) {
+       $directory = $_SERVER["PWD"] . DIRECTORY_SEPARATOR . $directory;
+}
 
-$directory = realpath($directory."/..");
+$directory = realpath($directory . DIRECTORY_SEPARATOR . "..");
 
 chdir($directory);
 
@@ -53,259 +54,10 @@ require_once "include/dba.php";
 
 $a = new App(dirname(__DIR__));
 
-@include(".htconfig.php");
+@include ".htconfig.php";
 dba::connect($db_host, $db_user, $db_pass, $db_data);
 unset($db_host, $db_user, $db_pass, $db_data);
 
-$oAuth = new exAuth();
-
-class exAuth {
-       private $bDebug;
-
-       /**
-        * @brief Create the class and do the authentification studd
-        *
-        * @param boolean $bDebug Debug mode
-        */
-       public function __construct() {
-               // setter
-               $this->bDebug = (int)Config::get('jabber', 'debug');
-
-
-               openlog('auth_ejabberd', LOG_PID, LOG_USER);
-
-               $this->writeLog(LOG_NOTICE, "start");
-
-               // We are connected to the SQL server.
-               while (!feof(STDIN)) {
-                       // Quit if the database connection went down
-                       if (!dba::connected()) {
-                               $this->writeLog(LOG_ERR, "the database connection went down");
-                               return;
-                       }
-
-                       $iHeader = fgets(STDIN, 3);
-                       $aLength = unpack("n", $iHeader);
-                       $iLength = $aLength["1"];
-
-                       // No data? Then quit
-                       if ($iLength == 0) {
-                               $this->writeLog(LOG_ERR, "we got no data, quitting");
-                               return;
-                       }
-
-                       // Fetching the data
-                       $sData = fgets(STDIN, $iLength + 1);
-                       $this->writeLog(LOG_DEBUG, "received data: ". $sData);
-                       $aCommand = explode(":", $sData);
-                       if (is_array($aCommand)) {
-                               switch ($aCommand[0]) {
-                                       case "isuser":
-                                               // Check the existance of a given username
-                                               $this->isuser($aCommand);
-                                               break;
-                                       case "auth":
-                                               // Check if the givven password is correct
-                                               $this->auth($aCommand);
-                                               break;
-                                       case "setpass":
-                                               // We don't accept the setting of passwords here
-                                               $this->writeLog(LOG_NOTICE, "setpass command disabled");
-                                               fwrite(STDOUT, pack("nn", 2, 0));
-                                               break;
-                                       default:
-                                               // We don't know the given command
-                                               $this->writeLog(LOG_NOTICE, "unknown command ". $aCommand[0]);
-                                               fwrite(STDOUT, pack("nn", 2, 0));
-                                               break;
-                               }
-                       } else {
-                               $this->writeLog(LOG_NOTICE, "invalid command string ".$sData);
-                               fwrite(STDOUT, pack("nn", 2, 0));
-                       }
-               }
-       }
-
-       /**
-        * @brief Check if the given username exists
-        *
-        * @param array $aCommand The command array
-        */
-       private function isuser($aCommand) {
-               $a = get_app();
-
-               // Check if there is a username
-               if (!isset($aCommand[1])) {
-                       $this->writeLog(LOG_NOTICE, "invalid isuser command, no username given");
-                       fwrite(STDOUT, pack("nn", 2, 0));
-                       return;
-               }
-
-               // Now we check if the given user is valid
-               $sUser = str_replace(array("%20", "(a)"), array(" ", "@"), $aCommand[1]);
-
-               // Does the hostname match? So we try directly
-               if ($a->get_hostname() == $aCommand[2]) {
-                       $this->writeLog(LOG_INFO, "internal user check for ". $sUser."@".$aCommand[2]);
-                       $sQuery = "SELECT `uid` FROM `user` WHERE `nickname`='".dbesc($sUser)."'";
-                       $this->writeLog(LOG_DEBUG, "using query ". $sQuery);
-                       $r = q($sQuery);
-                       $found = DBM::is_result($r);
-               } else {
-                       $found = false;
-               }
-
-               // If the hostnames doesn't match or there is some failure, we try to check remotely
-               if (!$found) {
-                       $found = $this->check_user($aCommand[2], $aCommand[1], true);
-               }
-
-               if ($found) {
-                       // The user is okay
-                       $this->writeLog(LOG_NOTICE, "valid user: ". $sUser);
-                       fwrite(STDOUT, pack("nn", 2, 1));
-               } else {
-                       // The user isn't okay
-                       $this->writeLog(LOG_WARNING, "invalid user: ". $sUser);
-                       fwrite(STDOUT, pack("nn", 2, 0));
-               }
-       }
-
-       /**
-        * @brief Check remote user existance via HTTP(S)
-        *
-        * @param string $host The hostname
-        * @param string $user Username
-        * @param boolean $ssl Should the check be done via SSL?
-        *
-        * @return boolean Was the user found?
-        */
-       private function check_user($host, $user, $ssl) {
-
-               $this->writeLog(LOG_INFO, "external user check for ".$user."@".$host);
-
-               $url = ($ssl ? "https":"http")."://".$host."/noscrape/".$user;
+$oAuth = new ExAuth();
 
-               $data = z_fetch_url($url);
-
-               if (!is_array($data))
-                       return(false);
-
-               if ($data["return_code"] != "200")
-                       return(false);
-
-               $json = @json_decode($data["body"]);
-               if (!is_object($json))
-                       return(false);
-
-               return($json->nick == $user);
-       }
-
-       /**
-        * @brief Authenticate the givven user and password
-        *
-        * @param array $aCommand The command array
-        */
-       private function auth($aCommand) {
-               $a = get_app();
-
-               // check user authentication
-               if (sizeof($aCommand) != 4) {
-                       $this->writeLog(LOG_NOTICE, "invalid auth command, data missing");
-                       fwrite(STDOUT, pack("nn", 2, 0));
-                       return;
-               }
-
-               // We now check if the password match
-               $sUser = str_replace(array("%20", "(a)"), array(" ", "@"), $aCommand[1]);
-
-               // Does the hostname match? So we try directly
-               if ($a->get_hostname() == $aCommand[2]) {
-                       $this->writeLog(LOG_INFO, "internal auth for ".$sUser."@".$aCommand[2]);
-
-                       $sQuery = "SELECT `uid`, `password` FROM `user` WHERE `nickname`='".dbesc($sUser)."'";
-                       $this->writeLog(LOG_DEBUG, "using query ". $sQuery);
-                       if ($oResult = q($sQuery)) {
-                               $uid = $oResult[0]["uid"];
-                               $Error = ($oResult[0]["password"] != hash('whirlpool',$aCommand[3]));
-                       } else {
-                               $this->writeLog(LOG_WARNING, "invalid query: ". $sQuery);
-                               $Error = true;
-                               $uid = -1;
-                       }
-                       if ($Error) {
-                               $oConfig = q("SELECT `v` FROM `pconfig` WHERE `uid` = %d AND `cat` = 'xmpp' AND `k`='password' LIMIT 1;", intval($uid));
-                               $this->writeLog(LOG_INFO, "check against alternate password for ".$sUser."@".$aCommand[2]);
-                               $Error = ($aCommand[3] != $oConfig[0]["v"]);
-                       }
-               } else {
-                       $Error = true;
-               }
-
-               // If the hostnames doesn't match or there is some failure, we try to check remotely
-               if ($Error) {
-                       $Error = !$this->check_credentials($aCommand[2], $aCommand[1], $aCommand[3], true);
-               }
-
-               if ($Error) {
-                       $this->writeLog(LOG_WARNING, "authentification failed for user ".$sUser."@". $aCommand[2]);
-                       fwrite(STDOUT, pack("nn", 2, 0));
-               } else {
-                       $this->writeLog(LOG_NOTICE, "authentificated user ".$sUser."@".$aCommand[2]);
-                       fwrite(STDOUT, pack("nn", 2, 1));
-               }
-       }
-
-       /**
-        * @brief Check remote credentials via HTTP(S)
-        *
-        * @param string $host The hostname
-        * @param string $user Username
-        * @param string $password Password
-        * @param boolean $ssl Should the check be done via SSL?
-        *
-        * @return boolean Are the credentials okay?
-        */
-       private function check_credentials($host, $user, $password, $ssl) {
-               $url = ($ssl ? "https":"http")."://".$host."/api/account/verify_credentials.json";
-
-               $ch = curl_init();
-               curl_setopt($ch, CURLOPT_URL, $url);
-               curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-               curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
-               curl_setopt($ch, CURLOPT_HEADER, true);
-               curl_setopt($ch, CURLOPT_NOBODY, true);
-               curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
-               curl_setopt($ch, CURLOPT_USERPWD, $user.':'.$password);
-
-               $header = curl_exec($ch);
-               $curl_info = @curl_getinfo($ch);
-               $http_code = $curl_info["http_code"];
-               curl_close($ch);
-
-               $this->writeLog(LOG_INFO, "external auth for ".$user."@".$host." returned ".$http_code);
-
-               return ($http_code == 200);
-       }
-
-       /**
-        * @brief write data to the syslog
-        *
-        * @param integer $loglevel The syslog loglevel
-        * @param string $sMessage The syslog message
-        */
-       private function writeLog($loglevel, $sMessage) {
-               if (!$this->bDebug && ($loglevel >= LOG_DEBUG)) {
-                       return;
-               }
-               syslog($loglevel, $sMessage);
-       }
-
-       /**
-        * @brief destroy the class, close the syslog connection.
-        */
-       public function __destruct() {
-               $this->writeLog(LOG_NOTICE, "stop");
-               closelog();
-       }
-}
+$oAuth->readStdin();
index 1bb35e1dc2d1c773a998c3f9bb85f811f1877e6a..ab64d7a3f456fe2c41407ee4d39203431106eff2 100644 (file)
@@ -722,7 +722,7 @@ class App {
                if (DBM::is_result($r)) {
                        foreach ($r AS $process) {
                                if (!posix_kill($process['pid'], 0)) {
-                                       q('DELETE FROM `process` WHERE `pid` = %d', intval($process['pid']));
+                                       dba::delete('process', array('pid' => $process['pid']));
                                }
                        }
                }
@@ -733,7 +733,7 @@ class App {
         * @brief Remove the active process from the "process" table
         */
        function end_process() {
-               q('DELETE FROM `process` WHERE `pid` = %d', intval(getmypid()));
+               dba::delete('process', array('pid' => getmypid()));
        }
 
        function get_useragent() {
diff --git a/src/Network/HTTPException.php b/src/Network/HTTPException.php
new file mode 100644 (file)
index 0000000..7602290
--- /dev/null
@@ -0,0 +1,27 @@
+<?php\r
+\r
+/**\r
+ * Throwable exceptions to return HTTP status code\r
+ *\r
+ * This list of Exception has be extracted from\r
+ * here http://racksburg.com/choosing-an-http-status-code/\r
+ */\r
+\r
+namespace Friendica\Network;\r
+\r
+use Exception;\r
+\r
+class HTTPException extends Exception\r
+{\r
+       var $httpcode = 200;\r
+       var $httpdesc = "";\r
+\r
+       public function __construct($message = '', $code = 0, Exception $previous = null)\r
+       {\r
+               if ($this->httpdesc == '') {\r
+                       $classname = str_replace('Exception', '', str_replace('Friendica\Network\HTTPException\\', '', get_class($this)));\r
+                       $this->httpdesc = preg_replace("|([a-z])([A-Z])|",'$1 $2', $classname);\r
+               }\r
+               parent::__construct($message, $code, $previous);\r
+       }\r
+}\r
diff --git a/src/Network/HTTPException/BadGatewayException.php b/src/Network/HTTPException/BadGatewayException.php
new file mode 100644 (file)
index 0000000..1bb8b29
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class BadGatewayException extends HTTPException\r
+{\r
+       var $httpcode = 502;\r
+}\r
diff --git a/src/Network/HTTPException/BadRequestException.php b/src/Network/HTTPException/BadRequestException.php
new file mode 100644 (file)
index 0000000..23e59b3
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class BadRequestException extends HTTPException\r
+{\r
+       var $httpcode = 400;\r
+}\r
diff --git a/src/Network/HTTPException/ConflictException.php b/src/Network/HTTPException/ConflictException.php
new file mode 100644 (file)
index 0000000..b1aef72
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class ConflictException extends HTTPException\r
+{\r
+       var $httpcode = 409;\r
+}\r
diff --git a/src/Network/HTTPException/ExpectationFailedException.php b/src/Network/HTTPException/ExpectationFailedException.php
new file mode 100644 (file)
index 0000000..2b7b1fe
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class ExpectationFailedException extends HTTPException\r
+{\r
+       var $httpcode = 417;\r
+}\r
diff --git a/src/Network/HTTPException/ForbiddenException.php b/src/Network/HTTPException/ForbiddenException.php
new file mode 100644 (file)
index 0000000..75622c4
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class ForbiddenException extends HTTPException\r
+{\r
+       var $httpcode = 403;\r
+}
\ No newline at end of file
diff --git a/src/Network/HTTPException/GatewayTimeoutException.php b/src/Network/HTTPException/GatewayTimeoutException.php
new file mode 100644 (file)
index 0000000..306fbd4
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class GatewayTimeoutException extends HTTPException\r
+{\r
+       var $httpcode = 504;\r
+}\r
diff --git a/src/Network/HTTPException/GoneException.php b/src/Network/HTTPException/GoneException.php
new file mode 100644 (file)
index 0000000..ea844b0
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class GoneException extends HTTPException\r
+{\r
+       var $httpcode = 410;\r
+}\r
diff --git a/src/Network/HTTPException/ImATeapotException.php b/src/Network/HTTPException/ImATeapotException.php
new file mode 100644 (file)
index 0000000..fccf632
--- /dev/null
@@ -0,0 +1,11 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class ImATeapotException extends HTTPException\r
+{\r
+       var $httpcode = 418;\r
+       var $httpdesc = "I'm A Teapot";\r
+}\r
diff --git a/src/Network/HTTPException/InternalServerErrorException.php b/src/Network/HTTPException/InternalServerErrorException.php
new file mode 100644 (file)
index 0000000..09c9694
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class InternalServerErrorException extends HTTPException\r
+{\r
+       var $httpcode = 500;\r
+}\r
diff --git a/src/Network/HTTPException/LenghtRequiredException.php b/src/Network/HTTPException/LenghtRequiredException.php
new file mode 100644 (file)
index 0000000..dd952b0
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class LenghtRequiredException extends HTTPException\r
+{\r
+       var $httpcode = 411;\r
+}\r
diff --git a/src/Network/HTTPException/MethodNotAllowedException.php b/src/Network/HTTPException/MethodNotAllowedException.php
new file mode 100644 (file)
index 0000000..8dce414
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class MethodNotAllowedException extends HTTPException\r
+{\r
+       var $httpcode = 405;\r
+}\r
diff --git a/src/Network/HTTPException/NonAcceptableException.php b/src/Network/HTTPException/NonAcceptableException.php
new file mode 100644 (file)
index 0000000..8705a13
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class NonAcceptableException extends HTTPException\r
+{\r
+       var $httpcode = 406;\r
+}\r
diff --git a/src/Network/HTTPException/NotFoundException.php b/src/Network/HTTPException/NotFoundException.php
new file mode 100644 (file)
index 0000000..bd4f615
--- /dev/null
@@ -0,0 +1,9 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class NotFoundException extends HTTPException {\r
+       var $httpcode = 404;\r
+}\r
diff --git a/src/Network/HTTPException/NotImplementedException.php b/src/Network/HTTPException/NotImplementedException.php
new file mode 100644 (file)
index 0000000..74bc8ad
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class NotImplementedException extends HTTPException\r
+{\r
+       var $httpcode = 501;\r
+}\r
diff --git a/src/Network/HTTPException/PreconditionFailedException.php b/src/Network/HTTPException/PreconditionFailedException.php
new file mode 100644 (file)
index 0000000..b0f4e71
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class PreconditionFailedException extends HTTPException\r
+{\r
+       var $httpcode = 412;\r
+}\r
diff --git a/src/Network/HTTPException/ServiceUnavaiableException.php b/src/Network/HTTPException/ServiceUnavaiableException.php
new file mode 100644 (file)
index 0000000..0dd2125
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class ServiceUnavaiableException extends HTTPException\r
+{\r
+       var $httpcode = 503;\r
+}\r
diff --git a/src/Network/HTTPException/TooManyRequestsException.php b/src/Network/HTTPException/TooManyRequestsException.php
new file mode 100644 (file)
index 0000000..c21b223
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class TooManyRequestsException extends HTTPException\r
+{\r
+       var $httpcode = 429;\r
+}\r
diff --git a/src/Network/HTTPException/UnauthorizedException.php b/src/Network/HTTPException/UnauthorizedException.php
new file mode 100644 (file)
index 0000000..79e6114
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class UnauthorizedException extends HTTPException\r
+{\r
+       var $httpcode = 401;\r
+}\r
diff --git a/src/Network/HTTPException/UnprocessableEntityException.php b/src/Network/HTTPException/UnprocessableEntityException.php
new file mode 100644 (file)
index 0000000..9d92778
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class UnprocessableEntityException extends HTTPException\r
+{\r
+       var $httpcode = 422;\r
+}\r
diff --git a/src/Network/HTTPException/UnsupportedMediaTypeException.php b/src/Network/HTTPException/UnsupportedMediaTypeException.php
new file mode 100644 (file)
index 0000000..e730493
--- /dev/null
@@ -0,0 +1,10 @@
+<?php\r
+\r
+namespace Friendica\Network\HTTPException;\r
+\r
+use Friendica\Network\HTTPException;\r
+\r
+class UnsupportedMediaTypeException extends HTTPException\r
+{\r
+       var $httpcode = 415;\r
+}\r
index 876083971cbe630bc3d6873c8e19a4d75a6c0fc4..d7e78536218052af874c01bdeac99e4b5b7bea46 100644 (file)
@@ -21,29 +21,29 @@ use dba;
 require_once 'boot.php';
 require_once 'include/text.php';
 
+/**
+ * @brief functions for interacting with a contact
+ */
 class Contact extends BaseObject
 {
        /**
         * @brief Marks a contact for removal
         *
-        * @param int $id
+        * @param int $id contact id
         * @return null
         */
        public static function remove($id)
        {
                // We want just to make sure that we don't delete our "self" contact
-               $r = q(
-                       "SELECT `uid` FROM `contact` WHERE `id` = %d AND NOT `self` LIMIT 1", intval($id)
-               );
-               if (!DBM::is_result($r) || !intval($r[0]['uid'])) {
+               $r = dba::select('contact', array('uid'), array('id' => $id, 'self' => false), array('limit' => 1));
+
+               if (!DBM::is_result($r) || !intval($r['uid'])) {
                        return;
                }
 
-               $archive = PConfig::get($r[0]['uid'], 'system', 'archive_removed_contacts');
+               $archive = PConfig::get($r['uid'], 'system', 'archive_removed_contacts');
                if ($archive) {
-                       q(
-                               "UPDATE `contact` SET `archive` = 1, `network` = 'none', `writable` = 0 WHERE id = %d", intval($id)
-                       );
+                       dba::update('contact', array('archive' => true, 'network' => 'none', 'writable' => false), array('id' => $id));
                        return;
                }
 
@@ -56,8 +56,9 @@ class Contact extends BaseObject
        /**
         * @brief Sends an unfriend message. Does not remove the contact
         *
-        * @param array $user User unfriending
+        * @param array $user    User unfriending
         * @param array $contact Contact unfriended
+        * @return void
         */
        public static function terminateFriendship(array $user, array $contact)
        {
@@ -88,7 +89,7 @@ class Contact extends BaseObject
         * This provides for the possibility that their database is temporarily messed
         * up or some other transient event and that there's a possibility we could recover from it.
         *
-        * @param array $contact
+        * @param array $contact contact to mark for archival
         * @return type
         */
        public static function markForArchival(array $contact)
@@ -99,18 +100,12 @@ class Contact extends BaseObject
                }
 
                if ($contact['term-date'] <= NULL_DATE) {
-                       q(
-                               "UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d", dbesc(datetime_convert()), intval($contact['id'])
-                       );
+                       dba::update('contact', array('term-date' => datetime_convert()), array('id' => $contact['id']));
 
                        if ($contact['url'] != '') {
-                               q(
-                                       "UPDATE `contact` SET `term-date` = '%s'
-                               WHERE `nurl` = '%s' AND `term-date` <= '1000-00-00'", dbesc(datetime_convert()), dbesc(normalise_link($contact['url']))
-                               );
+                               dba::update('contact', array('term-date' => datetime_convert()), array('`nurl` = ? AND `term-date` <= ?', normalise_link($contact['url']), NULL_DATE));
                        }
                } else {
-
                        /* @todo
                         * We really should send a notification to the owner after 2-3 weeks
                         * so they won't be surprised when the contact vanishes and can take
@@ -120,19 +115,14 @@ class Contact extends BaseObject
                        /// @todo Check for contact vitality via probing
                        $expiry = $contact['term-date'] . ' + 32 days ';
                        if (datetime_convert() > datetime_convert('UTC', 'UTC', $expiry)) {
-
                                /* Relationship is really truly dead. archive them rather than
                                 * delete, though if the owner tries to unarchive them we'll start
                                 * the whole process over again.
                                 */
-                               q(
-                                       "UPDATE `contact` SET `archive` = 1 WHERE `id` = %d", intval($contact['id'])
-                               );
+                               dba::update('contact', array('archive' => 1), array('id' => $contact['id']));
 
                                if ($contact['url'] != '') {
-                                       q(
-                                               "UPDATE `contact` SET `archive` = 1 WHERE `nurl` = '%s'", dbesc(normalise_link($contact['url']))
-                                       );
+                                       dba::update('contact', array('archive' => 1), array('nurl' => normalise_link($contact['url'])));
                                }
                        }
                }
@@ -143,17 +133,16 @@ class Contact extends BaseObject
         *
         * @see Contact::markForArchival()
         *
-        * @param array $contact
+        * @param array $contact contact to be unmarked for archival
         * @return null
         */
        public static function unmarkForArchival(array $contact)
        {
-               $r = q(
-                       "SELECT `term-date` FROM `contact` WHERE `id` = %d AND (`term-date` > '%s' OR `archive`)", intval($contact['id']), dbesc('1000-00-00 00:00:00')
-               );
+               $condition = array('`id` = ? AND (`term-date` > ? OR `archive`)', $contact[`id`], NULL_DATE);
+               $exists = dba::exists('contact', $condition);
 
                // We don't need to update, we never marked this contact for archival
-               if (!DBM::is_result($r)) {
+               if (!$exists) {
                        return;
                }
 
@@ -172,9 +161,9 @@ class Contact extends BaseObject
         * The function looks at several places (contact table and gcontact table) for the contact
         * It caches its result for the same script execution to prevent duplicate calls
         *
-        * @param string $url The profile link
-        * @param int $uid User id
-        * @param array $default If not data was found take this data as default value
+        * @param string $url     The profile link
+        * @param int    $uid     User id
+        * @param array  $default If not data was found take this data as default value
         *
         * @return array Contact data
         */
@@ -237,7 +226,7 @@ class Contact extends BaseObject
                if (DBM::is_result($r)) {
                        // If there is more than one entry we filter out the connector networks
                        if (count($r) > 1) {
-                               foreach ($r AS $id => $result) {
+                               foreach ($r as $id => $result) {
                                        if ($result["network"] == NETWORK_STATUSNET) {
                                                unset($r[$id]);
                                        }
@@ -291,8 +280,9 @@ class Contact extends BaseObject
                        $profile["micro"] = $profile["thumb"];
                }
 
-               if ((($profile["addr"] == "") || ($profile["name"] == "")) && ($profile["gid"] != 0) &&
-                       in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) {
+               if ((($profile["addr"] == "") || ($profile["name"] == "")) && ($profile["gid"] != 0)
+                       && in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))
+               ) {
                        Worker::add(PRIORITY_LOW, "UpdateGContact", $profile["gid"]);
                }
 
@@ -315,7 +305,7 @@ class Contact extends BaseObject
         * The function looks at several places (contact table and gcontact table) for the contact
         *
         * @param string $addr The profile link
-        * @param int $uid User id
+        * @param int    $uid  User id
         *
         * @return array Contact data
         */
@@ -362,8 +352,8 @@ class Contact extends BaseObject
        /**
         * @brief Returns the data array for the photo menu of a given contact
         *
-        * @param array $contact
-        * @param int $uid
+        * @param array $contact contact
+        * @param int   $uid     optional, default 0
         * @return array
         */
        public static function photoMenu(array $contact, $uid = 0)
@@ -386,14 +376,14 @@ class Contact extends BaseObject
                if ($contact['uid'] != $uid) {
                        if ($uid == 0) {
                                $profile_link = zrl($contact['url']);
-                               $menu = Array('profile' => array(t('View Profile'), $profile_link, true));
+                               $menu = array('profile' => array(t('View Profile'), $profile_link, true));
 
                                return $menu;
                        }
 
-                       $r = q("SELECT * FROM `contact` WHERE `nurl` = '%s' AND `network` = '%s' AND `uid` = %d", dbesc($contact['nurl']), dbesc($contact['network']), intval($uid));
+                       $r = dba::select('contact', array(), array('nurl' => $contact['nurl'], 'network' => $contact['network'], 'uid' => $uid), array('limit' => 1));
                        if ($r) {
-                               return self::photoMenu($r[0], $uid);
+                               return self::photoMenu($r, $uid);
                        } else {
                                $profile_link = zrl($contact['url']);
                                $connlnk = 'follow/?url=' . $contact['url'];
@@ -438,7 +428,7 @@ class Contact extends BaseObject
                $contact_drop_link = System::baseUrl() . '/contacts/' . $contact['id'] . '/drop?confirm=1';
 
                /**
-                * menu array:
+                * Menu array:
                 * "name" => [ "Label", "link", (bool)Should the link opened in a new tab? ]
                 */
                $menu = array(
@@ -459,7 +449,7 @@ class Contact extends BaseObject
 
                $menucondensed = array();
 
-               foreach ($menu AS $menuname => $menuitem) {
+               foreach ($menu as $menuname => $menuitem) {
                        if ($menuitem[1] != '') {
                                $menucondensed[$menuname] = $menuitem;
                        }
@@ -469,14 +459,15 @@ class Contact extends BaseObject
        }
 
        /**
+        * @brief Returns ungrouped contact count or list for user
+        *
         * Returns either the total number of ungrouped contacts for the given user
         * id or a paginated list of ungrouped contacts.
         *
-        * @brief Returns ungrouped contact count or list for user
+        * @param int $uid   uid
+        * @param int $start optional, default 0
+        * @param int $count optional, default 0
         *
-        * @param int $uid
-        * @param int $start
-        * @param int $count
         * @return array
         */
        public static function getUngroupedList($uid, $start = 0, $count = 0)
@@ -510,7 +501,6 @@ class Contact extends BaseObject
                        AND `pending` = 0
                        LIMIT %d, %d", intval($uid), intval($uid), intval($start), intval($count)
                );
-
                return $r;
        }
 
@@ -532,8 +522,8 @@ class Contact extends BaseObject
         * Fourth, we update the existing record with the new data (avatar, alias, nick)
         * if there's any updates
         *
-        * @param string $url Contact URL
-        * @param integer $uid The user id for the contact (0 = public contact)
+        * @param string  $url       Contact URL
+        * @param integer $uid       The user id for the contact (0 = public contact)
         * @param boolean $no_update Don't update the contact
         *
         * @return integer Contact ID
@@ -561,7 +551,7 @@ class Contact extends BaseObject
                if (!DBM::is_result($contact)) {
                        // The link could be provided as http although we stored it as https
                        $ssl_url = str_replace('http://', 'https://', $url);
-                       $r = dba::p("SELECT `id`, `avatar-date` FROM `contact` WHERE `alias` IN (?, ?, ?) AND `uid` = ? LIMIT 1", $url, normalise_link($url), $ssl_url, $uid);
+                       $r = dba::select('contact', array('id', 'avatar-date'), array('`alias` IN (?, ?, ?) AND `uid` = ?', $url, normalise_link($url), $ssl_url, $uid), array('limit' => 1));
                        $contact = dba::fetch($r);
                        dba::close($r);
                }
@@ -608,7 +598,8 @@ class Contact extends BaseObject
 
                $url = $data["url"];
                if (!$contact_id) {
-                       dba::insert('contact', array('uid' => $uid, 'created' => datetime_convert(), 'url' => $data["url"],
+                       dba::insert(
+                               'contact', array('uid' => $uid, 'created' => datetime_convert(), 'url' => $data["url"],
                                'nurl' => normalise_link($data["url"]), 'addr' => $data["addr"],
                                'alias' => $data["alias"], 'notify' => $data["notify"], 'poll' => $data["poll"],
                                'name' => $data["name"], 'nick' => $data["nick"], 'photo' => $data["photo"],
@@ -619,9 +610,11 @@ class Contact extends BaseObject
                                'confirm' => $data["confirm"], 'poco' => $data["poco"],
                                'name-date' => datetime_convert(), 'uri-date' => datetime_convert(),
                                'avatar-date' => datetime_convert(), 'writable' => 1, 'blocked' => 0,
-                               'readonly' => 0, 'pending' => 0));
+                               'readonly' => 0, 'pending' => 0)
+                       );
 
-                       $contacts = q("SELECT `id` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d ORDER BY `id` LIMIT 2", dbesc(normalise_link($data["url"])), intval($uid));
+                       $s = dba::select('contact', array('id'), array('nurl' => normalise_link($data["url"]), 'uid' => $uid), array('order' => array('id'), 'limit' => 2));
+                       $contacts = dba::inArray($s);
                        if (!DBM::is_result($contacts)) {
                                return 0;
                        }
@@ -735,19 +728,20 @@ class Contact extends BaseObject
        /**
         * @brief Returns posts from a given contact url
         *
-        * @param App $a argv application class
         * @param string $contact_url Contact URL
         *
         * @return string posts in HTML
         */
        public static function getPostsFromUrl($contact_url)
        {
+               $a = self::getApp();
+
                require_once 'include/conversation.php';
 
                // There are no posts with "uid = 0" with connector networks
                // This speeds up the query a lot
                $r = q("SELECT `network`, `id` AS `author-id`, `contact-type` FROM `contact`
-               WHERE `contact`.`nurl` = '%s' AND `contact`.`uid` = 0", dbesc(normalise_link($contact_url)));
+                       WHERE `contact`.`nurl` = '%s' AND `contact`.`uid` = 0", dbesc(normalise_link($contact_url)));
 
                if (!DBM::is_result($r)) {
                        return '';
@@ -767,7 +761,6 @@ class Contact extends BaseObject
                        " ORDER BY `item`.`created` DESC LIMIT %d, %d", intval($author_id), intval(local_user()), intval($a->pager['start']), intval($a->pager['itemspage'])
                );
 
-               $a = self::getApp();
 
                $o = conversation($a, $r, 'community', false);
 
@@ -790,8 +783,7 @@ class Contact extends BaseObject
                // "page-flags" is a field in the user table,
                // "forum" and "prv" are used in the contact table. They stand for PAGE_COMMUNITY and PAGE_PRVGROUP.
                // "community" is used in the gcontact table and is true if the contact is PAGE_COMMUNITY or PAGE_PRVGROUP.
-               if (
-                       (isset($contact['page-flags']) && (intval($contact['page-flags']) == PAGE_COMMUNITY))
+               if ((isset($contact['page-flags']) && (intval($contact['page-flags']) == PAGE_COMMUNITY))
                        || (isset($contact['page-flags']) && (intval($contact['page-flags']) == PAGE_PRVGROUP))
                        || (isset($contact['forum']) && intval($contact['forum']))
                        || (isset($contact['prv']) && intval($contact['prv']))
index 9a378d874cc5161437e8a154354df60a6263a8f9..47aeaf05e57e14dd47595fd45a972447f79606a7 100644 (file)
@@ -60,7 +60,7 @@ class DFRN
                $doc = new DOMDocument('1.0', 'utf-8');
                $doc->formatOutput = true;
 
-               $root = self::add_header($doc, $owner, "dfrn:owner", "", false);
+               $root = self::addHeader($doc, $owner, "dfrn:owner", "", false);
 
                if (! count($items)) {
                        return trim($doc->saveXML());
@@ -258,7 +258,7 @@ class DFRN
                        $author = "author";
                }
 
-               $root = self::add_header($doc, $owner, $author, $alternatelink, true);
+               $root = self::addHeader($doc, $owner, $author, $alternatelink, true);
 
                /// @TODO This hook can't work anymore
                //      call_hooks('atom_feed', $atom);
@@ -370,7 +370,7 @@ class DFRN
                        $root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS);
                        $root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET);
 
-                       //$root = self::add_header($doc, $owner, "dfrn:owner", "", false);
+                       //$root = self::addHeader($doc, $owner, "dfrn:owner", "", false);
 
                        foreach ($items as $item) {
                                $entry = self::entry($doc, $type, $item, $owner, true, 0);
@@ -398,7 +398,7 @@ class DFRN
                $doc = new DOMDocument('1.0', 'utf-8');
                $doc->formatOutput = true;
 
-               $root = self::add_header($doc, $owner, "dfrn:owner", "", false);
+               $root = self::addHeader($doc, $owner, "dfrn:owner", "", false);
 
                $mail = $doc->createElement("dfrn:mail");
                $sender = $doc->createElement("dfrn:sender");
@@ -411,7 +411,7 @@ class DFRN
 
                XML::addElement($doc, $mail, "dfrn:id", $item['uri']);
                XML::addElement($doc, $mail, "dfrn:in-reply-to", $item['parent-uri']);
-               XML::addElement($doc, $mail, "dfrn:sentdate", datetime_convert('UTC', 'UTC', $item['created'] . '+00:00' , ATOM_TIME));
+               XML::addElement($doc, $mail, "dfrn:sentdate", datetime_convert('UTC', 'UTC', $item['created'] . '+00:00', ATOM_TIME));
                XML::addElement($doc, $mail, "dfrn:subject", $item['title']);
                XML::addElement($doc, $mail, "dfrn:content", $item['body']);
 
@@ -434,7 +434,7 @@ class DFRN
                $doc = new DOMDocument('1.0', 'utf-8');
                $doc->formatOutput = true;
 
-               $root = self::add_header($doc, $owner, "dfrn:owner", "", false);
+               $root = self::addHeader($doc, $owner, "dfrn:owner", "", false);
 
                $suggest = $doc->createElement("dfrn:suggest");
 
@@ -486,7 +486,7 @@ class DFRN
                $doc = new DOMDocument('1.0', 'utf-8');
                $doc->formatOutput = true;
 
-               $root = self::add_header($doc, $owner, "dfrn:owner", "", false);
+               $root = self::addHeader($doc, $owner, "dfrn:owner", "", false);
 
                $relocate = $doc->createElement("dfrn:relocate");
 
@@ -501,7 +501,7 @@ class DFRN
                XML::addElement($doc, $relocate, "dfrn:confirm", $owner['confirm']);
                XML::addElement($doc, $relocate, "dfrn:notify", $owner['notify']);
                XML::addElement($doc, $relocate, "dfrn:poll", $owner['poll']);
-               XML::addElement($doc, $relocate, "dfrn:sitepubkey", Config::get('system','site_pubkey'));
+               XML::addElement($doc, $relocate, "dfrn:sitepubkey", Config::get('system', 'site_pubkey'));
 
                $root->appendChild($relocate);
 
@@ -520,7 +520,7 @@ class DFRN
         * @return object XML root object
         * @todo Add type-hints
         */
-       private static function add_header($doc, $owner, $authorelement, $alternatelink = "", $public = false)
+       private static function addHeader($doc, $owner, $authorelement, $alternatelink = "", $public = false)
        {
 
                if ($alternatelink == "") {
@@ -579,7 +579,7 @@ class DFRN
 
                XML::addElement($doc, $root, "updated", datetime_convert("UTC", "UTC", "now", ATOM_TIME));
 
-               $author = self::add_author($doc, $owner, $authorelement, $public);
+               $author = self::addAuthor($doc, $owner, $authorelement, $public);
                $root->appendChild($author);
 
                return $root;
@@ -588,14 +588,15 @@ class DFRN
        /**
         * @brief Adds the author element in the header for the DFRN protocol
         *
-        * @param object $doc           XML document
-        * @param array  $owner         Owner record
-        * @param string $authorelement Element name for the author
+        * @param object  $doc           XML document
+        * @param array   $owner         Owner record
+        * @param string  $authorelement Element name for the author
+        * @param boolean $public        boolean
         *
         * @return object XML author object
         * @todo Add type-hints
         */
-       private static function add_author($doc, $owner, $authorelement, $public)
+       private static function addAuthor($doc, $owner, $authorelement, $public)
        {
                // Is the profile hidden or shouldn't be published in the net? Then add the "hide" element
                $r = q(
@@ -739,7 +740,7 @@ class DFRN
         * @return object XML author object
         * @todo Add type-hints
         */
-       private static function add_entry_author($doc, $element, $contact_url, $item)
+       private static function addEntryAuthor($doc, $element, $contact_url, $item)
        {
                $contact = Contact::getDetailsByURL($contact_url, $item["uid"]);
 
@@ -780,7 +781,7 @@ class DFRN
         * @return object XML activity object
         * @todo Add type-hints
         */
-       private static function create_activity($doc, $element, $activity)
+       private static function createActivity($doc, $element, $activity)
        {
                if ($activity) {
                        $entry = $doc->createElement($element);
@@ -810,7 +811,7 @@ class DFRN
                                        // XML does need a single element as root element so we add a dummy element here
                                        $data = parse_xml_string("<dummy>" . $r->link . "</dummy>", false);
                                        if (is_object($data)) {
-                                               foreach ($data->link AS $link) {
+                                               foreach ($data->link as $link) {
                                                        $attributes = array();
                                                        foreach ($link->attributes() as $parameter => $value) {
                                                                $attributes[$parameter] = $value;
@@ -843,7 +844,7 @@ class DFRN
         * @return object XML attachment object
         * @todo Add type-hints
         */
-       private static function get_attachment($doc, $root, $item)
+       private static function getAttachment($doc, $root, $item)
        {
                $arr = explode('[/attach],', $item['attach']);
                if (count($arr)) {
@@ -932,10 +933,10 @@ class DFRN
                        $htmlbody = bbcode($htmlbody, false, false, 7);
                }
 
-               $author = self::add_entry_author($doc, "author", $item["author-link"], $item);
+               $author = self::addEntryAuthor($doc, "author", $item["author-link"], $item);
                $entry->appendChild($author);
 
-               $dfrnowner = self::add_entry_author($doc, "dfrn:owner", $item["owner-link"], $item);
+               $dfrnowner = self::addEntryAuthor($doc, "dfrn:owner", $item["owner-link"], $item);
                $entry->appendChild($dfrnowner);
 
                if (($item['parent'] != $item['id']) || ($item['parent-uri'] !== $item['uri']) || (($item['thr-parent'] !== '') && ($item['thr-parent'] !== $item['uri']))) {
@@ -1041,12 +1042,12 @@ class DFRN
                        XML::addElement($doc, $entry, "activity:object-type", ACTIVITY_OBJ_COMMENT);
                }
 
-               $actobj = self::create_activity($doc, "activity:object", $item['object']);
+               $actobj = self::createActivity($doc, "activity:object", $item['object']);
                if ($actobj) {
                        $entry->appendChild($actobj);
                }
 
-               $actarg = self::create_activity($doc, "activity:target", $item['target']);
+               $actarg = self::createActivity($doc, "activity:target", $item['target']);
                if ($actarg) {
                        $entry->appendChild($actarg);
                }
@@ -1099,7 +1100,7 @@ class DFRN
                        }
                }
 
-               self::get_attachment($doc, $entry, $item);
+               self::getAttachment($doc, $entry, $item);
 
                return $entry;
        }
@@ -1112,7 +1113,7 @@ class DFRN
         *
         * @return string encrypted data
         */
-       private static function aes_encrypt($data, $key)
+       private static function aesEncrypt($data, $key)
        {
                return openssl_encrypt($data, 'aes-128-ecb', $key, OPENSSL_RAW_DATA);
        }
@@ -1125,7 +1126,7 @@ class DFRN
         *
         * @return string decrypted data
         */
-       public static function aes_decrypt($encrypted, $key)
+       public static function aesDecrypt($encrypted, $key)
        {
                return openssl_decrypt($encrypted, 'aes-128-ecb', $key, OPENSSL_RAW_DATA);
        }
@@ -1291,7 +1292,7 @@ class DFRN
                                case 1:
                                        // Deprecated rino version!
                                        $key = openssl_random_pseudo_bytes(16);
-                                       $data = self::aes_encrypt($postvars['data'], $key);
+                                       $data = self::aesEncrypt($postvars['data'], $key);
                                        break;
                                case 2:
                                        // RINO 2 based on php-encryption
@@ -1392,9 +1393,10 @@ class DFRN
         *
         * @param array  $contact  Contact record
         * @param string $birthday Birthday of the contact
+        * @return void
         * @todo Add array type-hint for $contact
         */
-       private static function birthday_event($contact, $birthday)
+       private static function birthdayEvent($contact, $birthday)
        {
                // Check for duplicates
                $r = q(
@@ -1412,7 +1414,7 @@ class DFRN
                logger("updating birthday: ".$birthday." for contact ".$contact["id"]);
 
                $bdtext = sprintf(t("%s\'s birthday"), $contact["name"]);
-               $bdtext2 = sprintf(t("Happy Birthday %s"), " [url=".$contact["url"]."]".$contact["name"]."[/url]") ;
+               $bdtext2 = sprintf(t("Happy Birthday %s"), " [url=".$contact["url"]."]".$contact["name"]."[/url]");
 
                $r = q(
                        "INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`summary`,`desc`,`type`)
@@ -1437,6 +1439,7 @@ class DFRN
         * @param array  $importer  Record of the importer user mixed with contact of the content
         * @param string $element   Element name from which the data is fetched
         * @param bool   $onlyfetch Should the data only be fetched or should it update the contact record as well
+        * @param string $xml       optional, default empty
         *
         * @return Returns an array with relevant data of the author
         * @todo Find good type-hints for all parameter
@@ -1474,10 +1477,10 @@ class DFRN
                $avatarlist = array();
                /// @todo check if "avatar" or "photo" would be the best field in the specification
                $avatars = $xpath->query($element."/atom:link[@rel='avatar']", $context);
-               foreach ($avatars AS $avatar) {
+               foreach ($avatars as $avatar) {
                        $href = "";
                        $width = 0;
-                       foreach ($avatar->attributes AS $attributes) {
+                       foreach ($avatar->attributes as $attributes) {
                                /// @TODO Rewrite these similar if () to one switch
                                if ($attributes->name == "href") {
                                        $href = $attributes->textContent;
@@ -1505,14 +1508,14 @@ class DFRN
 
                        // When was the last change to name or uri?
                        $name_element = $xpath->query($element . "/atom:name", $context)->item(0);
-                       foreach ($name_element->attributes AS $attributes) {
+                       foreach ($name_element->attributes as $attributes) {
                                if ($attributes->name == "updated") {
                                        $poco["name-date"] = $attributes->textContent;
                                }
                        }
 
                        $link_element = $xpath->query($element . "/atom:link", $context)->item(0);
-                       foreach ($link_element->attributes AS $attributes) {
+                       foreach ($link_element->attributes as $attributes) {
                                if ($attributes->name == "updated") {
                                        $poco["uri-date"] = $attributes->textContent;
                                }
@@ -1571,7 +1574,7 @@ class DFRN
                        // Save the keywords into the contact table
                        $tags = array();
                        $tagelements = $xpath->evaluate($element . "/poco:tags/text()", $context);
-                       foreach ($tagelements AS $tag) {
+                       foreach ($tagelements as $tag) {
                                $tags[$tag->nodeValue] = $tag->nodeValue;
                        }
 
@@ -1608,12 +1611,12 @@ class DFRN
                        $contact = array_merge($contact, $poco);
 
                        if ($old_bdyear != $contact["bdyear"]) {
-                               self::birthday_event($contact, $birthday);
+                               self::birthdayEvent($contact, $birthday);
                        }
 
                        // Get all field names
                        $fields = array();
-                       foreach ($r[0] AS $field => $data) {
+                       foreach ($r[0] as $field => $data) {
                                $fields[$field] = $data;
                        }
 
@@ -1626,14 +1629,14 @@ class DFRN
 
                        // Update check for this field has to be done differently
                        $datefields = array("name-date", "uri-date");
-                       foreach ($datefields AS $field) {
+                       foreach ($datefields as $field) {
                                if (strtotime($contact[$field]) > strtotime($r[0][$field])) {
                                        logger("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $r[0][$field] . "'", LOGGER_DEBUG);
                                        $update = true;
                                }
                        }
 
-                       foreach ($fields AS $field => $data) {
+                       foreach ($fields as $field => $data) {
                                if ($contact[$field] != $r[0][$field]) {
                                        logger("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $r[0][$field] . "'", LOGGER_DEBUG);
                                        $update = true;
@@ -1692,7 +1695,7 @@ class DFRN
         * @return string XML string
         * @todo Find good type-hints for all parameter
         */
-       private static function transform_activity($xpath, $activity, $element)
+       private static function transformActivity($xpath, $activity, $element)
        {
                if (!is_object($activity)) {
                        return "";
@@ -1743,9 +1746,10 @@ class DFRN
         * @param object $xpath    XPath object
         * @param object $mail     mail elements
         * @param array  $importer Record of the importer user mixed with contact of the content
+        * @return void
         * @todo Find good type-hints for all parameter
         */
-       private static function process_mail($xpath, $mail, $importer)
+       private static function processMail($xpath, $mail, $importer)
        {
                logger("Processing mails");
 
@@ -1794,9 +1798,10 @@ class DFRN
         * @param object $xpath      XPath object
         * @param object $suggestion suggestion elements
         * @param array  $importer   Record of the importer user mixed with contact of the content
+        * @return boolean
         * @todo Find good type-hints for all parameter
         */
-       private static function process_suggestion($xpath, $suggestion, $importer)
+       private static function processSuggestion($xpath, $suggestion, $importer)
        {
                $a = get_app();
 
@@ -1903,20 +1908,21 @@ class DFRN
                        intval(0)
                );
 
-               notification(array(
-                       "type"         => NOTIFY_SUGGEST,
-                       "notify_flags" => $importer["notify-flags"],
-                       "language"     => $importer["language"],
-                       "to_name"      => $importer["username"],
-                       "to_email"     => $importer["email"],
-                       "uid"          => $importer["importer_uid"],
-                       "item"         => $suggest,
-                       "link"         => System::baseUrl()."/notifications/intros",
-                       "source_name"  => $importer["name"],
-                       "source_link"  => $importer["url"],
-                       "source_photo" => $importer["photo"],
-                       "verb"         => ACTIVITY_REQ_FRIEND,
-                       "otype"        => "intro")
+               notification(
+                       array(
+                               "type"         => NOTIFY_SUGGEST,
+                               "notify_flags" => $importer["notify-flags"],
+                               "language"     => $importer["language"],
+                               "to_name"      => $importer["username"],
+                               "to_email"     => $importer["email"],
+                               "uid"          => $importer["importer_uid"],
+                               "item"         => $suggest,
+                               "link"         => System::baseUrl()."/notifications/intros",
+                               "source_name"  => $importer["name"],
+                               "source_link"  => $importer["url"],
+                               "source_photo" => $importer["photo"],
+                               "verb"         => ACTIVITY_REQ_FRIEND,
+                               "otype"        => "intro")
                );
 
                return true;
@@ -1928,9 +1934,10 @@ class DFRN
         * @param object $xpath      XPath object
         * @param object $relocation relocation elements
         * @param array  $importer   Record of the importer user mixed with contact of the content
+        * @return boolean
         * @todo Find good type-hints for all parameter
         */
-       private static function process_relocation($xpath, $relocation, $importer)
+       private static function processRelocation($xpath, $relocation, $importer)
        {
                logger("Processing relocations");
 
@@ -2080,9 +2087,10 @@ class DFRN
         * @param array $item      the new item record
         * @param array $importer  Record of the importer user mixed with contact of the content
         * @param int   $entrytype Is it a toplevel entry, a comment or a relayed comment?
+        * @return mixed
         * @todo set proper type-hints (array?)
         */
-       private static function update_content($current, $item, $importer, $entrytype)
+       private static function updateContent($current, $item, $importer, $entrytype)
        {
                $changed = false;
 
@@ -2137,7 +2145,7 @@ class DFRN
         * @return int Is it a toplevel entry, a comment or a relayed comment?
         * @todo set proper type-hints (array?)
         */
-       private static function get_entry_type($importer, $item)
+       private static function getEntryType($importer, $item)
        {
                if ($item["parent-uri"] != $item["uri"]) {
                        $community = false;
@@ -2208,9 +2216,10 @@ class DFRN
         * @param array $item      the new item record
         * @param array $importer  Record of the importer user mixed with contact of the content
         * @param int   $posted_id The record number of item record that was just posted
+        * @return void
         * @todo set proper type-hints (array?)
         */
-       private static function do_poke($item, $importer, $posted_id)
+       private static function doPoke($item, $importer, $posted_id)
        {
                $verb = urldecode(substr($item["verb"], strpos($item["verb"], "#")+1));
                if (!$verb) {
@@ -2245,7 +2254,7 @@ class DFRN
                                        "link"         => System::baseUrl()."/display/".urlencode(get_item_guid($posted_id)),
                                        "source_name"  => stripslashes($item["author-name"]),
                                        "source_link"  => $item["author-link"],
-                                       "source_photo" => ((link_compare($item["author-link"],$importer["url"]))
+                                       "source_photo" => ((link_compare($item["author-link"], $importer["url"]))
                                                ? $importer["thumb"] : $item["author-avatar"]),
                                        "verb"         => $item["verb"],
                                        "otype"        => "person",
@@ -2267,7 +2276,7 @@ class DFRN
         * @return bool Should the processing of the entries be continued?
         * @todo set proper type-hints (array?)
         */
-       private static function process_verbs($entrytype, $importer, &$item, &$is_like)
+       private static function processVerbs($entrytype, $importer, &$item, &$is_like)
        {
                logger("Process verb ".$item["verb"]." and object-type ".$item["object-type"]." for entrytype ".$entrytype, LOGGER_DEBUG);
 
@@ -2338,7 +2347,6 @@ class DFRN
                        }
 
                        if (($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) {
-
                                $xo = parse_xml_string($item["object"], false);
                                $xt = parse_xml_string($item["target"], false);
 
@@ -2356,8 +2364,9 @@ class DFRN
 
                                        // extract tag, if not duplicate, add to parent item
                                        if ($xo->content) {
-                                               if (!(stristr($r[0]["tag"],trim($xo->content)))) {
-                                                       q("UPDATE `item` SET `tag` = '%s' WHERE `id` = %d",
+                                               if (!(stristr($r[0]["tag"], trim($xo->content)))) {
+                                                       q(
+                                                               "UPDATE `item` SET `tag` = '%s' WHERE `id` = %d",
                                                                dbesc($r[0]["tag"] . (strlen($r[0]["tag"]) ? ',' : '') . '#[url=' . $xo->id . ']'. $xo->content . '[/url]'),
                                                                intval($r[0]["id"])
                                                        );
@@ -2375,17 +2384,18 @@ class DFRN
         *
         * @param object $links link elements
         * @param array  $item  the item record
+        * @return void
         * @todo set proper type-hints
         */
-       private static function parse_links($links, &$item)
+       private static function parseLinks($links, &$item)
        {
                $rel = "";
                $href = "";
                $type = "";
                $length = "0";
                $title = "";
-               foreach ($links AS $link) {
-                       foreach ($link->attributes AS $attributes) {
+               foreach ($links as $link) {
+                       foreach ($link->attributes as $attributes) {
                                /// @TODO Rewrite these repeated (same) if () statements to a switch()
                                if ($attributes->name == "href") {
                                        $href = $attributes->textContent;
@@ -2424,13 +2434,15 @@ class DFRN
        /**
         * @brief Processes the entry elements which contain the items and comments
         *
-        * @param array $header Array of the header elements that always stay the same
-        * @param object $xpath XPath object
-        * @param object $entry entry elements
-        * @param array $importer Record of the importer user mixed with contact of the content
+        * @param array  $header   Array of the header elements that always stay the same
+        * @param object $xpath    XPath object
+        * @param object $entry    entry elements
+        * @param array  $importer Record of the importer user mixed with contact of the content
+        * @param object $xml      xml
+        * @return void
         * @todo Add type-hints
         */
-       private static function process_entry($header, $xpath, $entry, $importer, $xml)
+       private static function processEntry($header, $xpath, $entry, $importer, $xml)
        {
                logger("Processing entries");
 
@@ -2527,7 +2539,7 @@ class DFRN
 
                $notice_info = $xpath->query("statusnet:notice_info", $entry);
                if ($notice_info && ($notice_info->length > 0)) {
-                       foreach ($notice_info->item(0)->attributes AS $attributes) {
+                       foreach ($notice_info->item(0)->attributes as $attributes) {
                                if ($attributes->name == "source") {
                                        $item["app"] = strip_tags($attributes->textContent);
                                }
@@ -2549,7 +2561,7 @@ class DFRN
                }
 
                $object = $xpath->query("activity:object", $entry)->item(0);
-               $item["object"] = self::transform_activity($xpath, $object, "object");
+               $item["object"] = self::transformActivity($xpath, $object, "object");
 
                if (trim($item["object"]) != "") {
                        $r = parse_xml_string($item["object"], false);
@@ -2559,14 +2571,14 @@ class DFRN
                }
 
                $target = $xpath->query("activity:target", $entry)->item(0);
-               $item["target"] = self::transform_activity($xpath, $target, "target");
+               $item["target"] = self::transformActivity($xpath, $target, "target");
 
                $categories = $xpath->query("atom:category", $entry);
                if ($categories) {
-                       foreach ($categories AS $category) {
+                       foreach ($categories as $category) {
                                $term = "";
                                $scheme = "";
-                               foreach ($category->attributes AS $attributes) {
+                               foreach ($category->attributes as $attributes) {
                                        if ($attributes->name == "term") {
                                                $term = $attributes->textContent;
                                        }
@@ -2596,14 +2608,14 @@ class DFRN
 
                $links = $xpath->query("atom:link", $entry);
                if ($links) {
-                       self::parse_links($links, $item);
+                       self::parseLinks($links, $item);
                }
 
                $item['conversation-uri'] = $xpath->query('ostatus:conversation/text()', $entry)->item(0)->nodeValue;
 
                $conv = $xpath->query('ostatus:conversation', $entry);
                if (is_object($conv->item(0))) {
-                       foreach ($conv->item(0)->attributes AS $attributes) {
+                       foreach ($conv->item(0)->attributes as $attributes) {
                                if ($attributes->name == "ref") {
                                        $item['conversation-uri'] = $attributes->textContent;
                                }
@@ -2618,7 +2630,7 @@ class DFRN
 
                $inreplyto = $xpath->query("thr:in-reply-to", $entry);
                if (is_object($inreplyto->item(0))) {
-                       foreach ($inreplyto->item(0)->attributes AS $attributes) {
+                       foreach ($inreplyto->item(0)->attributes as $attributes) {
                                if ($attributes->name == "ref") {
                                        $item["parent-uri"] = $attributes->textContent;
                                }
@@ -2626,7 +2638,7 @@ class DFRN
                }
 
                // Get the type of the item (Top level post, reply or remote reply)
-               $entrytype = self::get_entry_type($importer, $item);
+               $entrytype = self::getEntryType($importer, $item);
 
                // Now assign the rest of the values that depend on the type of the message
                if (in_array($entrytype, array(DFRN_REPLY, DFRN_REPLY_RC))) {
@@ -2699,14 +2711,14 @@ class DFRN
                        }
                }
 
-               if (!self::process_verbs($entrytype, $importer, $item, $is_like)) {
-                       logger("Exiting because 'process_verbs' told us so", LOGGER_DEBUG);
+               if (!self::processVerbs($entrytype, $importer, $item, $is_like)) {
+                       logger("Exiting because 'processVerbs' told us so", LOGGER_DEBUG);
                        return;
                }
 
                // Update content if 'updated' changes
                if (DBM::is_result($current)) {
-                       if (self::update_content($r[0], $item, $importer, $entrytype)) {
+                       if (self::updateContent($r[0], $item, $importer, $entrytype)) {
                                logger("Item ".$item["uri"]." was updated.", LOGGER_DEBUG);
                        } else {
                                logger("Item ".$item["uri"]." already existed.", LOGGER_DEBUG);
@@ -2783,8 +2795,9 @@ class DFRN
 
                        logger("Item was stored with id ".$posted_id, LOGGER_DEBUG);
 
-                       if (stristr($item["verb"],ACTIVITY_POKE))
-                               self::do_poke($item, $importer, $posted_id);
+                       if (stristr($item["verb"], ACTIVITY_POKE)) {
+                               self::doPoke($item, $importer, $posted_id);
+                       }
                }
        }
 
@@ -2794,13 +2807,14 @@ class DFRN
         * @param object $xpath    XPath object
         * @param object $deletion deletion elements
         * @param array  $importer Record of the importer user mixed with contact of the content
+        * @return void
         * @todo set proper type-hints
         */
-       private static function process_deletion($xpath, $deletion, $importer)
+       private static function processDeletion($xpath, $deletion, $importer)
        {
                logger("Processing deletions");
 
-               foreach ($deletion->attributes AS $attributes) {
+               foreach ($deletion->attributes as $attributes) {
                        if ($attributes->name == "ref") {
                                $uri = $attributes->textContent;
                        }
@@ -2832,7 +2846,7 @@ class DFRN
                } else {
                        $item = $r[0];
 
-                       $entrytype = self::get_entry_type($importer, $item);
+                       $entrytype = self::getEntryType($importer, $item);
 
                        if (!$item["deleted"]) {
                                logger('deleting item '.$item["id"].' uri='.$uri, LOGGER_DEBUG);
@@ -2846,7 +2860,6 @@ class DFRN
                        }
 
                        if (($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) {
-
                                $xo = parse_xml_string($item["object"], false);
                                $xt = parse_xml_string($item["target"], false);
 
@@ -3017,8 +3030,8 @@ class DFRN
 
                // We are processing relocations even if we are ignoring a contact
                $relocations = $xpath->query("/atom:feed/dfrn:relocate");
-               foreach ($relocations AS $relocation) {
-                       self::process_relocation($xpath, $relocation, $importer);
+               foreach ($relocations as $relocation) {
+                       self::processRelocation($xpath, $relocation, $importer);
                }
 
                if ($importer["readonly"]) {
@@ -3029,29 +3042,29 @@ class DFRN
                }
 
                $mails = $xpath->query("/atom:feed/dfrn:mail");
-               foreach ($mails AS $mail) {
-                       self::process_mail($xpath, $mail, $importer);
+               foreach ($mails as $mail) {
+                       self::processMail($xpath, $mail, $importer);
                }
 
                $suggestions = $xpath->query("/atom:feed/dfrn:suggest");
-               foreach ($suggestions AS $suggestion) {
-                       self::process_suggestion($xpath, $suggestion, $importer);
+               foreach ($suggestions as $suggestion) {
+                       self::processSuggestion($xpath, $suggestion, $importer);
                }
 
                $deletions = $xpath->query("/atom:feed/at:deleted-entry");
-               foreach ($deletions AS $deletion) {
-                       self::process_deletion($xpath, $deletion, $importer);
+               foreach ($deletions as $deletion) {
+                       self::processDeletion($xpath, $deletion, $importer);
                }
 
                if (!$sort_by_date) {
                        $entries = $xpath->query("/atom:feed/atom:entry");
-                       foreach ($entries AS $entry) {
-                               self::process_entry($header, $xpath, $entry, $importer, $xml);
+                       foreach ($entries as $entry) {
+                               self::processEntry($header, $xpath, $entry, $importer, $xml);
                        }
                } else {
                        $newentries = array();
                        $entries = $xpath->query("/atom:feed/atom:entry");
-                       foreach ($entries AS $entry) {
+                       foreach ($entries as $entry) {
                                $created = $xpath->query("atom:published/text()", $entry)->item(0)->nodeValue;
                                $newentries[strtotime($created)] = $entry;
                        }
@@ -3059,8 +3072,8 @@ class DFRN
                        // Now sort after the publishing date
                        ksort($newentries);
 
-                       foreach ($newentries AS $entry) {
-                               self::process_entry($header, $xpath, $entry, $importer, $xml);
+                       foreach ($newentries as $entry) {
+                               self::processEntry($header, $xpath, $entry, $importer, $xml);
                        }
                }
                logger("Import done for user " . $importer["uid"] . " from contact " . $importer["id"], LOGGER_DEBUG);
index 1a320d14e2e07bd2867c300fbf9c32e903c17028..4d91f8b1c0661946f183676a6e15e567fc1e6c73 100644 (file)
@@ -5,7 +5,7 @@
  *
  * The new protocol is described here: http://diaspora.github.io/diaspora_federation/index.html
  * This implementation here interprets the old and the new protocol and sends the new one.
- * In the future we will remove most stuff from "valid_posting" and interpret only the new protocol.
+ * In the future we will remove most stuff from "validPosting" and interpret only the new protocol.
  */
 namespace Friendica\Protocol;
 
@@ -46,7 +46,7 @@ class Diaspora
         *
         * @return array of relay servers
         */
-       public static function relay_list()
+       public static function relayList()
        {
                $serverdata = Config::get("system", "relay_server");
                if ($serverdata == "") {
@@ -109,7 +109,7 @@ class Diaspora
         *
         * @return string the repaired signature
         */
-       private static function repair_signature($signature, $handle = "", $level = 1)
+       private static function repairSignature($signature, $handle = "", $level = 1)
        {
                if ($signature == "") {
                        return ($signature);
@@ -121,7 +121,7 @@ class Diaspora
 
                        // Do a recursive call to be able to fix even multiple levels
                        if ($level < 10) {
-                               $signature = self::repair_signature($signature, $handle, ++$level);
+                               $signature = self::repairSignature($signature, $handle, ++$level);
                        }
                }
 
@@ -135,7 +135,7 @@ class Diaspora
         *
         * @return string verified data
         */
-       private static function verify_magic_envelope($envelope)
+       private static function verifyMagicEnvelope($envelope)
        {
                $basedom = parse_xml_string($envelope);
 
@@ -191,7 +191,7 @@ class Diaspora
         *
         * @return string encrypted data
         */
-       private static function aes_encrypt($key, $iv, $data)
+       private static function aesEncrypt($key, $iv, $data)
        {
                return openssl_encrypt($data, 'aes-256-cbc', str_pad($key, 32, "\0"), OPENSSL_RAW_DATA, str_pad($iv, 16, "\0"));
        }
@@ -205,7 +205,7 @@ class Diaspora
         *
         * @return string decrypted data
         */
-       private static function aes_decrypt($key, $iv, $encrypted)
+       private static function aesDecrypt($key, $iv, $encrypted)
        {
                return openssl_decrypt($encrypted, 'aes-256-cbc', str_pad($key, 32, "\0"), OPENSSL_RAW_DATA, str_pad($iv, 16, "\0"));
        }
@@ -221,7 +221,7 @@ class Diaspora
         * 'author' -> author diaspora handle
         * 'key' -> author public key (converted to pkcs#8)
         */
-       public static function decode_raw($importer, $raw)
+       public static function decodeRaw($importer, $raw)
        {
                $data = json_decode($raw);
 
@@ -242,7 +242,7 @@ class Diaspora
                        $outer_iv = base64_decode($j_outer_key_bundle->iv);
                        $outer_key = base64_decode($j_outer_key_bundle->key);
 
-                       $xml = self::aes_decrypt($outer_key, $outer_iv, $ciphertext);
+                       $xml = self::aesDecrypt($outer_key, $outer_iv, $ciphertext);
                } else {
                        $xml = $raw;
                }
@@ -329,7 +329,7 @@ class Diaspora
                        $outer_iv = base64_decode($j_outer_key_bundle->iv);
                        $outer_key = base64_decode($j_outer_key_bundle->key);
 
-                       $decrypted = self::aes_decrypt($outer_key, $outer_iv, $ciphertext);
+                       $decrypted = self::aesDecrypt($outer_key, $outer_iv, $ciphertext);
 
                        logger('decrypted: '.$decrypted, LOGGER_DEBUG);
                        $idom = parse_xml_string($decrypted);
@@ -387,7 +387,7 @@ class Diaspora
                } else {
                        // Decode the encrypted blob
                        $inner_encrypted = base64_decode($data);
-                       $inner_decrypted = self::aes_decrypt($inner_aes_key, $inner_iv, $inner_encrypted);
+                       $inner_decrypted = self::aesDecrypt($inner_aes_key, $inner_iv, $inner_encrypted);
                }
 
                if (!$author_link) {
@@ -428,7 +428,7 @@ class Diaspora
         *
         * @return int The message id of the generated message, "true" or "false" if there was an error
         */
-       public static function dispatch_public($msg)
+       public static function dispatchPublic($msg)
        {
                $enabled = intval(Config::get("system", "diaspora_enabled"));
                if (!$enabled) {
@@ -436,7 +436,7 @@ class Diaspora
                        return false;
                }
 
-               if (!($postdata = self::valid_posting($msg))) {
+               if (!($postdata = self::validPosting($msg))) {
                        logger("Invalid posting");
                        return false;
                }
@@ -446,7 +446,7 @@ class Diaspora
                // Is it a an action (comment, like, ...) for our own post?
                if (isset($fields->parent_guid) && !$postdata["relayed"]) {
                        $guid = notags(unxmlify($fields->parent_guid));
-                       $importer = self::importer_for_guid($guid);
+                       $importer = self::importerForGuid($guid);
                        if (is_array($importer)) {
                                logger("delivering to origin: ".$importer["name"]);
                                $message_id = self::dispatch($importer, $msg, $fields);
@@ -508,7 +508,7 @@ class Diaspora
 
                // This is only needed for private postings since this is already done for public ones before
                if (is_null($fields)) {
-                       if (!($postdata = self::valid_posting($msg))) {
+                       if (!($postdata = self::validPosting($msg))) {
                                logger("Invalid posting");
                                return false;
                        }
@@ -524,43 +524,43 @@ class Diaspora
                                return self::receiveAccountMigration($importer, $fields);
 
                        case "account_deletion":
-                               return self::receive_account_deletion($importer, $fields);
+                               return self::receiveAccountDeletion($importer, $fields);
 
                        case "comment":
-                               return self::receive_comment($importer, $sender, $fields, $msg["message"]);
+                               return self::receiveComment($importer, $sender, $fields, $msg["message"]);
 
                        case "contact":
-                               return self::receive_contact_request($importer, $fields);
+                               return self::receiveContactRequest($importer, $fields);
 
                        case "conversation":
-                               return self::receive_conversation($importer, $msg, $fields);
+                               return self::receiveConversation($importer, $msg, $fields);
 
                        case "like":
-                               return self::receive_like($importer, $sender, $fields);
+                               return self::receiveLike($importer, $sender, $fields);
 
                        case "message":
-                               return self::receive_message($importer, $fields);
+                               return self::receiveMessage($importer, $fields);
 
                        case "participation": // Not implemented
-                               return self::receive_participation($importer, $fields);
+                               return self::receiveParticipation($importer, $fields);
 
                        case "photo": // Not implemented
-                               return self::receive_photo($importer, $fields);
+                               return self::receivePhoto($importer, $fields);
 
                        case "poll_participation": // Not implemented
-                               return self::receive_poll_participation($importer, $fields);
+                               return self::receivePollParticipation($importer, $fields);
 
                        case "profile":
-                               return self::receive_profile($importer, $fields);
+                               return self::receiveProfile($importer, $fields);
 
                        case "reshare":
-                               return self::receive_reshare($importer, $fields, $msg["message"]);
+                               return self::receiveReshare($importer, $fields, $msg["message"]);
 
                        case "retraction":
-                               return self::receive_retraction($importer, $sender, $fields);
+                               return self::receiveRetraction($importer, $sender, $fields);
 
                        case "status_message":
-                               return self::receive_status_message($importer, $fields, $msg["message"]);
+                               return self::receiveStatusMessage($importer, $fields, $msg["message"]);
 
                        default:
                                logger("Unknown message type ".$type);
@@ -580,7 +580,7 @@ class Diaspora
         *
         * @return bool|array If the posting is valid then an array with an SimpleXML object is returned
         */
-       private static function valid_posting($msg)
+       private static function validPosting($msg)
        {
                $data = parse_xml_string($msg["message"]);
 
@@ -731,7 +731,7 @@ class Diaspora
 
                logger("Fetching diaspora key for: ".$handle);
 
-               $r = self::person_by_handle($handle);
+               $r = self::personByHandle($handle);
                if ($r) {
                        return $r["pubkey"];
                }
@@ -746,7 +746,7 @@ class Diaspora
         *
         * @return array the queried data
         */
-       public static function person_by_handle($handle)
+       public static function personByHandle($handle)
        {
                $r = q(
                        "SELECT * FROM `fcontact` WHERE `network` = '%s' AND `addr` = '%s' LIMIT 1",
@@ -775,7 +775,7 @@ class Diaspora
                        // Note that Friendica contacts will return a "Diaspora person"
                        // if Diaspora connectivity is enabled on their server
                        if ($r && ($r["network"] === NETWORK_DIASPORA)) {
-                               self::add_fcontact($r, $update);
+                               self::addFContact($r, $update);
                                $person = $r;
                        }
                }
@@ -790,7 +790,7 @@ class Diaspora
         *
         * @return string The id of the fcontact entry
         */
-       private static function add_fcontact($arr, $update = false)
+       private static function addFContact($arr, $update = false)
        {
                if ($update) {
                        $r = q(
@@ -859,7 +859,7 @@ class Diaspora
         *
         * @return string the handle
         */
-       public static function handle_from_contact($contact_id, $gcontact_id = 0)
+       public static function handleFromContact($contact_id, $gcontact_id = 0)
        {
                $handle = false;
 
@@ -908,7 +908,7 @@ class Diaspora
         *
         * @return string the contact url or null
         */
-       public static function url_from_contact_guid($fcontact_guid)
+       public static function urlFromContactGuid($fcontact_guid)
        {
                logger("fcontact guid is ".$fcontact_guid, LOGGER_DEBUG);
 
@@ -933,7 +933,7 @@ class Diaspora
         *
         * @return The contact id
         */
-       private static function contact_by_handle($uid, $handle)
+       private static function contactByHandle($uid, $handle)
        {
                // First do a direct search on the contact table
                $r = q(
@@ -986,8 +986,8 @@ class Diaspora
         *
         * @return bool is the contact allowed to post?
         */
-       private static function post_allow($importer, $contact, $is_comment = false) {
-
+       private static function postAllow($importer, $contact, $is_comment = false)
+       {
                /*
                 * Perhaps we were already sharing with this person. Now they're sharing with us.
                 * That makes us friends.
@@ -1008,15 +1008,15 @@ class Diaspora
                if ($contact["blocked"] || $contact["readonly"] || $contact["archive"]) {
                        // Maybe blocked, don't accept.
                        return false;
-               // We are following this person?
+                       // We are following this person?
                } elseif (($contact["rel"] == CONTACT_IS_SHARING) || ($contact["rel"] == CONTACT_IS_FRIEND)) {
                        // Yes, then it is fine.
                        return true;
-               // Is it a post to a community?
+                       // Is it a post to a community?
                } elseif (($contact["rel"] == CONTACT_IS_FOLLOWER) && ($importer["page-flags"] == PAGE_COMMUNITY)) {
                        // That's good
                        return true;
-               // Is the message a global user or a comment?
+                       // Is the message a global user or a comment?
                } elseif (($importer["uid"] == 0) || $is_comment) {
                        // Messages for the global users and comments are always accepted
                        return true;
@@ -1034,9 +1034,9 @@ class Diaspora
         *
         * @return array The contact data
         */
-       private static function allowed_contact_by_handle($importer, $handle, $is_comment = false)
+       private static function allowedContactByHandle($importer, $handle, $is_comment = false)
        {
-               $contact = self::contact_by_handle($importer["uid"], $handle);
+               $contact = self::contactByHandle($importer["uid"], $handle);
                if (!$contact) {
                        logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found");
                        // If a contact isn't found, we accept it anyway if it is a comment
@@ -1047,7 +1047,7 @@ class Diaspora
                        }
                }
 
-               if (!self::post_allow($importer, $contact, $is_comment)) {
+               if (!self::postAllow($importer, $contact, $is_comment)) {
                        logger("The handle: ".$handle." is not allowed to post to user ".$importer["uid"]);
                        return false;
                }
@@ -1062,7 +1062,7 @@ class Diaspora
         *
         * @return int|bool message id if the message already was stored into the system - or false.
         */
-       private static function message_exists($uid, $guid)
+       private static function messageExists($uid, $guid)
        {
                $r = q(
                        "SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
@@ -1082,14 +1082,15 @@ class Diaspora
         * @brief Checks for links to posts in a message
         *
         * @param array $item The item array
+        * @return void
         */
-       private static function fetch_guid($item)
+       private static function fetchGuid($item)
        {
                $expression = "=diaspora://.*?/post/([0-9A-Za-z\-_@.:]{15,254}[0-9A-Za-z])=ism";
                preg_replace_callback(
                        $expression,
                        function ($match) use ($item) {
-                               return self::fetch_guid_sub($match, $item);
+                               return self::fetchGuidSub($match, $item);
                        },
                        $item["body"]
                );
@@ -1097,7 +1098,7 @@ class Diaspora
                preg_replace_callback(
                        "&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
                        function ($match) use ($item) {
-                               return self::fetch_guid_sub($match, $item);
+                               return self::fetchGuidSub($match, $item);
                        },
                        $item["body"]
                );
@@ -1112,7 +1113,7 @@ class Diaspora
         *
         * @return the replaced string
         */
-       public static function replace_people_guid($body, $author_link)
+       public static function replacePeopleGuid($body, $author_link)
        {
                $return = preg_replace_callback(
                        "&\[url=/people/([^\[\]]*)\](.*)\[\/url\]&Usi",
@@ -1121,7 +1122,7 @@ class Diaspora
                                // 0 => '[url=/people/0123456789abcdef]Foo Bar[/url]'
                                // 1 => '0123456789abcdef'
                                // 2 => 'Foo Bar'
-                               $handle = self::url_from_contact_guid($match[1]);
+                               $handle = self::urlFromContactGuid($match[1]);
 
                                if ($handle) {
                                        $return = '@[url='.$handle.']'.$match[2].'[/url]';
@@ -1140,15 +1141,16 @@ class Diaspora
        }
 
        /**
-        * @brief sub function of "fetch_guid" which checks for links in messages
+        * @brief sub function of "fetchGuid" which checks for links in messages
         *
         * @param array $match array containing a link that has to be checked for a message link
         * @param array $item  The item array
+        * @return void
         */
-       private static function fetch_guid_sub($match, $item)
+       private static function fetchGuidSub($match, $item)
        {
-               if (!self::store_by_guid($match[1], $item["author-link"])) {
-                       self::store_by_guid($match[1], $item["owner-link"]);
+               if (!self::storeByGuid($match[1], $item["author-link"])) {
+                       self::storeByGuid($match[1], $item["owner-link"]);
                }
        }
 
@@ -1161,7 +1163,7 @@ class Diaspora
         *
         * @return int the message id of the stored message or false
         */
-       private static function store_by_guid($guid, $server, $uid = 0)
+       private static function storeByGuid($guid, $server, $uid = 0)
        {
                $serverparts = parse_url($server);
                $server = $serverparts["scheme"]."://".$serverparts["host"];
@@ -1177,7 +1179,7 @@ class Diaspora
                logger("Successfully fetched item ".$guid." from ".$server, LOGGER_DEBUG);
 
                // Now call the dispatcher
-               return self::dispatch_public($msg);
+               return self::dispatchPublic($msg);
        }
 
        /**
@@ -1206,7 +1208,7 @@ class Diaspora
                $envelope = fetch_url($source_url);
                if ($envelope) {
                        logger("Envelope was fetched.", LOGGER_DEBUG);
-                       $x = self::verify_magic_envelope($envelope);
+                       $x = self::verifyMagicEnvelope($envelope);
                        if (!$x) {
                                logger("Envelope could not be verified.", LOGGER_DEBUG);
                        } else {
@@ -1275,7 +1277,7 @@ class Diaspora
         *
         * @return array the item record
         */
-       private static function parent_item($uid, $guid, $author, $contact)
+       private static function parentItem($uid, $guid, $author, $contact)
        {
                $r = q(
                        "SELECT `id`, `parent`, `body`, `wall`, `uri`, `guid`, `private`, `origin`,
@@ -1287,11 +1289,11 @@ class Diaspora
                );
 
                if (!$r) {
-                       $result = self::store_by_guid($guid, $contact["url"], $uid);
+                       $result = self::storeByGuid($guid, $contact["url"], $uid);
 
                        if (!$result) {
-                               $person = self::person_by_handle($author);
-                               $result = self::store_by_guid($guid, $person["url"], $uid);
+                               $person = self::personByHandle($author);
+                               $result = self::storeByGuid($guid, $person["url"], $uid);
                        }
 
                        if ($result) {
@@ -1328,7 +1330,7 @@ class Diaspora
         *      'cid' => contact id
         *      'network' => network type
         */
-       private static function author_contact_by_url($contact, $person, $uid)
+       private static function authorContactByUrl($contact, $person, $uid)
        {
                $r = q(
                        "SELECT `id`, `network`, `url` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
@@ -1357,7 +1359,7 @@ class Diaspora
         *
         * @return bool is it a hubzilla server?
         */
-       public static function is_redmatrix($url)
+       public static function isRedmatrix($url)
        {
                return(strstr($url, "/channel/"));
        }
@@ -1395,7 +1397,7 @@ class Diaspora
                        return str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/");
                }
 
-               if (self::is_redmatrix($r[0]["url"])) {
+               if (self::isRedmatrix($r[0]["url"])) {
                        return $r[0]["url"]."/?f=&mid=".$guid;
                }
 
@@ -1420,7 +1422,7 @@ class Diaspora
                $new_handle = notags(unxmlify($data->profile->author));
                $signature = notags(unxmlify($data->signature));
 
-               $contact = self::contact_by_handle($importer["uid"], $old_handle);
+               $contact = self::contactByHandle($importer["uid"], $old_handle);
                if (!$contact) {
                        logger("cannot find contact for sender: ".$old_handle." and user ".$importer["uid"]);
                        return false;
@@ -1437,7 +1439,7 @@ class Diaspora
                }
 
                // Update the profile
-               self::receive_profile($importer, $data->profile);
+               self::receiveProfile($importer, $data->profile);
 
                // change the technical stuff in contact and gcontact
                $data = Probe::uri($new_handle);
@@ -1507,13 +1509,13 @@ class Diaspora
         *
         * @return bool Success
         */
-       private static function receive_account_deletion($importer, $data)
+       private static function receiveAccountDeletion($importer, $data)
        {
                /// @todo Account deletion should remove the contact from the global contacts as well
 
                $author = notags(unxmlify($data->author));
 
-               $contact = self::contact_by_handle($importer["uid"], $author);
+               $contact = self::contactByHandle($importer["uid"], $author);
                if (!$contact) {
                        logger("cannot find contact for author: ".$author);
                        return false;
@@ -1533,7 +1535,7 @@ class Diaspora
         *
         * @return string The constructed uri or the one from our database
         */
-       private static function get_uri_from_guid($author, $guid, $onlyfound = false)
+       private static function getUriFromGuid($author, $guid, $onlyfound = false)
        {
                $r = q("SELECT `uri` FROM `item` WHERE `guid` = '%s' LIMIT 1", dbesc($guid));
                if (DBM::is_result($r)) {
@@ -1553,7 +1555,7 @@ class Diaspora
         *
         * @return string The post guid
         */
-       private static function get_guid_from_uri($uri, $uid)
+       private static function getGuidFromUri($uri, $uid)
        {
                $r = q("SELECT `guid` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($uri), intval($uid));
                if (DBM::is_result($r)) {
@@ -1570,7 +1572,7 @@ class Diaspora
         *
         * @return array|boolean the origin owner of that post - or false
         */
-       private static function importer_for_guid($guid)
+       private static function importerForGuid($guid)
        {
                $item = dba::fetch_first("SELECT `uid` FROM `item` WHERE `origin` AND `guid` = ? LIMIT 1", $guid);
 
@@ -1594,7 +1596,7 @@ class Diaspora
         *
         * @return int The message id of the generated comment or "false" if there was an error
         */
-       private static function receive_comment($importer, $sender, $data, $xml)
+       private static function receiveComment($importer, $sender, $data, $xml)
        {
                $author = notags(unxmlify($data->author));
                $guid = notags(unxmlify($data->guid));
@@ -1609,34 +1611,34 @@ class Diaspora
 
                if (isset($data->thread_parent_guid)) {
                        $thread_parent_guid = notags(unxmlify($data->thread_parent_guid));
-                       $thr_uri = self::get_uri_from_guid("", $thread_parent_guid, true);
+                       $thr_uri = self::getUriFromGuid("", $thread_parent_guid, true);
                } else {
                        $thr_uri = "";
                }
 
-               $contact = self::allowed_contact_by_handle($importer, $sender, true);
+               $contact = self::allowedContactByHandle($importer, $sender, true);
                if (!$contact) {
                        return false;
                }
 
-               $message_id = self::message_exists($importer["uid"], $guid);
+               $message_id = self::messageExists($importer["uid"], $guid);
                if ($message_id) {
                        return true;
                }
 
-               $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact);
+               $parent_item = self::parentItem($importer["uid"], $parent_guid, $author, $contact);
                if (!$parent_item) {
                        return false;
                }
 
-               $person = self::person_by_handle($author);
+               $person = self::personByHandle($author);
                if (!is_array($person)) {
                        logger("unable to find author details");
                        return false;
                }
 
                // Fetch the contact id - if we know this contact
-               $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]);
+               $author_contact = self::authorContactByUrl($contact, $person, $importer["uid"]);
 
                $datarray = array();
 
@@ -1653,7 +1655,7 @@ class Diaspora
                $datarray["owner-avatar"] = ((x($contact, "thumb")) ? $contact["thumb"] : $contact["photo"]);
 
                $datarray["guid"] = $guid;
-               $datarray["uri"] = self::get_uri_from_guid($author, $guid);
+               $datarray["uri"] = self::getUriFromGuid($author, $guid);
 
                $datarray["type"] = "remote-comment";
                $datarray["verb"] = ACTIVITY_POST;
@@ -1676,9 +1678,9 @@ class Diaspora
 
                $body = diaspora2bb($text);
 
-               $datarray["body"] = self::replace_people_guid($body, $person["url"]);
+               $datarray["body"] = self::replacePeopleGuid($body, $person["url"]);
 
-               self::fetch_guid($datarray);
+               self::fetchGuid($datarray);
 
                $message_id = item_store($datarray);
 
@@ -1715,7 +1717,7 @@ class Diaspora
         *
         * @return bool "true" if it was successful
         */
-       private static function receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation)
+       private static function receiveConversationMessage($importer, $contact, $data, $msg, $mesg, $conversation)
        {
                $author = notags(unxmlify($data->author));
                $guid = notags(unxmlify($data->guid));
@@ -1744,7 +1746,7 @@ class Diaspora
                $body = diaspora2bb($msg_text);
                $message_uri = $msg_author.":".$msg_guid;
 
-               $person = self::person_by_handle($msg_author);
+               $person = self::personByHandle($msg_author);
 
                dba::lock('mail');
 
@@ -1794,8 +1796,8 @@ class Diaspora
                        "source_link" => $person["url"],
                        "source_photo" => $person["thumb"],
                        "verb" => ACTIVITY_POST,
-                       "otype" => "mail"
-               ));
+                       "otype" => "mail")
+               );
                return true;
        }
 
@@ -1808,7 +1810,7 @@ class Diaspora
         *
         * @return bool Success
         */
-       private static function receive_conversation($importer, $msg, $data)
+       private static function receiveConversation($importer, $msg, $data)
        {
                $author = notags(unxmlify($data->author));
                $guid = notags(unxmlify($data->guid));
@@ -1823,7 +1825,7 @@ class Diaspora
                        return false;
                }
 
-               $contact = self::allowed_contact_by_handle($importer, $msg["author"], true);
+               $contact = self::allowedContactByHandle($importer, $msg["author"], true);
                if (!$contact) {
                        return false;
                }
@@ -1867,7 +1869,7 @@ class Diaspora
                }
 
                foreach ($messages as $mesg) {
-                       self::receive_conversation_message($importer, $contact, $data, $msg, $mesg, $conversation);
+                       self::receiveConversationMessage($importer, $contact, $data, $msg, $mesg, $conversation);
                }
 
                return true;
@@ -1882,7 +1884,8 @@ class Diaspora
         *
         * @return string the body
         */
-       private static function construct_like_body($contact, $parent_item, $guid) {
+       private static function constructLikeBody($contact, $parent_item, $guid)
+       {
                $bodyverb = t('%1$s likes %2$s\'s %3$s');
 
                $ulink = "[url=".$contact["url"]."]".$contact["name"]."[/url]";
@@ -1900,7 +1903,7 @@ class Diaspora
         *
         * @return string The XML
         */
-       private static function construct_like_object($importer, $parent_item)
+       private static function constructLikeObject($importer, $parent_item)
        {
                $objtype = ACTIVITY_OBJ_NOTE;
                $link = '<link rel="alternate" type="text/html" href="'.System::baseUrl()."/display/".$importer["nickname"]."/".$parent_item["id"].'" />';
@@ -1925,7 +1928,7 @@ class Diaspora
         *
         * @return int The message id of the generated like or "false" if there was an error
         */
-       private static function receive_like($importer, $sender, $data)
+       private static function receiveLike($importer, $sender, $data)
        {
                $author = notags(unxmlify($data->author));
                $guid = notags(unxmlify($data->guid));
@@ -1939,29 +1942,29 @@ class Diaspora
                        return false;
                }
 
-               $contact = self::allowed_contact_by_handle($importer, $sender, true);
+               $contact = self::allowedContactByHandle($importer, $sender, true);
                if (!$contact) {
                        return false;
                }
 
-               $message_id = self::message_exists($importer["uid"], $guid);
+               $message_id = self::messageExists($importer["uid"], $guid);
                if ($message_id) {
                        return true;
                }
 
-               $parent_item = self::parent_item($importer["uid"], $parent_guid, $author, $contact);
+               $parent_item = self::parentItem($importer["uid"], $parent_guid, $author, $contact);
                if (!$parent_item) {
                        return false;
                }
 
-               $person = self::person_by_handle($author);
+               $person = self::personByHandle($author);
                if (!is_array($person)) {
                        logger("unable to find author details");
                        return false;
                }
 
                // Fetch the contact id - if we know this contact
-               $author_contact = self::author_contact_by_url($contact, $person, $importer["uid"]);
+               $author_contact = self::authorContactByUrl($contact, $person, $importer["uid"]);
 
                // "positive" = "false" would be a Dislike - wich isn't currently supported by Diaspora
                // We would accept this anyhow.
@@ -1988,7 +1991,7 @@ class Diaspora
                $datarray["owner-avatar"] = ((x($contact, "thumb")) ? $contact["thumb"] : $contact["photo"]);
 
                $datarray["guid"] = $guid;
-               $datarray["uri"] = self::get_uri_from_guid($author, $guid);
+               $datarray["uri"] = self::getUriFromGuid($author, $guid);
 
                $datarray["type"] = "activity";
                $datarray["verb"] = $verb;
@@ -1996,9 +1999,9 @@ class Diaspora
                $datarray["parent-uri"] = $parent_item["uri"];
 
                $datarray["object-type"] = ACTIVITY_OBJ_NOTE;
-               $datarray["object"] = self::construct_like_object($importer, $parent_item);
+               $datarray["object"] = self::constructLikeObject($importer, $parent_item);
 
-               $datarray["body"] = self::construct_like_body($contact, $parent_item, $guid);
+               $datarray["body"] = self::constructLikeBody($contact, $parent_item, $guid);
 
                $message_id = item_store($datarray);
 
@@ -2039,7 +2042,7 @@ class Diaspora
         *
         * @return bool Success?
         */
-       private static function receive_message($importer, $data)
+       private static function receiveMessage($importer, $data)
        {
                $author = notags(unxmlify($data->author));
                $guid = notags(unxmlify($data->guid));
@@ -2047,7 +2050,7 @@ class Diaspora
                $text = unxmlify($data->text);
                $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
 
-               $contact = self::allowed_contact_by_handle($importer, $author, true);
+               $contact = self::allowedContactByHandle($importer, $author, true);
                if (!$contact) {
                        return false;
                }
@@ -2068,7 +2071,7 @@ class Diaspora
 
                $message_uri = $author.":".$guid;
 
-               $person = self::person_by_handle($author);
+               $person = self::personByHandle($author);
                if (!$person) {
                        logger("unable to find author details");
                        return false;
@@ -2076,7 +2079,7 @@ class Diaspora
 
                $body = diaspora2bb($text);
 
-               $body = self::replace_people_guid($body, $person["url"]);
+               $body = self::replacePeopleGuid($body, $person["url"]);
 
                dba::lock('mail');
 
@@ -2123,7 +2126,7 @@ class Diaspora
         *
         * @return bool always true
         */
-       private static function receive_participation($importer, $data)
+       private static function receiveParticipation($importer, $data)
        {
                // I'm not sure if we can fully support this message type
                return true;
@@ -2137,7 +2140,7 @@ class Diaspora
         *
         * @return bool always true
         */
-       private static function receive_photo($importer, $data)
+       private static function receivePhoto($importer, $data)
        {
                // There doesn't seem to be a reason for this function,
                // since the photo data is transmitted in the status message as well
@@ -2152,7 +2155,7 @@ class Diaspora
         *
         * @return bool always true
         */
-       private static function receive_poll_participation($importer, $data)
+       private static function receivePollParticipation($importer, $data)
        {
                // We don't support polls by now
                return true;
@@ -2166,11 +2169,11 @@ class Diaspora
         *
         * @return bool Success
         */
-       private static function receive_profile($importer, $data)
+       private static function receiveProfile($importer, $data)
        {
                $author = strtolower(notags(unxmlify($data->author)));
 
-               $contact = self::contact_by_handle($importer["uid"], $author);
+               $contact = self::contactByHandle($importer["uid"], $author);
                if (!$contact) {
                        return false;
                }
@@ -2261,8 +2264,9 @@ class Diaspora
         *
         * @param array $importer Array of the importer user
         * @param array $contact  The contact that send the request
+        * @return void
         */
-       private static function receive_request_make_friend($importer, $contact)
+       private static function receiveRequestMakeFriend($importer, $contact)
        {
                $a = get_app();
 
@@ -2281,7 +2285,6 @@ class Diaspora
                );
 
                if ($r && !$r[0]["hide-friends"] && !$contact["hidden"] && intval(PConfig::get($importer["uid"], "system", "post_newfriend"))) {
-
                        $self = q(
                                "SELECT * FROM `contact` WHERE `self` AND `uid` = %d LIMIT 1",
                                intval($importer["uid"])
@@ -2310,7 +2313,7 @@ class Diaspora
                                $BPhoto = "[url=".$contact["url"]."][img]".$contact["thumb"]."[/img][/url]";
                                $arr["body"] = sprintf(t("%1$s is now friends with %2$s"), $A, $B)."\n\n\n".$Bphoto;
 
-                               $arr["object"] = self::construct_new_friend_object($contact);
+                               $arr["object"] = self::constructNewFriendObject($contact);
 
                                $arr["last-child"] = 1;
 
@@ -2334,7 +2337,7 @@ class Diaspora
         *
         * @return string The XML
         */
-       private static function construct_new_friend_object($contact)
+       private static function constructNewFriendObject($contact)
        {
                $objtype = ACTIVITY_OBJ_PERSON;
                $link = '<link rel="alternate" type="text/html" href="'.$contact["url"].'" />'."\n".
@@ -2356,7 +2359,7 @@ class Diaspora
         *
         * @return bool Success
         */
-       private static function receive_contact_request($importer, $data)
+       private static function receiveContactRequest($importer, $data)
        {
                $author = unxmlify($data->author);
                $recipient = unxmlify($data->recipient);
@@ -2379,17 +2382,17 @@ class Diaspora
                        $sharing = true;
                }
 
-               $contact = self::contact_by_handle($importer["uid"], $author);
+               $contact = self::contactByHandle($importer["uid"], $author);
 
                // perhaps we were already sharing with this person. Now they're sharing with us.
                // That makes us friends.
                if ($contact) {
                        if ($following) {
                                logger("Author ".$author." (Contact ".$contact["id"].") wants to follow us.", LOGGER_DEBUG);
-                               self::receive_request_make_friend($importer, $contact);
+                               self::receiveRequestMakeFriend($importer, $contact);
 
                                // refetch the contact array
-                               $contact = self::contact_by_handle($importer["uid"], $author);
+                               $contact = self::contactByHandle($importer["uid"], $author);
 
                                // If we are now friends, we are sending a share message.
                                // Normally we needn't to do so, but the first message could have been vanished.
@@ -2397,7 +2400,7 @@ class Diaspora
                                        $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"]));
                                        if ($u) {
                                                logger("Sending share message to author ".$author." - Contact: ".$contact["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
-                                               $ret = self::send_share($u[0], $contact);
+                                               $ret = self::sendShare($u[0], $contact);
                                        }
                                }
                                return true;
@@ -2422,7 +2425,7 @@ class Diaspora
                        logger("Author ".$author." wants to listen to us.", LOGGER_DEBUG);
                }
 
-               $ret = self::person_by_handle($author);
+               $ret = self::personByHandle($author);
 
                if (!$ret || ($ret["network"] != NETWORK_DIASPORA)) {
                        logger("Cannot resolve diaspora handle ".$author." for ".$recipient);
@@ -2453,7 +2456,7 @@ class Diaspora
 
                // find the contact record we just created
 
-               $contact_record = self::contact_by_handle($importer["uid"], $author);
+               $contact_record = self::contactByHandle($importer["uid"], $author);
 
                if (!$contact_record) {
                        logger("unable to locate newly created contact record.");
@@ -2523,10 +2526,10 @@ class Diaspora
                        $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"]));
                        if ($u) {
                                logger("Sending share message (Relation: ".$new_relation.") to author ".$author." - Contact: ".$contact_record["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
-                               $ret = self::send_share($u[0], $contact_record);
+                               $ret = self::sendShare($u[0], $contact_record);
 
                                // Send the profile data, maybe it weren't transmitted before
-                               self::send_profile($importer["uid"], array($contact_record));
+                               self::sendProfile($importer["uid"], array($contact_record));
                        }
                }
 
@@ -2542,7 +2545,7 @@ class Diaspora
         *
         * @return array The fetched item
         */
-       private static function original_item($guid, $orig_author, $author)
+       private static function originalItem($guid, $orig_author, $author)
        {
                // Do we already have this item?
                $r = q(
@@ -2558,12 +2561,12 @@ class Diaspora
                        // Maybe it is already a reshared item?
                        // Then refetch the content, if it is a reshare from a reshare.
                        // If it is a reshared post from another network then reformat to avoid display problems with two share elements
-                       if (self::is_reshare($r[0]["body"], true)) {
+                       if (self::isReshare($r[0]["body"], true)) {
                                $r = array();
-                       } elseif (self::is_reshare($r[0]["body"], false) || strstr($r[0]["body"], "[share")) {
+                       } elseif (self::isReshare($r[0]["body"], false) || strstr($r[0]["body"], "[share")) {
                                $r[0]["body"] = diaspora2bb(bb2diaspora($r[0]["body"]));
 
-                               $r[0]["body"] = self::replace_people_guid($r[0]["body"], $r[0]["author-link"]);
+                               $r[0]["body"] = self::replacePeopleGuid($r[0]["body"], $r[0]["author-link"]);
 
                                // Add OEmbed and other information to the body
                                $r[0]["body"] = add_page_info_to_body($r[0]["body"], false, true);
@@ -2577,12 +2580,12 @@ class Diaspora
                if (!DBM::is_result($r)) {
                        $server = "https://".substr($orig_author, strpos($orig_author, "@") + 1);
                        logger("1st try: reshared message ".$guid." will be fetched via SSL from the server ".$server);
-                       $item_id = self::store_by_guid($guid, $server);
+                       $item_id = self::storeByGuid($guid, $server);
 
                        if (!$item_id) {
                                $server = "http://".substr($orig_author, strpos($orig_author, "@") + 1);
                                logger("2nd try: reshared message ".$guid." will be fetched without SLL from the server ".$server);
-                               $item_id = self::store_by_guid($guid, $server);
+                               $item_id = self::storeByGuid($guid, $server);
                        }
 
                        if ($item_id) {
@@ -2595,9 +2598,9 @@ class Diaspora
 
                                if (DBM::is_result($r)) {
                                        // If it is a reshared post from another network then reformat to avoid display problems with two share elements
-                                       if (self::is_reshare($r[0]["body"], false)) {
+                                       if (self::isReshare($r[0]["body"], false)) {
                                                $r[0]["body"] = diaspora2bb(bb2diaspora($r[0]["body"]));
-                                               $r[0]["body"] = self::replace_people_guid($r[0]["body"], $r[0]["author-link"]);
+                                               $r[0]["body"] = self::replacePeopleGuid($r[0]["body"], $r[0]["author-link"]);
                                        }
 
                                        return $r[0];
@@ -2616,7 +2619,7 @@ class Diaspora
         *
         * @return int the message id
         */
-       private static function receive_reshare($importer, $data, $xml)
+       private static function receiveReshare($importer, $data, $xml)
        {
                $author = notags(unxmlify($data->author));
                $guid = notags(unxmlify($data->guid));
@@ -2626,17 +2629,17 @@ class Diaspora
                /// @todo handle unprocessed property "provider_display_name"
                $public = notags(unxmlify($data->public));
 
-               $contact = self::allowed_contact_by_handle($importer, $author, false);
+               $contact = self::allowedContactByHandle($importer, $author, false);
                if (!$contact) {
                        return false;
                }
 
-               $message_id = self::message_exists($importer["uid"], $guid);
+               $message_id = self::messageExists($importer["uid"], $guid);
                if ($message_id) {
                        return true;
                }
 
-               $original_item = self::original_item($root_guid, $root_author, $author);
+               $original_item = self::originalItem($root_guid, $root_author, $author);
                if (!$original_item) {
                        return false;
                }
@@ -2658,7 +2661,7 @@ class Diaspora
                $datarray["owner-avatar"] = $datarray["author-avatar"];
 
                $datarray["guid"] = $guid;
-               $datarray["uri"] = $datarray["parent-uri"] = self::get_uri_from_guid($author, $guid);
+               $datarray["uri"] = $datarray["parent-uri"] = self::getUriFromGuid($author, $guid);
 
                $datarray["verb"] = ACTIVITY_POST;
                $datarray["gravity"] = GRAVITY_PARENT;
@@ -2685,7 +2688,7 @@ class Diaspora
 
                $datarray["object-type"] = $original_item["object-type"];
 
-               self::fetch_guid($datarray);
+               self::fetchGuid($datarray);
                $message_id = item_store($datarray);
 
                if ($message_id) {
@@ -2705,13 +2708,13 @@ class Diaspora
         *
         * @return bool success
         */
-       private static function item_retraction($importer, $contact, $data)
+       private static function itemRetraction($importer, $contact, $data)
        {
                $author = notags(unxmlify($data->author));
                $target_guid = notags(unxmlify($data->target_guid));
                $target_type = notags(unxmlify($data->target_type));
 
-               $person = self::person_by_handle($author);
+               $person = self::personByHandle($author);
                if (!is_array($person)) {
                        logger("unable to find author detail for ".$author);
                        return false;
@@ -2785,11 +2788,11 @@ class Diaspora
         *
         * @return bool Success
         */
-       private static function receive_retraction($importer, $sender, $data)
+       private static function receiveRetraction($importer, $sender, $data)
        {
                $target_type = notags(unxmlify($data->target_type));
 
-               $contact = self::contact_by_handle($importer["uid"], $sender);
+               $contact = self::contactByHandle($importer["uid"], $sender);
                if (!$contact && (in_array($target_type, array("Contact", "Person")))) {
                        logger("cannot find contact for sender: ".$sender." and user ".$importer["uid"]);
                        return false;
@@ -2803,7 +2806,7 @@ class Diaspora
                        case "Post":
                        case "Reshare":
                        case "StatusMessage":
-                               return self::item_retraction($importer, $contact, $data);
+                               return self::itemRetraction($importer, $contact, $data);
 
                        case "Contact":
                        case "Person":
@@ -2828,7 +2831,7 @@ class Diaspora
         *
         * @return int The message id of the newly created item
         */
-       private static function receive_status_message($importer, $data, $xml)
+       private static function receiveStatusMessage($importer, $data, $xml)
        {
                $author = notags(unxmlify($data->author));
                $guid = notags(unxmlify($data->guid));
@@ -2837,12 +2840,12 @@ class Diaspora
                $text = unxmlify($data->text);
                $provider_display_name = notags(unxmlify($data->provider_display_name));
 
-               $contact = self::allowed_contact_by_handle($importer, $author, false);
+               $contact = self::allowedContactByHandle($importer, $author, false);
                if (!$contact) {
                        return false;
                }
 
-               $message_id = self::message_exists($importer["uid"], $guid);
+               $message_id = self::messageExists($importer["uid"], $guid);
                if ($message_id) {
                        return true;
                }
@@ -2870,7 +2873,7 @@ class Diaspora
                        $datarray["object-type"] = ACTIVITY_OBJ_NOTE;
 
                        // Add OEmbed and other information to the body
-                       if (!self::is_redmatrix($contact["url"])) {
+                       if (!self::isRedmatrix($contact["url"])) {
                                $body = add_page_info_to_body($body, false, true);
                        }
                }
@@ -2897,7 +2900,7 @@ class Diaspora
                $datarray["owner-avatar"] = $datarray["author-avatar"];
 
                $datarray["guid"] = $guid;
-               $datarray["uri"] = $datarray["parent-uri"] = self::get_uri_from_guid($author, $guid);
+               $datarray["uri"] = $datarray["parent-uri"] = self::getUriFromGuid($author, $guid);
 
                $datarray["verb"] = ACTIVITY_POST;
                $datarray["gravity"] = GRAVITY_PARENT;
@@ -2905,7 +2908,7 @@ class Diaspora
                $datarray["protocol"] = PROTOCOL_DIASPORA;
                $datarray["source"] = $xml;
 
-               $datarray["body"] = self::replace_people_guid($body, $contact["url"]);
+               $datarray["body"] = self::replacePeopleGuid($body, $contact["url"]);
 
                if ($provider_display_name != "") {
                        $datarray["app"] = $provider_display_name;
@@ -2923,7 +2926,7 @@ class Diaspora
                        $datarray["coord"] = $address["lat"]." ".$address["lng"];
                }
 
-               self::fetch_guid($datarray);
+               self::fetchGuid($datarray);
                $message_id = item_store($datarray);
 
                if ($message_id) {
@@ -2945,7 +2948,7 @@ class Diaspora
         *
         * @return string the handle in the format user@domain.tld
         */
-       private static function my_handle($contact)
+       private static function myHandle($contact)
        {
                if ($contact["addr"] != "") {
                        return $contact["addr"];
@@ -2974,7 +2977,7 @@ class Diaspora
         *
         * @return string The encrypted data
         */
-       public static function encode_private_data($msg, $user, $contact, $prvkey, $pubkey)
+       public static function encodePrivateData($msg, $user, $contact, $prvkey, $pubkey)
        {
                logger("Message: ".$msg, LOGGER_DATA);
 
@@ -2989,7 +2992,7 @@ class Diaspora
                $iv = openssl_random_pseudo_bytes(16);
                $b_iv = base64_encode($iv);
 
-               $ciphertext = self::aes_encrypt($aes_key, $iv, $msg);
+               $ciphertext = self::aesEncrypt($aes_key, $iv, $msg);
 
                $json = json_encode(array("iv" => $b_iv, "key" => $b_aes_key));
 
@@ -3012,12 +3015,12 @@ class Diaspora
         *
         * @return string The envelope
         */
-       public static function build_magic_envelope($msg, $user)
+       public static function buildMagicEnvelope($msg, $user)
        {
                $b64url_data = base64url_encode($msg);
                $data = str_replace(array("\n", "\r", " ", "\t"), array("", "", "", ""), $b64url_data);
 
-               $key_id = base64url_encode(self::my_handle($user));
+               $key_id = base64url_encode(self::myHandle($user));
                $type = "application/xml";
                $encoding = "base64url";
                $alg = "RSA-SHA256";
@@ -3055,14 +3058,14 @@ class Diaspora
         *
         * @return string The message that will be transmitted to other servers
         */
-       private static function build_message($msg, $user, $contact, $prvkey, $pubkey, $public = false)
+       private static function buildMessage($msg, $user, $contact, $prvkey, $pubkey, $public = false)
        {
                // The message is put into an envelope with the sender's signature
-               $envelope = self::build_magic_envelope($msg, $user);
+               $envelope = self::buildMagicEnvelope($msg, $user);
 
                // Private messages are put into a second envelope, encrypted with the receivers public key
                if (!$public) {
-                       $envelope = self::encode_private_data($envelope, $user, $contact, $prvkey, $pubkey);
+                       $envelope = self::encodePrivateData($envelope, $user, $contact, $prvkey, $pubkey);
                }
 
                return $envelope;
@@ -3169,7 +3172,7 @@ class Diaspora
         *
         * @return string The post XML
         */
-       public static function build_post_xml($type, $message)
+       public static function buildPostXml($type, $message)
        {
                $data = array($type => $message);
 
@@ -3189,9 +3192,9 @@ class Diaspora
         *
         * @return int Result of the transmission
         */
-       private static function build_and_transmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false)
+       private static function buildAndTransmit($owner, $contact, $type, $message, $public_batch = false, $guid = "", $spool = false)
        {
-               $msg = self::build_post_xml($type, $message);
+               $msg = self::buildPostXml($type, $message);
 
                logger('message: '.$msg, LOGGER_DATA);
                logger('send guid '.$guid, LOGGER_DEBUG);
@@ -3201,7 +3204,7 @@ class Diaspora
                        $owner['uprvkey'] = $owner['prvkey'];
                }
 
-               $envelope = self::build_message($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch);
+               $envelope = self::buildMessage($msg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], $public_batch);
 
                if ($spool) {
                        add_to_queue($contact['id'], NETWORK_DIASPORA, $envelope, $public_batch);
@@ -3238,7 +3241,7 @@ class Diaspora
 
                logger("Send account migration ".print_r($message, true), LOGGER_DEBUG);
 
-               return self::build_and_transmit($owner, $contact, "account_migration", $message);
+               return self::buildAndTransmit($owner, $contact, "account_migration", $message);
        }
 
        /**
@@ -3249,13 +3252,13 @@ class Diaspora
         *
         * @return int The result of the transmission
         */
-       public static function send_share($owner, $contact)
+       public static function sendShare($owner, $contact)
        {
                /**
                 * @todo support the different possible combinations of "following" and "sharing"
                 * Currently, Diaspora only interprets the "sharing" field
                 *
-                * Before switching this code productive, we have to check all "send_share" calls if "rel" is set correctly
+                * Before switching this code productive, we have to check all "sendShare" calls if "rel" is set correctly
                 */
 
                /*
@@ -3272,14 +3275,14 @@ class Diaspora
                }
                */
 
-               $message = array("author" => self::my_handle($owner),
+               $message = array("author" => self::myHandle($owner),
                                "recipient" => $contact["addr"],
                                "following" => "true",
                                "sharing" => "true");
 
                logger("Send share ".print_r($message, true), LOGGER_DEBUG);
 
-               return self::build_and_transmit($owner, $contact, "contact", $message);
+               return self::buildAndTransmit($owner, $contact, "contact", $message);
        }
 
        /**
@@ -3292,14 +3295,14 @@ class Diaspora
         */
        public static function sendUnshare($owner, $contact)
        {
-               $message = array("author" => self::my_handle($owner),
+               $message = array("author" => self::myHandle($owner),
                                "recipient" => $contact["addr"],
                                "following" => "false",
                                "sharing" => "false");
 
                logger("Send unshare ".print_r($message, true), LOGGER_DEBUG);
 
-               return self::build_and_transmit($owner, $contact, "contact", $message);
+               return self::buildAndTransmit($owner, $contact, "contact", $message);
        }
 
        /**
@@ -3310,7 +3313,7 @@ class Diaspora
         *
         * @return array|bool Reshare details or "false" if no reshare
         */
-       public static function is_reshare($body, $complete = true)
+       public static function isReshare($body, $complete = true)
        {
                $body = trim($body);
 
@@ -3356,7 +3359,7 @@ class Diaspora
                        );
                        if ($r) {
                                $ret= array();
-                               $ret["root_handle"] = self::handle_from_contact($r[0]["contact-id"]);
+                               $ret["root_handle"] = self::handleFromContact($r[0]["contact-id"]);
                                $ret["root_guid"] = $guid;
                                return($ret);
                        }
@@ -3406,7 +3409,7 @@ class Diaspora
         *
         * @return array with event data
         */
-       private static function build_event($event_id)
+       private static function buildEvent($event_id)
        {
                $r = q("SELECT `guid`, `uid`, `start`, `finish`, `nofinish`, `summary`, `desc`, `location`, `adjust` FROM `event` WHERE `id` = %d", intval($event_id));
                if (!DBM::is_result($r)) {
@@ -3431,7 +3434,7 @@ class Diaspora
 
                $owner = $r[0];
 
-               $eventdata['author'] = self::my_handle($owner);
+               $eventdata['author'] = self::myHandle($owner);
 
                if ($event['guid']) {
                        $eventdata['guid'] = $event['guid'];
@@ -3483,23 +3486,23 @@ class Diaspora
         * 'type' -> Message type ("status_message" or "reshare")
         * 'message' -> Array of XML elements of the status
         */
-       public static function build_status($item, $owner)
+       public static function buildStatus($item, $owner)
        {
-               $cachekey = "diaspora:build_status:".$item['guid'];
+               $cachekey = "diaspora:buildStatus:".$item['guid'];
 
                $result = Cache::get($cachekey);
                if (!is_null($result)) {
                        return $result;
                }
 
-               $myaddr = self::my_handle($owner);
+               $myaddr = self::myHandle($owner);
 
                $public = (($item["private"]) ? "false" : "true");
 
                $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d\TH:i:s\Z');
 
                // Detect a share element and do a reshare
-               if (!$item['private'] && ($ret = self::is_reshare($item["body"]))) {
+               if (!$item['private'] && ($ret = self::isReshare($item["body"]))) {
                        $message = array("author" => $myaddr,
                                        "guid" => $item["guid"],
                                        "created_at" => $created,
@@ -3556,7 +3559,7 @@ class Diaspora
                        }
 
                        if ($item['event-id'] > 0) {
-                               $event = self::build_event($item['event-id']);
+                               $event = self::buildEvent($item['event-id']);
                                if (count($event)) {
                                        $message['event'] = $event;
 
@@ -3585,11 +3588,11 @@ class Diaspora
         *
         * @return int The result of the transmission
         */
-       public static function send_status($item, $owner, $contact, $public_batch = false)
+       public static function sendStatus($item, $owner, $contact, $public_batch = false)
        {
-               $status = self::build_status($item, $owner);
+               $status = self::buildStatus($item, $owner);
 
-               return self::build_and_transmit($owner, $contact, $status["type"], $status["message"], $public_batch, $item["guid"]);
+               return self::buildAndTransmit($owner, $contact, $status["type"], $status["message"], $public_batch, $item["guid"]);
        }
 
        /**
@@ -3600,7 +3603,7 @@ class Diaspora
         *
         * @return array The data for a "like"
         */
-       private static function construct_like($item, $owner)
+       private static function constructLike($item, $owner)
        {
                $p = q(
                        "SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1",
@@ -3619,7 +3622,7 @@ class Diaspora
                        $positive = "false";
                }
 
-               return(array("author" => self::my_handle($owner),
+               return(array("author" => self::myHandle($owner),
                                "guid" => $item["guid"],
                                "parent_guid" => $parent["guid"],
                                "parent_type" => $target_type,
@@ -3635,8 +3638,8 @@ class Diaspora
         *
         * @return array The data for an "EventParticipation"
         */
-       private static function construct_attend($item, $owner) {
-
+       private static function constructAttend($item, $owner)
+       {
                $p = q(
                        "SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1",
                        dbesc($item["thr-parent"])
@@ -3662,7 +3665,7 @@ class Diaspora
                                return false;
                }
 
-               return(array("author" => self::my_handle($owner),
+               return(array("author" => self::myHandle($owner),
                                "guid" => $item["guid"],
                                "parent_guid" => $parent["guid"],
                                "status" => $attend_answer,
@@ -3677,9 +3680,9 @@ class Diaspora
         *
         * @return array The data for a comment
         */
-       private static function construct_comment($item, $owner)
+       private static function constructComment($item, $owner)
        {
-               $cachekey = "diaspora:construct_comment:".$item['guid'];
+               $cachekey = "diaspora:constructComment:".$item['guid'];
 
                $result = Cache::get($cachekey);
                if (!is_null($result)) {
@@ -3701,7 +3704,7 @@ class Diaspora
                $text = html_entity_decode(bb2diaspora($item["body"]));
                $created = datetime_convert("UTC", "UTC", $item["created"], 'Y-m-d\TH:i:s\Z');
 
-               $comment = array("author" => self::my_handle($owner),
+               $comment = array("author" => self::myHandle($owner),
                                "guid" => $item["guid"],
                                "created_at" => $created,
                                "parent_guid" => $parent["guid"],
@@ -3710,7 +3713,7 @@ class Diaspora
 
                // Send the thread parent guid only if it is a threaded comment
                if ($item['thr-parent'] != $item['parent-uri']) {
-                       $comment['thread_parent_guid'] = self::get_guid_from_uri($item['thr-parent'], $item['uid']);
+                       $comment['thread_parent_guid'] = self::getGuidFromUri($item['thr-parent'], $item['uid']);
                }
 
                Cache::set($cachekey, $comment, CACHE_QUARTER_HOUR);
@@ -3728,16 +3731,16 @@ class Diaspora
         *
         * @return int The result of the transmission
         */
-       public static function send_followup($item, $owner, $contact, $public_batch = false)
+       public static function sendFollowup($item, $owner, $contact, $public_batch = false)
        {
                if (in_array($item['verb'], array(ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE))) {
-                       $message = self::construct_attend($item, $owner);
+                       $message = self::constructAttend($item, $owner);
                        $type = "event_participation";
                } elseif (in_array($item["verb"], array(ACTIVITY_LIKE, ACTIVITY_DISLIKE))) {
-                       $message = self::construct_like($item, $owner);
+                       $message = self::constructLike($item, $owner);
                        $type = "like";
                } else {
-                       $message = self::construct_comment($item, $owner);
+                       $message = self::constructComment($item, $owner);
                        $type = "comment";
                }
 
@@ -3747,7 +3750,7 @@ class Diaspora
 
                $message["author_signature"] = self::signature($owner, $message);
 
-               return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]);
+               return self::buildAndTransmit($owner, $contact, $type, $message, $public_batch, $item["guid"]);
        }
 
        /**
@@ -3758,7 +3761,7 @@ class Diaspora
         *
         * @return string The message
         */
-       private static function message_from_signature($item, $signature)
+       private static function messageFromSignature($item, $signature)
        {
                // Split the signed text
                $signed_parts = explode(";", $signature['signed_text']);
@@ -3808,10 +3811,10 @@ class Diaspora
         *
         * @return int The result of the transmission
         */
-       public static function send_relay($item, $owner, $contact, $public_batch = false)
+       public static function sendRelay($item, $owner, $contact, $public_batch = false)
        {
                if ($item["deleted"]) {
-                       return self::send_retraction($item, $owner, $contact, $public_batch, true);
+                       return self::sendRetraction($item, $owner, $contact, $public_batch, true);
                } elseif (in_array($item["verb"], array(ACTIVITY_LIKE, ACTIVITY_DISLIKE))) {
                        $type = "like";
                } else {
@@ -3837,13 +3840,13 @@ class Diaspora
                // Old way - is used by the internal Friendica functions
                /// @todo Change all signatur storing functions to the new format
                if ($signature['signed_text'] && $signature['signature'] && $signature['signer']) {
-                       $message = self::message_from_signature($item, $signature);
+                       $message = self::messageFromSignature($item, $signature);
                } else {// New way
                        $msg = json_decode($signature['signed_text'], true);
 
                        $message = array();
                        if (is_array($msg)) {
-                               foreach ($msg AS $field => $data) {
+                               foreach ($msg as $field => $data) {
                                        if (!$item["deleted"]) {
                                                if ($field == "diaspora_handle") {
                                                        $field = "author";
@@ -3864,7 +3867,7 @@ class Diaspora
 
                logger("Relayed data ".print_r($message, true), LOGGER_DEBUG);
 
-               return self::build_and_transmit($owner, $contact, $type, $message, $public_batch, $item["guid"]);
+               return self::buildAndTransmit($owner, $contact, $type, $message, $public_batch, $item["guid"]);
        }
 
        /**
@@ -3878,9 +3881,9 @@ class Diaspora
         *
         * @return int The result of the transmission
         */
-       public static function send_retraction($item, $owner, $contact, $public_batch = false, $relay = false)
+       public static function sendRetraction($item, $owner, $contact, $public_batch = false, $relay = false)
        {
-               $itemaddr = self::handle_from_contact($item["contact-id"], $item["gcontact-id"]);
+               $itemaddr = self::handleFromContact($item["contact-id"], $item["gcontact-id"]);
 
                $msg_type = "retraction";
 
@@ -3898,7 +3901,7 @@ class Diaspora
 
                logger("Got message ".print_r($message, true), LOGGER_DEBUG);
 
-               return self::build_and_transmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]);
+               return self::buildAndTransmit($owner, $contact, $msg_type, $message, $public_batch, $item["guid"]);
        }
 
        /**
@@ -3910,9 +3913,9 @@ class Diaspora
         *
         * @return int The result of the transmission
         */
-       public static function send_mail($item, $owner, $contact)
+       public static function sendMail($item, $owner, $contact)
        {
-               $myaddr = self::my_handle($owner);
+               $myaddr = self::myHandle($owner);
 
                $r = q(
                        "SELECT * FROM `conv` WHERE `id` = %d AND `uid` = %d LIMIT 1",
@@ -3960,7 +3963,7 @@ class Diaspora
                        $type = "conversation";
                }
 
-               return self::build_and_transmit($owner, $contact, $type, $message, false, $item["guid"]);
+               return self::buildAndTransmit($owner, $contact, $type, $message, false, $item["guid"]);
        }
 
        /**
@@ -4041,9 +4044,11 @@ class Diaspora
        /**
         * @brief Sends profile data
         *
-        * @param int $uid The user id
+        * @param int  $uid    The user id
+        * @param bool $recips optional, default false
+        * @return void
         */
-       public static function send_profile($uid, $recips = false)
+       public static function sendProfile($uid, $recips = false)
        {
                if (!$uid) {
                        return;
@@ -4067,7 +4072,7 @@ class Diaspora
 
                foreach ($recips as $recip) {
                        logger("Send updated profile data for user ".$uid." to contact ".$recip["id"], LOGGER_DEBUG);
-                       self::build_and_transmit($profile, $recip, "profile", $message, false, "", true);
+                       self::buildAndTransmit($profile, $recip, "profile", $message, false, "", true);
                }
        }
 
@@ -4079,7 +4084,7 @@ class Diaspora
         *
         * @return bool Success
         */
-       public static function store_like_signature($contact, $post_id)
+       public static function storeLikeSignature($contact, $post_id)
        {
                // Is the contact the owner? Then fetch the private key
                if (!$contact['self'] || ($contact['uid'] == 0)) {
@@ -4103,7 +4108,7 @@ class Diaspora
                        return false;
                }
 
-               $message = self::construct_like($r[0], $contact);
+               $message = self::constructLike($r[0], $contact);
                $message["author_signature"] = self::signature($contact, $message);
 
                /*
@@ -4126,7 +4131,7 @@ class Diaspora
         *
         * @return bool Success
         */
-       public static function store_comment_signature($item, $contact, $uprvkey, $message_id)
+       public static function storeCommentSignature($item, $contact, $uprvkey, $message_id)
        {
                if ($uprvkey == "") {
                        logger('No private key, so not storing comment signature', LOGGER_DEBUG);
@@ -4135,7 +4140,7 @@ class Diaspora
 
                $contact["uprvkey"] = $uprvkey;
 
-               $message = self::construct_comment($item, $contact);
+               $message = self::constructComment($item, $contact);
                $message["author_signature"] = self::signature($contact, $message);
 
                /*
index 7ff8f8f60c6692c93f91549cf7ed8a450a061912..ed762084c2668d83d55cd4e113006d9b16bf4213 100644 (file)
@@ -298,6 +298,7 @@ class OStatus
         * @param array  $importer user record of the importing user
         * @param array  $contact  contact
         * @param string $hub      Called by reference, returns the fetched hub data
+        * @return void
         */
        public static function import($xml, $importer, &$contact, &$hub)
        {
@@ -309,7 +310,7 @@ class OStatus
         *
         * @param string  $xml        The XML
         * @param array   $importer   user record of the importing user
-        * @param array   $contact
+        * @param array   $contact    contact
         * @param string  $hub        Called by reference, returns the fetched hub data
         * @param boolean $stored     Is the post fresh imported or from the database?
         * @param boolean $initialize Is it the leading post so that data has to be initialized?
@@ -537,6 +538,10 @@ class OStatus
                return true;
        }
 
+       /**
+        * @param object $item item
+        * @return void
+        */
        private static function deleteNotice($item)
        {
                $condition = array('uid' => $item['uid'], 'author-link' => $item['author-link'], 'uri' => $item['uri']);
@@ -567,6 +572,7 @@ class OStatus
         * @param object $entry    The xml entry that is processed
         * @param array  $item     The item array
         * @param array  $importer user record of the importing user
+        * @return void
         */
        private static function processPost($xpath, $entry, &$item, $importer)
        {
@@ -708,6 +714,7 @@ class OStatus
         *
         * @param string $conversation     The link to the conversation
         * @param string $conversation_uri The conversation in "uri" format
+        * @return void
         */
        private static function fetchConversation($conversation, $conversation_uri)
        {
@@ -768,6 +775,7 @@ class OStatus
         * @param string $xml              The feed
         * @param string $conversation     conversation
         * @param string $conversation_uri conversation uri
+        * @return void
         */
        private static function storeConversation($xml, $conversation = '', $conversation_uri = '')
        {
@@ -844,13 +852,14 @@ class OStatus
 
        /**
         * @brief Fetch the own post so that it can be stored later
-        * @param array  $item The item array
         *
         * We want to store the original data for later processing.
         * This function is meant for cases where we process a feed with multiple entries.
         * In that case we need to fetch the single posts here.
         *
         * @param string $self The link to the self item
+        * @param array  $item The item array
+        * @return void
         */
        private static function fetchSelf($self, &$item)
        {
@@ -885,6 +894,7 @@ class OStatus
         * @param string $related     The link to the related item
         * @param string $related_uri The related item in "uri" format
         * @param array  $importer    user record of the importing user
+        * @return void
         */
        private static function fetchRelated($related, $related_uri, $importer)
        {
@@ -1293,6 +1303,7 @@ class OStatus
         * @param object $doc  XML document
         * @param object $root XML root element where the hub links are added
         * @param object $nick nick
+        * @return void
         */
        public static function hublinks($doc, $root, $nick)
        {
@@ -1306,6 +1317,7 @@ class OStatus
         * @param object $doc  XML document
         * @param object $root XML root element where the hub links are added
         * @param array  $item Data of the item that is to be posted
+        * @return void
         */
        private static function getAttachment($doc, $root, $item)
        {
@@ -1582,7 +1594,7 @@ class OStatus
         * @param object $doc           XML document
         * @param array  $item          Data of the item that is to be posted
         * @param array  $owner         Contact data of the poster
-        * @param        $repeated_guid
+        * @param string $repeated_guid guid
         * @param bool   $toplevel      Is it for en entry element (false) or a feed entry (true)?
         *
         * @return object Entry element
@@ -1872,6 +1884,7 @@ class OStatus
         * @param string $title    Title for the post
         * @param string $verb     The activity verb
         * @param bool   $complete Add the "status_net" element?
+        * @return void
         */
        private static function entryContent($doc, $entry, $item, $owner, $title, $verb = "", $complete = true)
        {
@@ -1914,6 +1927,7 @@ class OStatus
         * @param array  $item     Data of the item that is to be posted
         * @param array  $owner    Contact data of the poster
         * @param bool   $complete default true
+        * @return void
         */
        private static function entryFooter($doc, $entry, $item, $owner, $complete = true)
        {
diff --git a/src/Util/ExAuth.php b/src/Util/ExAuth.php
new file mode 100644 (file)
index 0000000..aa3300c
--- /dev/null
@@ -0,0 +1,305 @@
+<?php\r
+\r
+/*\r
+ * ejabberd extauth script for the integration with friendica\r
+ *\r
+ * Originally written for joomla by Dalibor Karlovic <dado@krizevci.info>\r
+ * modified for Friendica by Michael Vogel <icarus@dabo.de>\r
+ * published under GPL\r
+ *\r
+ * Latest version of the original script for joomla is available at:\r
+ * http://87.230.15.86/~dado/ejabberd/joomla-login\r
+ *\r
+ * Installation:\r
+ *\r
+ *     - Change it's owner to whichever user is running the server, ie. ejabberd\r
+ *       $ chown ejabberd:ejabberd /path/to/friendica/scripts/auth_ejabberd.php\r
+ *\r
+ *     - Change the access mode so it is readable only to the user ejabberd and has exec\r
+ *       $ chmod 700 /path/to/friendica/scripts/auth_ejabberd.php\r
+ *\r
+ *     - Edit your ejabberd.cfg file, comment out your auth_method and add:\r
+ *       {auth_method, external}.\r
+ *       {extauth_program, "/path/to/friendica/script/auth_ejabberd.php"}.\r
+ *\r
+ *     - Restart your ejabberd service, you should be able to login with your friendica auth info\r
+ *\r
+ * Other hints:\r
+ *     - if your users have a space or a @ in their nickname, they'll run into trouble\r
+ *       registering with any client so they should be instructed to replace these chars\r
+ *       " " (space) is replaced with "%20"\r
+ *       "@" is replaced with "(a)"\r
+ *\r
+ */\r
+\r
+namespace Friendica\Util;\r
+\r
+use Friendica\Core\Config;\r
+use Friendica\Core\PConfig;\r
+use Friendica\Database\DBM;\r
+use dba;\r
+\r
+require_once 'include/dba.php';\r
+\r
+class ExAuth\r
+{\r
+       private $bDebug;\r
+\r
+       /**\r
+        * @brief Create the class\r
+        *\r
+        * @param boolean $bDebug Debug mode\r
+        */\r
+       public function __construct()\r
+       {\r
+               $this->bDebug = (int) Config::get('jabber', 'debug');\r
+\r
+               openlog('auth_ejabberd', LOG_PID, LOG_USER);\r
+\r
+               $this->writeLog(LOG_NOTICE, 'start');\r
+       }\r
+\r
+       /**\r
+        * @brief Standard input reading function, executes the auth with the provided\r
+        * parameters\r
+        *\r
+        * @return null\r
+        */\r
+       public function readStdin()\r
+       {\r
+               while (!feof(STDIN)) {\r
+                       // Quit if the database connection went down\r
+                       if (!dba::connected()) {\r
+                               $this->writeLog(LOG_ERR, 'the database connection went down');\r
+                               return;\r
+                       }\r
+\r
+                       $iHeader = fgets(STDIN, 3);\r
+                       $aLength = unpack('n', $iHeader);\r
+                       $iLength = $aLength['1'];\r
+\r
+                       // No data? Then quit\r
+                       if ($iLength == 0) {\r
+                               $this->writeLog(LOG_ERR, 'we got no data, quitting');\r
+                               return;\r
+                       }\r
+\r
+                       // Fetching the data\r
+                       $sData = fgets(STDIN, $iLength + 1);\r
+                       $this->writeLog(LOG_DEBUG, 'received data: ' . $sData);\r
+                       $aCommand = explode(':', $sData);\r
+                       if (is_array($aCommand)) {\r
+                               switch ($aCommand[0]) {\r
+                                       case 'isuser':\r
+                                               // Check the existance of a given username\r
+                                               $this->isUser($aCommand);\r
+                                               break;\r
+                                       case 'auth':\r
+                                               // Check if the givven password is correct\r
+                                               $this->auth($aCommand);\r
+                                               break;\r
+                                       case 'setpass':\r
+                                               // We don't accept the setting of passwords here\r
+                                               $this->writeLog(LOG_NOTICE, 'setpass command disabled');\r
+                                               fwrite(STDOUT, pack('nn', 2, 0));\r
+                                               break;\r
+                                       default:\r
+                                               // We don't know the given command\r
+                                               $this->writeLog(LOG_NOTICE, 'unknown command ' . $aCommand[0]);\r
+                                               fwrite(STDOUT, pack('nn', 2, 0));\r
+                                               break;\r
+                               }\r
+                       } else {\r
+                               $this->writeLog(LOG_NOTICE, 'invalid command string ' . $sData);\r
+                               fwrite(STDOUT, pack('nn', 2, 0));\r
+                       }\r
+               }\r
+       }\r
+\r
+       /**\r
+        * @brief Check if the given username exists\r
+        *\r
+        * @param array $aCommand The command array\r
+        */\r
+       private function isUser(array $aCommand)\r
+       {\r
+               $a = get_app();\r
+\r
+               // Check if there is a username\r
+               if (!isset($aCommand[1])) {\r
+                       $this->writeLog(LOG_NOTICE, 'invalid isuser command, no username given');\r
+                       fwrite(STDOUT, pack('nn', 2, 0));\r
+                       return;\r
+               }\r
+\r
+               // Now we check if the given user is valid\r
+               $sUser = str_replace(array('%20', '(a)'), array(' ', '@'), $aCommand[1]);\r
+\r
+               // Does the hostname match? So we try directly\r
+               if ($a->get_hostname() == $aCommand[2]) {\r
+                       $this->writeLog(LOG_INFO, 'internal user check for ' . $sUser . '@' . $aCommand[2]);\r
+                       $found = dba::exists('user', ['nickname' => $sUser]);\r
+               } else {\r
+                       $found = false;\r
+               }\r
+\r
+               // If the hostnames doesn't match or there is some failure, we try to check remotely\r
+               if (!$found) {\r
+                       $found = $this->checkUser($aCommand[2], $aCommand[1], true);\r
+               }\r
+\r
+               if ($found) {\r
+                       // The user is okay\r
+                       $this->writeLog(LOG_NOTICE, 'valid user: ' . $sUser);\r
+                       fwrite(STDOUT, pack('nn', 2, 1));\r
+               } else {\r
+                       // The user isn't okay\r
+                       $this->writeLog(LOG_WARNING, 'invalid user: ' . $sUser);\r
+                       fwrite(STDOUT, pack('nn', 2, 0));\r
+               }\r
+       }\r
+\r
+       /**\r
+        * @brief Check remote user existance via HTTP(S)\r
+        *\r
+        * @param string $host The hostname\r
+        * @param string $user Username\r
+        * @param boolean $ssl Should the check be done via SSL?\r
+        *\r
+        * @return boolean Was the user found?\r
+        */\r
+       private function checkUser($host, $user, $ssl)\r
+       {\r
+               $this->writeLog(LOG_INFO, 'external user check for ' . $user . '@' . $host);\r
+\r
+               $url = ($ssl ? 'https' : 'http') . '://' . $host . '/noscrape/' . $user;\r
+\r
+               $data = z_fetch_url($url);\r
+\r
+               if (!is_array($data)) {\r
+                       return false;\r
+               }\r
+\r
+               if ($data['return_code'] != '200') {\r
+                       return false;\r
+               }\r
+\r
+               $json = @json_decode($data['body']);\r
+               if (!is_object($json)) {\r
+                       return false;\r
+               }\r
+\r
+               return $json->nick == $user;\r
+       }\r
+\r
+       /**\r
+        * @brief Authenticate the given user and password\r
+        *\r
+        * @param array $aCommand The command array\r
+        */\r
+       private function auth(array $aCommand)\r
+       {\r
+               $a = get_app();\r
+\r
+               // check user authentication\r
+               if (sizeof($aCommand) != 4) {\r
+                       $this->writeLog(LOG_NOTICE, 'invalid auth command, data missing');\r
+                       fwrite(STDOUT, pack('nn', 2, 0));\r
+                       return;\r
+               }\r
+\r
+               // We now check if the password match\r
+               $sUser = str_replace(array('%20', '(a)'), array(' ', '@'), $aCommand[1]);\r
+\r
+               // Does the hostname match? So we try directly\r
+               if ($a->get_hostname() == $aCommand[2]) {\r
+                       $this->writeLog(LOG_INFO, 'internal auth for ' . $sUser . '@' . $aCommand[2]);\r
+\r
+                       $aUser = dba::select('user', ['uid', 'password'], ['nickname' => $sUser], ['limit' => 1]);\r
+                       if (DBM::is_result($aUser)) {\r
+                               $uid = $aUser['uid'];\r
+                               $Error = $aUser['password'] != hash('whirlpool', $aCommand[3]);\r
+                       } else {\r
+                               $this->writeLog(LOG_WARNING, 'user not found: ' . $sUser);\r
+                               $Error = true;\r
+                               $uid = -1;\r
+                       }\r
+                       if ($Error) {\r
+                               $this->writeLog(LOG_INFO, 'check against alternate password for ' . $sUser . '@' . $aCommand[2]);\r
+                               $sPassword = PConfig::get($uid, 'xmpp', 'password', null, true);\r
+                               $Error = ($aCommand[3] != $sPassword);\r
+                       }\r
+               } else {\r
+                       $Error = true;\r
+               }\r
+\r
+               // If the hostnames doesn't match or there is some failure, we try to check remotely\r
+               if ($Error) {\r
+                       $Error = !$this->checkCredentials($aCommand[2], $aCommand[1], $aCommand[3], true);\r
+               }\r
+\r
+               if ($Error) {\r
+                       $this->writeLog(LOG_WARNING, 'authentification failed for user ' . $sUser . '@' . $aCommand[2]);\r
+                       fwrite(STDOUT, pack('nn', 2, 0));\r
+               } else {\r
+                       $this->writeLog(LOG_NOTICE, 'authentificated user ' . $sUser . '@' . $aCommand[2]);\r
+                       fwrite(STDOUT, pack('nn', 2, 1));\r
+               }\r
+       }\r
+\r
+       /**\r
+        * @brief Check remote credentials via HTTP(S)\r
+        *\r
+        * @param string $host The hostname\r
+        * @param string $user Username\r
+        * @param string $password Password\r
+        * @param boolean $ssl Should the check be done via SSL?\r
+        *\r
+        * @return boolean Are the credentials okay?\r
+        */\r
+       private function checkCredentials($host, $user, $password, $ssl)\r
+       {\r
+               $url = ($ssl ? 'https' : 'http') . '://' . $host . '/api/account/verify_credentials.json';\r
+\r
+               $ch = curl_init();\r
+               curl_setopt($ch, CURLOPT_URL, $url);\r
+               curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r
+               curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);\r
+               curl_setopt($ch, CURLOPT_HEADER, true);\r
+               curl_setopt($ch, CURLOPT_NOBODY, true);\r
+               curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);\r
+               curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $password);\r
+\r
+               curl_exec($ch);\r
+               $curl_info = @curl_getinfo($ch);\r
+               $http_code = $curl_info['http_code'];\r
+               curl_close($ch);\r
+\r
+               $this->writeLog(LOG_INFO, 'external auth for ' . $user . '@' . $host . ' returned ' . $http_code);\r
+\r
+               return $http_code == 200;\r
+       }\r
+\r
+       /**\r
+        * @brief write data to the syslog\r
+        *\r
+        * @param integer $loglevel The syslog loglevel\r
+        * @param string $sMessage The syslog message\r
+        */\r
+       private function writeLog($loglevel, $sMessage)\r
+       {\r
+               if (!$this->bDebug && ($loglevel >= LOG_DEBUG)) {\r
+                       return;\r
+               }\r
+               syslog($loglevel, $sMessage);\r
+       }\r
+\r
+       /**\r
+        * @brief destroy the class, close the syslog connection.\r
+        */\r
+       public function __destruct()\r
+       {\r
+               $this->writeLog(LOG_NOTICE, 'stop');\r
+               closelog();\r
+       }\r
+}\r
index 08a1af6dcfad82693751dd8451185c9516b6a145..cbfa86ed88773e9b15e0ca6328a4a3970d3655f9 100644 (file)
@@ -155,14 +155,15 @@ class CronJobs {
                        if (!$cachetime) {
                                $cachetime = PROXY_DEFAULT_TIME;
                        }
-                       q('DELETE FROM `photo` WHERE `uid` = 0 AND `resource-id` LIKE "pic:%%" AND `created` < NOW() - INTERVAL %d SECOND', $cachetime);
+                       $condition = array('`uid` = 0 AND `resource-id` LIKE "pic:%" AND `created` < NOW() - INTERVAL ? SECOND', $cachetime);
+                       dba::delete('photo', $condition);
                }
 
-               // Delete the cached OEmbed entries that are older than one year
-               q("DELETE FROM `oembed` WHERE `created` < NOW() - INTERVAL 3 MONTH");
+               // Delete the cached OEmbed entries that are older than three month
+               dba::delete('oembed', array("`created` < NOW() - INTERVAL 3 MONTH"));
 
-               // Delete the cached "parse_url" entries that are older than one year
-               q("DELETE FROM `parsed_url` WHERE `created` < NOW() - INTERVAL 3 MONTH");
+               // Delete the cached "parse_url" entries that are older than three month
+               dba::delete('parsed_url', array("`created` < NOW() - INTERVAL 3 MONTH"));
 
                // Maximum table size in megabyte
                $max_tablesize = intval(Config::get('system','optimize_max_tablesize')) * 1000000;
index 14fe3027fc162c7d8ef800f321ed072674e0ad50..216d2520d95a97e37eb505272bd5391050607440 100644 (file)
@@ -485,7 +485,7 @@ class Delivery {
                                        break;
 
                                if ($mail) {
-                                       Diaspora::send_mail($item,$owner,$contact);
+                                       Diaspora::sendMail($item,$owner,$contact);
                                        break;
                                }
 
@@ -498,7 +498,7 @@ class Delivery {
                                if (($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) {
                                        // top-level retraction
                                        logger('diaspora retract: '.$loc);
-                                       Diaspora::send_retraction($target_item,$owner,$contact,$public_message);
+                                       Diaspora::sendRetraction($target_item,$owner,$contact,$public_message);
                                        break;
                                } elseif ($relocate) {
                                        Diaspora::sendAccountMigration($owner, $contact, $uid);
@@ -506,17 +506,17 @@ class Delivery {
                                } elseif ($followup) {
                                        // send comments and likes to owner to relay
                                        logger('diaspora followup: '.$loc);
-                                       Diaspora::send_followup($target_item,$owner,$contact,$public_message);
+                                       Diaspora::sendFollowup($target_item,$owner,$contact,$public_message);
                                        break;
                                } elseif ($target_item['uri'] !== $target_item['parent-uri']) {
                                        // we are the relay - send comments, likes and relayable_retractions to our conversants
                                        logger('diaspora relay: '.$loc);
-                                       Diaspora::send_relay($target_item,$owner,$contact,$public_message);
+                                       Diaspora::sendRelay($target_item,$owner,$contact,$public_message);
                                        break;
                                } elseif ($top_level && !$walltowall) {
                                        // currently no workable solution for sending walltowall
                                        logger('diaspora status: '.$loc);
-                                       Diaspora::send_status($target_item,$owner,$contact,$public_message);
+                                       Diaspora::sendStatus($target_item,$owner,$contact,$public_message);
                                        break;
                                }
 
index f3096e41a1ec0e8764667c1fdd26b347682fa773..ac8cf123c5a8d4e6a02109877b80a12b7bcf682e 100644 (file)
@@ -525,7 +525,7 @@ class Notifier {
 
                        if ($diaspora_delivery) {
                                if (!$followup) {
-                                       $r0 = Diaspora::relay_list();
+                                       $r0 = Diaspora::relayList();
                                }
 
                                $r1 = q("SELECT `batch`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`name`) AS `name`, ANY_VALUE(`network`) AS `network`
index 43c76965d6713bcdb8448b2af19a0afefcd8e66a..e33aa5d9a88ad6a2804d044f5242da1f8cbc4771 100644 (file)
@@ -14,6 +14,6 @@ class ProfileUpdate {
                        return;
                }
 
-               Diaspora::send_profile($uid);
+               Diaspora::sendProfile($uid);
        }
 }
diff --git a/util/bookmarklet-share2friendica/README.md b/util/bookmarklet-share2friendica/README.md
new file mode 100644 (file)
index 0000000..ad30baa
--- /dev/null
@@ -0,0 +1,47 @@
+# Bookmarklet-share2friendica
+
+Javascript bookmarklet to share websites with your friendica account
+
+## Getting Started
+
+### Installing
+
+Open the file bookmarklet-share2friendica.js and change 'YourFriendicaDoomain.tld" with your friendica domain
+
+If you friendica is at https://myfriend.myfami.ly/ , the original ...
+```javascript
+javascript:(function(){f='https://YourFriendicaDomain.tld/bookmarklet/?url='+encodeURIC....
+```
+... has to be changed to ...
+
+```javascript
+javascript:(function(){f='https://myfriend.myfami.ly/bookmarklet/?url='+encodeURIC....
+```
+
+*Please copy the whole script, not only the part mentioned here!*
+
+Then create a new bookmark, give it a name like "share2Friendica" and paste the script in the address field. Save it. Now you can click on that bookmarklet every time you want to share a website, you are currently reading. A new small window will open where title is prefilled and the website you want to share is put as attachement in the body of the new post.
+
+## Additional notes if it doesn't work
+
+* Make sure the site you want to share is allowed to run javascript. (enable it in your script blocker)
+* Check the apostrophes that are used. Sometimes it is changed by the copy and paste process depending on the editor you are using, or if you copy it from a website. Correct it and it will work again.
+
+
+
+## Authors
+
+* **diaspora** - *Initial work* - [Share all teh internetz!](https://share.diasporafoundation.org/about.html)
+* **hoergen** - *Adaptation to Friendica (2017)* - [hoergen.org](https://hoergen.org)
+
+## License
+
+This project is licensed under the same license like friendica
+
+## Acknowledgments
+
+* Hat tip to anyone who's code was used
+* Hat tip to everyone who does everyday a little something ot make this world better
+* Had tip but spent it
+
+
diff --git a/util/bookmarklet-share2friendica/bookmarklet-share2friendica.js b/util/bookmarklet-share2friendica/bookmarklet-share2friendica.js
new file mode 100644 (file)
index 0000000..584dee2
--- /dev/null
@@ -0,0 +1 @@
+javascript:(function(){f='https://YourFriendicaDomain.tld/bookmarklet/?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title);a=function(){if(!window.open(f+'&jump=doclose','friendica','location=yes,links=no,scrollbars=no,toolbar=no,width=620,height=250'))location.href=f+'jump=yes'};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})()
diff --git a/util/global_community_block.php b/util/global_community_block.php
new file mode 100755 (executable)
index 0000000..cb6789e
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * @brief tool to block an account from the node
+ *
+ * With this tool, you can block an account in such a way, that no postings
+ * or comments this account writes are accepted to the node.
+ *
+ * Usage: pass the URL of the to be blocked account as only parameter
+ *        at the command line when running this tool. E.g.
+ *
+ *        $> util/global_community_block.php http://example.com/profile/bob
+ *
+ *        will block bob@example.com.
+ *
+ * Author: Tobias Diekershoff
+ *
+ * License: AGPLv3 or later, same as Friendica
+ **/
+
+if ($argc != 2 || $argv[1] == "-h" || $argv[1] == "--help" || $argv[1] == "-?") {
+       echo "Usage: ".$argv[0]." [-h|profile_url]\r\n";
+       echo "    -h, -?, --help ... show this help\r\n";
+       echo "    profile_url ...... The URL of the profile you want to silence\r\n";
+       echo "\r\n";
+       echo "Example: block bob@example.com\r\n";
+       echo "$> ".$argv[0]." https://example.com/profiles/bob\r\n";
+       echo "\r\n";
+       exit(0);
+}
+
+use Friendica\Database\DBM;
+use Friendica\Network\Probe;
+
+require_once 'boot.php';
+require_once 'include/dba.php';
+require_once 'include/text.php';
+$a = get_app();
+require_once '.htconfig.php';
+
+dba::connect($db_host, $db_user, $db_pass, $db_data);
+unset($db_host, $db_user, $db_pass, $db_data);
+
+/**
+ * 1. make nurl from last parameter
+ * 2. check DB (contact) if there is a contact with uid=0 and that nurl, get the ID
+ * 3. set the flag hidden=1 for the contact entry with the found ID
+ **/
+$net = Probe::uri($argv[1]);
+if (in_array($net['network'], array(NETWORK_PHANTOM, NETWORK_MAIL))) {
+       echo 'This account seems not to exist.';
+       echo "\r\n";
+       exit(1);
+}
+$nurl = normalise_link($net['url']);
+$r = dba::select('contact', array('id'), array('nurl' => $nurl, 'uid' => 0), array('limit' => 1));
+if (DBM::is_result($r)) {
+       dba::update('contact', array('blocked' => true), array('id' => $r['id']));
+       echo "NOTICE: The account should be blocked from the node now\r\n";
+} else {
+       echo "NOTICE: Could not find any entry for this URL (".$nurl.")\r\n";
+}
+
+?>
diff --git a/util/global_community_silence.php b/util/global_community_silence.php
new file mode 100755 (executable)
index 0000000..e6c936f
--- /dev/null
@@ -0,0 +1,68 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * @brief tool to silence accounts on the global community page
+ *
+ * With this tool, you can silence an account on the global community page.
+ * Postings from silenced accounts will not be displayed on the community
+ * page. This silencing does only affect the display on the community page,
+ * accounts following the silenced accounts will still get their postings.
+ *
+ * Usage: pass the URL of the profile to be silenced account as only parameter
+ *        at the command line when running this tool. E.g.
+ *
+ *        $> util/global_community_silence.php http://example.com/profile/bob
+ *
+ *        will silence bob@example.com so that his postings won't appear at
+ *        the global community page.
+ *
+ * Author: Tobias Diekershoff
+ *
+ * License: AGPLv3 or later, same as Friendica
+ **/
+
+if ($argc != 2 || $argv[1] == "-h" || $argv[1] == "--help" || $argv[1] == "-?") {
+       echo "Usage: ".$argv[0]." [-h|profile_url]\r\n";
+       echo "    -h, -?, --help ... show this help\r\n";
+       echo "    profile_url ...... The URL of the profile you want to silence\r\n";
+       echo "\r\n";
+       echo "Example: Silence bob@example.com\r\n";
+       echo "$> ".$argv[0]." https://example.com/profiles/bob\r\n";
+       echo "\r\n";
+       exit(0);
+}
+
+use Friendica\Database\DBM;
+use Friendica\Network\Probe;
+
+require_once 'boot.php';
+require_once 'include/dba.php';
+require_once 'include/text.php';
+$a = get_app();
+require_once '.htconfig.php';
+
+dba::connect($db_host, $db_user, $db_pass, $db_data);
+unset($db_host, $db_user, $db_pass, $db_data);
+
+/**
+ * 1. make nurl from last parameter
+ * 2. check DB (contact) if there is a contact with uid=0 and that nurl, get the ID
+ * 3. set the flag hidden=1 for the contact entry with the found ID
+ **/
+$net = Probe::uri($argv[1]);
+if (in_array($net['network'], array(NETWORK_PHANTOM, NETWORK_MAIL))) {
+       echo "This account seems not to exist.";
+       echo "\r\n";
+       exit(1);
+}
+$nurl = normalise_link($net['url']);
+$r = dba::select("contact", array("id"), array("nurl" => $nurl, "uid" => 0), array("limit" => 1));
+if (DBM::is_result($r)) {
+       dba::update("contact", array("hidden" => true), array("id" => $r["id"]));
+       echo "NOTICE: The account should be silenced from the global community page\r\n";
+} else {
+       echo "NOTICE: Could not find any entry for this URL (".$nurl.")\r\n";
+}
+
+?>
index bad1b63c35bceda795d9eb1d990b6b8706d310fd..4493161899bc22a5a6c2e8c0005c5d8126049293 100644 (file)
@@ -1,4 +1,3 @@
-
 <div id="contact-edit-wrapper" >
 
        {{* Insert Tab-Nav *}}
@@ -71,7 +70,7 @@
                                        {{include file="field_checkbox.tpl" field=$notify}}
                                        {{if $fetch_further_information}}
                                                {{include file="field_select.tpl" field=$fetch_further_information}}
-                                               {{if $fetch_further_information.2 == 2 }} {{include file="field_textarea.tpl" field=$ffi_keyword_blacklist}} {{/if}}
+                                               {{if $fetch_further_information.2 == 2 || $fetch_further_information.2 == 3}} {{include file="field_textarea.tpl" field=$ffi_keyword_blacklist}} {{/if}}
                                        {{/if}}
                                        {{include file="field_checkbox.tpl" field=$hidden}}
 
index 540aebef5465c8211bd7c4a135a15a90b876221c..52f3fc545ed5edd7e2c5b29031b92259ba52ed33 100644 (file)
                                                                {{include file="field_checkbox.tpl" field=$notify}}
                                                                {{if $fetch_further_information}}
                                                                        {{include file="field_select.tpl" field=$fetch_further_information}}
-                                                                       {{if $fetch_further_information.2 == 2 }} {{include file="field_textarea.tpl" field=$ffi_keyword_blacklist}} {{/if}}
+                                                                       {{if $fetch_further_information.2 == 2 || $fetch_further_information.2 == 3}} {{include file="field_textarea.tpl" field=$ffi_keyword_blacklist}} {{/if}}
                                                                {{/if}}
                                                                {{include file="field_checkbox.tpl" field=$hidden}}
 
index f4f85d611b761922df274c8f3845a4bab821b534..9dc11a31c2e29bf077a272b99d32504950b7c595 100644 (file)
@@ -71,7 +71,7 @@
                                        {{include file="field_checkbox.tpl" field=$notify}}
                                        {{if $fetch_further_information}}
                                                {{include file="field_select.tpl" field=$fetch_further_information}}
-                                               {{if $fetch_further_information.2 == 2 }} {{include file="field_textarea.tpl" field=$ffi_keyword_blacklist}} {{/if}}
+                                               {{if $fetch_further_information.2 == 2 || $fetch_further_information.2 == 3}} {{include file="field_textarea.tpl" field=$ffi_keyword_blacklist}} {{/if}}
                                        {{/if}}
                                        {{include file="field_checkbox.tpl" field=$hidden}}