Merge pull request #6485 from MrPetovan/bug/fixes-after-2019-03-develop-rebase

More fixes after develop rebase
This commit is contained in:
Michael Vogel 2019-01-23 15:38:27 +01:00 committed by GitHub
commit 08da1ed038
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 172 additions and 149 deletions

View file

@ -1,11 +1,10 @@
--- ---
language: php language: php
## Friendica supports PHP version >= 5.6.1 ## Friendica officially supports PHP version >= 7.1
php: php:
- 5.6
- 7.0
- 7.1 - 7.1
- 7.2 - 7.2
- 7.3
services: services:
- mysql - mysql

View file

@ -34,7 +34,7 @@
use Friendica\Database\DBA; use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) { if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1299); define('DB_UPDATE_VERSION', 1300);
} }
return [ return [
@ -1365,7 +1365,7 @@ return [
"comment" => "Background tasks queue entries", "comment" => "Background tasks queue entries",
"fields" => [ "fields" => [
"id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Auto incremented worker task id"], "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Auto incremented worker task id"],
"parameter" => ["type" => "mediumblob", "comment" => "Task command"], "parameter" => ["type" => "mediumtext", "comment" => "Task command"],
"priority" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Task priority"], "priority" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Task priority"],
"created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation date"], "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation date"],
"pid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "Process id of the worker"], "pid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "Process id of the worker"],

View file

@ -421,4 +421,9 @@ return [
// Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes. // Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes.
'lockpath' => '', 'lockpath' => '',
], ],
'debug' => [
// ap_inbox_log (Boolean)
// Logs every call to /inbox as a JSON file in Friendica's temporary directory
'ap_inbox_log' => false,
]
]; ];

View file

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 2019.03-dev (The Tazmans Flax-lily) -- Friendica 2019.03-dev (The Tazmans Flax-lily)
-- DB_UPDATE_VERSION 1299 -- DB_UPDATE_VERSION 1300
-- ------------------------------------------ -- ------------------------------------------
@ -1260,7 +1260,7 @@ CREATE TABLE IF NOT EXISTS `worker-ipc` (
-- --
CREATE TABLE IF NOT EXISTS `workerqueue` ( CREATE TABLE IF NOT EXISTS `workerqueue` (
`id` int unsigned NOT NULL auto_increment COMMENT 'Auto incremented worker task id', `id` int unsigned NOT NULL auto_increment COMMENT 'Auto incremented worker task id',
`parameter` mediumblob COMMENT 'Task command', `parameter` mediumtext COMMENT 'Task command',
`priority` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Task priority', `priority` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Task priority',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation date', `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation date',
`pid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Process id of the worker', `pid` int unsigned NOT NULL DEFAULT 0 COMMENT 'Process id of the worker',

View file

@ -34,6 +34,7 @@ use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network; use Friendica\Util\Network;
use Friendica\Util\Strings; use Friendica\Util\Strings;
use Friendica\Util\Temporal; use Friendica\Util\Temporal;
use Psr\Log\LogLevel;
/** /**
* Sets the current theme for theme settings pages. * Sets the current theme for theme settings pages.
@ -2497,7 +2498,7 @@ function admin_page_logs_post(App $a)
$logfile = (!empty($_POST['logfile']) ? Strings::escapeTags(trim($_POST['logfile'])) : ''); $logfile = (!empty($_POST['logfile']) ? Strings::escapeTags(trim($_POST['logfile'])) : '');
$debugging = !empty($_POST['debugging']); $debugging = !empty($_POST['debugging']);
$loglevel = (!empty($_POST['loglevel']) ? intval(trim($_POST['loglevel'])) : 0); $loglevel = defaults($_POST, 'loglevel', LogLevel::ERROR);
Config::set('system', 'logfile', $logfile); Config::set('system', 'logfile', $logfile);
Config::set('system', 'debugging', $debugging); Config::set('system', 'debugging', $debugging);
@ -2529,12 +2530,11 @@ function admin_page_logs_post(App $a)
function admin_page_logs(App $a) function admin_page_logs(App $a)
{ {
$log_choices = [ $log_choices = [
Logger::WARNING => 'Warning', LogLevel::ERROR => 'Error',
Logger::INFO => 'Info', LogLevel::WARNING => 'Warning',
Logger::TRACE => 'Trace', LogLevel::NOTICE => 'Notice',
Logger::DEBUG => 'Debug', LogLevel::INFO => 'Info',
Logger::DATA => 'Data', LogLevel::DEBUG => 'Debug',
Logger::ALL => 'All'
]; ];
if (ini_get('log_errors')) { if (ini_get('log_errors')) {

View file

@ -105,6 +105,8 @@ class ForumManager
if (DBA::isResult($contacts)) { if (DBA::isResult($contacts)) {
$id = 0; $id = 0;
$entries = [];
foreach ($contacts as $contact) { foreach ($contacts as $contact) {
$selected = (($cid == $contact['id']) ? ' forum-selected' : ''); $selected = (($cid == $contact['id']) ? ' forum-selected' : '');

View file

@ -86,7 +86,8 @@ class OEmbed
$redirects = 0; $redirects = 0;
$html_text = Network::fetchUrl($embedurl, false, $redirects, 15, 'text/*'); $html_text = Network::fetchUrl($embedurl, false, $redirects, 15, 'text/*');
if ($html_text) { if ($html_text) {
$dom = @DOMDocument::loadHTML($html_text); $dom = new DOMDocument();
$dom->loadHTML($html_text);
if ($dom) { if ($dom) {
$xpath = new DOMXPath($dom); $xpath = new DOMXPath($dom);
$entries = $xpath->query("//link[@type='application/json+oembed']"); $entries = $xpath->query("//link[@type='application/json+oembed']");
@ -274,7 +275,8 @@ class OEmbed
$html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text)); $html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text));
// If it doesn't parse at all, just return the text. // If it doesn't parse at all, just return the text.
$dom = @DOMDocument::loadHTML($html_text); $dom = new DOMDocument();
$dom->loadHTML($html_text);
if (!$dom) { if (!$dom) {
return $text; return $text;
} }

View file

@ -11,10 +11,7 @@ use Friendica\Content\Widget\ContactBlock;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Config; use Friendica\Core\Config;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Util\Network; use Friendica\Util\Network;
use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\Proxy as ProxyUtils;

View file

@ -40,6 +40,7 @@ class TagCloud
$contact = DBA::selectFirst('contact', ['url'], ['uid' => $uid, 'self' => true]); $contact = DBA::selectFirst('contact', ['url'], ['uid' => $uid, 'self' => true]);
$url = System::removedBaseUrl($contact['url']); $url = System::removedBaseUrl($contact['url']);
$tags = [];
foreach ($r as $rr) { foreach ($r as $rr) {
$tag['level'] = $rr[2]; $tag['level'] = $rr[2];
$tag['url'] = $url . '?tag=' . urlencode($rr[0]); $tag['url'] = $url . '?tag=' . urlencode($rr[0]);
@ -88,7 +89,7 @@ class TagCloud
} }
// Fetch tags // Fetch tags
$r = DBA::p("SELECT `term`, COUNT(`term`) AS `total` FROM `term` $tag_stmt = DBA::p("SELECT `term`, COUNT(`term`) AS `total` FROM `term`
LEFT JOIN `item` ON `term`.`oid` = `item`.`id` LEFT JOIN `item` ON `term`.`oid` = `item`.`id`
WHERE `term`.`uid` = ? AND `term`.`type` = ? WHERE `term`.`uid` = ? AND `term`.`type` = ?
AND `term`.`otype` = ? AND `term`.`otype` = ?
@ -99,10 +100,12 @@ class TagCloud
$type, $type,
TERM_OBJ_POST TERM_OBJ_POST
); );
if (!DBA::isResult($r)) { if (!DBA::isResult($tag_stmt)) {
return []; return [];
} }
$r = DBA::toArray($tag_stmt);
return self::tagCalc($r); return self::tagCalc($r);
} }
@ -113,7 +116,7 @@ class TagCloud
* @param array $arr Array of tags/terms with tag/term name and total count of use. * @param array $arr Array of tags/terms with tag/term name and total count of use.
* @return array Alphabetical sorted array of used tags/terms of an user. * @return array Alphabetical sorted array of used tags/terms of an user.
*/ */
private static function tagCalc($arr) private static function tagCalc(array $arr)
{ {
$tags = []; $tags = [];
$min = 1e9; $min = 1e9;

View file

@ -121,6 +121,7 @@ HELP;
$className = $this->subConsoles[$command]; $className = $this->subConsoles[$command];
/** @var Console $subconsole */
$subconsole = new $className($subargs); $subconsole = new $className($subargs);
foreach ($this->options as $name => $value) { foreach ($this->options as $name => $value) {

View file

@ -8,6 +8,7 @@ namespace Friendica\Core;
use Exception; use Exception;
use Friendica\BaseObject; use Friendica\BaseObject;
use Friendica\Render\FriendicaSmarty; use Friendica\Render\FriendicaSmarty;
use Friendica\Render\ITemplateEngine;
/** /**
* @brief This class handles Renderer related functions. * @brief This class handles Renderer related functions.

View file

@ -3,6 +3,7 @@
namespace Friendica\Core; namespace Friendica\Core;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\Model\Storage\IStorage;
/** /**
@ -138,6 +139,7 @@ class StorageManager
while($r = DBA::fetch($rr)) { while($r = DBA::fetch($rr)) {
$id = $r['id']; $id = $r['id'];
$data = $r['data']; $data = $r['data'];
/** @var IStorage $backendClass */
$backendClass = $r['backend-class']; $backendClass = $r['backend-class'];
$backendRef = $r['backend-ref']; $backendRef = $r['backend-ref'];
if (!is_null($backendClass) && $backendClass !== '') { if (!is_null($backendClass) && $backendClass !== '') {
@ -146,6 +148,7 @@ class StorageManager
} }
Logger::log("save data to new backend " . $dest); Logger::log("save data to new backend " . $dest);
/** @var IStorage $dest */
$ref = $dest::put($data); $ref = $dest::put($data);
Logger::log("saved data as " . $ref); Logger::log("saved data as " . $ref);

View file

@ -11,6 +11,7 @@ use Friendica\Core\System;
use Friendica\Core\StorageManager; use Friendica\Core\StorageManager;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\Database\DBStructure; use Friendica\Database\DBStructure;
use Friendica\Model\Storage\IStorage;
use Friendica\Object\Image; use Friendica\Object\Image;
use Friendica\Util\Security; use Friendica\Util\Security;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
@ -176,7 +177,7 @@ class Attach extends BaseObject
* @return boolean/integer Row id on success, False on errors * @return boolean/integer Row id on success, False on errors
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') public static function store($data, $uid, $filename, $filetype = '' , $filesize = null, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '')
{ {
if ($filetype === '') { if ($filetype === '') {
$filetype = Mimetype::getContentType($filename); $filetype = Mimetype::getContentType($filename);
@ -186,6 +187,7 @@ class Attach extends BaseObject
$filesize = strlen($data); $filesize = strlen($data);
} }
/** @var IStorage $backend_class */
$backend_class = StorageManager::getBackend(); $backend_class = StorageManager::getBackend();
$backend_ref = ''; $backend_ref = '';
if ($backend_class !== '') { if ($backend_class !== '') {
@ -265,6 +267,7 @@ class Attach extends BaseObject
$items = self::select(['backend-class','backend-ref'], $conditions); $items = self::select(['backend-class','backend-ref'], $conditions);
foreach($items as $item) { foreach($items as $item) {
/** @var IStorage $backend_class */
$backend_class = (string)$item['backend-class']; $backend_class = (string)$item['backend-class'];
if ($backend_class !== '') { if ($backend_class !== '') {
$fields['backend-ref'] = $backend_class::put($img->asString(), $item['backend-ref']); $fields['backend-ref'] = $backend_class::put($img->asString(), $item['backend-ref']);
@ -297,6 +300,7 @@ class Attach extends BaseObject
$items = self::select(['backend-class','backend-ref'], $conditions); $items = self::select(['backend-class','backend-ref'], $conditions);
foreach($items as $item) { foreach($items as $item) {
/** @var IStorage $backend_class */
$backend_class = (string)$item['backend-class']; $backend_class = (string)$item['backend-class'];
if ($backend_class !== '') { if ($backend_class !== '') {
$backend_class::delete($item['backend-ref']); $backend_class::delete($item['backend-ref']);

View file

@ -644,15 +644,17 @@ class Event extends BaseObject
*/ */
private static function formatListForExport(array $events, $format) private static function formatListForExport(array $events, $format)
{ {
$o = '';
if (!count($events)) { if (!count($events)) {
return ''; return $o;
} }
switch ($format) { switch ($format) {
// Format the exported data as a CSV file. // Format the exported data as a CSV file.
case "csv": case "csv":
header("Content-type: text/csv"); header("Content-type: text/csv");
$o = '"Subject", "Start Date", "Start Time", "Description", "End Date", "End Time", "Location"' . PHP_EOL; $o .= '"Subject", "Start Date", "Start Time", "Description", "End Date", "End Time", "Location"' . PHP_EOL;
foreach ($events as $event) { foreach ($events as $event) {
/// @todo The time / date entries don't include any information about the /// @todo The time / date entries don't include any information about the

View file

@ -1790,13 +1790,13 @@ class Item extends BaseObject
DBA::insert('diaspora-interaction', ['uri-id' => $item['uri-id'], 'interaction' => $diaspora_signed_text], true); DBA::insert('diaspora-interaction', ['uri-id' => $item['uri-id'], 'interaction' => $diaspora_signed_text], true);
} }
$deleted = self::tagDeliver($item['uid'], $current_post); self::tagDeliver($item['uid'], $current_post);
/* /*
* current post can be deleted if is for a community page and no mention are * current post can be deleted if is for a community page and no mention are
* in it. * in it.
*/ */
if (!$deleted && !$dontcache) { if (!$dontcache) {
$posted_item = self::selectFirst(self::ITEM_FIELDLIST, ['id' => $current_post]); $posted_item = self::selectFirst(self::ITEM_FIELDLIST, ['id' => $current_post]);
if (DBA::isResult($posted_item)) { if (DBA::isResult($posted_item)) {
if ($notify) { if ($notify) {

View file

@ -157,7 +157,7 @@ class Mail
} }
/** /**
* @param string $recipient recipient, default empty * @param array $recipient recipient, default empty
* @param string $body message body, default empty * @param string $body message body, default empty
* @param string $subject message subject, default empty * @param string $subject message subject, default empty
* @param string $replyto reply to, default empty * @param string $replyto reply to, default empty
@ -165,7 +165,7 @@ class Mail
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
public static function sendWall($recipient = '', $body = '', $subject = '', $replyto = '') public static function sendWall(array $recipient = [], $body = '', $subject = '', $replyto = '')
{ {
if (!$recipient) { if (!$recipient) {
return -1; return -1;

View file

@ -14,6 +14,7 @@ use Friendica\Core\System;
use Friendica\Core\StorageManager; use Friendica\Core\StorageManager;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\Database\DBStructure; use Friendica\Database\DBStructure;
use Friendica\Model\Storage\IStorage;
use Friendica\Object\Image; use Friendica\Object\Image;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network; use Friendica\Util\Network;
@ -268,6 +269,7 @@ class Photo extends BaseObject
$data = ""; $data = "";
$backend_ref = ""; $backend_ref = "";
/** @var IStorage $backend_class */
if (DBA::isResult($existing_photo)) { if (DBA::isResult($existing_photo)) {
$backend_ref = (string)$existing_photo["backend-ref"]; $backend_ref = (string)$existing_photo["backend-ref"];
$backend_class = (string)$existing_photo["backend-class"]; $backend_class = (string)$existing_photo["backend-class"];
@ -334,6 +336,7 @@ class Photo extends BaseObject
$photos = self::select(["backend-class","backend-ref"], $conditions); $photos = self::select(["backend-class","backend-ref"], $conditions);
foreach($photos as $photo) { foreach($photos as $photo) {
/** @var IStorage $backend_class */
$backend_class = (string)$photo["backend-class"]; $backend_class = (string)$photo["backend-class"];
if ($backend_class !== "") { if ($backend_class !== "") {
$backend_class::delete($photo["backend-ref"]); $backend_class::delete($photo["backend-ref"]);
@ -363,6 +366,7 @@ class Photo extends BaseObject
$photos = self::select(["backend-class","backend-ref"], $conditions); $photos = self::select(["backend-class","backend-ref"], $conditions);
foreach($photos as $photo) { foreach($photos as $photo) {
/** @var IStorage $backend_class */
$backend_class = (string)$photo["backend-class"]; $backend_class = (string)$photo["backend-class"];
if ($backend_class !== "") { if ($backend_class !== "") {
$fields["backend-ref"] = $backend_class::put($img->asString(), $photo["backend-ref"]); $fields["backend-ref"] = $backend_class::put($img->asString(), $photo["backend-ref"]);
@ -479,7 +483,7 @@ class Photo extends BaseObject
} }
/** /**
* @param string $exifCoord coordinate * @param array $exifCoord coordinate
* @param string $hemi hemi * @param string $hemi hemi
* @return float * @return float
*/ */

View file

@ -274,6 +274,7 @@ class Term
'network' => $item['author-network'], 'url' => $item['author-link']]; 'network' => $item['author-network'], 'url' => $item['author-link']];
$tag['url'] = Contact::magicLinkByContact($author, $tag['url']); $tag['url'] = Contact::magicLinkByContact($author, $tag['url']);
$prefix = '';
if ($tag['type'] == TERM_HASHTAG) { if ($tag['type'] == TERM_HASHTAG) {
if ($orig_tag != $tag['url']) { if ($orig_tag != $tag['url']) {
$item['body'] = str_replace($orig_tag, $tag['url'], $item['body']); $item['body'] = str_replace($orig_tag, $tag['url'], $item['body']);

View file

@ -8,7 +8,6 @@ use Friendica\Content\ContactSelector;
use Friendica\Content\Nav; use Friendica\Content\Nav;
use Friendica\Content\Pager; use Friendica\Content\Pager;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
use Friendica\Content\Widget; use Friendica\Content\Widget;
use Friendica\Core\ACL; use Friendica\Core\ACL;
use Friendica\Core\Hook; use Friendica\Core\Hook;

View file

@ -2,6 +2,7 @@
/** /**
* @file src/Module/Inbox.php * @file src/Module/Inbox.php
*/ */
namespace Friendica\Module; namespace Friendica\Module;
use Friendica\BaseModule; use Friendica\BaseModule;
@ -25,19 +26,17 @@ class Inbox extends BaseModule
System::httpExit(400); System::httpExit(400);
} }
// Enable for test purposes if (Config::get('debug', 'ap_inbox_log')) {
/* if (HTTPSignature::getSigner($postdata, $_SERVER)) {
if (HTTPSignature::getSigner($postdata, $_SERVER)) { $filename = 'signed-activitypub';
$filename = 'signed-activitypub'; } else {
} else { $filename = 'failed-activitypub';
$filename = 'failed-activitypub'; }
$tempfile = tempnam(get_temppath(), $filename);
file_put_contents($tempfile, json_encode(['argv' => $a->argv, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
Logger::log('Incoming message stored under ' . $tempfile);
} }
$tempfile = tempnam(get_temppath(), $filename);
file_put_contents($tempfile, json_encode(['argv' => $a->argv, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
Logger::log('Incoming message stored under ' . $tempfile);
*/
if (!empty($a->argv[1])) { if (!empty($a->argv[1])) {
$user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]); $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]);
if (!DBA::isResult($user)) { if (!DBA::isResult($user)) {

View file

@ -46,28 +46,29 @@ class Photo extends BaseModule
} }
$customsize = 0; $customsize = 0;
$photo = false;
switch($a->argc) { switch($a->argc) {
case 4: case 4:
$customsize = intval($a->argv[2]); $customsize = intval($a->argv[2]);
$uid = self::stripExtension($a->argv[3]); $uid = self::stripExtension($a->argv[3]);
$photo = self::getAvatar($uid, $a->argv[1]); $photo = self::getAvatar($uid, $a->argv[1]);
break; break;
case 3: case 3:
$uid = self::stripExtension($a->argv[2]); $uid = self::stripExtension($a->argv[2]);
$photo = self::getAvatar($uid, $a->argv[1]); $photo = self::getAvatar($uid, $a->argv[1]);
break; break;
case 2: case 2:
$photoid = self::stripExtension($a->argv[1]); $photoid = self::stripExtension($a->argv[1]);
$scale = 0; $scale = 0;
if (substr($photoid, -2, 1) == "-") { if (substr($photoid, -2, 1) == "-") {
$scale = intval(substr($photoid, -1, 1)); $scale = intval(substr($photoid, -1, 1));
$photoid = substr($photoid, 0, -2); $photoid = substr($photoid, 0, -2);
} }
$photo = MPhoto::getPhoto($photoid, $scale); $photo = MPhoto::getPhoto($photoid, $scale);
if ($photo === false) { if ($photo === false) {
$photo = MPhoto::createPhotoForSystemResource("images/nosign.jpg"); $photo = MPhoto::createPhotoForSystemResource("images/nosign.jpg");
} }
break; break;
} }
if ($photo === false) { if ($photo === false) {

View file

@ -23,6 +23,7 @@ use ImagickPixel;
*/ */
class Image class Image
{ {
/** @var Imagick|resource */
private $image; private $image;
/* /*

View file

@ -23,7 +23,6 @@ use Friendica\Util\LDSignature;
use Friendica\Model\Profile; use Friendica\Model\Profile;
use Friendica\Object\Image; use Friendica\Object\Image;
use Friendica\Protocol\ActivityPub; use Friendica\Protocol\ActivityPub;
use Friendica\Protocol\Diaspora;
use Friendica\Core\Cache; use Friendica\Core\Cache;
use Friendica\Util\Map; use Friendica\Util\Map;
use Friendica\Util\Network; use Friendica\Util\Network;

View file

@ -529,17 +529,17 @@ class DFRN
/** /**
* @brief Adds the header elements for the DFRN protocol * @brief Adds the header elements for the DFRN protocol
* *
* @param object $doc XML document * @param DOMDocument $doc XML document
* @param array $owner Owner record * @param array $owner Owner record
* @param string $authorelement Element name for the author * @param string $authorelement Element name for the author
* @param string $alternatelink link to profile or category * @param string $alternatelink link to profile or category
* @param bool $public Is it a header for public posts? * @param bool $public Is it a header for public posts?
* *
* @return object XML root object * @return object XML root object
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @todo Find proper type-hints * @todo Find proper type-hints
*/ */
private static function addHeader($doc, $owner, $authorelement, $alternatelink = "", $public = false) private static function addHeader(DOMDocument $doc, $owner, $authorelement, $alternatelink = "", $public = false)
{ {
if ($alternatelink == "") { if ($alternatelink == "") {
@ -607,16 +607,16 @@ class DFRN
/** /**
* @brief Adds the author element in the header for the DFRN protocol * @brief Adds the author element in the header for the DFRN protocol
* *
* @param object $doc XML document * @param DOMDocument $doc XML document
* @param array $owner Owner record * @param array $owner Owner record
* @param string $authorelement Element name for the author * @param string $authorelement Element name for the author
* @param boolean $public boolean * @param boolean $public boolean
* *
* @return object XML author object * @return \DOMElement XML author object
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @todo Find proper type-hints * @todo Find proper type-hints
*/ */
private static function addAuthor($doc, $owner, $authorelement, $public) private static function addAuthor(DOMDocument $doc, array $owner, $authorelement, $public)
{ {
// Is the profile hidden or shouldn't be published in the net? Then add the "hide" element // Is the profile hidden or shouldn't be published in the net? Then add the "hide" element
$r = q( $r = q(
@ -752,16 +752,16 @@ class DFRN
/** /**
* @brief Adds the author elements in the "entry" elements of the DFRN protocol * @brief Adds the author elements in the "entry" elements of the DFRN protocol
* *
* @param object $doc XML document * @param DOMDocument $doc XML document
* @param string $element Element name for the author * @param string $element Element name for the author
* @param string $contact_url Link of the contact * @param string $contact_url Link of the contact
* @param array $item Item elements * @param array $item Item elements
* *
* @return object XML author object * @return \DOMElement XML author object
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @todo Find proper type-hints * @todo Find proper type-hints
*/ */
private static function addEntryAuthor($doc, $element, $contact_url, $item) private static function addEntryAuthor(DOMDocument $doc, $element, $contact_url, $item)
{ {
$contact = Contact::getDetailsByURL($contact_url, $item["uid"]); $contact = Contact::getDetailsByURL($contact_url, $item["uid"]);
@ -795,15 +795,15 @@ class DFRN
/** /**
* @brief Adds the activity elements * @brief Adds the activity elements
* *
* @param object $doc XML document * @param DOMDocument $doc XML document
* @param string $element Element name for the activity * @param string $element Element name for the activity
* @param string $activity activity value * @param string $activity activity value
* *
* @return object XML activity object * @return \DOMElement XML activity object
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @todo Find proper type-hints * @todo Find proper type-hints
*/ */
private static function createActivity($doc, $element, $activity) private static function createActivity(DOMDocument $doc, $element, $activity)
{ {
if ($activity) { if ($activity) {
$entry = $doc->createElement($element); $entry = $doc->createElement($element);
@ -898,20 +898,20 @@ class DFRN
/** /**
* @brief Adds the "entry" elements for the DFRN protocol * @brief Adds the "entry" elements for the DFRN protocol
* *
* @param object $doc XML document * @param DOMDocument $doc XML document
* @param string $type "text" or "html" * @param string $type "text" or "html"
* @param array $item Item element * @param array $item Item element
* @param array $owner Owner record * @param array $owner Owner record
* @param bool $comment Trigger the sending of the "comment" element * @param bool $comment Trigger the sending of the "comment" element
* @param int $cid Contact ID of the recipient * @param int $cid Contact ID of the recipient
* @param bool $single If set, the entry is created as an XML document with a single "entry" element * @param bool $single If set, the entry is created as an XML document with a single "entry" element
* *
* @return object XML entry object * @return \DOMElement XML entry object
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
* @todo Find proper type-hints * @todo Find proper type-hints
*/ */
private static function entry($doc, $type, array $item, array $owner, $comment = false, $cid = 0, $single = false) private static function entry(DOMDocument $doc, $type, array $item, array $owner, $comment = false, $cid = 0, $single = false)
{ {
$mentioned = []; $mentioned = [];
@ -2414,7 +2414,7 @@ class DFRN
* @param object $xpath XPath object * @param object $xpath XPath object
* @param object $entry entry elements * @param object $entry entry elements
* @param array $importer Record of the importer user mixed with contact of the content * @param array $importer Record of the importer user mixed with contact of the content
* @param object $xml xml * @param string $xml xml
* @return void * @return void
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
@ -2513,7 +2513,7 @@ class DFRN
$notice_info = $xpath->query("statusnet:notice_info", $entry); $notice_info = $xpath->query("statusnet:notice_info", $entry);
if ($notice_info && ($notice_info->length > 0)) { 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") { if ($attributes->name == "source") {
$item["app"] = strip_tags($attributes->textContent); $item["app"] = strip_tags($attributes->textContent);
} }
@ -2588,8 +2588,8 @@ class DFRN
$item['conversation-uri'] = XML::getFirstNodeValue($xpath, 'ostatus:conversation/text()', $entry); $item['conversation-uri'] = XML::getFirstNodeValue($xpath, 'ostatus:conversation/text()', $entry);
$conv = $xpath->query('ostatus:conversation', $entry); $conv = $xpath->query('ostatus:conversation', $entry);
if (is_object($conv->item(0))) { if (is_object($conv->item[0])) {
foreach ($conv->item(0)->attributes as $attributes) { foreach ($conv->item[0]->attributes as $attributes) {
if ($attributes->name == "ref") { if ($attributes->name == "ref") {
$item['conversation-uri'] = $attributes->textContent; $item['conversation-uri'] = $attributes->textContent;
} }
@ -2603,8 +2603,8 @@ class DFRN
$item["parent-uri"] = $item["uri"]; $item["parent-uri"] = $item["uri"];
$inreplyto = $xpath->query("thr:in-reply-to", $entry); $inreplyto = $xpath->query("thr:in-reply-to", $entry);
if (is_object($inreplyto->item(0))) { if (is_object($inreplyto->item[0])) {
foreach ($inreplyto->item(0)->attributes as $attributes) { foreach ($inreplyto->item[0]->attributes as $attributes) {
if ($attributes->name == "ref") { if ($attributes->name == "ref") {
$item["parent-uri"] = $attributes->textContent; $item["parent-uri"] = $attributes->textContent;
} }

View file

@ -648,15 +648,15 @@ class Diaspora
/** /**
* @brief Dispatches the different message types to the different functions * @brief Dispatches the different message types to the different functions
* *
* @param array $importer Array of the importer user * @param array $importer Array of the importer user
* @param array $msg The post that will be dispatched * @param array $msg The post that will be dispatched
* @param object $fields SimpleXML object that contains the message * @param SimpleXMLElement $fields SimpleXML object that contains the message
* *
* @return int The message id of the generated message, "true" or "false" if there was an error * @return int The message id of the generated message, "true" or "false" if there was an error
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
public static function dispatch(array $importer, $msg, $fields = null) public static function dispatch(array $importer, $msg, SimpleXMLElement $fields = null)
{ {
// The sender is the handle of the contact that sent the message. // The sender is the handle of the contact that sent the message.
// This will often be different with relayed messages (for example "like" and "comment") // This will often be different with relayed messages (for example "like" and "comment")
@ -758,7 +758,7 @@ class Diaspora
* *
* @param array $msg Array with the XML, the sender handle and the sender signature * @param array $msg Array with the XML, the sender handle and the sender signature
* *
* @return bool|array If the posting is valid then an array with an SimpleXML object is returned * @return bool|SimpleXMLElement If the posting is valid then an array with an SimpleXML object is returned
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
@ -1077,7 +1077,7 @@ class Diaspora
* @param int $uid The user id * @param int $uid The user id
* @param string $handle The handle in the format user@domain.tld * @param string $handle The handle in the format user@domain.tld
* *
* @return int Contact id * @return array Contact data
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */

View file

@ -17,7 +17,7 @@ class Email
* @param string $mailbox The mailbox name * @param string $mailbox The mailbox name
* @param string $username The username * @param string $username The username
* @param string $password The password * @param string $password The password
* @return object * @return resource
* @throws \Exception * @throws \Exception
*/ */
public static function connect($mailbox, $username, $password) public static function connect($mailbox, $username, $password)
@ -42,8 +42,8 @@ class Email
} }
/** /**
* @param object $mbox mailbox * @param resource $mbox mailbox
* @param string $email_addr email * @param string $email_addr email
* @return array * @return array
* @throws \Exception * @throws \Exception
*/ */
@ -92,8 +92,8 @@ class Email
} }
/** /**
* @param object $mbox mailbox * @param resource $mbox mailbox
* @param integer $uid user id * @param integer $uid user id
* @return mixed * @return mixed
*/ */
public static function messageMeta($mbox, $uid) public static function messageMeta($mbox, $uid)
@ -103,9 +103,9 @@ class Email
} }
/** /**
* @param object $mbox mailbox * @param resource $mbox mailbox
* @param integer $uid user id * @param integer $uid user id
* @param string $reply reply * @param string $reply reply
* @return array * @return array
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
@ -166,11 +166,11 @@ class Email
// At the moment - only return plain/text. // At the moment - only return plain/text.
// Later we'll repackage inline images as data url's and make the HTML safe // Later we'll repackage inline images as data url's and make the HTML safe
/** /**
* @param object $mbox mailbox * @param resource $mbox mailbox
* @param integer $uid user id * @param integer $uid user id
* @param object $p parts * @param object $p parts
* @param integer $partno part number * @param integer $partno part number
* @param string $subtype sub type * @param string $subtype sub type
* @return string * @return string
*/ */
private static function messageGetPart($mbox, $uid, $p, $partno, $subtype) private static function messageGetPart($mbox, $uid, $p, $partno, $subtype)

View file

@ -1453,7 +1453,7 @@ class OStatus
* @param array $owner Contact data of the poster * @param array $owner Contact data of the poster
* @param bool $show_profile Whether to show profile * @param bool $show_profile Whether to show profile
* *
* @return object author element * @return \DOMElement author element
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
private static function addAuthor(DOMDocument $doc, array $owner, $show_profile = true) private static function addAuthor(DOMDocument $doc, array $owner, $show_profile = true)
@ -1573,7 +1573,7 @@ class OStatus
* @param bool $toplevel optional default false * @param bool $toplevel optional default false
* @param bool $feed_mode Behave like a regular feed for users if true * @param bool $feed_mode Behave like a regular feed for users if true
* *
* @return object Entry element * @return \DOMElement Entry element
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
@ -1605,7 +1605,7 @@ class OStatus
* @param DOMDocument $doc XML document * @param DOMDocument $doc XML document
* @param array $contact Array of the contact that is added * @param array $contact Array of the contact that is added
* *
* @return object Source element * @return \DOMElement Source element
* @throws \Exception * @throws \Exception
*/ */
private static function sourceEntry(DOMDocument $doc, array $contact) private static function sourceEntry(DOMDocument $doc, array $contact)
@ -1748,7 +1748,7 @@ class OStatus
* @param array $owner Contact data of the poster * @param array $owner Contact data of the poster
* @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)?
* *
* @return object Entry element with "like" * @return \DOMElement Entry element with "like"
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
@ -1835,7 +1835,7 @@ class OStatus
* @param array $owner Contact data of the poster * @param array $owner Contact data of the poster
* @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)?
* *
* @return object Entry element * @return \DOMElement Entry element
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
@ -1900,7 +1900,7 @@ class OStatus
* @param bool $toplevel Is it for en entry element (false) or a feed entry (true)? * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)?
* @param bool $feed_mode Behave like a regular feed for users if true * @param bool $feed_mode Behave like a regular feed for users if true
* *
* @return object Entry element * @return \DOMElement Entry element
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
@ -1976,7 +1976,7 @@ class OStatus
* @brief Adds elements to the XML document * @brief Adds elements to the XML document
* *
* @param DOMDocument $doc XML document * @param DOMDocument $doc XML document
* @param object $entry Entry element where the content is added * @param \DOMElement $entry Entry element where the content is added
* @param array $item Data of the item that is to be posted * @param array $item Data of the item that is to be posted
* @param array $owner Contact data of the poster * @param array $owner Contact data of the poster
* @param string $title Title for the post * @param string $title Title for the post
@ -1986,7 +1986,7 @@ class OStatus
* @return void * @return void
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
private static function entryContent(DOMDocument $doc, $entry, array $item, array $owner, $title, $verb = "", $complete = true, $feed_mode = false) private static function entryContent(DOMDocument $doc, \DOMElement $entry, array $item, array $owner, $title, $verb = "", $complete = true, $feed_mode = false)
{ {
if ($verb == "") { if ($verb == "") {
$verb = self::constructVerb($item); $verb = self::constructVerb($item);

View file

@ -423,13 +423,13 @@ class Crypto
* *
* Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php
* *
* @param string $data * @param array $data ['iv' => $iv, 'key' => $key, 'alg' => $alg, 'data' => $data]
* @param string $prvkey The private key used for decryption. * @param string $prvkey The private key used for decryption.
* *
* @return string|boolean The decrypted string or false on failure. * @return string|boolean The decrypted string or false on failure.
* @throws \Exception * @throws \Exception
*/ */
public static function unencapsulate($data, $prvkey) public static function unencapsulate(array $data, $prvkey)
{ {
if (!$data) { if (!$data) {
return; return;
@ -437,23 +437,23 @@ class Crypto
$alg = ((array_key_exists('alg', $data)) ? $data['alg'] : 'aes256cbc'); $alg = ((array_key_exists('alg', $data)) ? $data['alg'] : 'aes256cbc');
if ($alg === 'aes256cbc') { if ($alg === 'aes256cbc') {
return self::encapsulateAes($data, $prvkey); return self::encapsulateAes($data['data'], $prvkey);
} }
return self::encapsulateOther($data, $prvkey, $alg); return self::encapsulateOther($data['data'], $prvkey, $alg);
} }
/** /**
* *
* Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/include/crypto.php
* *
* @param string $data * @param array $data
* @param string $prvkey The private key used for decryption. * @param string $prvkey The private key used for decryption.
* @param string $alg * @param string $alg
* *
* @return string|boolean The decrypted string or false on failure. * @return string|boolean The decrypted string or false on failure.
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
private static function unencapsulateOther($data, $prvkey, $alg) private static function unencapsulateOther(array $data, $prvkey, $alg)
{ {
$fn = 'decrypt' . strtoupper($alg); $fn = 'decrypt' . strtoupper($alg);

View file

@ -158,10 +158,10 @@ class Temporal
/** /**
* @brief Returns a date selector * @brief Returns a date selector
* *
* @param string $min Unix timestamp of minimum date * @param DateTime $min Minimum date
* @param string $max Unix timestap of maximum date * @param DateTime $max Maximum date
* @param string $default Unix timestamp of default date * @param DateTime $default Default date
* @param string $id ID and name of datetimepicker (defaults to "datetimepicker") * @param string $id ID and name of datetimepicker (defaults to "datetimepicker")
* *
* @return string Parsed HTML output. * @return string Parsed HTML output.
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException

View file

@ -135,14 +135,14 @@ class XML
/** /**
* @brief Create an XML element * @brief Create an XML element
* *
* @param object $doc XML root * @param \DOMDocument $doc XML root
* @param string $element XML element name * @param string $element XML element name
* @param string $value XML value * @param string $value XML value
* @param array $attributes array containing the attributes * @param array $attributes array containing the attributes
* *
* @return object XML element object * @return \DOMElement XML element object
*/ */
public static function createElement($doc, $element, $value = "", $attributes = []) public static function createElement(\DOMDocument $doc, $element, $value = "", $attributes = [])
{ {
$element = $doc->createElement($element, self::escape($value)); $element = $doc->createElement($element, self::escape($value));
@ -157,14 +157,14 @@ class XML
/** /**
* @brief Create an XML and append it to the parent object * @brief Create an XML and append it to the parent object
* *
* @param object $doc XML root * @param \DOMDocument $doc XML root
* @param object $parent parent object * @param object $parent parent object
* @param string $element XML element name * @param string $element XML element name
* @param string $value XML value * @param string $value XML value
* @param array $attributes array containing the attributes * @param array $attributes array containing the attributes
* @return void * @return void
*/ */
public static function addElement($doc, $parent, $element, $value = "", $attributes = []) public static function addElement(\DOMDocument $doc, $parent, $element, $value = "", $attributes = [])
{ {
$element = self::createElement($doc, $element, $value, $attributes); $element = self::createElement($doc, $element, $value, $attributes);
$parent->appendChild($element); $parent->appendChild($element);
@ -402,11 +402,11 @@ class XML
/** /**
* @brief Delete a node in a XML object * @brief Delete a node in a XML object
* *
* @param object $doc XML document * @param \DOMDocument $doc XML document
* @param string $node Node name * @param string $node Node name
* @return void * @return void
*/ */
public static function deleteNode(&$doc, $node) public static function deleteNode(\DOMDocument $doc, $node)
{ {
$xpath = new DOMXPath($doc); $xpath = new DOMXPath($doc);
$list = $xpath->query("//".$node); $list = $xpath->query("//".$node);
@ -431,7 +431,7 @@ class XML
return $x; return $x;
} }
public static function getFirstNodeValue($xpath, $element, $context = null) public static function getFirstNodeValue(DOMXPath $xpath, $element, $context = null)
{ {
$result = $xpath->evaluate($element, $context); $result = $xpath->evaluate($element, $context);
if (!is_object($result)) { if (!is_object($result)) {
@ -446,7 +446,7 @@ class XML
return $first_item->nodeValue; return $first_item->nodeValue;
} }
public static function getFirstAttributes($xpath, $element, $context = null) public static function getFirstAttributes(DOMXPath $xpath, $element, $context = null)
{ {
$result = $xpath->query($element, $context); $result = $xpath->query($element, $context);
if (!is_object($result)) { if (!is_object($result)) {

View file

@ -94,7 +94,7 @@ class Delivery extends BaseObject
} elseif (!empty($target_item['uid'])) { } elseif (!empty($target_item['uid'])) {
$uid = $target_item['uid']; $uid = $target_item['uid'];
} else { } else {
Logger::log('Only public users for item ' . $item_id, Logger::DEBUG); Logger::log('Only public users for item ' . $target_id, Logger::DEBUG);
return; return;
} }