- here `Logger::level()` is okay to use
- added more logging in wall_upload.php
- formatted array and put all $array['foo'] = $foo; into a single statement
- <include|require[_once]> are all no functions, but keywords
This commit is contained in:
Roland Häder 2022-09-25 18:43:00 +02:00
parent 71e82bc861
commit ceffd0ef6c
No known key found for this signature in database
GPG Key ID: C82EDE5DDFA0BA77
3 changed files with 64 additions and 44 deletions

View File

@ -24,11 +24,11 @@ use Friendica\App;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\DI; use Friendica\DI;
require_once("mod/notes.php"); require_once 'mod/notes.php';
function update_notes_content(App $a) { function update_notes_content(App $a)
{
$profile_uid = intval($_GET["p"]); $profile_uid = intval($_GET['p']);
/** /**
* *

View File

@ -20,6 +20,7 @@
*/ */
use Friendica\App; use Friendica\App;
use Friendica\Core\Logger;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
@ -35,14 +36,14 @@ function wall_attach_post(App $a)
$nick = DI::args()->getArgv()[1]; $nick = DI::args()->getArgv()[1];
$owner = User::getOwnerDataByNick($nick); $owner = User::getOwnerDataByNick($nick);
if (!DBA::isResult($owner)) { if (!DBA::isResult($owner)) {
DI::logger()->warning('owner is not a valid record:', ['owner' => $owner]); Logger::warning('owner is not a valid record:', ['owner' => $owner, 'nick' => $nick]);
if ($isJson) { if ($isJson) {
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]); System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
} }
return; return;
} }
} else { } else {
DI::logger()->warning('Argument count is zero'); Logger::warning('Argument count is zero or one (invalid)');
if ($isJson) { if ($isJson) {
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]); System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
} }
@ -64,6 +65,7 @@ function wall_attach_post(App $a)
} }
if (!$can_post) { if (!$can_post) {
Logger::warning('User does not have required permissions', ['contact_id' => $contact_id, 'page_owner_uid' => $page_owner_uid]);
if ($isJson) { if ($isJson) {
System::jsonExit(['error' => DI::l10n()->t('Permission denied.')]); System::jsonExit(['error' => DI::l10n()->t('Permission denied.')]);
} }
@ -72,7 +74,7 @@ function wall_attach_post(App $a)
} }
if (empty($_FILES['userfile'])) { if (empty($_FILES['userfile'])) {
DI::logger()->warning('No file uploaded (empty userfile)'); Logger::warning('No file uploaded (empty userfile)');
if ($isJson) { if ($isJson) {
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]); System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
} }
@ -91,6 +93,7 @@ function wall_attach_post(App $a)
*/ */
if ($fileSize <= 0) { if ($fileSize <= 0) {
$msg = DI::l10n()->t('Sorry, maybe your upload is bigger than the PHP configuration allows') . '<br />' .(DI::l10n()->t('Or - did you try to upload an empty file?')); $msg = DI::l10n()->t('Sorry, maybe your upload is bigger than the PHP configuration allows') . '<br />' .(DI::l10n()->t('Or - did you try to upload an empty file?'));
Logger::warning($msg, ['fileSize' => $fileSize]);
@unlink($tempFileName); @unlink($tempFileName);
if ($isJson) { if ($isJson) {
System::jsonExit(['error' => $msg]); System::jsonExit(['error' => $msg]);
@ -102,6 +105,7 @@ function wall_attach_post(App $a)
if ($maxFileSize && $fileSize > $maxFileSize) { if ($maxFileSize && $fileSize > $maxFileSize) {
$msg = DI::l10n()->t('File exceeds size limit of %s', Strings::formatBytes($maxFileSize)); $msg = DI::l10n()->t('File exceeds size limit of %s', Strings::formatBytes($maxFileSize));
Logger::warning($msg, ['fileSize' => $fileSize]);
@unlink($tempFileName); @unlink($tempFileName);
if ($isJson) { if ($isJson) {
System::jsonExit(['error' => $msg]); System::jsonExit(['error' => $msg]);
@ -117,6 +121,7 @@ function wall_attach_post(App $a)
if ($newid === false) { if ($newid === false) {
$msg = DI::l10n()->t('File upload failed.'); $msg = DI::l10n()->t('File upload failed.');
Logger::warning($msg);
if ($isJson) { if ($isJson) {
System::jsonExit(['error' => $msg]); System::jsonExit(['error' => $msg]);
} else { } else {

View File

@ -39,17 +39,18 @@ use Friendica\Util\Strings;
function wall_upload_post(App $a, $desktopmode = true) function wall_upload_post(App $a, $desktopmode = true)
{ {
Logger::info("wall upload: starting new upload"); Logger::info('wall upload: starting new upload');
$r_json = (!empty($_GET['response']) && $_GET['response'] == 'json'); $isJson = (!empty($_GET['response']) && $_GET['response'] == 'json');
$album = trim($_GET['album'] ?? ''); $album = trim($_GET['album'] ?? '');
if (DI::args()->getArgc() > 1) { if (DI::args()->getArgc() > 1) {
if (empty($_FILES['media'])) { if (empty($_FILES['media'])) {
$nick = DI::args()->getArgv()[1]; $nick = DI::args()->getArgv()[1];
$user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['nickname' => $nick, 'blocked' => false]); $user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['nickname' => $nick, 'blocked' => false]);
if (!DBA::isResult($user)) { if (!DBA::isResult($user)) {
if ($r_json) { Logger::warning('wall upload: user instance is not valid', ['user' => $user, 'nickname' => $nick]);
if ($isJson) {
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]); System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
} }
return; return;
@ -58,7 +59,8 @@ function wall_upload_post(App $a, $desktopmode = true)
$user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['uid' => BaseApi::getCurrentUserID(), 'blocked' => false]); $user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['uid' => BaseApi::getCurrentUserID(), 'blocked' => false]);
} }
} else { } else {
if ($r_json) { Logger:warning('Argument count is zero or one (invalid)');
if ($isJson) {
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]); System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
} }
return; return;
@ -73,7 +75,7 @@ function wall_upload_post(App $a, $desktopmode = true)
$page_owner_uid = $user['uid']; $page_owner_uid = $user['uid'];
$default_cid = $user['id']; $default_cid = $user['id'];
$page_owner_nick = $user['nickname']; $page_owner_nick = $user['nickname'];
$community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); $community_page = ($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY);
if ((DI::userSession()->getLocalUserId()) && (DI::userSession()->getLocalUserId() == $page_owner_uid)) { if ((DI::userSession()->getLocalUserId()) && (DI::userSession()->getLocalUserId() == $page_owner_uid)) {
$can_post = true; $can_post = true;
@ -84,15 +86,18 @@ function wall_upload_post(App $a, $desktopmode = true)
} }
if (!$can_post) { if (!$can_post) {
if ($r_json) { Logger::warning('No permission to upload files', ['contact_id' => $contact_id, 'page_owner_uid' => $page_owner_uid]);
System::jsonExit(['error' => DI::l10n()->t('Permission denied.')]); $msg = DI::l10n()->t('Permission denied.');
if ($isJson) {
System::jsonExit(['error' => $msg]);
} }
DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.')); DI::sysmsg()->addNotice($msg);
System::exit(); System::exit();
} }
if (empty($_FILES['userfile']) && empty($_FILES['media'])) { if (empty($_FILES['userfile']) && empty($_FILES['media'])) {
if ($r_json) { Logger::warning('Empty "userfile" and "media" field');
if ($isJson) {
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]); System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
} }
System::exit(); System::exit();
@ -102,12 +107,12 @@ function wall_upload_post(App $a, $desktopmode = true)
$filename = ''; $filename = '';
$filesize = 0; $filesize = 0;
$filetype = ''; $filetype = '';
if (!empty($_FILES['userfile'])) { if (!empty($_FILES['userfile'])) {
$src = $_FILES['userfile']['tmp_name']; $src = $_FILES['userfile']['tmp_name'];
$filename = basename($_FILES['userfile']['name']); $filename = basename($_FILES['userfile']['name']);
$filesize = intval($_FILES['userfile']['size']); $filesize = intval($_FILES['userfile']['size']);
$filetype = $_FILES['userfile']['type']; $filetype = $_FILES['userfile']['type'];
} elseif (!empty($_FILES['media'])) { } elseif (!empty($_FILES['media'])) {
if (!empty($_FILES['media']['tmp_name'])) { if (!empty($_FILES['media']['tmp_name'])) {
if (is_array($_FILES['media']['tmp_name'])) { if (is_array($_FILES['media']['tmp_name'])) {
@ -142,29 +147,36 @@ function wall_upload_post(App $a, $desktopmode = true)
} }
} }
if ($src == "") { if ($src == '') {
if ($r_json) { Logger::warning('File source (temporary file) cannot be determined');
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]); $msg = DI::l10n()->t('Invalid request.');
if ($isJson) {
System::jsonExit(['error' => $msg]);
} }
DI::sysmsg()->addNotice(DI::l10n()->t('Invalid request.')); DI::sysmsg()->addNotice($msg);
System::exit(); System::exit();
} }
$filetype = Images::getMimeTypeBySource($src, $filename, $filetype); $filetype = Images::getMimeTypeBySource($src, $filename, $filetype);
Logger::info("File upload src: " . $src . " - filename: " . $filename . Logger::info('File upload:', [
" - size: " . $filesize . " - type: " . $filetype); 'src' => $src,
'filename' => $filename,
'filesize' => $filesize,
'filetype' => $filetype,
]);
$imagedata = @file_get_contents($src); $imagedata = @file_get_contents($src);
$image = new Image($imagedata, $filetype); $image = new Image($imagedata, $filetype);
if (!$image->isValid()) { if (!$image->isValid()) {
$msg = DI::l10n()->t('Unable to process image.'); $msg = DI::l10n()->t('Unable to process image.');
Logger::warning($msg, ['imagedata[]' => gettype($imagedata), 'filetype' => $filetype]);
@unlink($src); @unlink($src);
if ($r_json) { if ($isJson) {
System::jsonExit(['error' => $msg]); System::jsonExit(['error' => $msg]);
} else { } else {
echo $msg . '<br />'; echo $msg . '<br />';
} }
System::exit(); System::exit();
} }
@ -176,7 +188,7 @@ function wall_upload_post(App $a, $desktopmode = true)
if ($max_length > 0) { if ($max_length > 0) {
$image->scaleDown($max_length); $image->scaleDown($max_length);
$filesize = strlen($image->asString()); $filesize = strlen($image->asString());
Logger::info("File upload: Scaling picture to new size " . $max_length); Logger::info('File upload: Scaling picture to new size', ['max_length' => $max_length]);
} }
$width = $image->getWidth(); $width = $image->getWidth();
@ -199,7 +211,7 @@ function wall_upload_post(App $a, $desktopmode = true)
Logger::notice('Image size is too big', ['size' => $filesize, 'max' => $maximagesize]); Logger::notice('Image size is too big', ['size' => $filesize, 'max' => $maximagesize]);
$msg = DI::l10n()->t('Image exceeds size limit of %s', Strings::formatBytes($maximagesize)); $msg = DI::l10n()->t('Image exceeds size limit of %s', Strings::formatBytes($maximagesize));
@unlink($src); @unlink($src);
if ($r_json) { if ($isJson) {
System::jsonExit(['error' => $msg]); System::jsonExit(['error' => $msg]);
} else { } else {
echo $msg . '<br />'; echo $msg . '<br />';
@ -223,7 +235,8 @@ function wall_upload_post(App $a, $desktopmode = true)
if (!$r) { if (!$r) {
$msg = DI::l10n()->t('Image upload failed.'); $msg = DI::l10n()->t('Image upload failed.');
if ($r_json) { Logger::warning('Photo::store() failed', ['r' => $r]);
if ($isJson) {
System::jsonExit(['error' => $msg]); System::jsonExit(['error' => $msg]);
} else { } else {
echo $msg . '<br />'; echo $msg . '<br />';
@ -250,32 +263,34 @@ function wall_upload_post(App $a, $desktopmode = true)
if (!$desktopmode) { if (!$desktopmode) {
$photo = Photo::selectFirst(['id', 'datasize', 'width', 'height', 'type'], ['resource-id' => $resource_id], ['order' => ['width']]); $photo = Photo::selectFirst(['id', 'datasize', 'width', 'height', 'type'], ['resource-id' => $resource_id], ['order' => ['width']]);
if (!$photo) { if (!$photo) {
if ($r_json) { Logger::warning('Cannot find photo in database', ['resource-id' => $resource_id]);
System::jsonExit(['error' => '']); if ($isJson) {
System::jsonExit(['error' => 'Cannot find photo']);
} }
return false; return false;
} }
$picture = [];
$picture["id"] = $photo["id"]; $picture = [
$picture["size"] = $photo["datasize"]; 'id' => $photo['id'],
$picture["width"] = $photo["width"]; 'size' => $photo['datasize'],
$picture["height"] = $photo["height"]; 'width' => $photo['width'],
$picture["type"] = $photo["type"]; 'height' => $photo['height'],
$picture["albumpage"] = DI::baseUrl() . '/photos/' . $page_owner_nick . '/image/' . $resource_id; 'type' => $photo['type'],
$picture["picture"] = DI::baseUrl() . "/photo/{$resource_id}-0." . $image->getExt(); 'albumpage' => DI::baseUrl() . '/photos/' . $page_owner_nick . '/image/' . $resource_id,
$picture["preview"] = DI::baseUrl() . "/photo/{$resource_id}-{$smallest}." . $image->getExt(); 'picture' => DI::baseUrl() . "/photo/{$resource_id}-0." . $image->getExt(),
'preview' => DI::baseUrl() . "/photo/{$resource_id}-{$smallest}." . $image->getExt(),
];
if ($r_json) { if ($isJson) {
System::jsonExit(['picture' => $picture]); System::jsonExit(['picture' => $picture]);
} }
Logger::info("upload done"); Logger::info('upload done');
return $picture; return $picture;
} }
Logger::info("upload done"); Logger::info('upload done');
if ($r_json) { if ($isJson) {
System::jsonExit(['ok' => true]); System::jsonExit(['ok' => true]);
} }