Compare commits

...

1088 commits

Author SHA1 Message Date
Michael Vogel 8446de2aa6
Merge pull request #11685 from MrPetovan/bug/11638-gserver_site_name-length
Add explicit gserver.site_name string truncate in Model\GServer
2022-06-25 12:39:06 +02:00
Hypolite Petovan aa133b5437 Add explicit gserver.site_name string truncate in Model\GServer
- Avoids "Data too long for column 'site_name'" database errors
2022-06-25 06:25:48 -04:00
Philipp aa596df098
Merge pull request #11686 from MrPetovan/bug/11636-emailer-message-id-check
Fix off-by-one error in Message ID header count check in Util\Emailer
2022-06-25 11:58:23 +02:00
Hypolite Petovan a2afb101cd Fix off-by-one error in Message ID header count check in Util\Emailer 2022-06-25 05:35:24 -04:00
Tobias Diekershoff b9fe8ee38f
Merge pull request #11683 from MrPetovan/bug/fatal-errors
Fix a couple Fatal Errors
2022-06-25 11:20:33 +02:00
Hypolite Petovan c75dbfd3d7 Update default value for LocalRelationship->priority to avoid null values
- Address https://github.com/friendica/friendica/issues/11630#issuecomment-1166192993
2022-06-25 05:06:22 -04:00
Hypolite Petovan 636b84b41c Update return value type-hint of GServer::getProtocol
- Address https://github.com/friendica/friendica/issues/11630#issuecomment-1164880874
2022-06-25 05:06:22 -04:00
Hypolite Petovan c5b46fe748
Merge pull request #11681 from Quix0r/fixes/item-guidfromuri-allow-null
Allowing Item::getFromUri()'s 2nd parameter a null value
2022-06-24 10:15:26 -04:00
Hypolite Petovan 4cdc0ef267
Merge pull request #11680 from nupplaphil/feat/log_forward
Respect Forwarded-For headers
2022-06-24 10:12:19 -04:00
Roland Häder 82bb36e13d
Changes:
- Made Item::guidFromUri()'s $host parameter optional (allowing null)
- added some type-hints
- added documentation
- this may fix reported issue in #11630
2022-06-24 03:17:57 +02:00
Philipp Holzer 417b0072bb
Move documentation :-) 2022-06-23 23:24:15 +02:00
Philipp Holzer 2dc38e5632
Move documentation :-) 2022-06-23 23:23:36 +02:00
Philipp Holzer 5bf5b5e6c9
adaptions :-) 2022-06-23 23:01:09 +02:00
Philipp Holzer 12ba37e8d2
add more doc 2022-06-23 22:46:46 +02:00
Philipp Holzer 13783089e7
Add copyright 2022-06-23 22:44:17 +02:00
Philipp Holzer d441b90bda
Respect Forwarded-For headers 2022-06-23 22:42:35 +02:00
Hypolite Petovan dbc1ebbb5c
Merge pull request #11679 from Quix0r/rewrites/autotest
Rewrite of autotest.sh
2022-06-23 12:41:14 -04:00
Roland Häder 3aeeac5d98
Rewrite:
- rewrote autotest.sh and moved it to bin/dev/ as this is clearly a developer
  script
- the rewrite's goal is towards Shell/POSIX-compliance (e.g. ${VAR} and not $VAR)
2022-06-23 17:36:56 +02:00
Hypolite Petovan d322e9288b
Merge pull request #11677 from Quix0r/rewrites/type-hints-doc-001
Rewrites/type hints doc 001
2022-06-23 11:34:52 -04:00
Roland Häder 657a8a7cb5
Changes:
- documented null value
- two ' to much!
2022-06-23 17:30:17 +02:00
Roland Häder 202857ba7d
No need to log $tid here 2022-06-23 17:30:17 +02:00
Roland Häder fd8f4269ff
Reformatted code 2022-06-23 17:30:17 +02:00
Roland Häder 5699b03e8d
Changes:
- added some nodes to OpenSearch descriptor
- still no UTF-8 encoding!
- added some type-hints
2022-06-23 17:30:16 +02:00
Roland Häder a49fb9cbf9
Changes:
- added some type-hints
- added documentation
2022-06-23 17:30:16 +02:00
Roland Häder 84d3eecc33
Changes:
- added some type-hints
- changed double-quotes to single
2022-06-23 17:30:15 +02:00
Roland Häder 57e741f2cf
More type-hints added 2022-06-23 17:30:15 +02:00
Roland Häder 182c3db9b8
Changes:
- added type-hints
- added missing documentation
2022-06-23 17:30:15 +02:00
Roland Häder b8353a6eb7
Changes:
- reformatted some array
- added missing documentation
- added type-hints
- changed double-quotes to single
2022-06-23 17:30:14 +02:00
Roland Häder c6c936a80f
Added more type-hints 2022-06-23 17:30:14 +02:00
Roland Häder 3f74a59f73
Added some type-hints 2022-06-23 17:30:14 +02:00
Roland Häder 69a68be800
Added some missing type-hints 2022-06-23 17:30:13 +02:00
Roland Häder f889aeffb3
Changes:
- changed double-quotes to single
- added type-hints
2022-06-23 17:30:13 +02:00
Roland Häder d8ff966d21
Throw IAE again (should never become visible) 2022-06-23 17:30:13 +02:00
Roland Häder 35c78ce14c
Ops, cannot return Thread? 2022-06-23 17:30:12 +02:00
Roland Häder c2e26b4f49
Changed:
- Introduced InvalidArgumentException (should never come)
- added type-hints
2022-06-23 17:30:12 +02:00
Roland Häder 2f3705f471
Continued:
- renamed varibales to $camelCase
- added type-hints
- updated documentation
2022-06-23 17:30:11 +02:00
Hypolite Petovan 0322456f70
Merge pull request #11678 from Quix0r/fixes/send-contact-accept-id-string
Fix for Transmitter::sendContactAccept() wrong 2nd parameter type
2022-06-23 11:05:38 -04:00
Roland Häder 0ddb315b23
$id in Transmitter::sendContactAccept() is a string, see Introduction class 2022-06-23 16:48:00 +02:00
Hypolite Petovan bf600905d3
Merge pull request #11676 from Quix0r/fixes/array-element-missing
Maybe this fixes missing array element
2022-06-23 09:06:59 -04:00
Hypolite Petovan 859af16cca
Merge pull request #11675 from Quix0r/features/smarty-sub-directories
Enabled sub-directories for compiled/cache Smarty3 files
2022-06-23 09:06:06 -04:00
Roland Häder 636fef26f1
Maybe this fixes missing array element 2022-06-23 07:40:49 +02:00
Roland Häder 589d0360a4
So simple ... Ops! 2022-06-23 04:58:45 +02:00
Roland Häder 69676c9f7b
Changes:
- enabled sub-directories for compiled/cached files which avoids large+slow
  directory descriptors
- changed some double-quotes to single
2022-06-23 04:24:55 +02:00
Hypolite Petovan b2aee2cf29
Merge pull request #11674 from nupplaphil/dep/guzzle
Bump guzzlehttp/guzzle from 6.5.5 to 6.5.8
2022-06-22 15:07:42 -04:00
Philipp e3aed8099c
Merge pull request #9 from nupplaphil/dependabot/composer/guzzlehttp/guzzle-6.5.8
Bump guzzlehttp/guzzle from 6.5.5 to 6.5.8
2022-06-22 20:23:38 +02:00
Hypolite Petovan c824ba43d5
Merge pull request #11673 from Quix0r/bugs/returned-type-array-bool
Fixed: ?? didn't work here as bool won't be seen as null
2022-06-22 13:29:39 -04:00
Roland Häder 7eefb9aed8
Changed:
- empty() is maybe superflous here, still I would prefer a code style that is
  written explicitly and not rely on "magic casting"
2022-06-22 18:57:01 +02:00
Roland Häder 15d8341d9a
Converted multiple single-comment (//) to multi-line comment block (/* */) 2022-06-22 18:06:35 +02:00
Roland Häder b996712ef7
Images::getInfoFromURL[Cached]() will both return empty arrays on error and
that needs to be reflected here, too.
2022-06-22 17:20:59 +02:00
Roland Häder eb231bc548
Fixed: ?? didn't work here as bool won't be seen as null 2022-06-22 17:09:53 +02:00
Philipp 78bf7f187c
Merge pull request #11669 from MrPetovan/bug/11666-email-subject-double-encode 2022-06-22 16:51:23 +02:00
Hypolite Petovan b96daeeeef
Merge pull request #11670 from Quix0r/fixes/more-type-hints-004
Fixes/more type hints 004
2022-06-22 10:49:20 -04:00
Roland Häder d5441da49a
Fixed:
- TypeError: "Argument 1 passed to Friendica\Util\XML::escape() must be of the
  type string, null given, called in src/Util/XML.php line 171
2022-06-22 16:20:26 +02:00
Roland Häder 101cd2dd10
Changes:
- added some documentation
- fixed some documentation
- changed more double-quotes to singl
2022-06-22 16:14:14 +02:00
Roland Häder ba45e59313
Changes:
- added more type-hints
- added missing documentation
- Email::send() now returns what mail() returns (bool)
2022-06-22 14:36:48 +02:00
Roland Häder ee8d0ad619
Changes:
- added more type-hints
- added some documentation
2022-06-22 14:36:47 +02:00
Roland Häder feec96cbc4
Return empty array on error (I hope it works this way). 2022-06-22 14:36:47 +02:00
Roland Häder 2dd7d465e8
Changes:
- added more type-hints
- updated documentation
- changed double-quotes to single
2022-06-22 14:36:47 +02:00
Roland Häder 74ab7648c6
Changes:
- addHubLink()'s 2nd parameter is DOMElement
- added more type-hints
- converted double-quotes to single
2022-06-22 14:36:46 +02:00
Roland Häder 12add2fb64
$data can turn into bool here 2022-06-22 14:36:46 +02:00
Roland Häder 08f55f0358
Ops, forgot to rename these, too. 2022-06-22 14:36:46 +02:00
Roland Häder abd0d9f3fd
Changes
- added type-hints
- added some documentation
- added default: block for unknown 'rel' value
- changed return type void to empty array
2022-06-22 14:36:45 +02:00
Roland Häder dfa95ea58d
Changes:
- added type-hints
- added documentation
2022-06-22 14:36:45 +02:00
Roland Häder 84bfc37bf1
Changes:
- added more type-hints
- added missing documentation
2022-06-22 14:36:45 +02:00
Tobias Diekershoff fa973d3b0f
Merge pull request #11671 from MrPetovan/bug/fatal-errors
Add expected type-hint to BoundariesPager::renderFull
2022-06-22 14:30:39 +02:00
Hypolite Petovan e9f7bb477d Add expected type-hint to BoundariesPager::renderFull
- Address https://github.com/friendica/friendica/issues/11630#issuecomment-1162634199
2022-06-22 07:49:45 -04:00
Hypolite Petovan 7295138f8d Remove type-hint inconsistent with expected return value in Database->getVariable 2022-06-22 07:47:15 -04:00
Hypolite Petovan d68f307337 Remove email subject encoding from ItemCCEmail constructor
- It was wrongly re-encoded in Emailer::send
2022-06-21 21:12:09 -04:00
Hypolite Petovan a05baaf249
Merge pull request #11668 from Quix0r/renames/logger
Renamings in logger class to make them more clear
2022-06-21 20:52:19 -04:00
Roland Häder 2f358607c7
Changes:
- renamed Logger::getLogger() to getInstance() (@MrPetovan)
2022-06-22 01:50:10 +02:00
dependabot[bot] 6443713af1
Bump guzzlehttp/guzzle from 6.5.5 to 6.5.8
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 6.5.5 to 6.5.8.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/6.5.8/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/6.5.5...6.5.8)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 20:47:00 +00:00
Roland Häder cdcfb4064b
Changes:
- added type-hints
- added missing documentation
- renamed Logger::getWorker() to Logger::getLogger() as there is no worker class
  returned but the actual (inner) logger
2022-06-21 21:22:16 +02:00
Hypolite Petovan 1c57ea7f75
Merge pull request #11665 from Quix0r/rewrites/dba-array-string-table
Rewrites/dba array string table
2022-06-21 15:15:57 -04:00
Roland Häder 8092188991
Added important comment from @nupplaphil@github.com 2022-06-21 21:12:59 +02:00
Roland Häder f38ad168f5
Reverted and improved TODO:
------
@nupplaphil: There is no easy possibility to add a logger here, that's why there
isn't any yet and instead a placeholder.. This execution point is a critical
state during a testrun, and tbh I'd like to leave here no further logic (yet)
because I spent hours debugging cases, where transactions weren't fully closed
and strange/unpredictable errors occur (sometimes -mainly during debugging other
errors :) ...)
-----
2022-06-21 19:21:25 +02:00
Roland Häder 80c8ec17c2
Fixed documentation 2022-06-21 18:43:25 +02:00
Roland Häder 0332a57bfd
Rewrote to suggestions from @MrPetovan (I tried to maintain the old way of
['scheme' => 'table'] with my version).
2022-06-21 18:13:01 +02:00
Roland Häder 3b8d9a7248
Use protected $this->logger instead 2022-06-21 17:54:48 +02:00
Roland Häder 9ccb113530
Ops, autorun.sh is there but looks like lesser "multi-project" friendly as
MYSQL_* must be defined. I might still use my version as that is
project-specific.
2022-06-21 17:48:10 +02:00
Roland Häder dcedd2e5d9
Ops, WWORD ... 2022-06-21 13:54:03 +02:00
Roland Häder 5e57ad4d44
Added simple wrapper script to run PHPUnit tests for you. To use this, you need
to set at least 4 variables in your ~/.bashrc (recommended):

export FRIENDICA_MYSQL_HOST="localhost"
export FRIENDICA_MYSQL_DATABASE="friendica_test"
export FRIENDICA_MYSQL_USER="friendica_test"
export FRIENDICA_MYSQL_PASSWWORD="friendica_test"

Then you can put ./bin/dev/run_tests.sh into your .git/hooks/pre-commit file
2022-06-21 13:47:40 +02:00
Roland Häder 5fe428d3e4
Fixed:
- PHPUnit\Framework\Error\Notice:  Undefined index: language in /.../src/Util/EMailer/MailBuilder.php on line 122
2022-06-21 13:47:40 +02:00
Roland Häder a7651fa1d5
Changes:
- let's at least log the error message, yes it does flood your logfile
2022-06-21 13:47:40 +02:00
Roland Häder 1080a840f5
Changes:
- Database->$driver can no longer be NULL, an empty string is fine anyway
2022-06-21 13:47:39 +02:00
Roland Häder 945cd1a2c2
Fixed:
- since $table can be now schema.table, this needs being taken care off
- maybe this foreach(explode()) is a bit an overkill as only 1 or 2 entries
  can be found in it
2022-06-21 13:47:39 +02:00
Roland Häder 0d81a08e3c
WIP: Properly some fixes? Also why is DROP VIEW IF EXISTS is being killed? 2022-06-21 13:47:39 +02:00
Roland Häder 44a9ec9b17
Rewrite:
- avoid having array|string for $table to have a "string" type-hint for $table
- you now have to do it for yourself by giving 'schema.table' as parameter
2022-06-21 13:47:38 +02:00
Roland Häder f62c28008a
Removed comment 2022-06-21 13:47:38 +02:00
Roland Häder cefffde691
Changes:
- added type-hints
- added some missing documentation
2022-06-21 13:47:37 +02:00
Roland Häder f1867463a0
Changes:
- added more type-hints
2022-06-21 13:47:37 +02:00
Roland Häder 77c37ff2db
Fixed:
- Uncaught Exception TypeError: "Argument 3 passed to
  Friendica\Protocol\DFRN::createActivity() must be of the type string, null
  given, called ..."
2022-06-21 13:47:37 +02:00
Hypolite Petovan e6ddb167f6
Merge pull request #11664 from tobiasd/20220621-fr
update FR translations THX kalon33
2022-06-21 07:43:12 -04:00
Tobias Diekershoff 4650ff53d9
Merge pull request #11662 from MrPetovan/bug/11661-splitattachment-null
Ensure parameter 4 of Post\Media::splitAttachment is a boolean value
2022-06-21 06:48:52 +02:00
Tobias Diekershoff fff6e30782
update FR translations THX kalon33 2022-06-21 06:45:14 +02:00
Hypolite Petovan d2ca812647
Merge pull request #11660 from Quix0r/fixes/more-type-hints-003
More type-hints - Batch 003
2022-06-20 21:53:17 -04:00
Roland Häder 3e522ed512
Fixed:
- prevent NULL from being handled over to XML::escape()
- still I wonder that an object can be? It is a string-only accepting method
2022-06-21 01:42:37 +02:00
Roland Häder 95f9eb34ac
Fixed indenting 2022-06-21 01:29:33 +02:00
Hypolite Petovan ee9bc338a5
Merge pull request #11663 from Quix0r/composer/upgrade
Updated composer.phar
2022-06-20 19:17:13 -04:00
Roland Häder b6fa022a73
Changes:
- added type-hints
- added some documentation
- marked some generic methods to be moved to Util\Strings class instead
2022-06-20 23:50:24 +02:00
Roland Häder 6a98ffa330
Updated composer.phar 2022-06-20 22:55:21 +02:00
Roland Häder fbae0b8bcf
Changes:
- renamed ItemArrayFromMail() to getItemArrayFromMail() to follow naming-convetion
- added missing type-hints
- added missing documentation
2022-06-20 21:22:46 +02:00
Roland Häder ea22e88896
Added documentation 2022-06-20 21:02:34 +02:00
Roland Häder 752953e472
Changes:
- as @MrPetovan pointed out, $actor can be NULL earlier and used later as NULL
- added some missing type-hints
- added missing documentation
- the added @TODO points out to avoid true|false|null for a boolean
2022-06-20 21:00:19 +02:00
Hypolite Petovan 88eacbf66e Ensure parameter 4 of Post\Media::splitAttachment is a boolean value 2022-06-20 14:34:02 -04:00
Roland Häder 0c12e947dd
Changes:
- null was 2nd argument's value before, an empty string is basically the same here
2022-06-20 20:01:59 +02:00
Roland Häder feb87e8dc3
Changes:
- let's start throwing exceptions on e.g. invalid arguments instead of returning
  FALSE
2022-06-20 19:09:08 +02:00
Roland Häder 4fb03cf163
Changes:
- fixed a null value handled over to Friendica\Model\APContact::getByURL()
- added missing type-hints
2022-06-20 19:05:02 +02:00
Roland Häder e96a548286
Changes:
- dumped default value for $input
- added unknown 'platform' which prevents an "Undefined index: platform in
  /var/www/.../src/Model/GServer.php on line 940" error
2022-06-20 18:56:22 +02:00
Roland Häder e5cc7a5ab1
Fixes:
- Strings::isHex() should not be misused for checking on NULL
2022-06-20 08:25:45 +02:00
Roland Häder 6743de63f5
Changed:
- DBA::exists() should only be used for checking if records exists.
- if you want to check if a table exists, please ALWAYS use
  DBStructure::existsTable() instead
2022-06-20 08:20:07 +02:00
Roland Häder cc750d743b
Changes:
- some methods now need to return bool to be compatible
- added some missing type-hints
2022-06-20 08:12:54 +02:00
Roland Häder 9c80dd35e5
Both declarations must be the same 2022-06-20 08:07:12 +02:00
Tobias Diekershoff 13a5a30b28
Merge pull request #11659 from MrPetovan/bug/11511-relocate-quote-identifier
Add missing identifier quote in Database->replaceInTableFields
2022-06-20 06:26:33 +02:00
Roland Häder cd3b01fd82
Changed:
- cannot have type-hints :-(
2022-06-20 03:48:34 +02:00
Roland Häder 94a594eeb2
Ops, wrong type-hint 2022-06-20 03:36:36 +02:00
Roland Häder ec96f2252e
Changes:
- added type-hints
- added some missing documentation
2022-06-20 03:10:23 +02:00
Roland Häder 14bf72e4fe
Changes:
- added some documentation
- added type-hints
2022-06-20 02:48:05 +02:00
Roland Häder 97904ea7dd
Changes:
- added type-hints
- added missing documentation
2022-06-20 02:48:02 +02:00
Roland Häder a0c8fc6d6e
Changes:
- added more type-hints
2022-06-20 02:48:02 +02:00
Hypolite Petovan 7528b79469
Merge pull request #11657 from Quix0r/fixes/post-media-size-bigint
Size "mediumint" wasn't enough
2022-06-19 20:23:29 -04:00
Hypolite Petovan d48e40c1bf Add missing identifier quote in Database->replaceInTableFields
- This caused hyphenated table names to fail the replace query
2022-06-19 20:06:12 -04:00
Roland Häder d276f2c62b
Changes:
- added type-hints
- changed some double-quotes to single
2022-06-20 01:00:29 +02:00
Roland Häder 8c38265b37
Changes:
- `url` to `varbinary(1024)`
 - `preview` to `varbinary(512)`

as the previous once (half length) were not enough in real-life scenarios
2022-06-19 23:09:29 +02:00
Roland Häder 2512449751
Incremented again 2022-06-19 15:36:16 +02:00
Roland Häder 9f24a4b60e
Fixed documentation/SQL dump with ./bin/console dbstructure dump 2022-06-19 15:36:16 +02:00
Roland Häder 96954e2b18
Size "mediumint" wasn't enough:
https://digitalcourage.video/static/webseed/5a039eb2-9fbc-441d-a772-59ae3ee65c15-1080.mp4 has 6758472669 Bytes

So let's go REALLY big.
2022-06-19 15:36:15 +02:00
Hypolite Petovan 622b978a84
Merge pull request #11655 from Quix0r/fixes/more-type-hints-002
More type-hints and documentation added
2022-06-19 09:27:29 -04:00
Roland Häder 5a553df7d8
Incremented database version 2022-06-19 14:41:36 +02:00
Roland Häder ed3c53a5f8
Ops, not here wanted. :-( 2022-06-19 14:06:32 +02:00
Roland Häder bff57bb030
Changes:
- added type-hints
- added returned type-hints in interface (I checked all)
2022-06-19 14:00:31 +02:00
Hypolite Petovan 777872e6fa
Merge pull request #11658 from tobiasd/20220619-accesskey
Accesskey was used twice
2022-06-19 07:09:20 -04:00
Roland Häder c0d7f8944d
Some calls saved 2022-06-19 11:26:10 +02:00
Roland Häder 60f8c2d795
Changes:
- added missing type-hints
- added documentation for a method
2022-06-19 10:50:09 +02:00
Roland Häder 5f6943b008
Changes:
- MySQL index on BLOB/TEXT can only be partial (e.g.: `column`(length))
2022-06-19 10:50:06 +02:00
Roland Häder 5792a01a01
Contact::getAccountType()'s parameter is never a string, ops 2022-06-19 09:36:24 +02:00
Roland Häder f3599fa3e9
Changes:
- dbstructure(null) is no longer possible, an empty string does it
2022-06-19 09:13:10 +02:00
Tobias Diekershoff 065dad79ca
updated the Accesskey documentation accordingly 2022-06-19 06:33:21 +02:00
Tobias Diekershoff a063a89c57
Accesskey was used twice
The accesskey on the User Settings pages for the _account settings_ and the _two factor authentication_ were the same. This PR is assinging a new one to the 2FA.
2022-06-19 06:30:00 +02:00
Roland Häder b6bfe72083
Wrong returned type, has to be array 2022-06-19 02:40:07 +02:00
Roland Häder 7bb0cb5323
Changes:
- added more type-hints
- DBStructure::existsTable() does no longer need array support for table name
  because this is no longer used (good work!)
2022-06-19 02:11:12 +02:00
Roland Häder 2c5685c89c
Changes:
- changed to proper "use Foo\Bar;"
- added doctag
- added return type as this is fixed
2022-06-19 01:11:30 +02:00
Roland Häder d7d2ad77ff
Ops, also this! 2022-06-18 23:31:52 +02:00
Roland Häder 39f2d197ea
Changed to suggestings (back to original) + fixed typo in scalar type 2022-06-18 23:30:37 +02:00
Roland Häder 6f1d52cf71
Changed back to suggestions by @MrPetovan 2022-06-18 23:24:08 +02:00
Roland Häder 2f961b11bf
Naming-convention:
- variables should start lower-case: $image
2022-06-18 23:16:34 +02:00
Roland Häder fa14a02a19
Changes:
- added type-hints
- added documentation
- changed double-quotes to single
2022-06-18 23:12:52 +02:00
Roland Häder f3b57008b5
Proper type is string 2022-06-18 18:41:16 +02:00
Roland Häder 41f34c4261
Maybe fix for:
"Argument 1 passed to Friendica\Model\ItemURI::getIdByURI() must be of the type string, null given, called in Processor.php line 1219"
2022-06-18 18:30:50 +02:00
Roland Häder 9691bb06fb
Changes:
- added more type-hints
- added missing documentation
2022-06-18 18:21:29 +02:00
Roland Häder 94eb426151
Nodeinfo::getOrganization() doesn't need configuration object being inserted
when you have DI::config() around.
2022-06-18 17:56:33 +02:00
Roland Häder c29c49797a
Added missing type-hints 2022-06-18 17:52:46 +02:00
Roland Häder 4e437190c5
Renamed variable, no need for "orig_" prefix 2022-06-18 17:50:11 +02:00
Roland Häder a1a81cdc6b
Continued:
- changed some double-quotes to single
- added missing type-hints
- added missing documentation
- fixed indenting a bit
2022-06-18 17:46:34 +02:00
Roland Häder 8fc710f82a
Continued:
- added more type-hints
- added some missing documentation
- Return the result from DBA::delete() to let other methods know about it
2022-06-18 17:22:50 +02:00
Roland Häder 8ba3f13fae
Changes:
- added more type-hints
- added missing documentation
2022-06-18 17:09:46 +02:00
Roland Häder 7ec07178c8
Changes:
- added missing type-hints
- added missing documentation
2022-06-18 16:59:23 +02:00
Hypolite Petovan e90ad0c1cd
Merge pull request #11653 from Quix0r/fixes/more-type-hints
More type-hints added
2022-06-18 10:33:33 -04:00
Hypolite Petovan b2e5993314
Merge pull request #11654 from Quix0r/fixes/post-media-url-size
post-media has too small sizes for video files
2022-06-18 10:28:00 -04:00
Roland Häder 92a1d14e5e
Updated documentation and SQL dump, according to woodpecker tests 2022-06-18 16:02:33 +02:00
Roland Häder 8756d92316
Continued:
- prevents a "Return value of Friendica\Core\Worker::workerProcess() must be of the type array, bool returned"
2022-06-18 15:57:31 +02:00
Roland Häder 8aaf99c61d
Sizes increased for:
- video files that have sizes var being int allowes
- URLs that might be longer (e.g. magnet: URLs) than varbinary(511) allows
2022-06-18 15:31:47 +02:00
Roland Häder bd3a7b9877
Ops, needs to be a variable:
Error: "Cannot pass parameter 2 by reference" at /var/www/.../src/Module/DFRN/Poll.php line 36
2022-06-18 09:59:19 +02:00
Roland Häder 69cda4f760
Fixed TypeError: "Argument 1 passed to Friendica\Core\System::httpExit() must be
of the type string, null given, called in /var/www/.../src/Module/DFRN/Poll.php
on line 37"
2022-06-18 05:42:02 +02:00
Roland Häder 7cbb818c93
Set type-hint for parameter $data to SimpleXMLElement as $fields in dispatch()
is the same and being handled over.
2022-06-18 05:19:24 +02:00
Roland Häder 89302d0843
Some outside code relies on returned "false" 2022-06-18 05:06:18 +02:00
Roland Häder aaf5c323b6
Fixed indenting 2022-06-18 05:04:14 +02:00
Roland Häder adb4aea6ad
Changes:
- added some type-hints
- replaced most double-quotes (only Diaspora.php, later more) with single
- added some documentation
- normalized indenting in Diaspora.php (I hope I got all?)
2022-06-18 05:03:10 +02:00
Roland Häder 51f43278d6
Fixed incompatible types 2022-06-17 18:00:36 +02:00
Roland Häder 88c40f3336 Ops, wrong type again 2022-06-17 17:18:31 +02:00
Roland Häder a770634b95 Ops, wrong type 2022-06-17 17:18:31 +02:00
Roland Häder 36d56a4041 Continued:
- changed back to 'return false;' as other methods heavily rely on false instead
  of an empty array as pointed out by @heluecht@pirati.ca
- $fetched_contact should be initialized as an empty array, let's not make this
  code more crazier than it already is (see APContact::getByURL())
2022-06-17 17:18:31 +02:00
Roland Häder c467bff79f Some more type-hints added 2022-06-17 17:18:31 +02:00
Roland Häder 4f3321cc9f Nore fixes 2022-06-17 17:18:31 +02:00
Roland Häder 10bb7d5625 Possible fix for
Uncaught Exception TypeError: "Return value of
Friendica\Model\APContact::getByURL() must be of the type array, bool returned"
2022-06-17 17:18:31 +02:00
Roland Häder fdd237a090 Fix for "Uncaught Exception TypeError: "Argument 1 passed to
Friendica\Model\APContact::unarchiveInbox() must be of the type string, null
given" error message
2022-06-17 17:18:31 +02:00
Roland Häder 605e7d55b3 Continued:
- added more type-hints
- some methods in Diaspora returned void but integer was documented so I
  changed it to -1 to have a proper type-hint
2022-06-17 17:18:31 +02:00
Roland Häder 0c9aff8a09 Also need to declare $profile or otherwise an invocation of
Receiver::getReceiverForActor() will fail.
2022-06-17 17:18:31 +02:00
Roland Häder af8cd5ca86 Worker::getWaitingJobForPID() can also return FALSE on failure ... :-( 2022-06-17 17:18:31 +02:00
Roland Häder 227bab43a8 Ops, wrong type-hint here, must be string ($nickname can never be an integer). 2022-06-17 17:18:31 +02:00
Roland Häder f7c1eaa858 Continued:
- added type-hints
- removed out-dated documentation
- added some missing documentation
2022-06-17 17:18:31 +02:00
Roland Häder e484b6d6dc Continued:
- added more type-hints
- added some documentation
- Contact::getAccountType() should only process string, not null
2022-06-17 17:18:31 +02:00
Roland Häder 45b5f67bca Fix for non-existing record system.mobile_theme in config table 2022-06-17 17:18:31 +02:00
Roland Häder 5c9ce790bf Fixed:
- $object_data['actor'] can be null, but Receiver::getReceivers()'s 2nd
  parameter expect it to be string
2022-06-17 17:18:31 +02:00
Roland Häder 33768ea1c6 Some fixes:
- $gsid's default value cannot sadly be 0, it now must be null to allow some
  code work
- added some more type-hints
- documented a bit more
2022-06-17 17:18:31 +02:00
Roland Häder 4e53666c70 Added more type-hints 2022-06-17 17:18:31 +02:00
Roland Häder 7560dccc08 Added again more type-hints 2022-06-17 17:18:31 +02:00
Roland Häder 2766c7d9cf Continued:
- added more type-hints
- added some missing documentation
2022-06-17 17:18:31 +02:00
Roland Häder a587217f47 Fixed "Argument 4 passed to Friendica\Protocol\DFRN::processVerbs() must be of the type bool" 2022-06-17 17:18:31 +02:00
Roland Häder dd54e52575 MrPetovan brought the right one up:
> Since this is depending on remote systems, the log can quickly fill with unactionable messages.
2022-06-17 17:18:31 +02:00
Roland Häder c351099c5a Ops, bad type-hint here 2022-06-17 17:18:31 +02:00
Roland Häder 2c5595c358 Another incompatible method declaration fixed + type-hints added 2022-06-17 17:18:31 +02:00
Roland Häder 40d7f29a11 Continued:
- more type-hints
- fixed incompatible method declarations
2022-06-17 17:18:31 +02:00
Roland Häder 1edc6b3c3b Added more type-hints for "App" classes 2022-06-17 17:18:31 +02:00
Roland Häder 42b04f397b Added more type-hints 2022-06-17 17:18:31 +02:00
Roland Häder aa5f0d5ec1 Added more type-hints and documented a few methods 2022-06-17 17:18:31 +02:00
Roland Häder 97e27cb523 Added more type-hints 2022-06-17 17:18:31 +02:00
Roland Häder c2e889cfae Added more type-hints 2022-06-17 17:18:31 +02:00
Hypolite Petovan a8a21c7fb6
Merge pull request #11652 from Quix0r/fixes/causer-id
Misspelled braces causing "undefined index 'causer-id'" message
2022-06-17 10:12:22 -04:00
Roland Häder 5106bb2881
Added parenthesis 2022-06-17 09:41:11 +02:00
Roland Häder a903dbd77e
Wrong braces causing 'undefined index causer-id'. See #11632 2022-06-16 23:00:16 +02:00
Hypolite Petovan 51b31a846f
Merge pull request #11649 from Quix0r/fixes/return-type-fetch-content
Fixes incompatible returned type from HTTPSignature::fetch() method
2022-06-16 13:16:06 -04:00
Roland Häder 6035de6883
Continued:
- added more type-hints
- also cannot return FALSE when array is set
2022-06-16 19:06:41 +02:00
Hypolite Petovan 341d8860d1
Merge pull request #11647 from Quix0r/fixes/type-error-exception
Followup PR for bad #11624 PR
2022-06-16 11:53:15 -04:00
Roland Häder 51a7b5c584
Made also this one sweeter (null-coalscing) 2022-06-16 17:36:47 +02:00
Roland Häder 0e1f734b03
Also make this null-coalscing 2022-06-16 17:35:01 +02:00
Roland Häder e8fee5644b
Ops, syntax errors get unnoticed with a simple editor. :-( 2022-06-16 17:10:02 +02:00
Roland Häder 624e4c192c
Changed to null-coalscing style (??) as sugguested by @MrPetovan 2022-06-16 16:59:54 +02:00
Roland Häder 962b06bf41
Added check as suggested by @MrPetovan for empty $message. 2022-06-16 16:54:51 +02:00
Roland Häder f2b7326650
This will 2 things:
1) The first change prevents "expensive" code in HTML::toBBcode() to be executed
   just for an empty string which makes no sense.
2) The above change was maybe flawed as $apcontact['about'] would have never
   been created, not even empty which could have side effects

Thanks to @annando to make me rethink this part of code.
2022-06-16 16:54:50 +02:00
Roland Häder 7814ba4fc4
Fixes for bad invocations of HTML::toBBCode() (1st parameter is now string) 2022-06-16 16:54:50 +02:00
Roland Häder b200874f17
Ops:
- wrong way around (!empty($foo)) is proper
- also needed to be checked on $acitivty['content']
2022-06-16 16:54:50 +02:00
Roland Häder b1e4c0931a
Fixes and type-hints:
- added more checked type-hints as they prevent bad method invocations
- fixed TypeError for HTML::toBBCode() invocations with NULL as first (wrong)
  argument, thanks to @tobias@social.diekershoff.de pointing this out.
2022-06-16 16:54:49 +02:00
Hypolite Petovan bb57d45237
Merge pull request #11645 from Quix0r/fixes/e-notice_use
Fixed possible "Trying to access array offset on value of type bool" E_NOTICE
2022-06-16 08:45:50 -04:00
Roland Häder e9af4b5bb9
Shorter code, thanks to @annando pointing this out 2022-06-16 13:29:30 +02:00
Roland Häder 65da5246ca
Fixed possibble "Trying to access array offset on value of type bool" E_NOTICE
Signed-off-by: Roland Häder <roland@mxchange.org>
2022-06-16 10:07:41 +02:00
Tobias Diekershoff 13ef86d4a3
Merge pull request #11644 from Quix0r/fixes/file-permissions
Fixed file permissions
2022-06-16 10:02:31 +02:00
Roland Häder 58c48977ec
These files should never have executable files 2022-06-16 09:14:23 +02:00
Roland Häder fd0d4aedee
Font files should NEVER be executable
Signed-off-by: Roland Häder <roland@mxchange.org>
2022-06-16 09:13:48 +02:00
Hypolite Petovan 207bf58801
Merge pull request #11624 from Quix0r/fixes/type-hints
Added more known type-hints
2022-06-15 16:32:25 -04:00
Roland Häder 5fa954208a
Changes:
- ops, wasn't actually fixing `return;` to proper `return '';`
- added more type-hints
- added TODO ($uid is unused)
2022-06-15 22:28:33 +02:00
Roland Häder a3fa95e8e4
Changes:
- added more type-hints
- changed `return;` to `return '';` when `string` was requested as returned type-hint
  (thanks to @MrPetovan)
2022-06-15 22:05:38 +02:00
Roland Häder 34aee64349
Added more type-hints
Signed-off-by: Roland Häder <roland@mxchange.org>
2022-06-15 21:52:51 +02:00
Roland Häder 143e4c4a18
Added more known type-hints
Signed-off-by: Roland Häder <roland@mxchange.org>
2022-06-15 21:52:50 +02:00
Tobias Diekershoff 98954dd14e
Merge pull request #11643 from annando/avatar-path
You can now store the avatar in a separate folder and host
2022-06-15 06:25:31 +02:00
Michael 726c4dff7d You can now store the avatar in a separate folder and host 2022-06-15 03:59:26 +00:00
Hypolite Petovan f839cd3826
Merge pull request #11642 from annando/platform-default
Some more default avatars
2022-06-13 16:31:34 -04:00
Michael b816ae4db5 Some more default avatars 2022-06-13 20:07:54 +00:00
Michael Vogel 1eadcb4855
Merge pull request #11641 from tobiasd/20220613-lng
AR, FR and HU translation updates
2022-06-13 17:42:10 +02:00
Tobias Diekershoff 6d6f356446
AR translation updates THX ButterflyOfFire 2022-06-13 14:27:14 +02:00
Tobias Diekershoff 7614ace843
added HU translation THX Balázs Úr 2022-06-13 14:27:14 +02:00
Tobias Diekershoff cc77052817
update FR translations THX kalon33 2022-06-13 14:27:06 +02:00
Hypolite Petovan 663296b107
Merge pull request #11639 from annando/platform-default
Use platform specific default avatar pictures
2022-06-13 07:59:49 -04:00
Michael 70b9a8114d Improve license comment 2022-06-13 10:30:21 +00:00
Michael d9fb081db9 Using separate avatars for different peertube account types 2022-06-13 10:27:46 +00:00
Michael a47f1efec3 use correct image for Pleroma 2022-06-13 10:18:17 +00:00
Michael c1a64b77c0 Improved license text 2022-06-13 10:03:34 +00:00
Michael a5b5f9316d Updated database.sql and messages.po 2022-06-13 05:46:37 +00:00
Michael e0a0c57c44 Use platform specific default avatar pictures 2022-06-13 05:18:54 +00:00
Tobias Diekershoff 05a76a3dc2
initial CHANGELOG for the 2022.09 release 2022-06-11 10:07:04 +02:00
Tobias Diekershoff 13d7242463
pump version to 2022.09-dev 2022-06-11 10:06:02 +02:00
Tobias Diekershoff 7fe7d0c904
pump version to 2022.06, welcome Giant Rhubarb 2022-06-11 10:01:00 +02:00
Tobias Diekershoff 21028a4bf4
typos and a release date 2022-06-11 09:57:49 +02:00
Tobias Diekershoff ddbd1d9d7b
renew the date in the security.txt file 2022-06-11 09:54:47 +02:00
Tobias Diekershoff 5ec1891e0a
Merge pull request #11532 from tobiasd/2022.05-CHANGELOG
CHANGELOG for the 2022.06 release
2022-06-11 09:50:08 +02:00
Tobias Diekershoff 5bd3f62665
Merge pull request #11629 from annando/issue-11625
Issue 11625: Don't parse the title through Markdown
2022-06-11 09:14:13 +02:00
Tobias Diekershoff 5573540ecf late time issue closed 2022-06-11 09:13:20 +02:00
Michael d7d8a6ab55 Issue 11625: Don't parse the title through Markdown 2022-06-11 06:50:59 +00:00
Tobias Diekershoff 3394b65c60
Merge pull request #11628 from annando/api-pinned
API: Use the type field in the query for pinned posts
2022-06-11 08:29:28 +02:00
Michael 4cf46b9770 API: Use the type field in the query for pinned posts 2022-06-11 06:05:55 +00:00
Hypolite Petovan c0863d2fb9
Merge pull request #11627 from annando/api-pinned
API: Improve the performance for fetching pinned posts
2022-06-10 19:53:22 -04:00
Michael 176f0c1216 API: Improve the performance for fetching pinned posts 2022-06-10 22:38:46 +00:00
Hypolite Petovan 143120b9c4
Merge pull request #11626 from annando/api-status
API: Speed improvements when fetching posts
2022-06-10 16:52:05 -04:00
Michael 4157f816f5 Fix for account variable name 2022-06-10 20:32:21 +00:00
Michael 9a1abda314 Use "avatar" instead of "contact" 2022-06-10 20:26:57 +00:00
Michael 7e747b2f41 API: Speed improvements when fetching posts 2022-06-10 18:49:03 +00:00
Hypolite Petovan 37405567c1
Merge pull request #11622 from Quix0r/fixes/switch-db-current-max-update
Switched maximum database update with currently worked on to "current/max
2022-06-08 11:22:38 -04:00
Roland Häder 1e890e16ac
Switched maximum database update with currently worked on to "current/max" as
this is understandable that update X of maximum Y is applied.

Signed-off-by: Roland Häder <roland@mxchange.org>
2022-06-08 11:48:05 +02:00
Tobias Diekershoff 86837ddb4a
Merge pull request #11621 from annando/notice
Avoid notice when a contact couldn't be fetched
2022-06-08 07:42:20 +02:00
Michael Vogel a1a265091a
Merge pull request #11620 from tobiasd/20220608-lng
DR, RU translation updates
2022-06-08 07:37:50 +02:00
Michael 2064a2ce87 Avoid notice when a contact couldn't be fetched 2022-06-08 05:35:34 +00:00
Tobias Diekershoff 06769dfc91
DE translation updates 2022-06-08 07:21:10 +02:00
Tobias Diekershoff a18a95b870
RU translations THX SpcCw 2022-06-08 07:20:25 +02:00
Hypolite Petovan 2dc45af57a
Merge pull request #11619 from annando/update-community
Fix:  respected the account type on the community page update
2022-06-07 15:14:55 -04:00
Michael d2772908e4 Fix: respected the account type on the community page update 2022-06-07 18:52:46 +00:00
Hypolite Petovan 6b0b8848a4
Merge pull request #11618 from annando/forced-display-update
Fix forced updates on the display page
2022-06-07 13:55:15 -04:00
Michael d665b78ea8 Fix forced updates on the display page 2022-06-07 17:34:19 +00:00
Tobias Diekershoff df33b88eb1 some numbered issues closed, some more details added to the CHANGELOG 2022-06-07 07:55:24 +02:00
Michael Vogel 79205b8377
Merge pull request #11616 from tobiasd/20220607-lng
DE, FR, HU, RU translation updates
2022-06-07 07:12:08 +02:00
Tobias Diekershoff 17877d9fd7
update FR translations THX kalon33 2022-06-07 06:32:01 +02:00
Tobias Diekershoff e3183cb4b4
DE translation updats 2022-06-07 06:31:52 +02:00
Tobias Diekershoff 579a23ba6e
RU translations THX Alexander An 2022-06-07 06:31:35 +02:00
Tobias Diekershoff 64fac441a6
HU translation update THX Balázs Úr 2022-06-07 06:31:13 +02:00
Hypolite Petovan 21d4726619
Merge pull request #11615 from annando/api-markers
API: Support for markers added
2022-06-06 18:00:00 -04:00
Michael 56e88d2c4c Fix the spelling 2022-06-06 21:52:47 +00:00
Michael 19772f29f3 API: Support for markers added 2022-06-06 21:38:59 +00:00
Hypolite Petovan 90eeacde3c
Merge pull request #11613 from annando/updated
Only update when new content arrives
2022-06-06 09:15:58 -04:00
Michael d435203f72 Merge remote-tracking branch 'upstream/2022.05-rc' into updated 2022-06-06 11:58:40 +00:00
Hypolite Petovan 9c7568cffc
Merge pull request #11612 from annando/rearrange
Rearrange the notification settings
2022-06-06 07:33:23 -04:00
Michael 069c1d0b35 Only update when new content arrives 2022-06-06 10:41:07 +00:00
Michael 9bb371850a Different approach for empty values 2022-06-06 07:35:28 +00:00
Michael a07e47f50c Improved handling with empty user configuration 2022-06-06 05:43:24 +00:00
Michael 62701b49e1 Use constants 2022-06-06 04:44:29 +00:00
Hypolite Petovan 3f711b5301
Merge pull request #11611 from annando/writable
Hopefully make threads writable
2022-06-05 21:31:49 -04:00
Michael da33517a2d Rearrange the notification settings 2022-06-05 21:19:21 +00:00
Michael 557b1125e2 Hopefully make threads writable 2022-06-05 20:38:05 +00:00
Tobias Diekershoff e5802b7c30
Merge pull request #11610 from annando/issue-11602
Issue 11602: Fix error during contact merhe
2022-06-05 20:27:47 +02:00
Michael 1196df4895 Remove test 2022-06-05 18:16:50 +00:00
Michael 001aac9952 Issue 11602: Fix error during contact merhe 2022-06-05 18:15:10 +00:00
Tobias Diekershoff 9e37435ae6
Merge pull request #11609 from annando/fix-uid
Fix notifications
2022-06-05 18:56:16 +02:00
Michael 9daeb552dd Suppress dislikes 2022-06-05 16:54:29 +00:00
Michael 24559b711b Notify about shared posts again 2022-06-05 16:26:20 +00:00
Michael d242332aa4 Add the notify type to the notification query 2022-06-05 15:02:03 +00:00
Hypolite Petovan 7c3dcc6f1d
Merge pull request #11608 from annando/fix-uid
Use the user id instead of "local_user()"
2022-06-05 10:38:23 -04:00
Michael 13e216032f Use the user id instead of "local_user()" 2022-06-05 14:22:16 +00:00
Hypolite Petovan 28ce00c102
Merge pull request #11606 from annando/issue-11566
Issue 11566: More detailled notification configuration
2022-06-05 08:13:34 -04:00
Michael Vogel 913f5ada27
Merge pull request #11603 from tobiasd/20220605-lng
DE, HU translation updates
2022-06-05 13:46:33 +02:00
Michael 57b8708425 Issue 11566: More detailled notification configuration 2022-06-05 11:41:08 +00:00
Tobias Diekershoff b6d2d71cbd
added HU translation THX Balázs Úr 2022-06-05 10:08:01 +02:00
Tobias Diekershoff c3024e5b92
DE translation updats 2022-06-05 10:07:44 +02:00
Hypolite Petovan b1afcb5ebf
Merge pull request #11588 from annando/mergecontact
New command to merge duplicated contacts
2022-06-04 15:34:37 -04:00
Tobias Diekershoff fd48a8c9ab
Merge pull request #11601 from annando/issue-11594
Issue 11594: Ensure to create notifications in the user language
2022-06-04 16:52:26 +02:00
Tobias Diekershoff 327b29d794
Merge pull request #11600 from annando/no-visible-photo
Don't make photo item visible
2022-06-04 16:51:21 +02:00
Michael f1913b28e0 Issue 11594: Ensure to create notifications in the user language 2022-06-04 14:08:11 +00:00
Michael db4ad7883f Revert some of the last changes 2022-06-04 12:11:41 +00:00
Michael 3b2c2e5d33 Don't make photo item visible 2022-06-04 12:02:59 +00:00
Tobias Diekershoff 7684cd4f07
Merge pull request #11599 from annando/avatar
Fix avatar for messages and feeds
2022-06-04 10:08:17 +02:00
Michael 50a0034744 Fix avatar for messages and feeds 2022-06-04 07:57:11 +00:00
Tobias Diekershoff 4a5d230aad
Merge pull request #11597 from annando/pinned-private
Fix: Only public posts can be pinned
2022-06-04 08:33:38 +02:00
Michael 4108704ee3 Fix: Only public posts can be pinned 2022-06-04 06:11:32 +00:00
Michael 194f0f7058 No dropping 2022-06-03 20:14:38 +00:00
Hypolite Petovan 6e3b5d251e
Merge pull request #11596 from annando/visible-activities
Fix: Like/Dislike/Reshare actions should now be visible
2022-06-03 15:54:49 -04:00
Michael 0aee9a054a Fix: Like/Dislike/Reshare actions should now be visible 2022-06-03 17:40:06 +00:00
Tobias Diekershoff 69c8bd3b5e
Merge pull request #11593 from annando/avatar-basepath
Ensure that the avatar base path exists
2022-06-03 15:04:21 +02:00
Michael 5442d09cc1 Ensure that the avatar base path exists 2022-06-03 05:28:10 +00:00
Philipp e4c13bb1c7
Merge pull request #11590 from tobiasd/20220602-lng
FR, RU translation updates
2022-06-02 08:37:07 +02:00
Tobias Diekershoff ec07a31fb3
update FR translations THX kalon33 2022-06-02 07:00:37 +02:00
Tobias Diekershoff 5d4aec176e
RU translations THX Alexander An 2022-06-02 07:00:22 +02:00
Michael b794c599a9 Standards fixed 2022-06-01 22:18:18 +00:00
Michael e46354a522 New command to merge duplicated contacts 2022-06-01 22:11:03 +00:00
Philipp aae735413e
Merge pull request #11587 from tobiasd/20220601-hu
HU translation updated THX Balázs Úr
2022-06-01 20:11:32 +02:00
Tobias Diekershoff 078334ce53
HU translation updated THX Balázs Úr 2022-06-01 18:43:36 +02:00
Philipp 514250073f
Merge pull request #11586 from tobiasd/20220601-de
DE translation updates
2022-06-01 11:46:35 +02:00
Tobias Diekershoff d67c4d1e91 it will be a 2022.06 release and some other things fixed 2022-06-01 08:25:21 +02:00
Tobias Diekershoff 8c4ec6adde
DE translation updates 2022-06-01 05:46:32 +02:00
Hypolite Petovan 749130b226
Merge pull request #11585 from annando/fix-display
Fix: Activities should be be able again on displayed posts
2022-05-31 18:09:52 -04:00
Michael 36b80eb704 We should now always fetch the user posts 2022-05-31 17:49:08 +00:00
Michael f4e680c97e Fix: Activities should be be able again on displayed posts 2022-05-31 17:00:21 +00:00
Tobias Diekershoff 8e09f6f579 another bug fixed 2022-05-31 16:32:41 +02:00
Tobias Diekershoff d6d826329f
Merge pull request #11584 from annando/follow-notification
Fix: Use correct follow notification texts
2022-05-31 16:30:59 +02:00
Michael 7b219718c4 Fix: Use correct follow notification texts 2022-05-31 14:02:43 +00:00
Tobias Diekershoff bce376ef6f small stuff in the last hours of the RC... 2022-05-31 08:17:21 +02:00
Tobias Diekershoff 78a0c98a11
Merge pull request #11583 from annando/photo-resolution
Fix: Show photos in high resolution
2022-05-31 07:10:25 +02:00
Michael 592665ed28 Fix: Show photos in high resolution 2022-05-31 04:52:50 +00:00
Hypolite Petovan 0a44143ef5
Merge pull request #11582 from annando/issue-10926
Issue 10926: Transmit pending events to accepted contacts
2022-05-30 22:37:50 -04:00
Michael cc6192df02 Issue 10926: Transmit pending events to accepted contacts 2022-05-30 20:52:43 +00:00
Tobias Diekershoff 94a178c590 numbers of closed issues updated, and some small additions 2022-05-30 17:08:56 +02:00
Michael Vogel 0b312ae9b3
Merge pull request #11580 from tobiasd/20220530-lng
DE, FR and HU translation updates
2022-05-30 16:24:25 +02:00
Tobias Diekershoff d7eb78e65e
DE translation updates 2022-05-30 16:04:07 +02:00
Tobias Diekershoff 6ec812208f
update FR translations THX kalon33 2022-05-30 16:04:00 +02:00
Tobias Diekershoff 406b3f14dd
HU translation updated THX Balázs Úr 2022-05-30 16:03:45 +02:00
Michael Vogel ee40d8ea04
Merge pull request #11579 from MrPetovan/bug/11291-user-theme-display
Assume unsettable system.always_my_theme pconfig value is always true
2022-05-29 23:27:21 +02:00
Hypolite Petovan 7f711e266f Assume unsettable system.always_my_theme pconfig value is always true
- This was a logged in user setting so it assumes false for anonymous users
2022-05-29 16:13:49 -04:00
Hypolite Petovan 9160fde8ca
Merge pull request #11578 from annando/issue-11561
Issue 11561: Don't mark photo links as invalid
2022-05-29 15:54:22 -04:00
Hypolite Petovan 220703575c
Merge pull request #11577 from annando/issue-11557
Issue 11557: Update all local contacts
2022-05-29 15:53:21 -04:00
Hypolite Petovan 1e68c90fb2
Merge pull request #11576 from annando/issue-11488
Issue 11488: Don't search for mentions in shared posts
2022-05-29 15:49:46 -04:00
Michael aabb56c70d Issue 11561: Don't mark photo links as invalid 2022-05-29 19:10:00 +00:00
Michael Vogel 47a3d8e6ce
Merge pull request #11519 from MrPetovan/task/11511-console-domain-move
Add relocate console command and fix the missing DB tables for the relocation
2022-05-29 20:42:32 +02:00
Hypolite Petovan 4c5d9e22a8 Propagate signature change of Database::transaction() 2022-05-29 14:23:57 -04:00
Hypolite Petovan 121d26999c Updated main translation file after moving strings 2022-05-29 13:58:33 -04:00
Michael 540b3f892b Issue 11557: Update all local contacts 2022-05-29 17:48:09 +00:00
Hypolite Petovan 1301a53f20 Remove relocation form from Admin Site settings 2022-05-29 13:15:23 -04:00
Hypolite Petovan f1630ebb05 Add relocate console command 2022-05-29 13:13:59 -04:00
Hypolite Petovan 7d09ce86c4 Move relocation feature in its separate class
- Create Database->replaceInTableFields method
2022-05-29 12:11:18 -04:00
Michael 42d3e5c1ce Issue 11488: Don't search for mentions in shared posts 2022-05-29 16:07:53 +00:00
Hypolite Petovan 697b8a6cb8
Merge pull request #11575 from annando/issue-11469
Issue 11469: Respect desktop notification settings
2022-05-29 08:06:32 -04:00
Michael 1dccc31508 Issue 11469: Repect desktop notification settings 2022-05-29 09:20:06 +00:00
Tobias Diekershoff 92bf5213cc
Merge pull request #11573 from annando/no-local
Don't touch local avatars
2022-05-29 10:10:40 +02:00
Michael 02473d8a0e Don't touch local avatars 2022-05-29 06:50:34 +00:00
Michael Vogel 511a51b9a3
Merge pull request #11571 from MrPetovan/bug/11291-user-theme-display
Use the top-level author theme if they're a local user in mod/display
2022-05-29 05:39:54 +02:00
Hypolite Petovan a924716131 Use the top-level author theme if they're a local user in mod/display 2022-05-28 21:53:57 -04:00
Hypolite Petovan faa3f26d3b
Merge pull request #11570 from annando/issue-11470
Issue 11470: Check for removed account
2022-05-28 18:32:21 -04:00
Hypolite Petovan a503d5ac1b
Merge pull request #11569 from annando/issue-11431
Issue 11431: Only show pinned posts on contacts and your own ones
2022-05-28 18:24:37 -04:00
Hypolite Petovan 875d84435c
Merge pull request #11568 from annando/add-timestamp
Add timestamp data to the avatar path
2022-05-28 18:21:19 -04:00
Michael 4ef7f42257 Issue 11470: Check for removed account 2022-05-28 16:21:41 +00:00
Michael 881c4204b4 Issue 11431: Only show pinned posts on contacts and your own ones 2022-05-28 15:55:31 +00:00
Michael ba8088bf3c Add timestamp data to the avatar path 2022-05-28 14:20:48 +00:00
Philipp c7608983dc
Merge pull request #11567 from tobiasd/20220528-hu
HU translation updated THX Balázs Úr
2022-05-28 09:45:25 +02:00
Tobias Diekershoff efa15ab0b8
HU translation updated THX Balázs Úr 2022-05-28 07:09:07 +02:00
Tobias Diekershoff d3624af1b6
Merge pull request #11565 from annando/force-avatar-update
Pass the "force" parameter to the avatar update
2022-05-27 09:52:10 +02:00
Michael b05aa824f7 Don't move mail and feed 2022-05-27 06:32:19 +00:00
Michael 0a43fe857c Pass the "force" parameter to the avatar update 2022-05-27 05:36:07 +00:00
Michael Vogel e793438e0d
Merge pull request #11564 from tobiasd/20220527-de
DE translation updates
2022-05-27 07:12:38 +02:00
Tobias Diekershoff cf91734f4f
DE translation updates 2022-05-27 07:08:48 +02:00
Hypolite Petovan d4631176b2
Merge pull request #11563 from annando/avatar-error
Issue-11560: Fix error when creating avatar cache file
2022-05-26 18:58:49 -04:00
Michael 4475b3ff39 Updated messages.po 2022-05-26 20:01:07 +00:00
Michael 8c901ebd74 Issue-11560: Fix error when creating avatar cache file 2022-05-26 19:06:16 +00:00
Hypolite Petovan 1d29025091
Merge pull request #11559 from tobiasd/20220526-lng
DE, RU, ZH CN translation updates
2022-05-26 10:24:54 -04:00
Tobias Diekershoff cb5b6f345e
update to the zh-cn translation THX shykana 2022-05-26 16:18:11 +02:00
Tobias Diekershoff 314431507d
RU translations THX Alexander An 2022-05-26 16:17:58 +02:00
Tobias Diekershoff 620352d1a2
DE translation updates 2022-05-26 16:17:29 +02:00
Tobias Diekershoff 5a1108352c added new console tool to the CHANGELOG 2022-05-25 17:28:08 +02:00
Tobias Diekershoff 5c9aa13147 some things added to the CHANGELOG 2022-05-25 17:28:08 +02:00
Tobias Diekershoff 1ed2b1af7a typo 2022-05-25 17:28:08 +02:00
Tobias Diekershoff dc13704dd4 CHANGELOG for the 2022.05 release 2022-05-25 17:28:08 +02:00
Hypolite Petovan 488fdd9791
Merge pull request #11558 from annando/public-contact
Ensure that the public contact exists before adding a user contact
2022-05-25 09:06:13 -04:00
Hypolite Petovan ae3acba231
Merge pull request #11549 from annando/move-to-avatar-cache
Console command to move avatars to the avatar cache
2022-05-25 09:03:12 -04:00
Hypolite Petovan 36ccb25bd2
Merge pull request #11556 from tobiasd/20220525-frhu
FR and HU translation updates
2022-05-25 09:02:27 -04:00
Michael 918c1eeb56 Check for phantom network 2022-05-25 11:46:58 +00:00
Michael f5d69b3b6a Ensure that the public contact exixts before adding a user contact 2022-05-25 11:43:29 +00:00
Michael e8864653d8 Merge remote-tracking branch 'upstream/2022.05-rc' into move-to-avatar-cache 2022-05-25 05:38:50 +00:00
Michael dadebdd061 Change output function 2022-05-25 05:24:31 +00:00
Tobias Diekershoff 737d9e7a58
HU translation updated THX Balázs Úr 2022-05-25 07:23:59 +02:00
Tobias Diekershoff 2a0ab3f0f1
update FR translations THX kalon33 2022-05-25 07:21:04 +02:00
Hypolite Petovan 9804c71b53
Merge pull request #11555 from annando/relay
Improved Relay handling / better handling of receiver responses
2022-05-25 00:22:42 -04:00
Hypolite Petovan 0de50a5118
Merge pull request #11554 from tobiasd/20220525-fr
update FR translations THX  kalon33
2022-05-25 00:20:37 -04:00
Michael Vogel e5e509ea21 Calculate totals 2022-05-24 22:32:30 +02:00
Michael 2fbfc0633a Fixed placeholder 2022-05-24 20:12:39 +00:00
Michael d3709d8497 Delete on invalid 2022-05-24 20:02:54 +00:00
Michael 9da0e637a3 Quit on invalid avatars 2022-05-24 19:47:49 +00:00
Michael 80adad3ad2 Additional method to fetch photo avatars 2022-05-24 19:41:38 +00:00
Michael fb0e31791f updated messages.po 2022-05-24 19:09:36 +00:00
Michael 077c6ece64 Don't use a newline at the end 2022-05-24 17:51:28 +00:00
Michael 2ead69c7a5 Delete invalid photo data 2022-05-24 17:49:29 +00:00
Michael Vogel 0374f0e523 Use correct placeholder 2022-05-24 19:45:02 +02:00
Michael 0ff8ca8053 Trim the rid 2022-05-24 17:39:02 +00:00
Michael Vogel eddfab7122 A space in front of a message looks better 2022-05-24 19:36:48 +02:00
Michael f764ab7429 Improved messages 2022-05-24 17:33:10 +00:00
Michael 74b102b948 Increase the delivery queue counter on drop 2022-05-24 17:28:35 +00:00
Michael bee6ffe968 Support dropping delivery for single message transfer as well 2022-05-24 12:32:04 +00:00
Michael 034d838248 Ignore delivery problems with drops 2022-05-24 12:27:35 +00:00
Michael 8969e83134 Use a better query to fetch the relay actor 2022-05-24 08:06:48 +00:00
Michael e68ff3b3bb Return the actor, not the array 2022-05-24 08:02:55 +00:00
Michael b1a2de5cb5 Resubscribe to relay servers 2022-05-24 07:02:42 +00:00
Michael f16cb13dc7 Fixwd class description 2022-05-24 05:58:14 +00:00
Tobias Diekershoff 9b860f4051
update FR translations THX kalon33 2022-05-24 07:51:23 +02:00
Michael 7b91c4f333 Sorting by "id asc" makes more sense. 2022-05-23 15:31:37 +00:00
Michael 68599c7efa Some more code beauty 2022-05-23 12:44:21 +00:00
Michael 299c4df8f4 Convert to tabs 2022-05-23 12:35:44 +00:00
Michael d658c81107 Code standards 2022-05-23 12:33:25 +00:00
Michael d6242aacf6 Console command to move avatars to the avatar cache 2022-05-23 12:15:30 +00:00
Tobias Diekershoff a1871756ee
Merge pull request #11546 from nupplaphil/bug/catch_image_exception
Fix unsupported animated webp parsing
2022-05-21 18:59:21 +02:00
Philipp Holzer 218fc0c20d
Fix unsupported animated webp parsing 2022-05-21 18:51:03 +02:00
Philipp Holzer 783b05cbb1
Fix unsupported animated webp parsing 2022-05-21 18:44:03 +02:00
Hypolite Petovan c4ec80e839
Merge pull request #11545 from annando/url-tag
Don't parse tags in links
2022-05-21 08:44:49 -04:00
Michael 087ad25c87 Escape the "share" as well 2022-05-21 11:55:38 +00:00
Michael 54d7a435a3 Don't parse tags in links 2022-05-21 11:46:38 +00:00
Tobias Diekershoff ed350e472f
Merge pull request #11544 from annando/image-proxy
Only use proxied image links with images
2022-05-21 13:40:46 +02:00
Michael 49dab14215 Only use proxied image links with images 2022-05-21 06:58:26 +00:00
Tobias Diekershoff 9e19043c15
Merge pull request #11543 from annando/warning
Avoid warning "Undefined namespace prefix"
2022-05-21 08:18:59 +02:00
Michael 3444c29b0b Avoid warning "Undefined namespace prefix" 2022-05-21 06:04:34 +00:00
Hypolite Petovan 11538376ed
Merge pull request #11539 from annando/worker-split
The worker and the delivery is split into several classes
2022-05-20 23:45:51 -04:00
Hypolite Petovan c374630c65
Merge pull request #11541 from annando/fix-relay
Only deliver own content to the relay (possibly fix relay problems)
2022-05-20 23:42:36 -04:00
Michael e4e8b8cb46 Restoring old status 2022-05-20 22:52:44 +00:00
Michael 5095ce621a Test the license check 2022-05-20 22:43:27 +00:00
Michael Vogel 7857c329cf Only deliver own content to the relay (possibly fix relay problems) 2022-05-20 19:04:03 +02:00
Michael 9ded39eff6 Renamed variable 2022-05-20 15:49:59 +00:00
Hypolite Petovan 8af0af5f35
Merge pull request #11540 from tobiasd/20220520-pl
PL translation update THX strebski
2022-05-20 10:54:07 -04:00
Tobias Diekershoff d858aa86e5
PL translation update THX strebski 2022-05-20 13:59:55 +02:00
Michael 2fc5957abb Spelling error fixed 2022-05-20 05:46:38 +00:00
Michael 653af77e5f Further formatting fixes 2022-05-20 04:52:18 +00:00
Michael 6ce23bd9ca Fixed code structure 2022-05-20 04:42:10 +00:00
Michael dc16e6d471 The worker is split into several classes 2022-05-19 19:24:21 +00:00
Philipp 87e14d9d28
Merge pull request #11533 from annando/notification-cache
Cache notifications
2022-05-19 20:32:30 +02:00
Michael Vogel a13d33e057
Merge pull request #11536 from tobiasd/20220519-de
DE translation updates
2022-05-19 14:11:44 +02:00
Tobias Diekershoff e151e5958f
DE translation updates 2022-05-19 12:49:27 +02:00
Michael 49c47008d1 Convert class calls into DI calls 2022-05-19 09:08:04 +00:00
Michael Vogel 0b8e0a09e3
Merge pull request #11534 from nupplaphil/bug/catch_notfound
Catch exceptions for Worker::AddContact()
2022-05-19 04:45:13 +02:00
Philipp Holzer c33611c484
Catch exceptions for Worker::AddContact() 2022-05-18 22:37:17 +02:00
Michael 5aa798b1dc Remove test logging 2022-05-18 20:10:14 +00:00
Michael 536ce232a7 Cache notifications 2022-05-18 20:05:29 +00:00
Tobias Diekershoff 7d958e8804
Merge pull request #11530 from annando/logruntime
Configuration for logging added
2022-05-18 08:17:50 +02:00
Tobias Diekershoff b18880221a
Merge pull request #11531 from annando/display-polls
Improved poll texts for different conditions
2022-05-18 08:16:41 +02:00
Tobias Diekershoff 23e5ae15e3
Merge pull request #11528 from annando/logruntime
Log the execution time
2022-05-18 07:07:55 +02:00
Michael 4622814e5f Configuration for logging added 2022-05-18 03:10:38 +00:00
Michael 2e6e3597e5 unused DI" removed 2022-05-18 02:19:45 +00:00
Michael f6167b4cfd New function to exit the program 2022-05-18 02:13:54 +00:00
Michael 4e9d7df31a Add missing DI 2022-05-17 21:26:35 +00:00
Michael aacaa3c2cf Log the command, not the module 2022-05-17 21:25:01 +00:00
Michael 4016a576d5 Log the execution time 2022-05-17 20:47:23 +00:00
Tobias Diekershoff 6eb70bea16
Merge pull request #11526 from annando/ap-endpoint-cache
Prolonged cache lifetime for endpoints
2022-05-17 17:43:20 +02:00
Michael 0b50dc363b Caching of "noscrape" 2022-05-17 15:39:04 +00:00
Michael c3fd8b39aa Caching for profiles removed 2022-05-17 12:53:31 +00:00
Michael 4e3e9dc763 Cache the profile as well 2022-05-17 12:46:55 +00:00
Michael 75534fa3f3 Fix warning " Trying to access array offset on value of type bool" 2022-05-17 12:38:39 +00:00
Michael 73019284ce Increase cache lifespan / clear cache upon changes 2022-05-17 12:32:25 +00:00
Michael a880d8b982 Merge remote-tracking branch 'upstream/2022.05-rc' into ap-endpoint-cache 2022-05-17 08:18:02 +00:00
Michael 610f8a086f Use cache key constants 2022-05-17 08:17:41 +00:00
Tobias Diekershoff 3493f91801
Merge pull request #11525 from annando/shared-media
Fix: Fetch media in shared posts
2022-05-17 10:11:21 +02:00
Michael 10cdefa232 Fix: Fetch media in shared posts 2022-05-17 07:58:41 +00:00
Tobias Diekershoff e555ea6aad
Merge pull request #11524 from annando/cache-endpoints
AP endpoints are now cached
2022-05-17 07:13:51 +02:00
Michael 1ccf22a496 AP endpoints are now cached 2022-05-17 04:58:54 +00:00
Tobias Diekershoff 9f1cc2fb67
Merge pull request #11523 from annando/preview
Fix: Preview failed because of unknown variables
2022-05-17 06:09:51 +02:00
Michael 3f8da997f4 Fix: Preview failed because of unknown variables 2022-05-17 03:40:38 +00:00
Hypolite Petovan 65516a1d3a
Merge pull request #11522 from annando/performance
Performance: Avoid queries where there is no media or category
2022-05-16 15:00:10 -04:00
Michael Vogel 257ae2ac17
Merge pull request #11521 from tobiasd/20220516-de
DE translation updates
2022-05-16 19:12:36 +02:00
Michael 4daae255d8 Performance: Avoid queries where there is no media or category 2022-05-16 17:06:58 +00:00
Tobias Diekershoff f07422634a
DE translation updates 2022-05-16 18:36:24 +02:00
Michael 62a1cf257e Improved poll texts for different conditions 2022-05-16 06:04:46 +00:00
Tobias Diekershoff 69984ac6bc
Merge pull request #11520 from annando/display-polls
Display poll results
2022-05-16 08:04:08 +02:00
Michael Vogel 7199a91289
Merge pull request #11509 from tobiasd/20220515-credits
regen CREDITS for the 2022.05 release
2022-05-16 07:32:31 +02:00
Michael 2dc9b4eda2 Vote text changed 2022-05-16 05:31:53 +00:00
Michael f277d9cd2f Exclude several folders from translation generation 2022-05-16 05:30:58 +00:00
Michael 1555c82196 Translation updated 2022-05-16 05:07:28 +00:00
Michael a63caefe3d Polls are now displayed 2022-05-16 04:55:15 +00:00
Hypolite Petovan 4829c240e9
Merge pull request #11516 from annando/issue-11472
Issue 11472: Store the "edit" history
2022-05-15 20:24:59 -04:00
Hypolite Petovan 2bde5c4850
Merge pull request #11518 from annando/issue-11504
Issue 11504: Abstract has to be plaintext
2022-05-15 20:19:42 -04:00
Michael 2c511b8a23 Check the edit date before storing history 2022-05-15 21:15:31 +00:00
Michael 440b6d7956 Issue 11504: Abstract has to be plaintext 2022-05-15 21:04:01 +00:00
Michael d77b043d9c Fixing tests 2022-05-15 20:26:14 +00:00
Michael 324cce7a19 Issue 11472: Store the "edit" history 2022-05-15 20:21:56 +00:00
Tobias Diekershoff 204e52ea30
Merge pull request #11515 from annando/issue-11492
Issue 11492: Improvements for contact import
2022-05-15 21:56:36 +02:00
Michael 972f91436c Issue 11492: Improvements for contact import 2022-05-15 18:40:46 +00:00
Tobias Diekershoff 6f70d21e07
Merge pull request #11514 from annando/issue-11508
Issue 11508: Sanitizing date fields for events and polls
2022-05-15 20:07:52 +02:00
Michael 5af7c30026 Issue 11508: Sanitizing date fields for events and polls 2022-05-15 18:00:19 +00:00
Tobias Diekershoff 66004f4d2d regen CREDITS for the 2022.05 release 2022-05-15 13:46:07 +02:00
Tobias Diekershoff 44291a465b
Merge pull request #11506 from annando/featured-worker
Fetch featured posts through a worker
2022-05-15 13:10:19 +02:00
Michael 30b9af10ac Fetch featured posts through a worker 2022-05-15 09:08:35 +00:00
Tobias Diekershoff 036b565a78
Merge pull request #11503 from annando/bulk-delivery
Fix workerqueue entries with wrong priority
2022-05-15 08:22:36 +02:00
Michael f0bfa9a690 Each 5xx error is a server fail 2022-05-14 13:49:01 +00:00
Michael 689b71c696 Added check for server failure 2022-05-14 11:34:00 +00:00
Michael fbdb73cdd6 Improved log levels 2022-05-14 11:18:48 +00:00
Michael 43dbd1c396 Add additional timeout checks 2022-05-14 11:09:59 +00:00
Michael f8d929d94e Ensure to set the network timeout 2022-05-14 09:53:12 +00:00
Michael 962b35a76a Merge remote-tracking branch 'upstream/2022.05-rc' into bulk-delivery 2022-05-14 07:44:25 +00:00
Michael a8839517fe Fix workerqueue entries with wrong priority 2022-05-14 06:36:43 +00:00
Michael 30bcb24af7 Display the runtime 2022-05-14 06:06:38 +00:00
Michael 4b5a743645 Handle timeout 2022-05-14 05:38:01 +00:00
Tobias Diekershoff 74167043a8
Merge pull request #11497 from annando/bulk-delivery
Simplifications for the experimental bulk delivery
2022-05-14 07:34:21 +02:00
Michael 4ef2679ca6 Fix test 2022-05-13 19:37:50 +00:00
Michael fab5ba39ff Failed post deliveries are now deleted via cron 2022-05-13 18:48:13 +00:00
Michael 065d73f860 Merge remote-tracking branch 'upstream/2022.05-rc' into bulk-delivery 2022-05-13 08:53:18 +00:00
Michael 65b86fe0d5 Blanks replaced 2022-05-13 07:44:36 +00:00
Michael 0f0f4bc2c7 New worker job for deliveries without a worker 2022-05-13 07:31:00 +00:00
Tobias Diekershoff bb44ff1528
Merge pull request #11500 from annando/pleroma-issues
Change the featured collection to fix communication issues with Pleroma
2022-05-13 07:58:49 +02:00
Michael a662245c74 We now store the receivers as well 2022-05-13 05:52:05 +00:00
Michael 47cd1edb9f Change the featured collection to fix communication issues with Pleroma 2022-05-13 03:42:04 +00:00
Michael Vogel 201610dfe6 Don't look at the command when archiving an inbox 2022-05-13 04:24:22 +02:00
Michael 2595b5e12f Remove all posts of a given inbox 2022-05-13 02:18:46 +00:00
Michael 2049fbce91 Remove delivery when the inbox is archived 2022-05-13 02:11:02 +00:00
Michael 4f68be82ef Use a simpler worker call 2022-05-12 21:28:57 +00:00
Michael 67a74c15e1 Improve item fetching 2022-05-12 21:10:59 +00:00
Michael Vogel 5409998047
Merge pull request #11498 from tobiasd/20220512-zhcn
update to the zh-cn translation THX gudzpoz
2022-05-12 19:24:36 +02:00
Michael b0b67f1fde Remove failing posts 2022-05-12 12:43:49 +00:00
Tobias Diekershoff dfeb2e9a62
update to the zh-cn translation THX gudzpoz 2022-05-12 14:29:05 +02:00
Tobias Diekershoff ce7bf8524d
update to the zh-cn translation THX gudzpoz 2022-05-12 14:27:03 +02:00
Michael a943dbb420 Introducing the "failed" counter 2022-05-12 06:54:58 +00:00
Michael d5d2892f59 Simplifications for the experimental bulk delivery 2022-05-12 06:17:55 +00:00
Hypolite Petovan f128c00ca5
Merge pull request #11496 from annando/no-local-update
Don't update the local avatar
2022-05-11 14:53:25 -04:00
Michael 3d7ecb4fde Don't update the local avatar 2022-05-11 18:30:59 +00:00
Hypolite Petovan 610b3fc39e
Merge pull request #11495 from annando/warning
Avoid warning "fileperms(): stat failed for ..."
2022-05-11 13:46:06 -04:00
Michael afa57edf8e Avoid warning "fileperms(): stat failed for ..." 2022-05-11 17:28:28 +00:00
Hypolite Petovan fc364df7c2
Merge pull request #11494 from annando/warning
Fix a warning because of an undefined array key
2022-05-11 12:08:07 -04:00
Michael 47ee6fd009 Fix a warning because of an undefined array key 2022-05-11 16:01:37 +00:00
Michael Vogel 449df1a583
Merge pull request #11493 from tobiasd/20220511-frioimportcontactsform
[frio] import contacts form was missing the enctype
2022-05-11 17:59:20 +02:00
Tobias Diekershoff d816f02ab8
[frio] import contacts form was missing the enctype
fixes #11492 hopefully

For uploading files, the enctype for the form has to be set to `multipart/form-data`. Frio was missing this specification, other themes inherit it from the default template.
2022-05-11 17:28:57 +02:00
Hypolite Petovan 7026dd37db
Merge pull request #11490 from annando/issue-11487
Move IDN conversion behind the cleaning
2022-05-11 08:52:02 -04:00
Michael 0f0b649e8d Replace unparse function 2022-05-11 11:06:14 +00:00
Michael 34f594137e Movwe the conversion after the cleaning 2022-05-11 10:56:44 +00:00
Michael ffb8491c3f Merge remote-tracking branch 'upstream/2022.05-rc' into issue-11487 2022-05-11 10:53:43 +00:00
Michael 020ba7a4ed The function is now usable for all formats 2022-05-11 06:58:26 +00:00
Michael 695e3d8b61 Simplifiy the split 2022-05-11 06:55:02 +00:00
Tobias Diekershoff b5129eb4ed
Merge pull request #11489 from annando/issue-11487
Issue 11487: IDN support added
2022-05-11 08:46:15 +02:00
Michael 47808ab0e9 Issue 11487: IDN support added 2022-05-11 06:34:25 +00:00
Hypolite Petovan e374c2e3da
Merge pull request #11486 from annando/avatar-fixes
Fix local avatar, improve speed for fetching cached photos
2022-05-10 14:41:06 -04:00
Michael d9de8b6d2f Remove test logging 2022-05-10 18:37:02 +00:00
Michael fae414fedd Fix local avatar, improve speed for fetching cached photos 2022-05-10 18:18:24 +00:00
Hypolite Petovan 776ce3f63a
Merge pull request #11484 from annando/avatar-logging
Improved logging for avatar storing
2022-05-10 08:03:31 -04:00
Tobias Diekershoff 4be52cdc4e
Merge pull request #11485 from annando/endless-loop
Avoid endless loop when storing posts
2022-05-10 08:44:39 +02:00
Michael 7c3173a0ae Avoid endless loop when storing posts 2022-05-10 06:07:26 +00:00
Michael 945f5c6db2 Improved logging for avatar storing 2022-05-10 06:04:37 +00:00
Hypolite Petovan d195d934be
Merge pull request #11482 from annando/inherit-permissions
Inherit avatar cache file permissions
2022-05-09 23:15:47 -04:00
Michael 22da88b43f Changed log level 2022-05-10 01:14:27 +00:00
Michael 548bf469ca Added logging 2022-05-09 22:36:25 +00:00
Hypolite Petovan c50ca418a5
Merge pull request #11483 from annando/issue-11353
Issue 11353: Suppress the forum sharer
2022-05-09 17:54:31 -04:00
Michael 630d25a24b Issue 11353: Suppress the forum sharer 2022-05-09 20:52:08 +00:00
Michael 34030a736d Use a constant for the avatar base path 2022-05-09 19:16:14 +00:00
Michael 916aa1c9a9 Inherit avatar cache file permissions 2022-05-09 17:36:46 +00:00
Hypolite Petovan e1f32f7f15
Merge pull request #11477 from annando/avatar-file-cache
Cache contact avatars locally as files
2022-05-09 11:13:08 -04:00
Michael cbe4a42906 Use a warning instead 2022-05-09 14:36:41 +00:00
Michael f785026289 Don't return a filename when it wasn't stored 2022-05-09 08:47:02 +00:00
Michael f744dd362d Picture shouldn't be executable 2022-05-09 08:28:23 +00:00
Michael 9d1ff0a4ce Set permissions 2022-05-09 08:20:09 +00:00
Michael 006b7a95f0 More avatar handling isolation 2022-05-09 06:57:47 +00:00
Michael 681d19a3bc Standards and renamed class 2022-05-09 06:31:09 +00:00
Michael 53d064c283 Avatar handling is moved to a separate class 2022-05-09 06:27:46 +00:00
Michael e3692c0105 Replaced check with hardwired path 2022-05-09 04:26:00 +00:00
Hypolite Petovan b9e091eb2f
Merge pull request #11480 from annando/gotosocial
GoToSocial added to the federation admin page
2022-05-08 16:40:32 -04:00
Michael Vogel 6b9f543c4e GoToSocial added to the federation admin page 2022-05-08 20:50:11 +02:00
Michael f220e26f00 Use new function to check for a local avatar cache file 2022-05-08 10:32:29 +00:00
Michael 805dc8e6bd Fix config call 2022-05-08 09:34:30 +00:00
Michael dd422a1e03 Fix contact field name 2022-05-08 08:57:41 +00:00
Michael 7b0187c4c5 Don't overwrite already replaced cache file paths 2022-05-08 08:53:18 +00:00
Michael Vogel ee81c266e1
Merge pull request #11476 from MrPetovan/bug/11445-abstract-code
Escape BBCode tag parsing avoidance tags when processing abstracts
2022-05-08 08:02:41 +02:00
Michael 2d856f48b7 Use the default timeout 2022-05-08 05:51:18 +00:00
Michael a31256412e Cache contact avatars locally as files 2022-05-08 05:37:17 +00:00
Hypolite Petovan 510dacf4df Escape BBCode tag parsing avoidance tags when processing abstracts
- Improve documentation for related methods
2022-05-07 22:19:50 -04:00
Hypolite Petovan 25876099ce Add tests for BBCode::getAbstract and BBCode::stripAbstract methods 2022-05-07 22:19:50 -04:00
Tobias Diekershoff 166f38ef3b
Merge pull request #11474 from annando/issue-11440
Issue 11440: Hashtags are now generated again
2022-05-07 09:31:13 +02:00
Michael 67c3a20c4f Issue 11440: Hashtags are now generated again 2022-05-06 17:03:51 +00:00
Hypolite Petovan 4729fca5d9
Merge pull request #11457 from annando/performance
Improve page performance
2022-05-06 11:11:05 -04:00
Michael Vogel 1e7a55180a
Update src/Content/Conversation.php
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-05-05 22:40:20 +02:00
Michael 2433fee461 Changes after code review 2022-05-05 12:23:44 +00:00
Michael ab42fd88a4 Changed index for the categories 2022-05-05 08:45:32 +00:00
Michael 2a4b5b4cb4 New index 2022-05-05 08:40:50 +00:00
Michael 4d359b7de1 Move the plink functionality to the right function 2022-05-05 07:57:52 +00:00
Michael d34432c517 Ignore if the worker was added 2022-05-05 06:12:16 +00:00
Michael 2f74a7bca4 Update display cache when the post had been edited 2022-05-04 07:50:14 +00:00
Michael 10b453bfc2 Deprecated function removed 2022-05-04 07:49:37 +00:00
Michael 60532ee7e4 Fill the item cache when storing item 2022-05-04 06:17:34 +00:00
Michael f6218427a4 Use the uri-id to fetch the contact 2022-05-03 21:51:56 +00:00
Tobias Diekershoff ff8e839139
Merge pull request #11468 from urbalazs/urbalazs-da-dk
Add Danish language to list of native language names
2022-05-03 21:26:47 +02:00
Balázs Úr 4171ff7563
Add Danish language to list of native language names 2022-05-03 21:13:47 +02:00
Michael Vogel 9953abb8aa
Merge pull request #11467 from tobiasd/20220503-de
DE translation updates
2022-05-03 18:13:18 +02:00
Tobias Diekershoff a7237ac036
DE translation updates 2022-05-03 15:25:09 +02:00
Michael fdf8002df1 Update database.sql 2022-05-03 08:26:38 +00:00
Michael 4ba28e0199 Merge remote-tracking branch 'upstream/2022.05-rc' into performance 2022-05-03 08:23:09 +00:00
Michael 49ec5e5e6e Check for empty value 2022-05-03 08:20:48 +00:00
Michael e6440471ae Throw an error when the feed is invalid 2022-05-03 08:20:26 +00:00
Michael 690682a37e Only send "accept" headers on some HTTP methods 2022-05-03 08:20:05 +00:00
Michael 632a98965c Fetch contact via uri-id to improve performance 2022-05-03 08:19:35 +00:00
Tobias Diekershoff 8bf806c550
pump version to 2022.05-rc 2022-05-03 07:24:19 +02:00
Michael 3163760343 Added configuration for the bulk delivery 2022-05-02 17:34:40 +00:00
Michael 6e394ac6ff Whitespaces removed 2022-05-02 14:36:21 +00:00
Michael 76789acace Reduce network request by transmitting to shared inboxes 2022-05-02 14:35:57 +00:00
Michael fcb245947e Fetch the receiver list from sharedinbox or personal inbox 2022-05-02 06:10:36 +00:00
Michael 9c2fe81ac6 Transmit via the sharedInbox 2022-05-02 05:53:11 +00:00
Michael c608d85707 Updated database description 2022-05-02 05:17:42 +00:00
Michael a9990db98c Clean the worker queue directly from cron 2022-05-02 05:16:02 +00:00
Michael 40aa67f8be Bulk transmission for AP posts 2022-05-02 05:15:27 +00:00
Tobias Diekershoff f8b75ad1cc
Merge pull request #11466 from atjn/contribute
Add CONTRIBUTING note
2022-05-01 19:51:49 +02:00
atjn e7bfe0bf31 Add CONTRIBUTING note 2022-05-01 16:19:05 +02:00
Hypolite Petovan 51854754b6
Merge pull request #11462 from ErichBSchulz/patch-1
Update Install.md
2022-05-01 08:09:55 -04:00
Erich c938eb5002
Update doc/Install.md
fix by @MrPetovan

Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-05-01 22:09:00 +10:00
Hypolite Petovan 196a381a52
Merge pull request #11463 from tobiasd/20220501-lng
DA DK translation added, HU PL and RU translations updated
2022-05-01 08:06:17 -04:00
Hypolite Petovan 6dc13b9fc6
Merge pull request #11460 from tobiasd/20220429-issue10397
[frio] adding Feed link to vcard
2022-05-01 07:45:14 -04:00
Michael 13e4144ba6 Use a centralized function to check the priority 2022-05-01 09:29:31 +00:00
Michael f7b6507438 More checks for strange priorities 2022-05-01 08:58:48 +00:00
Tobias Diekershoff 815b76db8b
DA DK translation added THX atjn 2022-05-01 10:33:47 +02:00
Tobias Diekershoff 37ddda7fc2
HU translation updated THX Balázs Úr 2022-05-01 10:31:44 +02:00
Tobias Diekershoff 245fe3dade
RU translations THX Alexander An 2022-05-01 10:31:32 +02:00
Tobias Diekershoff da68774e91
PL translation update THX strebski 2022-05-01 10:31:15 +02:00
Michael 19c1b31ab2 Only add valid values to the worker 2022-05-01 07:03:10 +00:00
Michael e19681684b Fix worker priorities 2022-05-01 06:57:29 +00:00
Erich d255c3128e
Update Install.md
include instructions for db config
2022-05-01 15:01:13 +10:00
Michael 1f43332a1d Only fetch category when it exists 2022-04-30 06:57:22 +00:00
Michael fb3353d4bd Separate loop to fetch thread parents 2022-04-30 06:19:18 +00:00
Tobias Diekershoff 7ce6fd19b5
adding style information for the Feed link 2022-04-29 19:33:26 +02:00
Tobias Diekershoff 6161485b2f
[frio] adding Feed link to vcard
This PR adds a link to the Atom Feed of a profile to the aside vcard in the Frio theme. The link is already in the other themes, so it only needs to be added to Frio.

fixes #10397
2022-04-29 19:27:25 +02:00
Michael fdf70c1047 Make post preview workable 2022-04-29 12:34:10 +00:00
Hypolite Petovan 18c642f2a7
Merge pull request #11451 from atjn/update-icon
Update default icon
2022-04-29 07:25:51 -04:00
Michael a2452b33eb Add missing fields to collection 2022-04-29 10:13:23 +00:00
Michael 8dc0ab9bb3 Test: Disable magiclink in posts 2022-04-29 09:49:16 +00:00
Michael d3de2497bc Use gsid for the network name 2022-04-29 07:47:24 +00:00
Michael d44641e58c Fetch avatar by id 2022-04-29 07:30:13 +00:00
Michael 1326239576 Reduce the amount of queries 2022-04-29 05:32:12 +00:00
Hypolite Petovan aa65e3032d
Merge pull request #11455 from annando/update-avatar
Update contact when the avatar hadn't been found
2022-04-28 14:29:46 -04:00
Michael 9eafcf8484 Update contact when the avatar hadn't been found 2022-04-28 16:46:52 +00:00
Anton 51380af100
Fix img example
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-04-28 18:13:38 +02:00
Anton 748b7528d3
Fix img example
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-04-28 18:13:16 +02:00
Hypolite Petovan 55db2670d1
Merge pull request #11452 from atjn/manifest-icons
Update app manifest icons
2022-04-28 10:25:22 -04:00
atjn 420f4c54b7 Update app manifest icons 2022-04-28 13:26:59 +02:00
atjn 31ed9b450d Update default icon 2022-04-28 12:41:26 +02:00
Hypolite Petovan dc05172272
Merge pull request #11448 from annando/api-documentation
Some small API documentation rearrangements
2022-04-27 10:36:22 -04:00
Hypolite Petovan 5a08bca15b
Merge pull request #11447 from annando/contacts-posts
Fix: Show reshared posts on the contact page
2022-04-27 10:35:24 -04:00
Michael 0ad18afb7b Some small API documentation rearrangements 2022-04-27 06:50:25 +00:00
Michael 144c9f00f4 Fix: Show reshared posts on the contact page 2022-04-27 03:25:47 +00:00
Hypolite Petovan 973257ae13
Merge pull request #11446 from annando/directory
Use central function to fetch the global directory
2022-04-26 14:38:14 -04:00
Michael 171354181d Use central function to fetch the global directory 2022-04-26 18:33:58 +00:00
Hypolite Petovan 478ee7b6fc
Merge pull request #11443 from annando/endpoints
We now store uncommon endpoints
2022-04-25 11:53:17 -04:00
Michael 83e311decb Standards 2022-04-25 13:49:17 +00:00
Michael 990eea2c4e We now store uncommon endpoints 2022-04-25 13:45:03 +00:00
Tobias Diekershoff b89f727cca
Merge pull request #11438 from MrPetovan/bug/11371-settings-forms
Enclose account settings panels in separate forms
2022-04-25 07:37:59 +02:00
Hypolite Petovan f4c073674e
Merge pull request #11439 from annando/unused-tags
Removed unused tag entries
2022-04-24 21:25:32 -04:00
Michael 069a008ca4 Removed unused tag entries 2022-04-24 15:27:20 +00:00
Hypolite Petovan 7bc449215f Updated main translation file after moving module 2022-04-24 08:36:57 -04:00
Hypolite Petovan 967c438312 Enclose account settings panels in separate forms
- This prevents auto-filled password fields to abort settings save
- Move single-use settings/nick_set template HTML to settings/account
2022-04-24 08:36:53 -04:00
Hypolite Petovan 90368d7484 Remove unused settings_post and settings_form hooks
- Addons should use the addon_form hook instead
2022-04-24 01:21:49 -04:00
Hypolite Petovan 64330f9895 Move /settings to src/ 2022-04-24 01:21:48 -04:00
Hypolite Petovan 904ee0ea59
Merge pull request #11436 from annando/tag-type
Store the tag type for the post targets
2022-04-23 21:12:55 -04:00
Michael ac08bc1362 Enhanced database comment 2022-04-24 00:20:06 +00:00
Michael f7142f0144 Updated messages.po 2022-04-23 12:45:26 +00:00
Michael 4af6e730d3 Use different collections 2022-04-23 12:32:29 +00:00
Michael 0a3c5cc40c Add the function documentation 2022-04-23 11:43:30 +00:00
Michael 060597f619 Store the tag type for the post targets 2022-04-23 11:39:19 +00:00
Hypolite Petovan 1c0c787d1c
Merge pull request #11435 from annando/api-poll
API: We can now display polls
2022-04-22 16:24:14 -04:00
Michael 9b646dad97 API: We can now display polls 2022-04-22 19:24:22 +00:00
Hypolite Petovan ee05bd91a3
Merge pull request #11433 from annando/api-unsupported
API: New Mastodon endpoints added
2022-04-21 19:49:11 -04:00
Michael f34b7b91fa API: New Mastodon endpoints added 2022-04-21 19:58:56 +00:00
Hypolite Petovan 45c4af3832
Merge pull request #11430 from annando/network-order
Order starred posts and posts with mention by the last comment date
2022-04-21 10:46:22 -04:00
Michael 666b3bbca3 Use "received" for starred posts 2022-04-21 13:58:24 +00:00
Michael 5a41c2039a Order starred posts and posts with mention by the last comment date 2022-04-21 05:52:08 +00:00
Tobias Diekershoff 691136c396
Merge pull request #11429 from annando/issue-11427
Issue 11427: id values of OrderedCollections have to contain the page number
2022-04-21 06:58:25 +02:00
Michael eb1f38df22 Issue 11427: id values of OrderedCollections have to contain the page number 2022-04-21 04:29:08 +00:00
Hypolite Petovan 70392df68d
Merge pull request #11428 from annando/issue-11425
Issue 11425: Additional sorting by creation date
2022-04-20 19:25:32 -04:00
Michael 2236e5cfb0 Issue 11425: Additional sorting by creation date 2022-04-20 21:03:33 +00:00
Hypolite Petovan e1a8f8aff6
Merge pull request #11426 from annando/notice
Avoid warning " Undefined variable $browsershare"
2022-04-20 09:40:49 -04:00
Michael 94a8f430e3 Avoid warning " Undefined variable $browsershare" 2022-04-20 12:03:09 +00:00
Hypolite Petovan 333863684a
Merge pull request #11424 from annando/store-question
We can now store incoming questions
2022-04-20 08:01:35 -04:00
Michael 8d25094719 Fix test 2022-04-20 06:33:14 +00:00
Michael 834844573b We can now store incoming questions 2022-04-20 06:28:02 +00:00
Hypolite Petovan 8dbd1d0e52
Merge pull request #11423 from annando/share-via
Renamed "share" with "share via"
2022-04-19 17:26:26 -04:00
Michael 62b31900a6 Renamed "share" with "share via" 2022-04-19 21:04:55 +00:00
Hypolite Petovan 75f49a41af
Merge pull request #11421 from foss-/develop
Update FAQ: Remove Roma iOS and Husky Android, both EOL
2022-04-19 11:16:56 -04:00
Philipp 6617b6c088
Merge pull request #11422 from annando/language
Fix: The language detection only searched for farsi
2022-04-19 10:26:04 +02:00
Michael 0380a3e216 Fix: The language detection only searched for farsi 2022-04-19 06:16:44 +00:00
foss- ea148050dc
re-added Husky
- new developer for husky, re-added entry with F-Droid und Google Play links
2022-04-18 22:34:04 +02:00
foss- ec5905aee2
Update FAQ: Remove Roma iOS and Husky Android, both EOL
- Roma iOS entry removed
- Husky Android entry removed
2022-04-18 19:05:26 +02:00
Hypolite Petovan 60afca1fea
Merge pull request #11420 from thomasrockhu-codecov/patch-1
Add informational Codecov status checks
2022-04-18 10:43:42 -04:00
Hypolite Petovan d2d368781d
Merge pull request #11418 from foss-/patch-1
Update FAQ.md
2022-04-18 10:37:15 -04:00
Tom Hu 51fe7876d1
Update .codecov.yml 2022-04-18 10:11:56 -04:00
Tom Hu 065e379198
Add informational Codecov status checks
Hi, Tom from Codecov here. I noticed that you were using Codecov but weren't actually getting any notifications on pull requests. I figured it would be useful to get some idea if code being changed is being tested, but also not blocking CI/merging. Let me know if this makes sense or if we can do something that would be helpful.
2022-04-18 10:01:09 -04:00
foss- c796f854f2
Update FAQ.md
- Mastonaut for macOS is now free, removed cost info and added close source info
- updated name for Mastodon client
- added Whalebird for Windows
- added Mastodon for Android
- removed Dica (last update Jan 2019, developer website, source code github and support forum link on Google Play site dead)
- added Tusky F-Droid and Google Play links
- removed twitlatte (This app was suspended by Twitter. Please use other app. as per repo info)
- Yuito added Google Play link
- Twidere X added F-Droid and Google Play links
- removed Roma (App will be removed from app store on 3/15/2021 and support ended, as per Google Play info)
- removed website links for tooot and b4x ios, twidere android for consistency - app name ideally always goes to source
2022-04-18 13:50:32 +02:00
Philipp 9f58141dad
Merge pull request #11417 from annando/fix-webfinger
Fix: Webfinger returned xml when json has been requested and vice versa
2022-04-18 10:00:19 +02:00
Michael cca7d40a8f Fix: Webfinger returned xml when json has been requested and vice versa 2022-04-18 05:42:05 +00:00
Hypolite Petovan 627e91f209
Merge pull request #11413 from annando/vote-preparation
Preparation for storing incoming polls
2022-04-15 10:22:41 -04:00
Philipp a2a5f27d76
Merge pull request #11412 from annando/fix-compose
Fixes notice
2022-04-15 12:15:08 +02:00
Michael eaa8163201 Preparation for storing incoming polls 2022-04-15 09:11:50 +00:00
Michael 0696da3d1b Fixes notice 2022-04-15 04:14:21 +00:00
Tobias Diekershoff e4682a522e
Merge pull request #11411 from annando/creation-date
Experimental feature to enter a custom creation date
2022-04-13 07:47:44 +02:00
Michael 0d8cf06e4a Experimental feature to enter a custom creation date 2022-04-13 05:31:32 +00:00
Tobias Diekershoff d5f0829cad
Merge pull request #11409 from annando/server-detect
Avoid wrong server type detection / Owncast added
2022-04-12 07:47:18 +02:00
Michael 30e5ef928a Avoid wrong server type detection / Owncast added 2022-04-12 05:34:34 +00:00
Hypolite Petovan 8720561e49
Merge pull request #11408 from annando/notices
Fix several notices
2022-04-11 15:54:48 -04:00
Michael 62367923e0 Fix several notices 2022-04-11 18:57:30 +00:00
Hypolite Petovan 3842f02b02
Merge pull request #11402 from annando/featured-endpoint
We now offer an endpoint for featured posts
2022-04-11 11:17:56 -04:00
Michael c88d306a41 Use the correct content type 2022-04-11 06:07:50 +00:00
Michael 989ac2fda8 Some more "exit" replaced 2022-04-10 11:03:24 +00:00
Michael 4a22034be6 Unified output via the "httpExit" function 2022-04-10 08:31:55 +00:00
Michael d15023fe4b Unified JSON exit 2022-04-09 11:58:01 +00:00
Michael 344e12c4fc Use $request 2022-04-09 08:17:26 +00:00
Michael a1e675ded1 use jsonexit 2022-04-09 03:41:24 +00:00
Michael d7df0825db We now offer an endpoint for featured posts 2022-04-08 21:25:31 +00:00
Hypolite Petovan 4eecf733e1
Merge pull request #11389 from nupplaphil/feat/http_client_arg
Introduce explicit HttpClient "Accept" parameter
2022-04-08 15:05:40 -04:00
Philipp Holzer 3033f79529
head fixings 2022-04-08 20:48:57 +02:00
Philipp Holzer 8e2cc678dc
head fixings 2022-04-08 20:41:25 +02:00
Philipp Holzer 277cd51433
fix doc 2022-04-08 20:11:51 +02:00
Hypolite Petovan ba1bdc6920
Merge pull request #11400 from annando/display-featured
Display featured posts for contacts
2022-04-08 08:03:07 -04:00
Michael Vogel b2b8b23ed6
Update src/Model/Contact.php
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-04-08 13:59:43 +02:00
Michael 69b7923df2 Use centralized function to fetch query results 2022-04-08 06:04:50 +00:00
Michael 2764859350 Remove unfeatured posts from collection 2022-04-08 04:49:23 +00:00
Michael 6c8ea1d0d8 Updated messages.po / type added to query 2022-04-08 04:17:52 +00:00
Michael 75bc4eccb7 Display featured posts for contacts 2022-04-07 21:52:25 +00:00
Hypolite Petovan 2024d45971
Merge pull request #11398 from tobiasd/20220407-pl
PL translation update THX strebski
2022-04-07 00:33:31 -04:00
Tobias Diekershoff 32aea615e6
PL translation update THX strebski 2022-04-07 06:31:28 +02:00
Hypolite Petovan f4aa8236c4
Merge pull request #11397 from bkil/doc/themes-link
doc/themes.md,FAQ-admin: point to live friendica-themes.com mirror
2022-04-06 22:51:51 -04:00
bkil 72a3ab6382 doc/themes.md,FAQ-admin: point to live friendica-themes.com mirror 2022-04-07 02:36:05 +02:00
Hypolite Petovan 8669f12176
Merge pull request #11396 from annando/issue-11393
Issue 11393: Fix failing preview
2022-04-06 12:36:10 -04:00
Michael 65071ffc9e Issue 11393: Fix failing preview 2022-04-06 16:26:51 +00:00
Hypolite Petovan 9339d4e53b
Merge pull request #11395 from annando/featured2
Preparations for "featured" posts
2022-04-06 11:58:28 -04:00
Michael 5a3fe900f0 Fix test 2022-04-06 15:32:14 +00:00
Michael 612e91b603 Added description 2022-04-06 15:02:21 +00:00
Michael a1dd299eb3 Preparations for "featured" posts 2022-04-06 13:34:11 +00:00
Hypolite Petovan 29f65d250f
Merge pull request #11394 from annando/is-blocked
Added processing of incoming block notices
2022-04-05 19:14:03 -04:00
Michael e6ea015cb4 "Person" is "Account" 2022-04-05 20:06:04 +00:00
Michael c0b3c527d6 Added processing of incoming block notices 2022-04-05 19:14:29 +00:00
Hypolite Petovan 79526564ca
Merge pull request #11392 from annando/new-acitivities
Store all known incoming actitivies
2022-04-05 08:41:37 -04:00
Michael dcbca0c6a3 Store "View" activity from Peertube 2022-04-05 07:48:38 +00:00
Michael a5a5a4b603 Cleaned code 2022-04-05 05:53:17 +00:00
Michael 61abc6377d Preparation for "Featured" collection added 2022-04-04 23:07:44 +00:00
Michael e6caed7b5f Merge remote-tracking branch 'upstream/develop' into new-acitivities 2022-04-04 16:05:02 +00:00
Michael aa2a32d16f Store the "EmojiReact" activity 2022-04-04 16:03:53 +00:00
Hypolite Petovan eceaf782cc
Merge pull request #11385 from annando/ap-receiver-unhandled
Added handling of some previously unhandled activities
2022-04-04 10:59:35 -04:00
Hypolite Petovan 8ab477320a
Merge pull request #11390 from annando/plink
Only use and accept valid http links as links to an external resource
2022-04-04 10:58:37 -04:00
Philipp Holzer 04866195b4
Remove accept parameter for head/post again 2022-04-03 19:33:09 +02:00
Michael 1475f53e21 Merge branch 'ap-receiver-unhandled' of github.com:annando/friendica into ap-receiver-unhandled 2022-04-03 07:45:19 +00:00
Michael 39a1745361 Prevent the warning of an Undefined array key "object_object_type" 2022-04-03 07:45:15 +00:00
Michael 5290f0cd51 Improved handling of invalid links 2022-04-03 07:31:42 +00:00
Michael 029daef997 Only use and accept valid http links as links to an external resource 2022-04-03 07:21:36 +00:00
Michael Vogel 5fe75ed50d
Update src/Protocol/ActivityPub/Receiver.php
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-04-02 23:04:44 +02:00
Philipp Holzer 4aeccd3157
Added license 2022-04-02 21:22:14 +02:00
Philipp Holzer e299fc67c8
Introduce "accept_header" as specific argument to the http client 2022-04-02 21:16:53 +02:00
Philipp Holzer 73c3b21665
Move ACCEPT constants to own "enum" class 2022-04-02 20:26:11 +02:00
Michael Vogel c700645385
Merge pull request #11387 from tobiasd/20220402-pl
PL translation update THX strebski
2022-04-02 13:36:31 +02:00
Tobias Diekershoff 3faa4142c1
PL translation update THX strebski 2022-04-02 13:25:40 +02:00
Michael 1db3143dc5 added empty object type 2022-04-01 21:27:40 +00:00
Michael 71afbabbd8 Added handling of some previously unhandled activities 2022-04-01 11:20:17 +00:00
Hypolite Petovan e9a6c4a7e3
Merge pull request #11384 from annando/tusky-upload
API: Enable picture upload via Tusky again
2022-03-30 16:41:59 -04:00
Michael 5d497f9962 API: Enable picture upload via Tusky again 2022-03-30 20:33:46 +00:00
Philipp db60557a4f
Merge pull request #11382 from annando/accept-2
Some more "accept" parameters are added
2022-03-30 17:14:17 +02:00
Michael 2ca51f752d Use appropriate "accept" values 2022-03-30 14:39:53 +00:00
Michael 3e21b035b7 Added logging 2022-03-29 17:26:31 +00:00
Michael 94b7c1fc77 Use a more specific "accept" value 2022-03-29 14:02:10 +00:00
Michael 28e3eee91b Add "Accept" to "head" 2022-03-29 13:34:54 +00:00
Michael 908d2594ed Use "HttpClientOptions" 2022-03-29 08:57:38 +00:00
Michael 1fae0123ec Some more "accept" parameters are added 2022-03-29 06:24:20 +00:00
Tobias Diekershoff 173e72169b
Merge pull request #11381 from annando/friendica-actor
Avoid returning of the actor when requesting friendica/json
2022-03-28 15:38:03 +02:00
Michael 51b2bf6f70 Avoid returning of the actor when requesting friendica/json 2022-03-28 13:12:45 +00:00
Hypolite Petovan 797db32992
Merge pull request #11379 from annando/accept
Constants for "expect" added and used
2022-03-28 08:46:02 -04:00
Michael ff70f74952 "accept" constants introduced and used 2022-03-28 10:33:06 +00:00
Michael 4f2d659d42 Merge remote-tracking branch 'upstream/develop' into develop 2022-03-27 19:43:08 +00:00
Hypolite Petovan e09e1b2336
Merge pull request #11378 from nupplaphil/feat/accept
Add Default Accept for HTTP Calls
2022-03-27 13:09:20 -04:00
Philipp Holzer 80a533ddab
Add Default Accept for HTTP Calls 2022-03-26 22:15:44 +01:00
Michael Vogel c396e3099e
Merge pull request #11377 from tobiasd/20220325-pl
PL translation update THX strebski
2022-03-25 08:17:49 +01:00
Tobias Diekershoff 7bea941f3c
PL translation update THX strebski 2022-03-25 07:01:20 +01:00
Michael 0e6dcaebcc Merge branch 'develop' of github.com:annando/friendica into develop 2022-03-24 12:38:07 +00:00
Tobias Diekershoff c1fd163b97
Merge pull request #11376 from annando/no-group
Don't display Peertube groups as forums
2022-03-24 13:19:34 +01:00
Michael 8c34c3b8ae Don't display Peertube groups as forums 2022-03-24 11:30:32 +00:00
Michael 7aec520b32 Don't display Peertube groups as forums 2022-03-24 11:29:50 +00:00
Tobias Diekershoff 1f0d828cd9
Merge pull request #11375 from annando/lemmy
Improve the compatibility with Lemmy
2022-03-24 12:13:13 +01:00
Michael 212eba327b Improve the compatibility with Lemmy 2022-03-24 10:57:55 +00:00
Michael Vogel aa1ef0516d
Merge pull request #11374 from MrPetovan/bug/11371-settings-autocomplete
Prevent unwarranted password manager auto-completion in settings form fields
2022-03-24 05:39:49 +01:00
Hypolite Petovan 719f47932d Prevent unwarranted password manager auto-completion in settings form fields 2022-03-23 19:43:25 -04:00
Hypolite Petovan ad1d11487e
Merge pull request #11373 from tobiasd/20220323-pl
PL translation update THX strebski
2022-03-23 15:15:54 -04:00
Tobias Diekershoff ab60cf0572
PL translation update THX strebski 2022-03-23 20:12:47 +01:00
Hypolite Petovan 4b2cc546f1
Merge pull request #11372 from annando/issue-11368
Issue 11368: Prevent namespace prefix warning
2022-03-22 18:16:24 -04:00
Michael 6f43821ebf Issue 11368: Prevent namespace prefix warning 2022-03-22 21:07:35 +00:00
Hypolite Petovan 709e9dcf9c
Merge pull request #11370 from tobiasd/20220322-pl
PL translation update THX strebski
2022-03-22 14:47:41 -04:00
Tobias Diekershoff 5cb83900ff
PL translation update THX strebski 2022-03-22 19:28:23 +01:00
Hypolite Petovan 2438eb78dd
Merge pull request #11369 from annando/empty-item
Prevent further processing of incoming posts when thay are rejected
2022-03-22 08:54:20 -04:00
Hypolite Petovan 56d0a33286
Merge pull request #11367 from annando/title-cq
Prioritize the title over the summary (content warning)
2022-03-22 08:53:48 -04:00
Michael 53ba68e222 Remove "blubb" 2022-03-22 12:31:14 +00:00
Michael 45199b498d Prevent further processing of incoming posts when thay are rejected 2022-03-22 12:28:47 +00:00
Michael 13addaf901 Always provide the title variable 2022-03-22 07:07:33 +00:00
Michael bbb4ffb7a0 Merge remote-tracking branch 'upstream/develop' into title-cq 2022-03-22 07:05:03 +00:00
Michael be016b0c45 Prioritize the title over the content warning 2022-03-22 07:00:44 +00:00
Hypolite Petovan 5a4018a05b
Merge pull request #11366 from annando/pinned
Issue 11310: Show pinned posts when not logged in
2022-03-21 19:14:42 -04:00
Michael a2a5f05a19 Issue 11310: Show pinned posts when not logged in 2022-03-21 22:58:23 +00:00
Hypolite Petovan 7c282c597d
Merge pull request #11364 from friendica/notification-links
Fix link to post in notification
2022-03-20 19:59:41 -04:00
Michael 7959bc1e63 Updated messages.po 2022-03-20 20:21:35 +00:00
Michael 4dace46159 Fix link to post in notification 2022-03-20 19:59:35 +00:00
Tobias Diekershoff 09e55c15e4
Merge pull request #11363 from annando/api-route
API: Adds missing route for "conversation/show/id"
2022-03-20 13:37:14 +01:00
Michael 85fce09b1a API: Adds missing route for "conversation/show/id" 2022-03-20 12:06:39 +00:00
Philipp 75a7ff9b11
Merge pull request #11362 from tobiasd/20220320-de
DE translation updates
2022-03-20 08:32:22 +01:00
Tobias Diekershoff f66020e767
DE translation updates 2022-03-20 07:53:31 +01:00
Hypolite Petovan e738428876
Merge pull request #11360 from annando/announce-notification
Don't create empty announce notifications
2022-03-19 14:53:34 -04:00
Michael e4a5094c90 Don't show double introductions 2022-03-19 18:38:59 +00:00
Michael 91905bea89 Don't create empty announce notifications 2022-03-19 17:53:41 +00:00
Hypolite Petovan 014c7b5943
Merge pull request #11359 from annando/notification
Avoid empty notifications / fixed link to the content
2022-03-19 11:31:46 -04:00
Michael Vogel fcad961e57
Merge pull request #11358 from tobiasd/20220319-ru
RU translations THX Alexander An
2022-03-19 16:30:34 +01:00
Michael fb6a435a6a Avoid empty notifications / fixed link to the content 2022-03-19 15:25:00 +00:00
Tobias Diekershoff 111d42ce8f
RU translations THX Alexander An 2022-03-19 16:07:50 +01:00
Hypolite Petovan a4a24e06a5
Merge pull request #11357 from annando/fetch-usage
Improve the description of the federation statistics
2022-03-19 10:46:29 -04:00
Michael f9369141a4 Updated messages.po 2022-03-19 11:26:49 +00:00
Michael 351e9a307c Fixed placeholder 2022-03-19 11:24:09 +00:00
Michael 3f15a20e4a Updated messages.po 2022-03-19 11:21:51 +00:00
Michael 4e45987f74 Merge remote-tracking branch 'upstream/develop' into fetch-usage 2022-03-19 11:21:38 +00:00
Hypolite Petovan 4329f5381b
Merge pull request #11355 from annando/notifications
Fixes for the notifications
2022-03-19 06:52:04 -04:00
Michael Vogel 677cbf8aea
Merge pull request #11354 from MrPetovan/bug/notices
Check array key existence in ActivityPub\Transmitter::createPermissionBlockForItem
2022-03-19 10:56:25 +01:00
Michael aef9cb9992 Moved "ignore" check to a better location 2022-03-19 09:48:50 +00:00
Michael 1fe756b5b6 Fixes for the notifications 2022-03-19 09:27:49 +00:00
Hypolite Petovan 9eb6299f19 Check array key existence in ActivityPub\Transmitter::createPermissionBlockForItem
- APContact::getByURL can return empty array
- Address https://github.com/friendica/friendica/issues/11218#issuecomment-1066753232
2022-03-19 03:15:08 -04:00
Hypolite Petovan 61e023d448
Merge pull request #11334 from annando/guid-style
Use a nicer GUID style format
2022-03-18 07:30:34 -04:00
Michael 0aa229489f Improved function description 2022-03-18 07:24:45 -04:00
Michael 040abc7743 Use a nicer GUID style format 2022-03-18 07:24:44 -04:00
Michael Vogel 5c3226d88e
Merge pull request #11352 from MrPetovan/task/4639-soapbox-intro-notification
Add support for notification visibility settings
2022-03-17 06:33:10 +01:00
Hypolite Petovan 04ac4841f9 Add support for notification visibility settings 2022-03-16 22:03:26 -04:00
Hypolite Petovan 6818c8e69a
Merge pull request #11347 from annando/post-update
Fix the problem that the post update never stopped on larger systems
2022-03-16 22:02:37 -04:00
Michael 0b10806ce3 Fix the problem that the post update never stopped on larger systems 2022-03-16 22:00:34 -04:00
Hypolite Petovan 2703fd50fc
Merge pull request #11351 from tobiasd/20220316-11350
.htaccess-dist deny access to some backup files
2022-03-16 14:56:18 -04:00
Tobias Diekershoff 77cb9405be
only deny files ending in ~ 2022-03-16 19:54:43 +01:00
Tobias Diekershoff cd7b9177ea
.htaccess-dist deny access to some backup files
this PR adds a filematch block to the distributed .htaccess file to deny access to backup files from emacs (~), vim (.swp) and other backup files (.bak).

addressing #11350
2022-03-16 19:35:59 +01:00
Michael Vogel f5bcc4ad4b
Merge pull request #11346 from MrPetovan/bug/11343-memcached-bad-key
Suppress a couple MemcachedException
2022-03-16 15:19:40 +01:00
Michael Vogel 72c31c060d
Merge pull request #11349 from tobiasd/20220316-de
DE translation updates
2022-03-16 09:29:44 +01:00
Tobias Diekershoff 69dc90ffd1
DE translation updates 2022-03-16 07:34:29 +01:00
Michael Vogel ef8dce89b6
Merge pull request #11348 from tobiasd/20220316-typo
fixing a typo
2022-03-16 06:42:52 +01:00
Tobias Diekershoff 8d3bef8e63
regen messages.po 2022-03-16 06:27:23 +01:00
Tobias Diekershoff 8d64cf4f9b
typo 2022-03-16 06:25:21 +01:00
Hypolite Petovan 7b9e62198e Suppress a couple MemcachedException
- Replace URL by uri-id in apcontact
- Replace date with a space and nurl by nick and Zulu time in mod/poco
2022-03-15 10:54:00 -04:00
Tobias Diekershoff 79772214ad
Merge pull request #11342 from MrPetovan/task/4639-soapbox-intro-notification
Add correct ordering for detailed notifications
2022-03-15 12:28:24 +01:00
Hypolite Petovan a07f840c74 Add correct ordering for detailed notifications 2022-03-15 07:05:59 -04:00
Michael Vogel a30b553c28
Merge pull request #11341 from tobiasd/20220315-getcontactstoupdate
PHP deprecation warning due wrong order of function parameters
2022-03-15 09:06:43 +01:00
Tobias Diekershoff 02b6ac3ed3
limit parameter was missing from docblock 2022-03-15 08:46:26 +01:00
Tobias Diekershoff 12038d45d0
PHP deprecation warning due wrong order of function parameters
With PHP 8.0 I got the following PHP Deprecation message

```
PHP Deprecated:  Required parameter $limit follows optional parameter $ids in src/Worker/UpdateContacts.php on line 104
```

this PR fixes the wrong order of the parameters.
2022-03-15 08:44:17 +01:00
Michael Vogel e252b5972e
Merge pull request #11336 from MrPetovan/task/4639-soapbox-intro-notification
Add exception when message is empty in FormatteNavNotification::createFromNotification
2022-03-15 07:09:24 +01:00
Hypolite Petovan 634c785d4b Update main translation file after string changes 2022-03-14 22:56:46 -04:00
Hypolite Petovan 07d4cdbdde Fix misleading notification message strings
- The mentioned title is from the top-level post, not the liked post
2022-03-14 22:56:46 -04:00
Hypolite Petovan 36e85b01c6 Hide like notifications from menu again 2022-03-14 22:56:46 -04:00
Hypolite Petovan 73c7b88fb2 Add exception when message is empty in FormatteNavNotification::createFromNotification
- Filter out message less notifications in Ping
2022-03-14 22:56:44 -04:00
Hypolite Petovan 371b2b22bd
Merge pull request #11333 from annando/feed-guid
Don't use the GUID value directly
2022-03-14 18:02:29 -04:00
Michael Vogel 1138abe923
Merge pull request #11273 from MrPetovan/task/4639-soapbox-intro-notification
Add follow notifications for soapbox accounts
2022-03-14 22:53:57 +01:00
Michael 7940b31685 Don't use the GUID value directly 2022-03-14 21:09:14 +00:00
Hypolite Petovan ee60c96269 Updated main translation file after string changes 2022-03-14 08:02:45 -04:00
Hypolite Petovan e6f745bcb1 Delete follow notification on unfollow
- Fix translation string typo
2022-03-14 07:58:39 -04:00
Hypolite Petovan 49971b1465 Switch data source from notify to notification in Module\Notifications\Ping
- Change unused FormattedNotification classes to FormattedNavNotification classes
2022-03-14 07:58:38 -04:00
Hypolite Petovan 1ae7cac236 Move mod/ping to module class 2022-03-14 07:57:41 -04:00
Hypolite Petovan b002f6f027 Remove unused deprecated XML output in mod/ping
- Remove unused parameters localUser and uid in mod/ping
- Unify data array initialization in mod/ping
2022-03-14 07:57:00 -04:00
Hypolite Petovan 5a12bd87f3 Replace Javascript notification string formatting with Smarty templates 2022-03-14 07:56:58 -04:00
Hypolite Petovan b7cee324b0 Add legacy notification endpoint for deprecated Notify entity
- Add dependencies to Notifications\Notification module class
2022-03-14 07:56:21 -04:00
Hypolite Petovan deafdcde95 Use public contact ID in Model\Post\UserNotification::insertNotification
- Add localRelationship dependency to Notification factory
- Remove dependencies from Factory\Notification->getMessageFromNotification method
2022-03-14 07:56:20 -04:00
Hypolite Petovan 7ce97459d4 Deprecated the notify table/classes 2022-03-14 07:56:20 -04:00
Tobias Diekershoff b98243826f
Merge pull request #11332 from annando/receivers2
Don't send forum posts to the user's followers
2022-03-14 09:41:42 +01:00
Michael 0956d1dd64 Don't send forum posts to the user's followers 2022-03-14 06:07:51 +00:00
Tobias Diekershoff 5a4b97b0e6
Merge pull request #11331 from annando/forum-receivers
Send community posts only to the community
2022-03-14 06:43:43 +01:00
Michael 2642996171 Send community posts only to the community 2022-03-13 19:31:21 +00:00
Hypolite Petovan 7da13cf335
Merge pull request #11330 from annando/feed-stuff
Some small improvements for importing feeds
2022-03-13 11:47:49 -04:00
Michael ca086b880b Some small improvements for importing feeds 2022-03-13 15:29:07 +00:00
Michael Vogel 4eba3c0126
Merge pull request #11327 from tobiasd/20220313-de
DE translation updates
2022-03-13 09:49:30 +01:00
Tobias Diekershoff 5db3e02bbd
Merge pull request #11326 from annando/notifications
Don't send notifications for activities caused by the community contact
2022-03-13 08:14:28 +01:00
Tobias Diekershoff 3194c5d89f
DE translation updates 2022-03-13 08:12:35 +01:00
Michael 12d7c99f46 Don't send notifications for activities caused by the community contact 2022-03-13 05:44:29 +00:00
Hypolite Petovan 9e3dbfab3e
Merge pull request #11323 from annando/direction
Issue 11309: improved check for wanted posts
2022-03-12 13:42:08 -05:00
Michael 314bf92ead Added Documentation 2022-03-12 17:29:46 +00:00
Michael fb13890341 Added parameter values 2022-03-12 15:27:56 +00:00
Michael 8c778ca02e Improved completion check for AP 2022-03-12 11:17:33 +00:00
Michael 56cd98b38b Further improved logging 2022-03-12 07:48:31 +00:00
Michael c1bb1cf0fc Improved logging 2022-03-12 07:34:30 +00:00
Michael Vogel 5c4871fe6d
Merge pull request #11321 from MrPetovan/bug/11319-wrong-path-subfolder-install
Normalize base URL usage in admin templates
2022-03-12 08:10:07 +01:00
Michael 5a16a424ac Issue 11309: improved check for wanted posts 2022-03-12 07:08:10 +00:00
Hypolite Petovan 6a9c2173fb
Merge pull request #11322 from annando/community-notification
Reduce amount of notifications by communities
2022-03-11 23:59:50 -05:00
Michael 073a6afaaf Reduce amount of notifications by communities 2022-03-12 04:20:19 +00:00
Hypolite Petovan f9ad561a26 Updated translation file after changing a string 2022-03-11 23:14:24 -05:00
Hypolite Petovan d15ebb6fd3 Normalize base URL usage in admin templates 2022-03-11 23:14:21 -05:00
Hypolite Petovan 0c4f1eadb8
Merge pull request #11318 from annando/issue-11315
Issue 11315: Fix for all receivers in "to"
2022-03-11 15:52:42 -05:00
Michael 5eb647585d Issue 11315: Fix for all receivers in "to" 2022-03-11 20:39:03 +00:00
Hypolite Petovan 1b74ead75c
Merge pull request #11316 from annando/issue-11309
Issue 11309: Check if a post is wanted
2022-03-11 09:50:49 -05:00
Michael f264923cad Issue 11309: Check if a post is wanted 2022-03-11 14:00:05 +00:00
Hypolite Petovan e3025c2c15
Merge pull request #11314 from annando/server-estimate-usage
Estimate active server users when not provided by the system
2022-03-10 18:25:30 -05:00
Michael 2f97d61a09 Estimate active server users when not provided by the system 2022-03-10 21:50:00 +00:00
Hypolite Petovan e9df177055
Merge pull request #11312 from annando/permissions
Show permissions for all posts when possible
2022-03-10 06:06:36 -05:00
Michael 03d38d9e35 Show permissions for all posts when possible 2022-03-10 07:38:12 +00:00
Hypolite Petovan c81eb78e38
Merge pull request #11308 from annando/api-bookmark
API: Fixed the bookmarking
2022-03-08 17:42:05 -05:00
Michael 38fbe281f9 API: Fixed the bookmarking 2022-03-08 22:38:06 +00:00
Hypolite Petovan 00aa905c15
Merge pull request #11307 from annando/api-reply-fix
API: Fix "in_reply_to_status_id"
2022-03-08 15:53:12 -05:00
Hypolite Petovan 0f9a239d59
Merge pull request #11306 from annando/abstract-space
Replace abstract content with a space to prevent missing spaces
2022-03-08 15:52:48 -05:00
Hypolite Petovan c13ae36256
Merge pull request #11305 from annando/api-spoiler
API: Improve support for the summary field
2022-03-08 15:48:46 -05:00
Michael 4803b99157 API: Fix "in_reply_to_status_id" 2022-03-08 20:46:26 +00:00
Hypolite Petovan 82e25a7cf7
Merge pull request #11304 from annando/type-hints
Type hints reverted
2022-03-08 15:36:43 -05:00
Michael e0295abdab Replace abstract content with a space to prevent missing spaces 2022-03-08 19:58:55 +00:00
Michael e0468ac914 API: Improve support for the summary field 2022-03-08 18:32:09 +00:00
Michael 8039ab731f Type hints reverted 2022-03-08 18:26:59 +00:00
Hypolite Petovan 8cf843abc3
Merge pull request #11302 from tobiasd/20220308-pl
PL translation update THX strebski
2022-03-08 10:48:27 -05:00
Tobias Diekershoff 8cfbe9b49b
PL translation update THX strebski 2022-03-08 16:19:38 +01:00
Tobias Diekershoff 4b6bbe3632 added empty 2022.05 block to the CHANGELOG 2022-03-07 14:12:07 +01:00
Tobias Diekershoff 79bc863831 bump Friendica version to 2022.05-dev again 2022-03-07 14:10:57 +01:00
Tobias Diekershoff f660c38944 bump Friendica version to 2022.03 2022-03-07 14:08:21 +01:00
Tobias Diekershoff 352c493247 set release date in the CHANGELOG 2022-03-07 14:06:01 +01:00
Tobias Diekershoff 1ee8cb7380
Merge pull request #11285 from tobiasd/2022.03-changelog
changes since the release 2022.02
2022-03-07 14:04:21 +01:00
Hypolite Petovan 2e8d018192
Merge pull request #11298 from nupplaphil/bug/friendica-11219
Exclude symbolic links from tar transformation
2022-03-06 17:46:03 -05:00
Philipp Holzer 6bb94fcabc
Exclude symbolic links from tar transformation 2022-03-06 20:11:06 +01:00
Hypolite Petovan 285ff75482
Merge pull request #11294 from annando/fix-mail-setting
Fix storing mail settings
2022-03-06 10:17:02 -05:00
Michael Vogel f73fe42d8f
Merge pull request #11297 from tobiasd/20220306-de
DE translation updates
2022-03-06 14:37:40 +01:00
Tobias Diekershoff 5e3ee23b8f
DE translation updates 2022-03-06 14:23:59 +01:00
Michael Vogel acba7d25a0
Apply suggestions from code review
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-03-06 14:15:59 +01:00
Tobias Diekershoff 8095898a6b new abstract config added 2022-03-06 14:12:13 +01:00
Michael 31dbdd3677 variable type for the return value is added 2022-03-06 12:21:27 +00:00
Hypolite Petovan bad0c1b090
Merge pull request #11296 from annando/use-abstract
Improved support for Mastodon style content warnings
2022-03-06 07:17:08 -05:00
Michael 903bc9b679 Improved support for Mastodon style content warnings 2022-03-06 11:49:55 +00:00
Michael Vogel 1ec1adf904
Apply suggestions from code review
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-03-06 05:49:49 +01:00
Michael Vogel 7f07b84f78
Merge pull request #11295 from tobiasd/20220305-ar
AR translation updates THX abidin toumi
2022-03-05 22:55:32 +01:00
Tobias Diekershoff 18bdc5fbc1 AR translation was updated 2022-03-05 18:21:41 +01:00
Tobias Diekershoff 8bf0b96792
AR translation updates THX abidin toumi 2022-03-05 18:19:41 +01:00
Michael 421dd028ce Fix storing mail settings 2022-03-05 13:08:09 +00:00
Tobias Diekershoff e351122cc5
Merge pull request #11293 from annando/api-direct
API: Support for the "direct" visibility
2022-03-05 07:31:02 +01:00
Michael 5539e42743 API: Support for the "direct" visibility 2022-03-05 06:14:30 +00:00
Tobias Diekershoff aa28761d38
Merge pull request #11292 from annando/api-visibility
API: We can now post to groups via the Mastodon endpoint
2022-03-04 09:28:33 +01:00
Michael 15de709b89 API: We can now post to groups via the Mastodon endpoint 2022-03-04 05:50:33 +00:00
Hypolite Petovan 7df5b41f2e
Merge pull request #11288 from annando/api-fix2
API: Only display active incoming contact requests
2022-03-02 12:25:51 -05:00
Michael f059e56e0f Fix test / Use new expandTags function 2022-03-02 17:17:07 +00:00
Hypolite Petovan e00c12f09d
Merge pull request #11289 from tobiasd/20220302-hu
HU translation updated THX Balázs Úr
2022-03-02 08:39:41 -05:00
Michael f853d58198 API: Forum mentions are now working 2022-03-02 06:59:07 +00:00
Tobias Diekershoff 1178e8f324 HU translation was updated 2022-03-02 07:08:34 +01:00
Tobias Diekershoff 3852cb65d4
HU translation updated THX Balázs Úr 2022-03-02 07:07:13 +01:00
Michael 1f1d3b2578 API: Only display active incoming contact requests 2022-03-02 05:05:49 +00:00
Hypolite Petovan 136b46919d
Merge pull request #11286 from annando/api-fixes
API: Fix display of reshares / return value of activities
2022-02-28 16:12:24 -05:00
Michael 772294494e API: Fix display of reshares / return value of activities 2022-02-28 20:10:42 +00:00
Tobias Diekershoff 4fcf2f99ae added changes in addons and closed issue numbers 2022-02-28 09:29:44 +01:00
Tobias Diekershoff a6c206be41 changes since the release 2022.02 2022-02-28 09:24:07 +01:00
Philipp 4b5aa80aba
Merge pull request #11283 from tobiasd/20220227-credits
regen CREDITS
2022-02-27 08:58:13 +01:00
Tobias Diekershoff d787c12956 regen CREDITS 2022-02-27 08:41:30 +01:00
Hypolite Petovan f36d4891bc
Merge pull request #11282 from annando/api-fix
API: several fixes to the Twitter/Statusnet API
2022-02-25 16:11:18 -05:00
Michael 918bf5b6dd Updated changelog 2022-02-25 21:08:37 +00:00
Michael 329dc22137 Fix test? 2022-02-25 21:03:16 +00:00
Michael 6415fc62a0 Fix missing field 2022-02-25 19:27:25 +00:00
Michael bf5c8a2c43 API: several fixes to the Twitter/Statusnet API 2022-02-25 19:16:40 +00:00
Hypolite Petovan 419fe67c6c
Merge pull request #11265 from k-alin/6606-k-alin-mysql-unix-socket
Enable MySQL unix socket connection
2022-02-25 10:36:43 -05:00
k-alin cbbe83294d XMerge branch '6606-k-alin-mysql-unix-socket' of github.com:k-alin/friendica into 6606-k-alin-mysql-unix-socket 2022-02-25 16:15:54 +01:00
k-alin d1141c63fb add socket to default settings in defaults.config.php 2022-02-25 16:15:19 +01:00
k-alin e4cfd4a7c3
Update src/Database/Database.php
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2022-02-25 16:09:54 +01:00
k-alin 8a10b0c635 add socket to database settings in the autoinstaller 2022-02-25 15:01:02 +01:00
k-alin 4492a09131 add socket to env settings 2022-02-25 12:57:16 +01:00
k-alin 33c4fbf2a6
Update src/Database/Database.php
Correct indent

Co-authored-by: Philipp <admin+Github@philipp.info>
2022-02-25 12:09:54 +01:00
k-alin 470be2b5e4
Update src/Database/Database.php
Correct indent

Co-authored-by: Philipp <admin+Github@philipp.info>
2022-02-25 12:09:30 +01:00
k-alin 335be6f032
Update src/Database/Database.php
Correct indent

Co-authored-by: Philipp <admin+Github@philipp.info>
2022-02-25 12:09:12 +01:00
Michael Vogel 67eb9ae360
Merge pull request #11270 from MrPetovan/task/10862-move-unfollow-worker
Move unfollow/revoke follow protocol to worker tasks
2022-02-24 21:24:39 +01:00
Hypolite Petovan f38888ecc6 Update main translation file after removing strings 2022-02-24 09:47:43 -05:00
Hypolite Petovan cddead2343 Move follow revoke protocol to worker task
- Switch to public contact for revoke_follow hook
2022-02-24 09:35:55 -05:00
Hypolite Petovan 6a1f9a7fa3 Move unfollow protocol to worker task
- Add uid parameter to unfollow hook
- Rework and unify Contact::unfollow, Contact::removeSharer and Contact::terminateFriendship
- Add missing twitterUser property to Twitter\Friendships\Destroy module
2022-02-24 09:35:54 -05:00
Hypolite Petovan 48e2963ac7 Remove unused variable in Core\Worker::defer 2022-02-24 09:35:54 -05:00
Hypolite Petovan 52f5d924b7 Replace remaining instances of DBA::update('contact') with Contact::update()
- This was breaking the synchronisation between the contact and user-contact tables
2022-02-24 09:35:54 -05:00
Hypolite Petovan 093dd70e79
Merge pull request #11279 from annando/show-bcc
Display the BCC receiver when it is the local user
2022-02-24 08:13:35 -05:00
Michael Vogel dd71196b86
Merge pull request #11280 from tobiasd/20220224-de
DE translation updates
2022-02-24 08:48:19 +01:00
Tobias Diekershoff 201525f932
DE translation updates 2022-02-24 08:20:40 +01:00
Michael d32b9d5d95 Display the BCC receiver when it is the local user 2022-02-24 07:09:34 +00:00
Michael Vogel 40259c7f04
Merge pull request #11275 from MrPetovan/bug/11274-message-misdirected
Prevent tagsinput select element to be submitted without a value when they are required
2022-02-24 05:16:54 +01:00
Hypolite Petovan b3622e74b2 Add required notify field to contacts in API test fixture 2022-02-23 21:30:18 -05:00
Hypolite Petovan 1d779c6193 Ensure the private message recipient is valid in Mail::send
- Arbitrary input could be used to circumvent most restrictions regarding recipients (except contact relationship)
2022-02-23 21:30:18 -05:00
Hypolite Petovan b24fe917e4 Prevent tagsinput select element to be submitted without a value when they are required
- This was allowing to submit private messages to the wrong recipient
2022-02-23 21:30:18 -05:00
Hypolite Petovan f6e4984d7e
Merge pull request #11278 from annando/receiver-name
Improve the name of the "followers" receiver
2022-02-23 15:30:33 -05:00
Michael 59630a2c82 Improve the name of the "followers" receiver 2022-02-23 20:18:37 +00:00
Hypolite Petovan 1617e9fc64
Merge pull request #11277 from bkil/doc/troubleshooting-loadavg-acl-big-uploads
doc/Install.md: Troubleshooting: loadavg, filesystem ACL, big uploads
2022-02-23 09:29:56 -05:00
bkil dac67baf11 doc/Install.md: fix typo within ACL section 2022-02-23 15:20:15 +01:00
bkil b0ab82355b doc/Install.md: Troubleshooting: loadavg, filesystem ACL, big uploads 2022-02-23 15:05:24 +01:00
Michael Vogel 948405a486
Merge pull request #11267 from MrPetovan/task/11264-mastodon-api-version
Update Mastodon API version string to include Mastodon version compatibility
2022-02-23 05:38:25 +01:00
Hypolite Petovan ece09f4919
Merge pull request #11269 from tobiasd/20220221-de
DE translation updates
2022-02-21 00:43:15 -05:00
Hypolite Petovan b83b4f9108
Merge pull request #11268 from annando/comment-announce
Display announces identical for starting posts and comments
2022-02-21 00:42:54 -05:00
Tobias Diekershoff 9bb7e4cdfe
DE translation updates 2022-02-21 06:37:13 +01:00
Michael ec0b05d826 Display announces identital for starting posts and comments 2022-02-21 05:17:54 +00:00
Hypolite Petovan d7b573c6d7 Update Mastodon API version string to include Mastodon version compatibility 2022-02-20 20:22:39 -05:00
Hypolite Petovan e0ea51818e Add constructors to a couple of Mastodon API value objects 2022-02-20 16:17:03 -05:00
Hypolite Petovan bed1139093
Merge pull request #11266 from annando/display-permissions
Display the post receivers
2022-02-20 15:59:16 -05:00
Michael cec9c6d1a6 Updated messages.po - again 2022-02-20 20:50:50 +00:00
Michael 2321c7a55b Updated messages.po 2022-02-20 20:47:08 +00:00
Michael d6725437b0 Merge remote-tracking branch 'upstream/develop' into display-permissions 2022-02-20 20:45:32 +00:00
Michael a0b6bdc8de Updated messages.po 2022-02-20 19:29:48 +00:00
Michael 39e820e6a3 Display the post receivers 2022-02-20 19:25:55 +00:00
k-alin ff439272b9 mysql connection via socket if location of mysqld.sock was specified 2022-02-20 17:45:51 +01:00
k-alin 50580fd04c
Merge branch 'friendica:develop' into 6606-k-alin-mysql-unix-socket 2022-02-20 17:27:03 +01:00
Hypolite Petovan c86cc83524
Merge pull request #11260 from mkljczk/develop
API: add list members editing
2022-02-20 09:45:25 -05:00
marcin mikołajczak 0209892631 Apply suggestions
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2022-02-20 14:10:57 +01:00
Hypolite Petovan d2be291502
Merge pull request #11263 from annando/smarty
Fix for warnings in smarty templates
2022-02-20 04:06:25 -05:00
Philipp 6607f9bebe
Merge pull request #11262 from tobiasd/20220220-de
DE translation updates
2022-02-20 09:02:09 +01:00
Michael 706bcfa832 Fix for warnings in smarty templates 2022-02-20 06:57:04 +00:00
Tobias Diekershoff 9afb35d158
DE translation updates 2022-02-20 07:53:48 +01:00
Tobias Diekershoff 446775cdc8
Merge pull request #11261 from annando/notices
Avoid warning and notice
2022-02-20 07:23:53 +01:00
Michael Vogel d5373c583b
Merge pull request #11258 from MrPetovan/bug/11234-categories-profile
Show only the user's categories on their profile
2022-02-20 06:35:37 +01:00
Michael 311c1fdd81 Avoid warning and notice 2022-02-20 05:14:36 +00:00
marcin mikołajczak 9c6f6bcb95 API: add list members editing
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2022-02-19 23:22:54 +01:00
Hypolite Petovan b1d31471ec
Merge pull request #11259 from annando/conversation-receivers
Store the receivers of a post in the tags
2022-02-19 16:41:32 -05:00
Michael 00f39cd308 Reverted change 2022-02-19 20:32:19 +00:00
Michael 22952f88ca SImplify code 2022-02-19 19:45:27 +00:00
Michael b081227b47 Updated messages.po 2022-02-19 13:55:17 +00:00
Michael 9aa0f6f547 Merge remote-tracking branch 'upstream/develop' into conversation-receivers 2022-02-19 13:52:45 +00:00
Michael c867581530 Store the receivers of a post in the tags 2022-02-19 13:31:49 +00:00
Tobias Diekershoff 32c4d8c565
Merge pull request #11256 from MrPetovan/bug/notices
Check for array content before querying keys in Worker\Notifier
2022-02-19 07:44:17 +01:00
Tobias Diekershoff 4770903f54
Merge pull request #11257 from MrPetovan/bug/11212-smarty-4-php8
Switch to Smarty 4
2022-02-19 07:38:28 +01:00
Hypolite Petovan 30dcf3380c Show only the user's categories on their profile 2022-02-18 23:58:23 -05:00
Hypolite Petovan 4fe2257d8e Prevent warnings on undefined Smarty template variables 2022-02-18 22:44:11 -05:00
Hypolite Petovan 26c86e25c9 [Composer] Update smarty/smarty version mask to ^4 2022-02-18 22:43:45 -05:00
Hypolite Petovan 35abf33c05 Check for array content before querying keys in Worker\Notifier
- Address https://github.com/friendica/friendica/issues/11218#issuecomment-1045137358
2022-02-18 20:25:18 -05:00
Hypolite Petovan c03ff7833b
Merge pull request #11253 from annando/forum3
More rework to make private communities working
2022-02-18 12:19:57 -05:00
Michael Vogel 4c39faca95
Merge pull request #11249 from MrPetovan/bug/11248-getinfofromurl-cache-key
Hash the URL before using it as cache key in Util\Images::getInfoFromURLCached
2022-02-18 17:53:20 +01:00
Tobias Diekershoff 4c7d3a6371
Merge pull request #11255 from MrPetovan/task/11245-thread-completion-like
Relax comparison with pconfig system.accept_only_sharer value
2022-02-18 17:09:42 +01:00
Hypolite Petovan c376081d0d Relax comparison with pconfig system.accept_only_sharer value
- DI::pConfig()->get returns a string value, not an integer
- Removed superfluous default values now that we aren't doing strict type checking
2022-02-18 09:32:30 -05:00
Hypolite Petovan 17d49422b4 Hash the URL before using it as cache key in Util\Images::getInfoFromURLCached
- This prevents oversized URL from stunting the database cache
2022-02-18 09:19:36 -05:00
Michael 39724d5079 Add the mentions 2022-02-18 09:12:33 +00:00
Michael ebb4c0f947 tests 2022-02-18 06:12:02 +00:00
Michael 0ce756596e Tests again 2022-02-18 05:56:17 +00:00
Michael 830a91e586 Avoid failed test 2022-02-18 05:34:18 +00:00
Michael 7a5a8c8d68 Improve look of reshared items on the forum profile 2022-02-17 23:06:57 +00:00
Michael 49dd97e5fd User lower case 2022-02-17 21:51:47 +00:00
Michael 234dac49b4 Rrepeat comments as well 2022-02-17 21:44:59 +00:00
Michael 1b6b6bcc6d Renamed function 2022-02-17 07:53:24 +00:00
Michael 51fb265621 Merge remote-tracking branch 'upstream/develop' into forum3 2022-02-17 07:11:50 +00:00
Michael Vogel 618dda7dd2
Merge pull request #11246 from MrPetovan/task/11245-thread-completion-like
Expand system.accept_only_sharer pconfig value to include previous behavior with likes
2022-02-17 08:02:19 +01:00
Michael ccf92fc922 Updated messages.po 2022-02-16 23:07:09 +00:00
Michael 9ac24a0f36 More rework to make private communities working 2022-02-16 22:56:55 +00:00
Michael Vogel 76a50a6942
Merge pull request #11252 from tobiasd/20220216-changelog
Note about breaking changes in private forums
2022-02-16 09:32:34 +01:00
Tobias Diekershoff b703d053ab
Note about breaking changes in private forums
This adds a note/reminder to the CHANGELOG file about the breaking changes introduced in this version regarding the _private forums_.
2022-02-16 07:43:02 +01:00
Hypolite Petovan 6c0dbc1775
Merge pull request #11251 from annando/forum2
Fix for private communities
2022-02-15 20:16:07 -05:00
Hypolite Petovan 7dadc7f6dc
Merge pull request #11250 from nupplaphil/bug/redis_pw
Don't use empty values for redis password and port
2022-02-15 20:15:06 -05:00
Michael Vogel 18e0fb375b
Merge pull request #11247 from MrPetovan/bug/notices
Check the existence of the `uid` field before accessing it in Module\Photo
2022-02-16 01:06:23 +01:00
Michael 33edfc6a5f Fix for private communities 2022-02-15 23:51:13 +00:00
Philipp Holzer c4e40734df
adapt test 2022-02-15 23:17:40 +01:00
Philipp Holzer be240ca500
Config Console Show 'NULL' for null-values 2022-02-15 23:10:41 +01:00
Philipp Holzer 4e58c6981c
Don't use empty, but not null values for redis password and port 2022-02-15 23:04:43 +01:00
Hypolite Petovan 3b6c40e2e6 Check the existence of the uid field before accessing it in Module\Photo
- Address https://github.com/friendica/friendica/issues/11218#issuecomment-1039512291
2022-02-15 15:59:35 -05:00
Hypolite Petovan 785ea0325e Updated main translation file after changing several strings 2022-02-15 15:54:45 -05:00
Hypolite Petovan 99979019bf Expand system.accept_only_sharer pconfig value to include previous behavior with likes 2022-02-15 15:54:36 -05:00
Hypolite Petovan 361fdccdc7
Merge pull request #11242 from annando/private-forums
Private forums are now working via AP
2022-02-15 12:06:34 -05:00
Michael d019ef57d2 Database version increased, code simplified 2022-02-15 15:44:44 +00:00
Michael Vogel 4d274cc3ea
Merge pull request #11244 from MrPetovan/bug/11232-post-media-order
Use expected order for post medias
2022-02-15 16:38:36 +01:00
Hypolite Petovan f329d5c067
Merge pull request #11241 from annando/timing
Workaround for timing problems / Avoid a notice in the scheduled posts
2022-02-15 10:20:04 -05:00
Hypolite Petovan 9ae0234bb5 Use expected order for post medias
- This fixes the wrong display order of post pictures
2022-02-15 09:53:24 -05:00
Michael 29d83c0ffb Block communication with Diaspora for communities 2022-02-15 07:08:02 +00:00
Michael 2b0518ac04 unset several table fields before distribution 2022-02-15 06:21:46 +00:00
k-alin 31ff583c5e mysql connection via unix sockets (mysqli + PDO) 2022-02-14 23:18:41 +01:00
Michael d404f15312 Improve local forum distribution 2022-02-14 22:04:33 +00:00
Michael a5a1c81790 Fetch the user id when not provided 2022-02-13 16:42:43 +00:00
Michael 9c60b4127b Merge remote-tracking branch 'upstream/develop' into private-forums 2022-02-13 07:03:20 +00:00
Tobias Diekershoff 41f502266e
Merge pull request #11240 from annando/thread-completion
Avoid thread completion on activities
2022-02-13 07:51:55 +01:00
Tobias Diekershoff ef0014a4c6
Merge pull request #11239 from annando/simplify-avatar
Simplify author contact fetching
2022-02-13 07:45:30 +01:00
Michael ee3a8ccb3b No notifcations for forum / fetch user for fetching content 2022-02-13 05:45:06 +00:00
Michael e394143148 Private forums are now working via ActivityPub 2022-02-12 18:38:36 +00:00
Michael Vogel 6bc69f3353 Workaround for timing problems / Avoid a notice in the scheduled posts 2022-02-12 18:27:58 +01:00
Michael cdee2b44db Avoid thread completion on activities 2022-02-12 13:05:56 +00:00
Michael a3ba3fb383 Simplify author contact fetching 2022-02-12 10:46:17 +00:00
Michael Vogel 203d87e047
Merge pull request #11237 from tobiasd/20220211-docs
Contact ex- and import should work with Misskey CSV files as well
2022-02-11 17:11:44 +01:00
Tobias Diekershoff c0c1799508
Contact ex- and import should work with Misskey CSV files as well 2022-02-11 13:47:06 +01:00
Michael Vogel 15a340cf89
Merge pull request #11233 from tobiasd/20220210-adminproxy
added two help texts in the admin panel site config
2022-02-10 09:31:50 +01:00
Tobias Diekershoff d65357dd92
added two help texts in the admin panel site config 2022-02-10 09:04:48 +01:00
Hypolite Petovan 1b73e4d267
Merge pull request #11230 from annando/account-type
Use "account-type" instead of "page-flags"
2022-02-09 22:23:55 -05:00
Hypolite Petovan 0e6fe8d8ad
Merge pull request #11228 from annando/no-db-exception
Don't throw an exception when the database query fails
2022-02-09 22:16:56 -05:00
Hypolite Petovan c80f7b07e5
Merge pull request #11227 from annando/show-followers
Display followers for followers of private forums
2022-02-09 22:01:33 -05:00
Michael 5b46b41226 New function to add group members from a forum 2022-02-09 21:34:25 +00:00
Michael 85eab6ebee New field for groups that are connected with forums 2022-02-09 19:44:10 +00:00
Philipp 80e0e7440a
Merge pull request #11229 from tobiasd/20220209-de
DE translation updats
2022-02-09 08:06:19 +01:00
Michael 6c156e3bc6 Set "manually-approve" in the update 2022-02-09 07:02:06 +00:00
Michael 9a764516d0 Use the "contact-type" instead of "forum" or "prv" 2022-02-09 06:52:16 +00:00
Tobias Diekershoff 5a334deeaf
DE translation updats 2022-02-09 07:35:02 +01:00
Michael b857c26999 Use "account-type" instead of "page-flags" 2022-02-09 05:56:12 +00:00
Michael 14f0a1a1ed Don't throw an exception when the database query fails 2022-02-08 21:28:42 +00:00
Michael f87b80266c Display followers for followers of private forums 2022-02-08 21:05:15 +00:00
Philipp ce762b4154
Merge pull request #11225 from tobiasd/20220208-de
DE translation updates
2022-02-08 08:58:13 +01:00
Tobias Diekershoff 85791348cb
DE translation updates 2022-02-08 08:38:29 +01:00
Hypolite Petovan 98f55ddb2b
Merge pull request #11224 from annando/statistics-separator
Use a thousands_separator to improve readability of the federation statistics
2022-02-07 16:07:11 -05:00
Michael 061a6d9239 Use a thousands_separator to improve readability of the federation statistics 2022-02-07 19:21:39 +00:00
Philipp a1e6c148b1
Merge pull request #11221 from tobiasd/20220207-changelog
forgot to update the CHANGELOG file for the 2022.05-dev phase
2022-02-07 09:01:04 +01:00
Tobias Diekershoff c2617bd793
forgot to update the CHANGELOG file for the 2022.05-dev phase 2022-02-07 08:06:58 +01:00
Michael cda348def2 Fixed grammar 2022-02-07 06:53:44 +00:00
Michael 8e70e19061 Improved texts 2022-02-07 06:43:37 +00:00
Tobias Diekershoff 5525420fa9
Merge pull request #11215 from annando/fetch-usage
Store week, month and halfyear usage / number of posts
2022-02-07 07:37:11 +01:00
Michael 384fe562a8 More statistics 2022-02-07 06:23:49 +00:00
Michael bdba75ec47 Show detailled statistics per platform 2022-02-07 06:11:37 +00:00
Michael 58b4ecd6ae Show month/halfyear usage 2022-02-07 05:29:00 +00:00
Michael 2fdd33f504 Updated database.sql 2022-02-06 20:05:29 +00:00
Michael adfd7d621d Merge remote-tracking branch 'upstream/develop' into fetch-usage 2022-02-06 20:04:55 +00:00
Michael 92a71f8c27 Store wekk/month&halfyear usage / number of posts 2022-02-06 20:03:19 +00:00
Tobias Diekershoff 960d440ab6 pump version to 2022.05-dev 2022-02-06 19:56:31 +01:00
540 changed files with 69150 additions and 45214 deletions

View file

@ -8,7 +8,11 @@ coverage:
round: down
range: "70...100"
status:
project: false
patch: false
project:
default:
informational: true
patch:
default:
informational: true
comment: false

14
.gitignore vendored
View file

@ -85,4 +85,16 @@ venv/
/bin/phpunit
#Ignore cache file
.php_cs.cache
.php_cs.cache
#ignore avatar picture cache path
/avatar
#Ignore autotest results
autotest-results.xml
#ignore phpunit result cache
tests/.phpunit.result.cache
#ignore .php_cs (local copy)
.php_cs

View file

@ -6,6 +6,7 @@ AddType application/x-java-archive .jar
AddType audio/ogg .oga
#AddHandler php53-cgi .php
# deny access to log files (friendica.log or php.out)
<FilesMatch "\.(out|log)$">
<IfModule authz_host_module>
#Apache 2.4
@ -17,6 +18,18 @@ AddType audio/ogg .oga
</IfModule>
</FilesMatch>
# deny access to backup files
<FilesMatch "(\~|\.bak|\.swp)$">
<IfModule authz_host_module>
#Apache 2.4
Require all denied
</IfModule>
<IfModule !authz_host_module>
#Apache 2.2
Deny from all
</IfModule>
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine on
# Protect repository directory from browsing

View file

@ -62,7 +62,7 @@ pipeline:
- export RELEASE="friendica-full-$VERSION"
- export ARTIFACT="$RELEASE.tar.gz"
- tar
--transform "s,^,$RELEASE/,"
--transform "s,^,$RELEASE/,S"
-X mods/release-list-exclude.txt
-T mods/release-list-include.txt
-cvzf ./build/$ARTIFACT

View file

@ -60,7 +60,7 @@ pipeline:
- export RELEASE="friendica-full-$VERSION"
- export ARTIFACT="$RELEASE.tar.gz"
- tar
--transform "s,^,$RELEASE/,"
--transform "s,^,$RELEASE/,S"
-X mods/release-list-exclude.txt
-T mods/release-list-include.txt
-cvzf ./build/$ARTIFACT

View file

@ -1,3 +1,101 @@
Version 2022.09 (unreleased)
Friendica Core
Friendica Addons
Closed Issues
Version 2022.06 (2022-06-11)
Friendica Core
Added DA DK translation, updates to the translations DE, FR, HU, PL, RU, ZH CN [translation teams]
Updates to the documentation [foss-]
General code cleanup [annando, MrPetovan, nupplaphil, tobiasd]
Added caching for several AP endpoints [annando]
Added the display of pinned/featured postings of contacts [annando]
Added the display of polls and current votes [annando]
Added node relocation to the console tool [MrPetovan]
Added tool to move avatars to the avatar cache [annando]
Added storage of edit history of postings [annando]
Added the possibility to set custom posting dates [annando]
Added the possibility that pending events in a forum are send to new members [annando]
Removed node relocation functionality from the Admin Panel [MrPetovan]
Enhanced performance (database related, global directory) [annando]
Enhanced the logging [annando]
Enhanced the federation statistics page in the admin panel [annando]
Enhanced the Mastodon compatible API [annando]
Enhanced the .htaccess-dist file to prevent accessing some common backup files [tobiasd]
Enhanced the priority values of some worker queue jobs [annando]
Enhanced the possibility for the user selecting which notifications should be shown [MrPetovan]
Enhanced the relay server handling [annando]
Enhanced the users control what they are notified about [annando]
Changed the default icons to the flat icons [atjn]
Changed the order of starred posts and posts with mention by the last comment date [annando]
Fixed a problem with the local cache of contact avatars [annando]
Fixed a problem in the federation with Lemmy nodes [annando]
Fixed a problem importing some RSS feeds [annando]
Fixed a problem fetching attached media files [annando]
Fixed a problem with the abstract being formatted [annando]
Fixed a problem preventing the import of contacts [tobiasd]
Fixed a problem with IDN URLs [annando]
Fixed a problem parsing abstract BBCode tags [MrPetovan]
Fixed a problem that could cause unintentionally changing the password by password managers [MrPetovan]
Fixed a problem with the language detection of postings [annando]
Fixed a problem with the selection of JSON/XML webfinger results [annando]
Fixed a problem with re-shared postings that were pinned [annando]
Fixed a problem that caused the display of a wrong information about a new follower for some account types [annando]
Fixed a problem that caused interaction abilities on postings not to be possible [annando]
Fixed a problem causing links to larger photos lead to smaller ones [annando]
Fixed a regression that caused pinned private notes to be shown publically [annando]
Fixed a problem during the language detection for notifications [annando]
Friendica Addons
Breaking: The obsolete hooks settings_form and settings_post have been removed,
custom addons developers should use the addon_settings hook instead.
Updates to the translations DA DK, FR, HU, PL [translation teams]
advancedcontentfilter
Use a random item to validate fields on rule save [MrPetovan]
twitter
Fix usage of unfollow / block hooks [MrPetovan]
S3 storage back-end
Added the addon [nupplaphil]
Closed Issues
4639, 9650, 10926, 11040, 11146, 11212, 11223, 11226, 11291, 11299,
11309, 11310, 11315, 11319, 11338, 11339, 11340, 11343, 11350, 11353,
11371, 11393, 11407, 11425, 11427, 11431, 11440, 11445, 11450, 11461,
11469, 11470, 11487, 11488, 11491, 11492, 11504, 11507, 11508, 11510,
11511, 11512, 11557, 11560, 11561, 11594, 11602, 11625
Version 2022.03 (2022-03-07)
Friendica Core
Updates to the translations AR, DE, HU [translation teams]
Updates to the documentation [bkil, tobiasd]
General code cleanup [annando, MrPetovan]
Enhanced the federation statistics page in the admin panel [annando]
Enhanced handling of database errors [annando]
Enhanced the thread completion [annando, MrPetovan]
Enhanced the handling of unfollow/revoke actions [MrPetovan]
Enhanced the API [annando]
Fixed a bug that caused wrong categories were displayed in a users profile [MrPetovan]
Fixed a bug that lead to private messages being send to the wrong recipient [MrPetovan]
Added display of post receivers [annando]
Added pleroma like version to the API results [MrPetovan]
Added advanced configuration option to automatically re-use the abstract field from AP conversations [annando]
Switched to SMARTY-4 templating engine [MrPetovan]
Breaking: The distribution of _private forums_ was moved to ActivityPub,
making them incompatible with older versions of Friendica [annando]
Breaking: The Twitter-/Friendica-/Statusnet-API now uses the same base
for the id as the Mastodon API (uri-id instead of id). To still
receive new posts with (for example) Friendiqa you have to remove
the account and add it again. [annando]
Friendica Addons
Added S3 Storage Backend addon [nupplaphil]
Closed Issues
11220, 11222, 11232, 11234, 11248, 11245, 11264, 11274
Version 2022.02 (2022-02-06)
Friendica Core
Updates to the translations AR, DE, ET, FR, GB_EN, GB_US, HU, IT, RU, SV [translation teams]

5
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,5 @@
# How to Contribute
If you want to contribute to the project, you dont need to have coding experience. There are a number of tasks listed in the issue tracker with the label “[Junior Jobs](https://github.com/friendica/friendica/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Jobs%22)” we think are good for new contributors. But you are by no means limited to these if you find a solution to a problem (even a new one) please make a pull request at [github](https://github.com/friendica/friendica) or let us know in the [development forum](https://forum.friendi.ca/profile/developers).
Contribution to Friendica is also not limited to coding. Any contribution to the [documentation](https://github.com/friendica/friendica/tree/develop/doc), the [translation](https://www.transifex.com/Friendica/friendica/dashboard/) or advertisement materials is welcome or reporting a problem. You dont need to deal with Git(Hub) or Transifex if you dont like to. Just [get in touch](https://forum.friendi.ca/profile/helpers) with us and we will get the materials to the appropriate places.

View file

@ -28,9 +28,11 @@ Andy
Andy Hee
Angristan
Anthronaut
Anton
Antron Samurai
Arian - Cazare Muncitori
Asher Pen
atjn
aweiher
axelt
balderino
@ -45,6 +47,7 @@ ben-utzer
Beringer Zsolt
BinkaDroid
Bjoessi
bkil
bob lebonche
Boris Daniel Martinez Millàn
bufalo1973
@ -54,6 +57,7 @@ Carlos Solís
Carsten Pfeiffer
Casper
Cat Gray
chinnux
Chris Case
Christian González
Christian Kalkhoff
@ -89,6 +93,7 @@ effex7
Elena
emilia.krawczyk
Eric Côté
Erich
erik
Erkan Yilmaz
Eugene Veresk
@ -112,6 +117,7 @@ Gidi Kroon
GLComo
greeneyedred
Gregory Smith
gudzpoz
guzzisti
Haakon Meland Eriksen
Hans Meine
@ -137,12 +143,14 @@ Joe Doe
joe slam
Johannes Schwab
John Brazil
John Mortensen
Jonatan Nyberg
Jonny Tischbein
Josef Moravek
juanman
julia.domagalska
Julio Cova
k-alin
Karel
Karolina
Kastal András
@ -214,6 +222,7 @@ Philipp Holzer
Pierre Bernardeau
Pierre Rudloff
Piotr Blonkowski
Piotr Strębski
pokerazor
R C
Rabuzarus
@ -282,6 +291,7 @@ Tobias Diekershoff
Tobias Hößl
Tom
Tom Aurlund
Tom Hu
tomamplius
tomtom84
Tony Baldwin

View file

@ -1,7 +1,7 @@
INPUT = README.md index.php boot.php update.php bin/ mod/ include/ view/ src/ VERSION
RECURSIVE = YES
PROJECT_NAME = "Friendica"
PROJECT_LOGO = images/friendica-64.jpg
PROJECT_LOGO = images/friendica-64.png
EXCLUDE = .htconfig.php config/ library/ doc/ .git/ log/ addon/ report/ privacy_image_cache/ photo/ proxy/ local/
EXCLUDE_PATTERNS = *smarty3* strings.php *.log *.out *test*
OUTPUT_DIRECTORY = doc

View file

@ -1 +1 @@
2022.02
2022.09-dev

Binary file not shown.

View file

@ -18,11 +18,13 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* Run the worker from a daemon.
*
* This script was taken from http://php.net/manual/en/function.pcntl-fork.php
*/
if (php_sapi_name() !== 'cli') {
header($_SERVER["SERVER_PROTOCOL"] . ' 403 Forbidden');
exit();
@ -230,7 +232,7 @@ while (true) {
}
$timeout = ($seconds >= $wait_interval);
} while (!$timeout && !Worker::IPCJobsExists());
} while (!$timeout && !Worker\IPC::JobsExists());
if ($timeout) {
$do_cron = true;

View file

@ -15,33 +15,34 @@
# - TEST_SELECTION= ... Specify which tests are used to run (based on the test-labeling)
# - XDEBUG_CONFIG= ... Set some XDEBUG specific environment settings for development
DATABASENAME=${MYSQL_DATABASE:-test}
DATABASEUSER=${MYSQL_USERNAME:-friendica}
DATABASEHOST=${MYSQL_HOST:-localhost}
BASEDIR=$PWD
DATABASE_NAME=${FRIENDICA_MYSQL_DATABASE:-test}
DATABASE_USER=${FRIENDICA_MYSQL_USERNAME:-friendica}
DATABASE_HOST=${FRIENDICA_MYSQL_HOST:-localhost}
DATABASE_PASSWORD=${FRIENDICA_MYSQL_PASSWORD:-friendica}
BASEDIR=${PWD}
DBCONFIGS="mysql mariadb"
TESTS="REDIS MEMCACHE MEMCACHED APCU NODB"
export MYSQL_DATABASE="$DATABASENAME"
export MYSQL_USERNAME="$DATABASEUSER"
export MYSQL_PASSWORD="friendica"
export MYSQL_DATABASE="${DATABASE_NAME}"
export MYSQL_USERNAME="${DATABASE_USER}"
export MYSQL_PASSWORD="${DATABASE_PASSWORD}"
if [ -z "$PHP_EXE" ]; then
if [ -z "${PHP_EXE}" ]; then
PHP_EXE=php
fi
PHP=$(which "$PHP_EXE")
PHP=$(which "${PHP_EXE}")
# Use the Friendica internal composer
COMPOSER="$BASEDIR/bin/composer.phar"
COMPOSER="${BASEDIR}/bin/composer.phar"
set -e
_XDEBUG_CONFIG=$XDEBUG_CONFIG
_XDEBUG_CONFIG=${XDEBUG_CONFIG}
unset XDEBUG_CONFIG
function show_syntax() {
echo -e "Syntax: ./autotest.sh [dbconfigname] [testfile]\n" >&2
echo -e "\t\"dbconfigname\" can be one of: $DBCONFIGS" >&2
echo -e "\t\"dbconfigname\" can be one of: ${DBCONFIGS}" >&2
echo -e "\t\"testfile\" is the name of a test file, for example lib/template.php" >&2
echo -e "\nDatabase environment variables:\n" >&2
echo -e "\t\"MYSQL_HOST\" Mysql Hostname (Default: localhost)" >&2
@ -57,22 +58,22 @@ function show_syntax() {
echo -e "\nIf no arguments are specified, all tests will be run with all database configs" >&2
}
if [ -x "$PHP" ]; then
echo "Using PHP executable $PHP"
if [ -x "${PHP}" ]; then
echo "Using PHP executable ${PHP}"
else
echo "Could not find PHP executable $PHP_EXE" >&2
echo "Could not find PHP executable ${PHP_EXE}" >&2
exit 3
fi
echo "Installing depdendencies"
$PHP "$COMPOSER" install
${PHP} "$COMPOSER" install
PHPUNIT="$BASEDIR/vendor/bin/phpunit"
PHPUNIT="${BASEDIR}/vendor/bin/phpunit"
if [ -x "$PHPUNIT" ]; then
echo "Using PHPUnit executable $PHPUNIT"
if [ -x "${PHPUNIT}" ]; then
echo "Using PHPUnit executable ${PHPUNIT}"
else
echo "Could not find PHPUnit executable after composer $PHPUNIT" >&2
echo "Could not find PHPUnit executable after composer ${PHPUNIT}" >&2
exit 3
fi
@ -83,8 +84,8 @@ fi
if [ "$1" ]; then
FOUND=0
for DBCONFIG in $DBCONFIGS; do
if [ "$1" = "$DBCONFIG" ]; then
for DBCONFIG in ${DBCONFIGS}; do
if [ "$1" = "${DBCONFIG}" ]; then
FOUND=1
break
fi
@ -103,13 +104,13 @@ fi
function cleanup_config() {
if [ -n "$DOCKER_CONTAINER_ID" ]; then
echo "Kill the docker $DOCKER_CONTAINER_ID"
docker stop "$DOCKER_CONTAINER_ID"
docker rm -f "$DOCKER_CONTAINER_ID"
if [ -n "${DOCKER_CONTAINER_ID}" ]; then
echo "Kill the docker ${DOCKER_CONTAINER_ID}"
docker stop "${DOCKER_CONTAINER_ID}"
docker rm -f "${DOCKER_CONTAINER_ID}"
fi
cd "$BASEDIR"
cd "${BASEDIR}"
# Restore existing config
if [ -f config/local.config-autotest-backup.php ]; then
@ -122,77 +123,77 @@ trap cleanup_config EXIT
function execute_tests() {
DB=$1
echo "Setup environment for $DB testing ..."
echo "Setup environment for ${DB} testing ..."
# back to root folder
cd "$BASEDIR"
cd "${BASEDIR}"
# backup current config
if [ -f config/local.config.php ]; then
mv config/local.config.php config/local.config-autotest-backup.php
fi
if [ -z "$NOINSTALL" ]; then
if [ -z "${NOINSTALL}" ]; then
#drop database
if [ "$DB" == "mysql" ]; then
if [ -n "$USEDOCKER" ]; then
if [ "${DB}" == "mysql" ]; then
if [ -n "${USEDOCKER}" ]; then
echo "Fire up the mysql docker"
DOCKER_CONTAINER_ID=$(docker run \
-e MYSQL_ROOT_PASSWORD=friendica \
-e MYSQL_USER="$DATABASEUSER" \
-e MYSQL_USER="${DATABASE_USER}" \
-e MYSQL_PASSWORD=friendica \
-e MYSQL_DATABASE="$DATABASENAME" \
-e MYSQL_DATABASE="${DATABASE_NAME}" \
-d mysql)
DATABASEHOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "$DOCKER_CONTAINER_ID")
DATABASE_HOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "${DOCKER_CONTAINER_ID}")
else
if [ -z "$DRONE" ]; then # no need to drop the DB when we are on CI
if [ -z "${DRONE}" ]; then # no need to drop the DB when we are on CI
if [ "mysql" != "$(mysql --version | grep -o mysql)" ]; then
echo "Your mysql binary is not provided by mysql"
echo "To use the docker container set the USEDOCKER environment variable"
exit 3
fi
mysql -u "$DATABASEUSER" -pfriendica -e "DROP DATABASE IF EXISTS $DATABASENAME" -h $DATABASEHOST || true
mysql -u "$DATABASEUSER" -pfriendica -e "CREATE DATABASE $DATABASENAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h $DATABASEHOST
mysql -u "${DATABASE_USER}" -pfriendica -e "DROP DATABASE IF EXISTS ${DATABASE_NAME}" -h ${DATABASE_HOST} || true
mysql -u "${DATABASE_USER}" -pfriendica -e "CREATE DATABASE ${DATABASE_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h ${DATABASE_HOST}
else
DATABASEHOST=mysql
DATABASE_HOST=mysql
fi
fi
echo "Waiting for MySQL $DATABASEHOST initialization..."
if ! bin/wait-for-connection $DATABASEHOST 3306 300; then
echo "Waiting for MySQL ${DATABASE_HOST} initialization..."
if ! bin/wait-for-connection ${DATABASE_HOST} 3306 300; then
echo "[ERROR] Waited 300 seconds, no response" >&2
exit 1
fi
echo "MySQL is up."
fi
if [ "$DB" == "mariadb" ]; then
if [ -n "$USEDOCKER" ]; then
if [ "${DB}" == "mariadb" ]; then
if [ -n "${USEDOCKER}" ]; then
echo "Fire up the mariadb docker"
DOCKER_CONTAINER_ID=$(docker run \
-e MYSQL_ROOT_PASSWORD=friendica \
-e MYSQL_USER="$DATABASEUSER" \
-e MYSQL_USER="${DATABASE_USER}" \
-e MYSQL_PASSWORD=friendica \
-e MYSQL_DATABASE="$DATABASENAME" \
-e MYSQL_DATABASE="${DATABASE_NAME}" \
-d mariadb)
DATABASEHOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "$DOCKER_CONTAINER_ID")
DATABASE_HOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "${DOCKER_CONTAINER_ID}")
else
if [ -z "$DRONE" ]; then # no need to drop the DB when we are on CI
if [ -z "${DRONE}" ]; then # no need to drop the DB when we are on CI
if [ "MariaDB" != "$(mysql --version | grep -o MariaDB)" ]; then
echo "Your mysql binary is not provided by mysql"
echo "To use the docker container set the USEDOCKER environment variable"
exit 3
fi
mysql -u "$DATABASEUSER" -pfriendica -e "DROP DATABASE IF EXISTS $DATABASENAME" -h $DATABASEHOST || true
mysql -u "$DATABASEUSER" -pfriendica -e "CREATE DATABASE $DATABASENAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h $DATABASEHOST
mysql -u "${DATABASE_USER}" -pfriendica -e "DROP DATABASE IF EXISTS ${DATABASE_NAME}" -h ${DATABASE_HOST} || true
mysql -u "${DATABASE_USER}" -pfriendica -e "CREATE DATABASE ${DATABASE_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h ${DATABASE_HOST}
else
DATABASEHOST=mariadb
DATABASE_HOST=mariadb
fi
fi
echo "Waiting for MariaDB $DATABASEHOST initialization..."
if ! bin/wait-for-connection $DATABASEHOST 3306 300; then
echo "Waiting for MariaDB ${DATABASE_HOST} initialization..."
if ! bin/wait-for-connection ${DATABASE_HOST} 3306 300; then
echo "[ERROR] Waited 300 seconds, no response" >&2
exit 1
fi
@ -200,28 +201,28 @@ function execute_tests() {
echo "MariaDB is up."
fi
if [ -n "$USEDOCKER" ]; then
if [ -n "${USEDOCKER}" ]; then
echo "Initialize database..."
docker exec $DOCKER_CONTAINER_ID mysql -u root -pfriendica -e 'CREATE DATABASE IF NOT EXISTS $DATABASENAME;'
docker exec ${DOCKER_CONTAINER_ID} mysql -u root -pfriendica -e "CREATE DATABASE IF NOT EXISTS ${DATABASE_NAME};"
fi
export MYSQL_HOST="$DATABASEHOST"
export MYSQL_HOST="${DATABASE_HOST}"
#call installer
echo "Installing Friendica..."
"$PHP" ./bin/console.php autoinstall --dbuser="$DATABASEUSER" --dbpass=friendica --dbdata="$DATABASENAME" --dbhost="$DATABASEHOST" --url=https://friendica.local --admin=admin@friendica.local
"${PHP}" ./bin/console.php autoinstall --dbuser="${DATABASE_USER}" --dbpass=friendica --dbdata="${DATABASE_NAME}" --dbhost="${DATABASE_HOST}" --url=https://friendica.local --admin=admin@friendica.local
fi
#test execution
echo "Testing..."
rm -fr "coverage-html"
mkdir "coverage-html"
if [[ "$_XDEBUG_CONFIG" ]]; then
export XDEBUG_CONFIG=$_XDEBUG_CONFIG
if [[ "${_XDEBUG_CONFIG}" ]]; then
export XDEBUG_CONFIG=${_XDEBUG_CONFIG}
fi
COVER=''
if [ -z "$NOCOVERAGE" ]; then
if [ -z "${NOCOVERAGE}" ]; then
COVER="--coverage-clover tests/autotest-clover.xml"
else
echo "No coverage"
@ -229,51 +230,51 @@ function execute_tests() {
# per default, there is no cache installed
GROUP='--exclude-group REDIS,MEMCACHE,MEMCACHED,APCU'
if [ "$TEST_SELECTION" == "REDIS" ]; then
if [ "${TEST_SELECTION}" == "REDIS" ]; then
GROUP="--group REDIS"
fi
if [ "$TEST_SELECTION" == "MEMCACHE" ]; then
if [ "${TEST_SELECTION}" == "MEMCACHE" ]; then
GROUP="--group MEMCACHE"
fi
if [ "$TEST_SELECTION" == "MEMCACHED" ]; then
if [ "${TEST_SELECTION}" == "MEMCACHED" ]; then
GROUP="--group MEMCACHED"
fi
if [ "$TEST_SELECTION" == "APCU" ]; then
if [ "${TEST_SELECTION}" == "APCU" ]; then
GROUP="--group APCU"
fi
if [ "$TEST_SELECTION" == "NODB" ]; then
if [ "${TEST_SELECTION}" == "NODB" ]; then
GROUP="--exclude-group DB,SLOWDB"
fi
INPUT="$BASEDIR/tests"
INPUT="${BASEDIR}/tests"
if [ -n "$2" ]; then
INPUT="$INPUT/$2"
INPUT="${INPUT}/$2"
fi
echo "${PHPUNIT[@]}" --configuration tests/phpunit.xml $GROUP $COVER --log-junit "autotest-results.xml" "$INPUT" "$3"
"${PHPUNIT[@]}" --configuration tests/phpunit.xml $GROUP $COVER --log-junit "autotest-results.xml" "$INPUT" "$3"
echo "${PHPUNIT[@]}" --configuration tests/phpunit.xml ${GROUP} ${COVER} --log-junit "autotest-results.xml" "${INPUT}" "$3"
"${PHPUNIT[@]}" --configuration tests/phpunit.xml ${GROUP} ${COVER} --log-junit "autotest-results.xml" "${INPUT}" "$3"
RESULT=$?
if [ -n "$DOCKER_CONTAINER_ID" ]; then
echo "Kill the docker $DOCKER_CONTAINER_ID"
docker stop $DOCKER_CONTAINER_ID
docker rm -f $DOCKER_CONTAINER_ID
unset $DOCKER_CONTAINER_ID
if [ -n "${DOCKER_CONTAINER_ID}" ]; then
echo "Kill the docker ${DOCKER_CONTAINER_ID}"
docker stop ${DOCKER_CONTAINER_ID}
docker rm -f ${DOCKER_CONTAINER_ID}
unset ${DOCKER_CONTAINER_ID}
fi
}
#
# Start the test execution
#
if [ -z "$1" ] && [ -n "$TEST_SELECTION" ]; then
if [ -z "$1" ] && [ -n "${TEST_SELECTION}" ]; then
# run all known database configs
for DBCONFIG in $DBCONFIGS; do
execute_tests "$DBCONFIG"
for DBCONFIG in ${DBCONFIGS}; do
execute_tests "${DBCONFIG}"
done
else
FILENAME="$2"
if [ -n "$2" ] && [ ! -f "tests/$FILENAME" ] && [ "${FILENAME:0:2}" != "--" ]; then
FILENAME="../$FILENAME"
if [ -n "$2" ] && [ ! -f "tests/${FILENAME}" ] && [ "${FILENAME:0:2}" != "--" ]; then
FILENAME="../${FILENAME}"
fi
execute_tests "$1" "$FILENAME" "$3"
execute_tests "$1" "${FILENAME}" "$3"
fi

View file

@ -58,7 +58,7 @@ case "$MODE" in
OUTFILE="$FULLPATH/../view/lang/C/messages.po"
FINDSTARTDIR="."
# skip addon folder
FINDOPTS="( -path ./addon -or -path ./addons -or -path ./addons-extra -or -path ./tests -or -path ./view/lang -or -path ./view/smarty3 -or -path ./vendor ) -prune -or"
FINDOPTS="( -path ./addon -or -path ./addons -or -path ./addons-extra -or -path ./tests -or -path ./view/lang -or -path ./view/smarty3 -or -path ./vendor -or -path ./local -or -path ./avatar -or -path ./proxy ) -prune -or"
F9KVERSION=$(cat ./VERSION);
echo "Friendica version $F9KVERSION"

View file

@ -30,8 +30,8 @@
use Friendica\Model\Contact;
define('FRIENDICA_PLATFORM', 'Friendica');
define('FRIENDICA_CODENAME', 'Siberian Iris');
define('FRIENDICA_VERSION', '2022.02');
define('FRIENDICA_CODENAME', 'Giant Rhubarb');
define('FRIENDICA_VERSION', '2022.09-dev');
define('DFRN_PROTOCOL_VERSION', '2.23');
define('NEW_TABLE_STRUCTURE_VERSION', 1288);
@ -87,8 +87,8 @@ define('PRIORITIES', [PRIORITY_CRITICAL, PRIORITY_HIGH, PRIORITY_MEDIUM, PRIORIT
/* @}*/
// Normally this constant is defined - but not if "pcntl" isn't installed
if (!defined("SIGTERM")) {
define("SIGTERM", 15);
if (!defined('SIGTERM')) {
define('SIGTERM', 15);
}
/**
@ -117,6 +117,7 @@ function local_user()
if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) {
return intval($_SESSION['uid']);
}
return false;
}
@ -169,7 +170,7 @@ function remote_user()
*
* @param string $s - Text of notice
*/
function notice($s)
function notice(string $s)
{
if (empty($_SESSION)) {
return;
@ -189,7 +190,7 @@ function notice($s)
*
* @param string $s - Text of notice
*/
function info($s)
function info(string $s)
{
if (empty($_SESSION)) {
return;

View file

@ -51,7 +51,7 @@
"pragmarx/recovery": "^0.2",
"psr/container": "^1.0",
"seld/cli-prompt": "^1.0",
"smarty/smarty": "^3.1",
"smarty/smarty": "^4",
"ua-parser/uap-php": "^3.9",
"xemlock/htmlpurifier-html5": "^0.1.11",
"fxp/composer-asset-plugin": "^1.4",

312
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3d221e30c9cb7e3f34d8d8141b6fea6c",
"content-hash": "f5922f03b367e68a5930df6ed80c5c2f",
"packages": [
{
"name": "asika/simple-console",
@ -545,12 +545,12 @@
},
"type": "library",
"autoload": {
"psr-4": {
"DivineOmega\\PasswordExposed\\": "src/"
},
"files": [
"src/PasswordExposedFunction.php"
]
],
"psr-4": {
"DivineOmega\\PasswordExposed\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -587,12 +587,12 @@
},
"type": "library",
"autoload": {
"psr-0": {
"HTMLPurifier": "library/"
},
"files": [
"library/HTMLPurifier.composer.php"
],
"psr-0": {
"HTMLPurifier": "library/"
},
"exclude-from-classmap": [
"/library/HTMLPurifier/Language/"
]
@ -839,24 +839,24 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "6.5.5",
"version": "6.5.8",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
"reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
"reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
"guzzlehttp/psr7": "^1.9",
"php": ">=5.5",
"symfony/polyfill-intl-idn": "^1.17.0"
"symfony/polyfill-intl-idn": "^1.17"
},
"require-dev": {
"ext-curl": "*",
@ -873,22 +873,52 @@
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
],
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Jeremy Lindblom",
"email": "jeremeamia@gmail.com",
"homepage": "https://github.com/jeremeamia"
},
{
"name": "George Mponos",
"email": "gmponos@gmail.com",
"homepage": "https://github.com/gmponos"
},
{
"name": "Tobias Nyholm",
"email": "tobias.nyholm@gmail.com",
"homepage": "https://github.com/Nyholm"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://github.com/sagikazarmark"
},
{
"name": "Tobias Schultze",
"email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
}
],
"description": "Guzzle is a PHP HTTP client library",
@ -902,7 +932,21 @@
"rest",
"web service"
],
"time": "2020-06-16T21:01:06+00:00"
"funding": [
{
"url": "https://github.com/GrahamCampbell",
"type": "github"
},
{
"url": "https://github.com/Nyholm",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
"type": "tidelift"
}
],
"time": "2022-06-20T22:16:07+00:00"
},
{
"name": "guzzlehttp/promises",
@ -931,12 +975,12 @@
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
],
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -986,16 +1030,16 @@
},
{
"name": "guzzlehttp/psr7",
"version": "1.8.3",
"version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85"
"reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"shasum": ""
},
"require": {
@ -1016,16 +1060,16 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
},
"files": [
"src/functions_include.php"
]
],
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -1088,7 +1132,7 @@
"type": "tidelift"
}
],
"time": "2021-10-05T13:56:00+00:00"
"time": "2022-06-20T21:43:03+00:00"
},
{
"name": "league/html-to-markdown",
@ -1152,6 +1196,24 @@
"html",
"markdown"
],
"funding": [
{
"url": "https://www.colinodell.com/sponsor",
"type": "custom"
},
{
"url": "https://www.paypal.me/colinpodell/10.00",
"type": "custom"
},
{
"url": "https://github.com/colinodell",
"type": "github"
},
{
"url": "https://www.patreon.com/colinodell",
"type": "patreon"
}
],
"time": "2020-07-01T00:34:03+00:00"
},
{
@ -1453,12 +1515,12 @@
},
"type": "library",
"autoload": {
"classmap": [
"Mobile_Detect.php"
],
"psr-0": {
"Detection": "namespaced/"
}
},
"classmap": [
"Mobile_Detect.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -1481,6 +1543,12 @@
"mobile detector",
"php mobile detect"
],
"funding": [
{
"url": "https://github.com/serbanghita",
"type": "github"
}
],
"time": "2021-02-19T21:22:57+00:00"
},
{
@ -1553,6 +1621,16 @@
"logging",
"psr-3"
],
"funding": [
{
"url": "https://github.com/Seldaek",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
"type": "tidelift"
}
],
"time": "2021-05-28T08:32:12+00:00"
},
{
@ -1577,12 +1655,12 @@
},
"type": "library",
"autoload": {
"psr-4": {
"FastRoute\\": "src/"
},
"files": [
"src/functions.php"
]
],
"psr-4": {
"FastRoute\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -3647,29 +3725,29 @@
},
{
"name": "smarty/smarty",
"version": "v3.1.43",
"version": "v4.1.0",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
"reference": "273f7e00fec034f6d61112552e9caf08d19565b7"
"reference": "9e0536de18b53ba193364291ef0303b0ab9903e1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/273f7e00fec034f6d61112552e9caf08d19565b7",
"reference": "273f7e00fec034f6d61112552e9caf08d19565b7",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/9e0536de18b53ba193364291ef0303b0ab9903e1",
"reference": "9e0536de18b53ba193364291ef0303b0ab9903e1",
"shasum": ""
},
"require": {
"php": ">=5.2"
"php": "^7.1 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^7.5 || ^6.5 || ^5.7 || ^4.8",
"phpunit/phpunit": "^8.5 || ^7.5",
"smarty/smarty-lexer": "^3.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.1.x-dev"
"dev-master": "4.0.x-dev"
}
},
"autoload": {
@ -3693,14 +3771,18 @@
{
"name": "Rodney Rehm",
"email": "rodney.rehm@medialize.de"
},
{
"name": "Simon Wisselink",
"homepage": "https://www.iwink.nl/"
}
],
"description": "Smarty - the compiling PHP template engine",
"homepage": "http://www.smarty.net",
"homepage": "https://smarty-php.github.io/smarty/",
"keywords": [
"templating"
],
"time": "2022-01-10T09:52:40+00:00"
"time": "2022-02-06T20:34:27+00:00"
},
{
"name": "spomky-labs/base64url",
@ -3751,20 +3833,30 @@
"safe",
"url"
],
"funding": [
{
"url": "https://github.com/Spomky",
"type": "github"
},
{
"url": "https://www.patreon.com/FlorentMorselli",
"type": "patreon"
}
],
"time": "2020-11-03T09:10:25+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.23.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "65bd267525e82759e7d8c4e8ceea44f398838e65"
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65",
"reference": "65bd267525e82759e7d8c4e8ceea44f398838e65",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"shasum": ""
},
"require": {
@ -3778,7 +3870,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -3786,12 +3878,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -3835,20 +3927,20 @@
"type": "tidelift"
}
],
"time": "2021-05-27T09:27:20+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.23.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": ""
},
"require": {
@ -3860,7 +3952,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -3868,12 +3960,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"classmap": [
"Resources/stubs"
]
@ -3916,7 +4008,7 @@
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-php56",
@ -3985,16 +4077,16 @@
},
{
"name": "symfony/polyfill-php72",
"version": "v1.23.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
"reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
"reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
"shasum": ""
},
"require": {
@ -4003,7 +4095,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -4011,12 +4103,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
],
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -4054,7 +4146,7 @@
"type": "tidelift"
}
],
"time": "2021-05-27T09:17:38+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "ua-parser/uap-php",
@ -4613,6 +4705,20 @@
"constructor",
"instantiate"
],
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
"type": "tidelift"
}
],
"time": "2020-11-10T18:47:58+00:00"
},
{
@ -4803,12 +4909,12 @@
},
"type": "library",
"autoload": {
"psr-4": {
"DeepCopy\\": "src/DeepCopy/"
},
"files": [
"src/DeepCopy/deep_copy.php"
]
],
"psr-4": {
"DeepCopy\\": "src/DeepCopy/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -4822,6 +4928,12 @@
"object",
"object graph"
],
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
"type": "tidelift"
}
],
"time": "2020-11-13T09:40:50+00:00"
},
{
@ -5550,11 +5662,11 @@
}
},
"autoload": {
"classmap": [
"src/"
],
"files": [
"src/Framework/Assert/Functions.php"
],
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
@ -6518,12 +6630,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -6547,6 +6659,20 @@
"polyfill",
"portable"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
},
{
@ -6587,6 +6713,12 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"funding": [
{
"url": "https://github.com/theseer",
"type": "github"
}
],
"time": "2021-07-28T10:34:58+00:00"
},
{

View file

@ -1,6 +1,6 @@
-- ------------------------------------------
-- Friendica 2022.02 (Siberian Iris)
-- DB_UPDATE_VERSION 1449
-- Friendica 2022.09-dev (Giant Rhubarb)
-- DB_UPDATE_VERSION 1472
-- ------------------------------------------
@ -16,6 +16,11 @@ CREATE TABLE IF NOT EXISTS `gserver` (
`info` text COMMENT '',
`register_policy` tinyint NOT NULL DEFAULT 0 COMMENT '',
`registered-users` int unsigned NOT NULL DEFAULT 0 COMMENT 'Number of registered users',
`active-week-users` int unsigned COMMENT 'Number of active users in the last week',
`active-month-users` int unsigned COMMENT 'Number of active users in the last month',
`active-halfyear-users` int unsigned COMMENT 'Number of active users in the last six month',
`local-posts` int unsigned COMMENT 'Number of local posts',
`local-comments` int unsigned COMMENT 'Number of local comments',
`directory-type` tinyint DEFAULT 0 COMMENT 'Type of directory service (Poco, Mastodon)',
`poco` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`noscrape` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -227,6 +232,7 @@ CREATE TABLE IF NOT EXISTS `tag` (
`id` int unsigned NOT NULL auto_increment COMMENT '',
`name` varchar(96) NOT NULL DEFAULT '' COMMENT '',
`url` varbinary(255) NOT NULL DEFAULT '' COMMENT '',
`type` tinyint unsigned COMMENT 'Type of the tag (Unknown, General Collection, Follower Collection or Account)',
PRIMARY KEY(`id`),
UNIQUE INDEX `type_name_url` (`name`,`url`),
INDEX `url` (`url`)
@ -327,6 +333,8 @@ CREATE TABLE IF NOT EXISTS `apcontact` (
`inbox` varchar(255) NOT NULL COMMENT '',
`outbox` varchar(255) COMMENT '',
`sharedinbox` varchar(255) COMMENT '',
`featured` varchar(255) COMMENT 'Address for the collection of featured posts',
`featured-tags` varchar(255) COMMENT 'Address for the collection of featured tags',
`manually-approve` boolean COMMENT '',
`discoverable` boolean COMMENT 'Mastodon extension: true if profile is published in their directory',
`nick` varchar(255) NOT NULL DEFAULT '' COMMENT '',
@ -378,6 +386,22 @@ CREATE TABLE IF NOT EXISTS `application` (
UNIQUE INDEX `client_id` (`client_id`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='OAuth application';
--
-- TABLE application-marker
--
CREATE TABLE IF NOT EXISTS `application-marker` (
`application-id` int unsigned NOT NULL COMMENT '',
`uid` mediumint unsigned NOT NULL COMMENT 'Owner User id',
`timeline` varchar(64) NOT NULL COMMENT 'Marker (home, notifications)',
`last_read_id` varchar(255) COMMENT 'Marker id for the timeline',
`version` smallint unsigned COMMENT 'Version number',
`updated_at` datetime COMMENT 'creation time',
PRIMARY KEY(`application-id`,`uid`,`timeline`),
INDEX `uid_id` (`uid`),
FOREIGN KEY (`application-id`) REFERENCES `application` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Timeline marker';
--
-- TABLE application-token
--
@ -546,6 +570,18 @@ CREATE TABLE IF NOT EXISTS `diaspora-interaction` (
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Signed Diaspora Interaction';
--
-- TABLE endpoint
--
CREATE TABLE IF NOT EXISTS `endpoint` (
`url` varbinary(255) NOT NULL COMMENT 'URL of the contact',
`type` varchar(20) NOT NULL COMMENT '',
`owner-uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the apcontact url',
PRIMARY KEY(`url`),
UNIQUE INDEX `owner-uri-id_type` (`owner-uri-id`,`type`),
FOREIGN KEY (`owner-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='ActivityPub endpoints - used in the ActivityPub implementation';
--
-- TABLE event
--
@ -639,10 +675,13 @@ CREATE TABLE IF NOT EXISTS `group` (
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the member list is not private',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the group has been deleted',
`cid` int unsigned COMMENT 'Contact id of forum. When this field is filled then the members are synced automatically.',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT 'human readable name of group',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
INDEX `cid` (`cid`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`cid`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='privacy groups, group info';
--
@ -689,13 +728,16 @@ CREATE TABLE IF NOT EXISTS `hook` (
--
CREATE TABLE IF NOT EXISTS `inbox-status` (
`url` varbinary(255) NOT NULL COMMENT 'URL of the inbox',
`uri-id` int unsigned COMMENT 'Item-uri id of inbox url',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation date of this entry',
`success` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last successful delivery',
`failure` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last failed delivery',
`previous` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Previous delivery date',
`archive` boolean NOT NULL DEFAULT '0' COMMENT 'Is the inbox archived?',
`shared` boolean NOT NULL DEFAULT '0' COMMENT 'Is it a shared inbox?',
PRIMARY KEY(`url`)
PRIMARY KEY(`url`),
INDEX `uri-id` (`uri-id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Status of ActivityPub inboxes';
--
@ -822,7 +864,7 @@ CREATE TABLE IF NOT EXISTS `notification` (
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uid` mediumint unsigned COMMENT 'Owner User id',
`vid` smallint unsigned COMMENT 'Id of the verb table entry that contains the activity verbs',
`type` tinyint unsigned COMMENT '',
`type` smallint unsigned COMMENT '',
`actor-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the actor that caused the notification',
`target-uri-id` int unsigned COMMENT 'Item-uri id of the related post',
`parent-uri-id` int unsigned COMMENT 'Item-uri id of the parent of the related post',
@ -874,7 +916,7 @@ CREATE TABLE IF NOT EXISTS `notify` (
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`parent-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='notifications';
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='[Deprecated] User notifications';
--
-- TABLE notify-threads
@ -1045,13 +1087,24 @@ CREATE TABLE IF NOT EXISTS `post-category` (
`type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`tid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
PRIMARY KEY(`uri-id`,`uid`,`type`,`tid`),
INDEX `uri-id` (`tid`),
INDEX `uid` (`uid`),
INDEX `tid` (`tid`),
INDEX `uid_uri-id` (`uid`,`uri-id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`tid`) REFERENCES `tag` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='post relation to categories';
--
-- TABLE post-collection
--
CREATE TABLE IF NOT EXISTS `post-collection` (
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '0 - Featured',
PRIMARY KEY(`uri-id`,`type`),
INDEX `type` (`type`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Collection of posts';
--
-- TABLE post-content
--
@ -1080,6 +1133,25 @@ CREATE TABLE IF NOT EXISTS `post-content` (
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Content for all posts';
--
-- TABLE post-delivery
--
CREATE TABLE IF NOT EXISTS `post-delivery` (
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`inbox-id` int unsigned NOT NULL COMMENT 'Item-uri id of inbox url',
`uid` mediumint unsigned COMMENT 'Delivering user',
`created` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
`command` varbinary(32) COMMENT '',
`failed` tinyint DEFAULT 0 COMMENT 'Number of times the delivery has failed',
`receivers` mediumtext COMMENT 'JSON encoded array with the receiving contacts',
PRIMARY KEY(`uri-id`,`inbox-id`),
INDEX `inbox-id_created` (`inbox-id`,`created`),
INDEX `uid` (`uid`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`inbox-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Delivery data for posts for the batch processing';
--
-- TABLE post-delivery-data
--
@ -1099,6 +1171,32 @@ CREATE TABLE IF NOT EXISTS `post-delivery-data` (
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Delivery data for items';
--
-- TABLE post-history
--
CREATE TABLE IF NOT EXISTS `post-history` (
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of edit',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT 'item title',
`content-warning` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`body` mediumtext COMMENT 'item body content',
`raw-body` mediumtext COMMENT 'Body without embedded media links',
`location` varchar(255) NOT NULL DEFAULT '' COMMENT 'text location where this item originated',
`coord` varchar(255) NOT NULL DEFAULT '' COMMENT 'longitude/latitude pair representing location where this item originated',
`language` text COMMENT 'Language information about this post',
`app` varchar(255) NOT NULL DEFAULT '' COMMENT 'application which generated this item',
`rendered-hash` varchar(32) NOT NULL DEFAULT '' COMMENT '',
`rendered-html` mediumtext COMMENT 'item.body converted to html',
`object-type` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams object type',
`object` text COMMENT 'JSON encoded object structure unless it is an implied object (normal post)',
`target-type` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams target type if applicable (URI)',
`target` text COMMENT 'JSON encoded target structure if used',
`resource-id` varchar(32) NOT NULL DEFAULT '' COMMENT 'Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type',
`plink` varchar(255) NOT NULL DEFAULT '' COMMENT 'permalink or URL to a displayable copy of the message at its source',
PRIMARY KEY(`uri-id`,`edited`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Post history';
--
-- TABLE post-link
--
@ -1118,13 +1216,13 @@ CREATE TABLE IF NOT EXISTS `post-link` (
CREATE TABLE IF NOT EXISTS `post-media` (
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`url` varbinary(511) NOT NULL COMMENT 'Media URL',
`url` varbinary(1024) NOT NULL COMMENT 'Media URL',
`type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Media type',
`mimetype` varchar(60) COMMENT '',
`height` smallint unsigned COMMENT 'Height of the media',
`width` smallint unsigned COMMENT 'Width of the media',
`size` int unsigned COMMENT 'Media size',
`preview` varbinary(255) COMMENT 'Preview URL',
`size` bigint unsigned COMMENT 'Media size',
`preview` varbinary(512) COMMENT 'Preview URL',
`preview-height` smallint unsigned COMMENT 'Height of the preview picture',
`preview-width` smallint unsigned COMMENT 'Width of the preview picture',
`description` text COMMENT '',
@ -1136,10 +1234,37 @@ CREATE TABLE IF NOT EXISTS `post-media` (
`publisher-name` varchar(255) COMMENT 'Name of the publisher of the media',
`publisher-image` varbinary(255) COMMENT 'Image of the publisher of the media',
PRIMARY KEY(`id`),
UNIQUE INDEX `uri-id-url` (`uri-id`,`url`),
UNIQUE INDEX `uri-id-url` (`uri-id`,`url`(512)),
INDEX `uri-id-id` (`uri-id`,`id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Attached media';
--
-- TABLE post-question
--
CREATE TABLE IF NOT EXISTS `post-question` (
`id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`multiple` boolean NOT NULL DEFAULT '0' COMMENT 'Multiple choice',
`voters` int unsigned COMMENT 'Number of voters for this question',
`end-time` datetime DEFAULT '0001-01-01 00:00:00' COMMENT 'Question end time',
PRIMARY KEY(`id`),
UNIQUE INDEX `uri-id` (`uri-id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Question';
--
-- TABLE post-question-option
--
CREATE TABLE IF NOT EXISTS `post-question-option` (
`id` int unsigned NOT NULL COMMENT 'Id of the question',
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`name` varchar(255) COMMENT 'Name of the option',
`replies` int unsigned COMMENT 'Number of replies for this question option',
PRIMARY KEY(`uri-id`,`id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Question option';
--
-- TABLE post-tag
--
@ -1263,13 +1388,13 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` (
`changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date that something in the conversation changed, indicating clients should fetch the conversation again',
`commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
`uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner id which owns this copy of the item',
`pinned` boolean NOT NULL DEFAULT '0' COMMENT 'The thread is pinned on the profile page',
`pinned` boolean NOT NULL DEFAULT '0' COMMENT 'deprecated',
`starred` boolean NOT NULL DEFAULT '0' COMMENT '',
`ignored` boolean NOT NULL DEFAULT '0' COMMENT 'Ignore updates for this thread',
`wall` boolean NOT NULL DEFAULT '0' COMMENT 'This item was posted to the wall of uid',
`mention` boolean NOT NULL DEFAULT '0' COMMENT '',
`pubmail` boolean NOT NULL DEFAULT '0' COMMENT '',
`forum_mode` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`forum_mode` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Deprecated',
`contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact.id',
`unseen` boolean NOT NULL DEFAULT '1' COMMENT 'post has not been seen',
`hidden` boolean NOT NULL DEFAULT '0' COMMENT 'Marker to hide the post from the user',
@ -1288,7 +1413,6 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` (
INDEX `commented` (`commented`),
INDEX `uid_received` (`uid`,`received`),
INDEX `uid_wall_received` (`uid`,`wall`,`received`),
INDEX `uid_pinned` (`uid`,`pinned`),
INDEX `uid_commented` (`uid`,`commented`),
INDEX `uid_starred` (`uid`,`starred`),
INDEX `uid_mention` (`uid`,`mention`),
@ -1308,7 +1432,7 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` (
CREATE TABLE IF NOT EXISTS `post-user-notification` (
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`uid` mediumint unsigned NOT NULL COMMENT 'Owner id which owns this copy of the item',
`notification-type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`notification-type` smallint unsigned NOT NULL DEFAULT 0 COMMENT '',
PRIMARY KEY(`uid`,`uri-id`),
INDEX `uri-id` (`uri-id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
@ -1516,6 +1640,7 @@ CREATE TABLE IF NOT EXISTS `user-contact` (
`ignored` boolean COMMENT 'Posts from this contact are ignored',
`collapsed` boolean COMMENT 'Posts from this contact are collapsed',
`hidden` boolean COMMENT 'This contact is hidden from the others',
`is-blocked` boolean COMMENT 'User is blocked by this contact',
`pending` boolean COMMENT '',
`rel` tinyint unsigned COMMENT 'The kind of the relation between the user and the contact',
`info` mediumtext COMMENT '',
@ -1599,14 +1724,13 @@ CREATE VIEW `post-user-view` AS SELECT
`post-thread-user`.`pubmail` AS `pubmail`,
`post-user`.`visible` AS `visible`,
`post-thread-user`.`starred` AS `starred`,
`post-thread-user`.`pinned` AS `pinned`,
`post-user`.`unseen` AS `unseen`,
`post-user`.`deleted` AS `deleted`,
`post-user`.`origin` AS `origin`,
`post-thread-user`.`origin` AS `parent-origin`,
`post-thread-user`.`forum_mode` AS `forum_mode`,
`post-thread-user`.`mention` AS `mention`,
`post-user`.`global` AS `global`,
EXISTS(SELECT `type` FROM `post-collection` WHERE `type` = 0 AND `uri-id` = `post-user`.`uri-id`) AS `featured`,
`post-user`.`network` AS `network`,
`post-user`.`vid` AS `vid`,
`post-user`.`psid` AS `psid`,
@ -1628,6 +1752,7 @@ CREATE VIEW `post-user-view` AS SELECT
`post-content`.`target` AS `target`,
`post-content`.`resource-id` AS `resource-id`,
`post-user`.`contact-id` AS `contact-id`,
`contact`.`uri-id` AS `contact-uri-id`,
`contact`.`url` AS `contact-link`,
`contact`.`addr` AS `contact-addr`,
`contact`.`name` AS `contact-name`,
@ -1652,6 +1777,7 @@ CREATE VIEW `post-user-view` AS SELECT
`contact`.`avatar-date` AS `avatar-date`,
`contact`.`thumb` AS `thumb`,
`post-user`.`author-id` AS `author-id`,
`author`.`uri-id` AS `author-uri-id`,
`author`.`url` AS `author-link`,
`author`.`addr` AS `author-addr`,
IF (`contact`.`url` = `author`.`url` AND `contact`.`name` != '', `contact`.`name`, `author`.`name`) AS `author-name`,
@ -1660,7 +1786,10 @@ CREATE VIEW `post-user-view` AS SELECT
`author`.`network` AS `author-network`,
`author`.`blocked` AS `author-blocked`,
`author`.`hidden` AS `author-hidden`,
`author`.`updated` AS `author-updated`,
`author`.`gsid` AS `author-gsid`,
`post-user`.`owner-id` AS `owner-id`,
`owner`.`uri-id` AS `owner-uri-id`,
`owner`.`url` AS `owner-link`,
`owner`.`addr` AS `owner-addr`,
IF (`contact`.`url` = `owner`.`url` AND `contact`.`name` != '', `contact`.`name`, `owner`.`name`) AS `owner-name`,
@ -1669,8 +1798,10 @@ CREATE VIEW `post-user-view` AS SELECT
`owner`.`network` AS `owner-network`,
`owner`.`blocked` AS `owner-blocked`,
`owner`.`hidden` AS `owner-hidden`,
`owner`.`updated` AS `owner-updated`,
`owner`.`contact-type` AS `owner-contact-type`,
`post-user`.`causer-id` AS `causer-id`,
`causer`.`uri-id` AS `causer-uri-id`,
`causer`.`url` AS `causer-link`,
`causer`.`addr` AS `causer-addr`,
`causer`.`name` AS `causer-name`,
@ -1700,6 +1831,12 @@ CREATE VIEW `post-user-view` AS SELECT
`event`.`type` AS `event-type`,
`event`.`nofinish` AS `event-nofinish`,
`event`.`ignore` AS `event-ignore`,
`post-question`.`id` AS `question-id`,
`post-question`.`multiple` AS `question-multiple`,
`post-question`.`voters` AS `question-voters`,
`post-question`.`end-time` AS `question-end-time`,
EXISTS(SELECT `uri-id` FROM `post-category` WHERE `post-category`.`uri-id` = `post-user`.`uri-id` AND `post-category`.`uid` = `post-user`.`uid`) AS `has-categories`,
EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-user`.`uri-id`) AS `has-media`,
`diaspora-interaction`.`interaction` AS `signed_text`,
`parent-item-uri`.`guid` AS `parent-guid`,
`parent-post`.`network` AS `parent-network`,
@ -1725,6 +1862,7 @@ CREATE VIEW `post-user-view` AS SELECT
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-user`.`uri-id`
LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post-user`.`uri-id`
LEFT JOIN `post-delivery-data` ON `post-delivery-data`.`uri-id` = `post-user`.`uri-id` AND `post-user`.`origin`
LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-user`.`uri-id`
LEFT JOIN `permissionset` ON `permissionset`.`id` = `post-user`.`psid`
LEFT JOIN `post-user` AS `parent-post` ON `parent-post`.`uri-id` = `post-user`.`parent-uri-id` AND `parent-post`.`uid` = `post-user`.`uid`
LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
@ -1761,13 +1899,12 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`post-thread-user`.`ignored` AS `ignored`,
`post-user`.`visible` AS `visible`,
`post-thread-user`.`starred` AS `starred`,
`post-thread-user`.`pinned` AS `pinned`,
`post-thread-user`.`unseen` AS `unseen`,
`post-user`.`deleted` AS `deleted`,
`post-thread-user`.`origin` AS `origin`,
`post-thread-user`.`forum_mode` AS `forum_mode`,
`post-thread-user`.`mention` AS `mention`,
`post-user`.`global` AS `global`,
EXISTS(SELECT `type` FROM `post-collection` WHERE `type` = 0 AND `uri-id` = `post-thread-user`.`uri-id`) AS `featured`,
`post-thread-user`.`network` AS `network`,
`post-user`.`vid` AS `vid`,
`post-thread-user`.`psid` AS `psid`,
@ -1789,6 +1926,7 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`post-content`.`target` AS `target`,
`post-content`.`resource-id` AS `resource-id`,
`post-thread-user`.`contact-id` AS `contact-id`,
`contact`.`uri-id` AS `contact-uri-id`,
`contact`.`url` AS `contact-link`,
`contact`.`addr` AS `contact-addr`,
`contact`.`name` AS `contact-name`,
@ -1813,6 +1951,7 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`contact`.`avatar-date` AS `avatar-date`,
`contact`.`thumb` AS `thumb`,
`post-thread-user`.`author-id` AS `author-id`,
`author`.`uri-id` AS `author-uri-id`,
`author`.`url` AS `author-link`,
`author`.`addr` AS `author-addr`,
IF (`contact`.`url` = `author`.`url` AND `contact`.`name` != '', `contact`.`name`, `author`.`name`) AS `author-name`,
@ -1821,7 +1960,10 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`author`.`network` AS `author-network`,
`author`.`blocked` AS `author-blocked`,
`author`.`hidden` AS `author-hidden`,
`author`.`updated` AS `author-updated`,
`author`.`gsid` AS `author-gsid`,
`post-thread-user`.`owner-id` AS `owner-id`,
`owner`.`uri-id` AS `owner-uri-id`,
`owner`.`url` AS `owner-link`,
`owner`.`addr` AS `owner-addr`,
IF (`contact`.`url` = `owner`.`url` AND `contact`.`name` != '', `contact`.`name`, `owner`.`name`) AS `owner-name`,
@ -1830,8 +1972,10 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`owner`.`network` AS `owner-network`,
`owner`.`blocked` AS `owner-blocked`,
`owner`.`hidden` AS `owner-hidden`,
`owner`.`updated` AS `owner-updated`,
`owner`.`contact-type` AS `owner-contact-type`,
`post-thread-user`.`causer-id` AS `causer-id`,
`causer`.`uri-id` AS `causer-uri-id`,
`causer`.`url` AS `causer-link`,
`causer`.`addr` AS `causer-addr`,
`causer`.`name` AS `causer-name`,
@ -1861,6 +2005,12 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`event`.`type` AS `event-type`,
`event`.`nofinish` AS `event-nofinish`,
`event`.`ignore` AS `event-ignore`,
`post-question`.`id` AS `question-id`,
`post-question`.`multiple` AS `question-multiple`,
`post-question`.`voters` AS `question-voters`,
`post-question`.`end-time` AS `question-end-time`,
EXISTS(SELECT `uri-id` FROM `post-category` WHERE `post-category`.`uri-id` = `post-thread-user`.`uri-id` AND `post-category`.`uid` = `post-thread-user`.`uid`) AS `has-categories`,
EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-thread-user`.`uri-id`) AS `has-media`,
`diaspora-interaction`.`interaction` AS `signed_text`,
`parent-item-uri`.`guid` AS `parent-guid`,
`parent-post`.`network` AS `parent-network`,
@ -1885,6 +2035,7 @@ CREATE VIEW `post-thread-user-view` AS SELECT
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-thread-user`.`uri-id`
LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post-thread-user`.`uri-id`
LEFT JOIN `post-delivery-data` ON `post-delivery-data`.`uri-id` = `post-thread-user`.`uri-id` AND `post-thread-user`.`origin`
LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-thread-user`.`uri-id`
LEFT JOIN `permissionset` ON `permissionset`.`id` = `post-thread-user`.`psid`
LEFT JOIN `post-user` AS `parent-post` ON `parent-post`.`uri-id` = `post-user`.`parent-uri-id` AND `parent-post`.`uid` = `post-thread-user`.`uid`
LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
@ -1914,6 +2065,7 @@ CREATE VIEW `post-view` AS SELECT
`post`.`visible` AS `visible`,
`post`.`deleted` AS `deleted`,
`post`.`global` AS `global`,
EXISTS(SELECT `type` FROM `post-collection` WHERE `type` = 0 AND `uri-id` = `post`.`uri-id`) AS `featured`,
`post`.`network` AS `network`,
`post`.`vid` AS `vid`,
IF (`post`.`vid` IS NULL, '', `verb`.`name`) AS `verb`,
@ -1934,6 +2086,7 @@ CREATE VIEW `post-view` AS SELECT
`post-content`.`target` AS `target`,
`post-content`.`resource-id` AS `resource-id`,
`post`.`author-id` AS `contact-id`,
`author`.`uri-id` AS `contact-uri-id`,
`author`.`url` AS `contact-link`,
`author`.`addr` AS `contact-addr`,
`author`.`name` AS `contact-name`,
@ -1958,6 +2111,7 @@ CREATE VIEW `post-view` AS SELECT
`author`.`avatar-date` AS `avatar-date`,
`author`.`thumb` AS `thumb`,
`post`.`author-id` AS `author-id`,
`author`.`uri-id` AS `author-uri-id`,
`author`.`url` AS `author-link`,
`author`.`addr` AS `author-addr`,
`author`.`name` AS `author-name`,
@ -1966,7 +2120,10 @@ CREATE VIEW `post-view` AS SELECT
`author`.`network` AS `author-network`,
`author`.`blocked` AS `author-blocked`,
`author`.`hidden` AS `author-hidden`,
`author`.`updated` AS `author-updated`,
`author`.`gsid` AS `author-gsid`,
`post`.`owner-id` AS `owner-id`,
`owner`.`uri-id` AS `owner-uri-id`,
`owner`.`url` AS `owner-link`,
`owner`.`addr` AS `owner-addr`,
`owner`.`name` AS `owner-name`,
@ -1975,8 +2132,10 @@ CREATE VIEW `post-view` AS SELECT
`owner`.`network` AS `owner-network`,
`owner`.`blocked` AS `owner-blocked`,
`owner`.`hidden` AS `owner-hidden`,
`owner`.`updated` AS `owner-updated`,
`owner`.`contact-type` AS `owner-contact-type`,
`post`.`causer-id` AS `causer-id`,
`causer`.`uri-id` AS `causer-uri-id`,
`causer`.`url` AS `causer-link`,
`causer`.`addr` AS `causer-addr`,
`causer`.`name` AS `causer-name`,
@ -1986,6 +2145,12 @@ CREATE VIEW `post-view` AS SELECT
`causer`.`blocked` AS `causer-blocked`,
`causer`.`hidden` AS `causer-hidden`,
`causer`.`contact-type` AS `causer-contact-type`,
`post-question`.`id` AS `question-id`,
`post-question`.`multiple` AS `question-multiple`,
`post-question`.`voters` AS `question-voters`,
`post-question`.`end-time` AS `question-end-time`,
0 AS `has-categories`,
EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post`.`uri-id`) AS `has-media`,
`diaspora-interaction`.`interaction` AS `signed_text`,
`parent-item-uri`.`guid` AS `parent-guid`,
`parent-post`.`network` AS `parent-network`,
@ -2007,6 +2172,7 @@ CREATE VIEW `post-view` AS SELECT
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post`.`uri-id`
LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post`.`uri-id`
LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post`.`uri-id`
LEFT JOIN `post` AS `parent-post` ON `parent-post`.`uri-id` = `post`.`parent-uri-id`
LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
@ -2035,6 +2201,7 @@ CREATE VIEW `post-thread-view` AS SELECT
`post`.`visible` AS `visible`,
`post`.`deleted` AS `deleted`,
`post`.`global` AS `global`,
EXISTS(SELECT `type` FROM `post-collection` WHERE `type` = 0 AND `uri-id` = `post-thread`.`uri-id`) AS `featured`,
`post-thread`.`network` AS `network`,
`post`.`vid` AS `vid`,
IF (`post`.`vid` IS NULL, '', `verb`.`name`) AS `verb`,
@ -2055,6 +2222,7 @@ CREATE VIEW `post-thread-view` AS SELECT
`post-content`.`target` AS `target`,
`post-content`.`resource-id` AS `resource-id`,
`post-thread`.`author-id` AS `contact-id`,
`author`.`uri-id` AS `contact-uri-id`,
`author`.`url` AS `contact-link`,
`author`.`addr` AS `contact-addr`,
`author`.`name` AS `contact-name`,
@ -2079,6 +2247,7 @@ CREATE VIEW `post-thread-view` AS SELECT
`author`.`avatar-date` AS `avatar-date`,
`author`.`thumb` AS `thumb`,
`post-thread`.`author-id` AS `author-id`,
`author`.`uri-id` AS `author-uri-id`,
`author`.`url` AS `author-link`,
`author`.`addr` AS `author-addr`,
`author`.`name` AS `author-name`,
@ -2087,7 +2256,10 @@ CREATE VIEW `post-thread-view` AS SELECT
`author`.`network` AS `author-network`,
`author`.`blocked` AS `author-blocked`,
`author`.`hidden` AS `author-hidden`,
`author`.`updated` AS `author-updated`,
`author`.`gsid` AS `author-gsid`,
`post-thread`.`owner-id` AS `owner-id`,
`owner`.`uri-id` AS `owner-uri-id`,
`owner`.`url` AS `owner-link`,
`owner`.`addr` AS `owner-addr`,
`owner`.`name` AS `owner-name`,
@ -2096,8 +2268,10 @@ CREATE VIEW `post-thread-view` AS SELECT
`owner`.`network` AS `owner-network`,
`owner`.`blocked` AS `owner-blocked`,
`owner`.`hidden` AS `owner-hidden`,
`owner`.`updated` AS `owner-updated`,
`owner`.`contact-type` AS `owner-contact-type`,
`post-thread`.`causer-id` AS `causer-id`,
`causer`.`uri-id` AS `causer-uri-id`,
`causer`.`url` AS `causer-link`,
`causer`.`addr` AS `causer-addr`,
`causer`.`name` AS `causer-name`,
@ -2107,6 +2281,12 @@ CREATE VIEW `post-thread-view` AS SELECT
`causer`.`blocked` AS `causer-blocked`,
`causer`.`hidden` AS `causer-hidden`,
`causer`.`contact-type` AS `causer-contact-type`,
`post-question`.`id` AS `question-id`,
`post-question`.`multiple` AS `question-multiple`,
`post-question`.`voters` AS `question-voters`,
`post-question`.`end-time` AS `question-end-time`,
0 AS `has-categories`,
EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-thread`.`uri-id`) AS `has-media`,
`diaspora-interaction`.`interaction` AS `signed_text`,
`parent-item-uri`.`guid` AS `parent-guid`,
`parent-post`.`network` AS `parent-network`,
@ -2128,6 +2308,7 @@ CREATE VIEW `post-thread-view` AS SELECT
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-thread`.`uri-id`
LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post-thread`.`uri-id`
LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-thread`.`uri-id`
LEFT JOIN `post` AS `parent-post` ON `parent-post`.`uri-id` = `post`.`parent-uri-id`
LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
@ -2145,6 +2326,27 @@ CREATE VIEW `category-view` AS SELECT
FROM `post-category`
LEFT JOIN `tag` ON `post-category`.`tid` = `tag`.`id`;
--
-- VIEW collection-view
--
DROP VIEW IF EXISTS `collection-view`;
CREATE VIEW `collection-view` AS SELECT
`post-collection`.`uri-id` AS `uri-id`,
`post-collection`.`type` AS `type`,
`post`.`author-id` AS `cid`,
`post`.`received` AS `received`,
`post`.`created` AS `created`,
`post-thread`.`commented` AS `commented`,
`post`.`private` AS `private`,
`post`.`visible` AS `visible`,
`post`.`deleted` AS `deleted`,
`post`.`thr-parent-id` AS `thr-parent-id`,
`post`.`author-id` AS `author-id`,
`post`.`gravity` AS `gravity`
FROM `post-collection`
INNER JOIN `post` ON `post-collection`.`uri-id` = `post`.`uri-id`
INNER JOIN `post-thread` ON `post-thread`.`uri-id` = `post`.`parent-uri-id`;
--
-- VIEW tag-view
--
@ -2155,7 +2357,8 @@ CREATE VIEW `tag-view` AS SELECT
`post-tag`.`tid` AS `tid`,
`post-tag`.`cid` AS `cid`,
CASE `cid` WHEN 0 THEN `tag`.`name` ELSE `contact`.`name` END AS `name`,
CASE `cid` WHEN 0 THEN `tag`.`url` ELSE `contact`.`url` END AS `url`
CASE `cid` WHEN 0 THEN `tag`.`url` ELSE `contact`.`url` END AS `url`,
CASE `cid` WHEN 0 THEN `tag`.`type` ELSE 1 END AS `tag-type`
FROM `post-tag`
LEFT JOIN `tag` ON `post-tag`.`tid` = `tag`.`id`
LEFT JOIN `contact` ON `post-tag`.`cid` = `contact`.`id`;
@ -2406,10 +2609,8 @@ CREATE VIEW `account-view` AS SELECT
`contact`.`archive` AS `archive`,
`contact`.`deleted` AS `deleted`,
`contact`.`blocked` AS `blocked`,
`contact`.`request` AS `dfrn-request`,
`contact`.`notify` AS `dfrn-notify`,
`contact`.`poll` AS `dfrn-poll`,
`contact`.`confirm` AS `dfrn-confirm`,
`fcontact`.`guid` AS `diaspora-guid`,
`fcontact`.`batch` AS `diaspora-batch`,
`fcontact`.`notify` AS `diaspora-notify`,
@ -2425,11 +2626,15 @@ CREATE VIEW `account-view` AS SELECT
`apcontact`.`generator` AS `ap-generator`,
`apcontact`.`following_count` AS `ap-following_count`,
`apcontact`.`followers_count` AS `ap-followers_count`,
`apcontact`.`statuses_count` AS `ap-statuses_count`
`apcontact`.`statuses_count` AS `ap-statuses_count`,
`gserver`.`site_name` AS `site_name`,
`gserver`.`platform` AS `platform`,
`gserver`.`version` AS `version`
FROM `contact`
LEFT JOIN `item-uri` ON `item-uri`.`id` = `contact`.`uri-id`
LEFT JOIN `apcontact` ON `apcontact`.`uri-id` = `contact`.`uri-id`
LEFT JOIN `fcontact` ON `fcontact`.`uri-id` = contact.`uri-id`
LEFT JOIN `gserver` ON `gserver`.`id` = contact.`gsid`
WHERE `contact`.`uid` = 0;
--
@ -2505,15 +2710,16 @@ CREATE VIEW `account-user-view` AS SELECT
`ucontact`.`subhub` AS `subhub`,
`ucontact`.`hub-verify` AS `hub-verify`,
`ucontact`.`reason` AS `reason`,
`contact`.`request` AS `dfrn-request`,
`contact`.`notify` AS `dfrn-notify`,
`contact`.`poll` AS `dfrn-poll`,
`contact`.`confirm` AS `dfrn-confirm`,
`fcontact`.`guid` AS `diaspora-guid`,
`fcontact`.`batch` AS `diaspora-batch`,
`fcontact`.`notify` AS `diaspora-notify`,
`fcontact`.`poll` AS `diaspora-poll`,
`fcontact`.`alias` AS `diaspora-alias`,
`fcontact`.`interacting_count` AS `diaspora-interacting_count`,
`fcontact`.`interacted_count` AS `diaspora-interacted_count`,
`fcontact`.`post_count` AS `diaspora-post_count`,
`apcontact`.`uuid` AS `ap-uuid`,
`apcontact`.`type` AS `ap-type`,
`apcontact`.`following` AS `ap-following`,
@ -2524,12 +2730,16 @@ CREATE VIEW `account-user-view` AS SELECT
`apcontact`.`generator` AS `ap-generator`,
`apcontact`.`following_count` AS `ap-following_count`,
`apcontact`.`followers_count` AS `ap-followers_count`,
`apcontact`.`statuses_count` AS `ap-statuses_count`
`apcontact`.`statuses_count` AS `ap-statuses_count`,
`gserver`.`site_name` AS `site_name`,
`gserver`.`platform` AS `platform`,
`gserver`.`version` AS `version`
FROM `contact` AS `ucontact`
INNER JOIN `contact` ON `contact`.`uri-id` = `ucontact`.`uri-id` AND `contact`.`uid` = 0
LEFT JOIN `item-uri` ON `item-uri`.`id` = `ucontact`.`uri-id`
LEFT JOIN `apcontact` ON `apcontact`.`uri-id` = `ucontact`.`uri-id`
LEFT JOIN `fcontact` ON `fcontact`.`uri-id` = `ucontact`.`uri-id` AND `fcontact`.`network` = 'dspr';
LEFT JOIN `fcontact` ON `fcontact`.`uri-id` = `ucontact`.`uri-id` AND `fcontact`.`network` = 'dspr'
LEFT JOIN `gserver` ON `gserver`.`id` = contact.`gsid`;
--
-- VIEW pending-view

View file

@ -74,7 +74,7 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`GET /api/v1/instance`](https://docs.joinmastodon.org/methods/instance#fetch-instance)
- GET /api/v1/instance/rules Undocumented, returns Terms of Service
- `GET /api/v1/instance/rules` Undocumented, returns Terms of Service
- [`GET /api/v1/instance/peers`](https://docs.joinmastodon.org/methods/instance#list-of-connected-domains)
- [`GET /api/v1/lists`](https://docs.joinmastodon.org/methods/timelines/lists/)
- [`POST /api/v1/lists`](https://docs.joinmastodon.org/methods/timelines/lists/)
@ -84,6 +84,8 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`GET /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
- [`POST /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
- [`DELETE /api/v1/lists/:id/accounts`](https://docs.joinmastodon.org/methods/timelines/lists/)
- [`POST /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`POST /api/v1/media`](https://docs.joinmastodon.org/methods/statuses/media/)
- [`GET /api/v1/media/:id`](https://docs.joinmastodon.org/methods/statuses/media/)
- [`PUT /api/v1/media/:id`](https://docs.joinmastodon.org/methods/statuses/media/)
@ -92,6 +94,7 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`GET /api/v1/notifications/:id`](https://docs.joinmastodon.org/methods/notifications/)
- [`POST /api/v1/notifications/clear`](https://docs.joinmastodon.org/methods/notifications/)
- [`POST /api/v1/notifications/:id/dismiss`](https://docs.joinmastodon.org/methods/notifications/)
- [`GET /api/v1/polls/:id`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`GET /api/v1/preferences`](https://docs.joinmastodon.org/methods/accounts/preferences/)
- [`DELETE /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
- [`GET /api/v1/push/subscription`](https://docs.joinmastodon.org/methods/notifications/push/)
@ -102,6 +105,7 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
- [`GET /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`GET /api/v1/search`](https://docs.joinmastodon.org/methods/search/)
- [`POST /api/v1/statuses`](https://docs.joinmastodon.org/methods/statuses/)
- Additionally to the static values `public`, `unlisted` and `private`, the `visibility` parameter can contain a numeric value with a group id.
- [`GET /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/)
- [`DELETE /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/)
- [`GET /api/v1/statuses/:id/card`](https://docs.joinmastodon.org/methods/statuses/)
@ -133,6 +137,17 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
These emdpoints are planned to be implemented somewhere in the future.
- [`PATCH /api/v1/accounts/update_credentials`](https://docs.joinmastodon.org/methods/accounts/)
- [`POST /api/v1/accounts/:id/remove_from_followers`](https://github.com/mastodon/mastodon/pull/16864)
- [`GET /api/v1/accounts/familiar_followers`](https://github.com/mastodon/mastodon/pull/17700)
- [`GET /api/v1/accounts/lookup`](https://github.com/mastodon/mastodon/pull/15740)
- [`GET /api/v1/trends/links`](https://github.com/mastodon/mastodon/pull/16917)
- [`GET /api/v1/trends/statuses`](https://github.com/mastodon/mastodon/pull/17431)
- [`GET /api/v1/trends/tags`](https://github.com/mastodon/mastodon/pull/16917)
- [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`GET /api/v1/statuses/{id:\d+}/source`](https://github.com/mastodon/mastodon/pull/16697)
- [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`POST /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
## Dummy endpoints
@ -143,14 +158,13 @@ They refer to features that don't exist in Friendica yet.
- [`GET /api/v1/announcements`](https://docs.joinmastodon.org/methods/announcements/)
- [`GET /api/v1/endorsements`](https://docs.joinmastodon.org/methods/accounts/endorsements/)
- [`GET /api/v1/filters`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
## Non supportable endpoints
These endpoints won't be implemented at the moment.
They refer to features or data that don't exist in Friendica yet.
- POST /api/meta Misskey API endpoint.
- `POST /api/meta` Misskey API endpoint.
- [`POST /api/v1/accounts`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/accounts/:id/featured_tags`](https://docs.joinmastodon.org/methods/accounts/)
- [`POST /api/v1/accounts/:id/pin`](https://docs.joinmastodon.org/methods/accounts/)
@ -167,9 +181,7 @@ They refer to features or data that don't exist in Friendica yet.
- [`GET /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`POST /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`DELETE /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`POST /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`DELETE /api/v1/emails/confirmations`](https://github.com/mastodon/mastodon/pull/15816)
- [`GET /api/v1/featured_tags/suggestions`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`GET /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`POST /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
@ -177,9 +189,8 @@ They refer to features or data that don't exist in Friendica yet.
- [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/instance/activity`](https://docs.joinmastodon.org/methods/instance#weekly-activity)
- [`POST /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`GET /api/v1/polls/:id`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/)
- [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`GET /api/v1/statuses/{id:\d+}/history`](https://github.com/mastodon/mastodon/pull/16697)
- [`GET /api/v1/streaming`](https://docs.joinmastodon.org/methods/timelines/streaming/)
- [`DELETE /api/v1/suggestions/:id`](https://docs.joinmastodon.org/methods/accounts/suggestions/)

View file

@ -65,7 +65,8 @@ General
../network
--------
* e - Sort by Comment Date
* t - Sort by Post Date
* t - Sort by Receipt Date
* q - Sort by Creation Date
* r - Conversation (Posts that mention or involve you)
* w - New posts
* m - Favourite Posts
@ -81,6 +82,7 @@ General
../settings
---------
* o - Account
* 2 - Two-factor authentication
* p - Profiles
* t - Additional features
* w - Social Networks

View file

@ -232,14 +232,6 @@ Please note: body contents are bbcode - not HTML
Called when receiving a post from another source. This may also be used to post local activity or system generated messages.
`$b` is the item array of information to be stored in the database and the item body is bbcode.
### settings_form
Called when generating the HTML for the user Settings page.
`$b` is the HTML string of the settings page before the final `</form>` tag.
### settings_post
Called when the Settings pages are submitted.
`$b` is the $_POST array.
### addon_settings
Called when generating the HTML for the addon settings page.
`$data` is an array containing:
@ -626,7 +618,8 @@ Hook data:
Called when unfollowing a remote contact on a non-native network (like Twitter)
Hook data:
- **contact** (input): the remote contact (uid = local unfollowing user id) array.
- **contact** (input): the target public contact (uid = 0) array.
- **uid** (input): the id of the source local user.
- **result** (output): wether the unfollowing is successful or not.
### revoke_follow
@ -634,7 +627,8 @@ Hook data:
Called when making a remote contact on a non-native network (like Twitter) unfollow you.
Hook data:
- **contact** (input): the remote contact (uid = local revoking user id) array.
- **contact** (input): the target public contact (uid = 0) array.
- **uid** (input): the id of the source local user.
- **result** (output): a boolean value indicating wether the operation was successful or not.
### block
@ -717,10 +711,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('personal_xrd', $arr);
### mod/ping.php
Hook::callAll('network_ping', $arr);
### mod/parse_url.php
Hook::callAll("parse_link", $arr);
@ -752,11 +742,9 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('addon_settings_post', $_POST);
Hook::callAll('connector_settings_post', $_POST);
Hook::callAll('display_settings_post', $_POST);
Hook::callAll('settings_post', $_POST);
Hook::callAll('addon_settings', $settings_addons);
Hook::callAll('connector_settings', $settings_connectors);
Hook::callAll('display_settings', $o);
Hook::callAll('settings_form', $o);
### mod/photos.php
@ -863,6 +851,10 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('register_account', $uid);
Hook::callAll('remove_user', $user);
### src/Module/Notifications/Ping.php
Hook::callAll('network_ping', $arr);
### src/Module/PermissionTooltip.php
Hook::callAll('lockview_content', $item);

View file

@ -65,17 +65,17 @@ table.bbcodes > * > tr > th {
<td><a href="http://friendi.ca" target="external-link">Friendica</a></td>
</tr>
<tr>
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="Immagine/foto"></td>
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png"></td>
</tr>
<tr>
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg]The Friendica Logo[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="The Friendica Logo"></td>
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png]The Friendica Logo[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png" alt="The Friendica Logo"></td>
</tr>
<tr>
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]<br>
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg[/img]<br>
<br>Note: provided height is simply discarded.</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" style="width: 64px;"></td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg" style="width: 64px;"></td>
</tr>
<tr>
<td>[size=xx-small]small text[/size]</td>

View file

@ -3,7 +3,7 @@
* [Home](help)
In addition to [move your account](help/Move-Account) you can export and import the list of accounts you follow.
The exported list is stored as CSV file that is compatible to the format used by other platforms as e.g. Mastodon or Pleroma.
The exported list is stored as CSV file that is compatible to the format used by other platforms as e.g. Mastodon, Misskey or Pleroma.
## Export of followed Contacts

View file

@ -23,7 +23,7 @@ There you will always find the current stable version of friendica.
Addons are listed at [this page](https://github.com/friendica/friendica-addons).
If you are searching for new themes, you can find them at [Friendica-Themes.com](http://friendica-themes.com/)
If you are searching for new themes, you can find them at [github.com/bkil/friendica-themes](https://github.com/bkil/friendica-themes)
<a name="adminaccount1"></a>
### I've changed my email address now the admin panel is gone?

View file

@ -179,19 +179,17 @@ The available features are client specific and may differ.
* [AndStatus](http://andstatus.org) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.andstatus.app), [Google Play](https://play.google.com/store/apps/details?id=org.andstatus.app))
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma)
* DiCa ([Google Play](https://play.google.com/store/apps/details?id=cool.mixi.dica), last updated 2019)
* [Fedi](https://play.google.com/store/apps/details?id=com.fediverse.app)
* [Fedilab](https://fedilab.app) ([F-Droid](https://f-droid.org/app/fr.gouv.etalab.mastodon), [Google Play](https://play.google.com/store/apps/details?id=app.fedilab.android))
* [Friendiqa](https://git.friendi.ca/lubuwest/Friendiqa) ([F-Droid](https://git.friendi.ca/lubuwest/Friendiqa#install), [Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa))
* [Husky](https://husky.fwgs.ru)
* [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
* [Husky](https://git.sr.ht/~captainepoch/husky) ([F-Droid](https://f-droid.org/repository/browse/?fdid=su.xash.husky), [Google Play](https://play.google.com/store/apps/details?id=su.xash.husky))
* [Mastodon for Android](https://github.com/mastodon/mastodon-android) (F-Droid: Pending, [Google-Play](https://play.google.com/store/apps/details?id=org.joinmastodon.android))
* [Subway Tooter](https://github.com/tateisu/SubwayTooter)
* [Tooot](https://tooot.app/)
* [Tusky](https://tusky.app)
* [Twidere](https://dimension.im/) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex), [GitHub](https://github.com/TwidereProject/Twidere-Android))
* [TwidereX](https://github.com/TwidereProject/TwidereX-Android)
* [twitlatte](https://github.com/moko256/twitlatte)
* [Yuito](https://github.com/accelforce/Yuito)
* [Tusky](https://tusky.app) ([F-Droid](https://f-droid.org/repository/browse/?fdid=com.keylesspalace.tusky), [Google Play](https://play.google.com/store/apps/details?id=com.keylesspalace.tusky))
* [Twidere](https://github.com/TwidereProject/Twidere-Android) ([F-Droid](https://f-droid.org/repository/browse/?fdid=org.mariotaku.twidere), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex))
* [TwidereX](https://github.com/TwidereProject/TwidereX-Android) ([F-Droid](https://f-droid.org/en/packages/com.twidere.twiderex/), [Google Play](https://play.google.com/store/apps/details?id=com.twidere.twiderex))
* [Yuito](https://github.com/accelforce/Yuito) ([Google Play](https://play.google.com/store/apps/details?id=net.accelf.yuito))
#### SailfishOS
@ -199,12 +197,11 @@ The available features are client specific and may differ.
#### iOS
* [B4X for Pleroma & Mastodon](https://www.b4x.com/) ([AppStore](https://apps.apple.com/app/b4x-pleroma/id1538396871), [GitHub](https://github.com/AnywhereSoftware/B4X-Pleroma))
* [B4X for Pleroma & Mastodon](https://github.com/AnywhereSoftware/B4X-Pleroma) ([AppStore](https://apps.apple.com/app/b4x-pleroma/id1538396871))
* [Fedi](https://fediapp.com) ([AppStore](https://apps.apple.com/de/app/fedi-for-pleroma-and-mastodon/id1478806281))
* [Mastodon](https://joinmastodon.org/apps)([AppStore](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
* [Roma](https://www.roma.rocks/)([AppStore](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699))
* [Mastodon for iPhone and iPad](https://joinmastodon.org/apps) ([AppStore](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
* [Stella*](https://www.stella-app.net/) ([AppStore](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048))
* [Tooot](https://tooot.app/) ([AppStore](https://apps.apple.com/app/id1549772269), [GitHub](https://github.com/tooot-app)), Data collection (not linked to identity)
* [Tooot](https://github.com/tooot-app) ([AppStore](https://apps.apple.com/app/id1549772269), Data collection (not linked to identity)
* [Tootle](https://mastodon.cloud/@tootleapp) ([AppStore](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466)), last update: 2020
#### Linux
@ -217,9 +214,13 @@ The available features are client specific and may differ.
#### macOS
* [Mastonaut](https://mastonaut.app/) ([AppStore](https://apps.apple.com/us/app/mastonaut/id1450757574)), costs ~8€
* [Mastonaut](https://mastonaut.app/) ([AppStore](https://apps.apple.com/us/app/mastonaut/id1450757574)), closed source
* [Whalebird](https://whalebird.social/en/desktop/contents) ([AppStore](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop))
#### Windows
* [Whalebird](https://whalebird.social/en/desktop/contents) ([Website Download](https://whalebird.social/en/desktop/contents/downloads#windows), [GitHub](https://github.com/h3poteto/whalebird-desktop))
#### Web Frontend
* [Halcyon](https://www.halcyon.social/)

View file

@ -102,7 +102,18 @@ If you encounter a bug, please let us know.
### Create a database
Create an empty database and note the access details (hostname, username, password, database name).
Create an empty database and note the access details (hostname, username, password, database name).
Generate a strong password, then enter mysql with:
mysql
Then use the following script using the password you just generated:
CREATE DATABASE friendicadb;
CREATE USER 'friendica'@'localhost' IDENTIFIED BY '<<your mysql password here>>';
GRANT ALL ON friendicadb.* TO 'friendica'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Friendica needs the permission to create and delete fields and tables in its own database.
@ -449,3 +460,58 @@ section:
sql_mode = '';
After that, restart mysql and try again.
### Your worker never or rarely runs
Friendica is coded to always play nice. It checks whether the host machine is idle enough and if it _seems_ to be overloaded, it intermittently refuses to process the worker queue.
Such checks originate from the days of single-user single-core machines and involves thresholds that you should adjust based on the number of exclusive CPU cores you have. See this issue for more information:
* https://github.com/friendica/friendica/issues/10131
If you want to be neighborly and are using a shared web hosting PaaS provider, especially within the free tier, you need to set `maxloadavg` to say twice the maximum value of `/proc/loadavg` during peak hours.
If you have the whole (virtual) machine for yourself such as in case of an IaaS VPS, you can set it to orders of magnitude higher than its commonly observed value, such as 1000.
You should instead enact limits in your web server configuration based on the number of entry processes to cap the concurrent memory usage of your PHP processes.
See `RLimitMEM`, `RLimitCPU`, `RLimitNPROC`, `StartServers`, `ServerLimit`, `MaxRequestsPerChild`, `pm.max_children`, `pm.start_servers` and related options in your server.
### Error uploading even small image files
You tried to upload an image up to 100kB and it failed.
You may not have the ownership or file mode set correctly if you are using the file system storage backend.
Change the backend to database. If this solves it, that is what needs to be fixed.
### Error uploading large files
You may find `413 Request Entity Too Large` or `500 Internal Error` in the network inspector of the browser if the file is too large, for example if it is a video.
First try to upload a very small file, up to 100kB. If that succeeds, you will need to increase limits at multiple places, including on any web proxy that you are using.
In your PHP ini:
* `upload_max_filesize`: defaults to 2MB
* `post_max_size`: defaults to 8MB, must be greater than `upload_max_filesize`
* `memory_limit`: defaults to 128MB, must be greater than `post_max_size`
You should verify whether you changed them in the _right file_ by checking the web interface at the end of the overview on the `Admin` panel.
For Apache2:
* `LimitRequestBody`: defaults to unlimited
* `SSLRenegBufferSize`: defaults to 128kB, only if your site uses TLS and perhaps only when using `SSLVerifyClient` or `SSLVerifyDepth`
For nginx:
* `client_max_body_size`: defaults to 1MB
If you are using the database backend for storage, increase this in your SQL configuration:
* `max_allowed_packet`: defaults to 32MB
If you use the ModSecurity WAF:
* `SecRequestBodyLimit`: defaults to 12MB
* `SecRequestBodyNoFilesLimit`: defaults to 128kB, should not apply to Friendica

View file

@ -11,6 +11,7 @@ Database Tables
| [addon](help/database/db_addon) | registered addons |
| [apcontact](help/database/db_apcontact) | ActivityPub compatible contacts - used in the ActivityPub implementation |
| [application](help/database/db_application) | OAuth application |
| [application-marker](help/database/db_application-marker) | Timeline marker |
| [application-token](help/database/db_application-token) | OAuth user token |
| [attach](help/database/db_attach) | file attachments |
| [cache](help/database/db_cache) | Stores temporary data |
@ -21,6 +22,7 @@ Database Tables
| [conversation](help/database/db_conversation) | Raw data and structure information for messages |
| [delayed-post](help/database/db_delayed-post) | Posts that are about to be distributed at a later time |
| [diaspora-interaction](help/database/db_diaspora-interaction) | Signed Diaspora Interaction |
| [endpoint](help/database/db_endpoint) | ActivityPub endpoints - used in the ActivityPub implementation |
| [event](help/database/db_event) | Events |
| [fcontact](help/database/db_fcontact) | Diaspora compatible contacts - used in the Diaspora implementation |
| [fsuggest](help/database/db_fsuggest) | friend suggestion stuff |
@ -37,7 +39,7 @@ Database Tables
| [mailacct](help/database/db_mailacct) | Mail account data for fetching mails |
| [manage](help/database/db_manage) | table of accounts that can manage each other |
| [notification](help/database/db_notification) | notifications |
| [notify](help/database/db_notify) | notifications |
| [notify](help/database/db_notify) | [Deprecated] User notifications |
| [notify-threads](help/database/db_notify-threads) | |
| [oembed](help/database/db_oembed) | cache for OEmbed queries |
| [openwebauth-token](help/database/db_openwebauth-token) | Store OpenWebAuth token to verify contacts |
@ -47,10 +49,15 @@ Database Tables
| [photo](help/database/db_photo) | photo storage |
| [post](help/database/db_post) | Structure for all posts |
| [post-category](help/database/db_post-category) | post relation to categories |
| [post-collection](help/database/db_post-collection) | Collection of posts |
| [post-content](help/database/db_post-content) | Content for all posts |
| [post-delivery](help/database/db_post-delivery) | Delivery data for posts for the batch processing |
| [post-delivery-data](help/database/db_post-delivery-data) | Delivery data for items |
| [post-history](help/database/db_post-history) | Post history |
| [post-link](help/database/db_post-link) | Post related external links |
| [post-media](help/database/db_post-media) | Attached media |
| [post-question](help/database/db_post-question) | Question |
| [post-question-option](help/database/db_post-question-option) | Question option |
| [post-tag](help/database/db_post-tag) | post relation to tags |
| [post-thread](help/database/db_post-thread) | Thread related data |
| [post-thread-user](help/database/db_post-thread-user) | Thread related data per user |

View file

@ -17,6 +17,8 @@ Fields
| inbox | | varchar(255) | NO | | NULL | |
| outbox | | varchar(255) | YES | | NULL | |
| sharedinbox | | varchar(255) | YES | | NULL | |
| featured | Address for the collection of featured posts | varchar(255) | YES | | NULL | |
| featured-tags | Address for the collection of featured tags | varchar(255) | YES | | NULL | |
| manually-approve | | boolean | YES | | NULL | |
| discoverable | Mastodon extension: true if profile is published in their directory | boolean | YES | | NULL | |
| nick | | varchar(255) | NO | | | |

View file

@ -0,0 +1,34 @@
Table application-marker
===========
Timeline marker
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| -------------- | ---------------------------- | ------------------ | ---- | --- | ------- | ----- |
| application-id | | int unsigned | NO | PRI | NULL | |
| uid | Owner User id | mediumint unsigned | NO | PRI | NULL | |
| timeline | Marker (home, notifications) | varchar(64) | NO | PRI | NULL | |
| last_read_id | Marker id for the timeline | varchar(255) | YES | | NULL | |
| version | Version number | smallint unsigned | YES | | NULL | |
| updated_at | creation time | datetime | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ----------------------------- |
| PRIMARY | application-id, uid, timeline |
| uid_id | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| application-id | [application](help/database/db_application) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,30 @@
Table endpoint
===========
ActivityPub endpoints - used in the ActivityPub implementation
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------ | -------------------------------------------------------------- | -------------- | ---- | --- | ------- | ----- |
| url | URL of the contact | varbinary(255) | NO | PRI | NULL | |
| type | | varchar(20) | NO | | NULL | |
| owner-uri-id | Id of the item-uri table entry that contains the apcontact url | int unsigned | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ----------------- | -------------------------- |
| PRIMARY | url |
| owner-uri-id_type | UNIQUE, owner-uri-id, type |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| owner-uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -6,13 +6,14 @@ privacy groups, group info
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | ------------------------------------------ | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
| visible | 1 indicates the member list is not private | boolean | NO | | 0 | |
| deleted | 1 indicates the group has been deleted | boolean | NO | | 0 | |
| name | human readable name of group | varchar(255) | NO | | | |
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | ----------------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner User id | mediumint unsigned | NO | | 0 | |
| visible | 1 indicates the member list is not private | boolean | NO | | 0 | |
| deleted | 1 indicates the group has been deleted | boolean | NO | | 0 | |
| cid | Contact id of forum. When this field is filled then the members are synced automatically. | int unsigned | YES | | NULL | |
| name | human readable name of group | varchar(255) | NO | | | |
Indexes
------------
@ -21,6 +22,7 @@ Indexes
| ------- | ------ |
| PRIMARY | id |
| uid | uid |
| cid | cid |
Foreign Keys
------------
@ -28,5 +30,6 @@ Foreign Keys
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uid | [user](help/database/db_user) | uid |
| cid | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

@ -6,31 +6,36 @@ Global servers
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ---------------- | -------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| url | | varchar(255) | NO | | | |
| nurl | | varchar(255) | NO | | | |
| version | | varchar(255) | NO | | | |
| site_name | | varchar(255) | NO | | | |
| info | | text | YES | | NULL | |
| register_policy | | tinyint | NO | | 0 | |
| registered-users | Number of registered users | int unsigned | NO | | 0 | |
| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
| poco | | varchar(255) | NO | | | |
| noscrape | | varchar(255) | NO | | | |
| network | | char(4) | NO | | | |
| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
| platform | | varchar(255) | NO | | | |
| relay-subscribe | Has the server subscribed to the relay system | boolean | NO | | 0 | |
| relay-scope | The scope of messages that the server wants to get | varchar(10) | NO | | | |
| detection-method | Method that had been used to detect that server | tinyint unsigned | YES | | NULL | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | |
| last_contact | Last successful connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| last_failure | Last failed connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| failed | Connection failed | boolean | YES | | NULL | |
| next_contact | Next connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| Field | Description | Type | Null | Key | Default | Extra |
| --------------------- | -------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| url | | varchar(255) | NO | | | |
| nurl | | varchar(255) | NO | | | |
| version | | varchar(255) | NO | | | |
| site_name | | varchar(255) | NO | | | |
| info | | text | YES | | NULL | |
| register_policy | | tinyint | NO | | 0 | |
| registered-users | Number of registered users | int unsigned | NO | | 0 | |
| active-week-users | Number of active users in the last week | int unsigned | YES | | NULL | |
| active-month-users | Number of active users in the last month | int unsigned | YES | | NULL | |
| active-halfyear-users | Number of active users in the last six month | int unsigned | YES | | NULL | |
| local-posts | Number of local posts | int unsigned | YES | | NULL | |
| local-comments | Number of local comments | int unsigned | YES | | NULL | |
| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
| poco | | varchar(255) | NO | | | |
| noscrape | | varchar(255) | NO | | | |
| network | | char(4) | NO | | | |
| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |
| platform | | varchar(255) | NO | | | |
| relay-subscribe | Has the server subscribed to the relay system | boolean | NO | | 0 | |
| relay-scope | The scope of messages that the server wants to get | varchar(10) | NO | | | |
| detection-method | Method that had been used to detect that server | tinyint unsigned | YES | | NULL | |
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
| last_poco_query | | datetime | YES | | 0001-01-01 00:00:00 | |
| last_contact | Last successful connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| last_failure | Last failed connection request | datetime | YES | | 0001-01-01 00:00:00 | |
| failed | Connection failed | boolean | YES | | NULL | |
| next_contact | Next connection request | datetime | YES | | 0001-01-01 00:00:00 | |
Indexes
------------

View file

@ -9,6 +9,7 @@ Fields
| Field | Description | Type | Null | Key | Default | Extra |
| -------- | ------------------------------------ | -------------- | ---- | --- | ------------------- | ----- |
| url | URL of the inbox | varbinary(255) | NO | PRI | NULL | |
| uri-id | Item-uri id of inbox url | int unsigned | YES | | NULL | |
| created | Creation date of this entry | datetime | NO | | 0001-01-01 00:00:00 | |
| success | Date of the last successful delivery | datetime | NO | | 0001-01-01 00:00:00 | |
| failure | Date of the last failed delivery | datetime | NO | | 0001-01-01 00:00:00 | |
@ -22,6 +23,13 @@ Indexes
| Name | Fields |
| ------- | ------ |
| PRIMARY | url |
| uri-id | uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -11,7 +11,7 @@ Fields
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uid | Owner User id | mediumint unsigned | YES | | NULL | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
| type | | tinyint unsigned | YES | | NULL | |
| type | | smallint unsigned | YES | | NULL | |
| actor-id | Link to the contact table with uid=0 of the actor that caused the notification | int unsigned | YES | | NULL | |
| target-uri-id | Item-uri id of the related post | int unsigned | YES | | NULL | |
| parent-uri-id | Item-uri id of the parent of the related post | int unsigned | YES | | NULL | |

View file

@ -1,7 +1,7 @@
Table notify
===========
notifications
[Deprecated] User notifications
Fields
------

View file

@ -16,11 +16,11 @@ Fields
Indexes
------------
| Name | Fields |
| ------- | ---------------------- |
| PRIMARY | uri-id, uid, type, tid |
| uri-id | tid |
| uid | uid |
| Name | Fields |
| ---------- | ---------------------- |
| PRIMARY | uri-id, uid, type, tid |
| tid | tid |
| uid_uri-id | uid, uri-id |
Foreign Keys
------------

View file

@ -0,0 +1,29 @@
Table post-collection
===========
Collection of posts
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------ | --------------------------------------------------------- | ---------------- | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| type | 0 - Featured | tinyint unsigned | NO | PRI | 0 | |
Indexes
------------
| Name | Fields |
| ------- | ------------ |
| PRIMARY | uri-id, type |
| type | type |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,37 @@
Table post-delivery
===========
Delivery data for posts for the batch processing
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| inbox-id | Item-uri id of inbox url | int unsigned | NO | PRI | NULL | |
| uid | Delivering user | mediumint unsigned | YES | | NULL | |
| created | | datetime | YES | | 0001-01-01 00:00:00 | |
| command | | varbinary(32) | YES | | NULL | |
| failed | Number of times the delivery has failed | tinyint | YES | | 0 | |
| receivers | JSON encoded array with the receiving contacts | mediumtext | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ---------------- | ----------------- |
| PRIMARY | uri-id, inbox-id |
| inbox-id_created | inbox-id, created |
| uid | uid |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| inbox-id | [item-uri](help/database/db_item-uri) | id |
| uid | [user](help/database/db_user) | uid |
Return to [database documentation](help/database)

View file

@ -0,0 +1,44 @@
Table post-history
===========
Post history
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| edited | Date of edit | datetime | NO | PRI | 0001-01-01 00:00:00 | |
| title | item title | varchar(255) | NO | | | |
| content-warning | | varchar(255) | NO | | | |
| body | item body content | mediumtext | YES | | NULL | |
| raw-body | Body without embedded media links | mediumtext | YES | | NULL | |
| location | text location where this item originated | varchar(255) | NO | | | |
| coord | longitude/latitude pair representing location where this item originated | varchar(255) | NO | | | |
| language | Language information about this post | text | YES | | NULL | |
| app | application which generated this item | varchar(255) | NO | | | |
| rendered-hash | | varchar(32) | NO | | | |
| rendered-html | item.body converted to html | mediumtext | YES | | NULL | |
| object-type | ActivityStreams object type | varchar(100) | NO | | | |
| object | JSON encoded object structure unless it is an implied object (normal post) | text | YES | | NULL | |
| target-type | ActivityStreams target type if applicable (URI) | varchar(100) | NO | | | |
| target | JSON encoded target structure if used | text | YES | | NULL | |
| resource-id | Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type | varchar(32) | NO | | | |
| plink | permalink or URL to a displayable copy of the message at its source | varchar(255) | NO | | | |
Indexes
------------
| Name | Fields |
| ------- | -------------- |
| PRIMARY | uri-id, edited |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -10,13 +10,13 @@ Fields
| --------------- | --------------------------------------------------------- | ----------------- | ---- | --- | ------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
| url | Media URL | varbinary(511) | NO | | NULL | |
| url | Media URL | varbinary(1024) | NO | | NULL | |
| type | Media type | tinyint unsigned | NO | | 0 | |
| mimetype | | varchar(60) | YES | | NULL | |
| height | Height of the media | smallint unsigned | YES | | NULL | |
| width | Width of the media | smallint unsigned | YES | | NULL | |
| size | Media size | int unsigned | YES | | NULL | |
| preview | Preview URL | varbinary(255) | YES | | NULL | |
| size | Media size | bigint unsigned | YES | | NULL | |
| preview | Preview URL | varbinary(512) | YES | | NULL | |
| preview-height | Height of the preview picture | smallint unsigned | YES | | NULL | |
| preview-width | Width of the preview picture | smallint unsigned | YES | | NULL | |
| description | | text | YES | | NULL | |
@ -31,10 +31,11 @@ Fields
Indexes
------------
| Name | Fields |
| ---------- | ------------------- |
| PRIMARY | id |
| uri-id-url | UNIQUE, uri-id, url |
| Name | Fields |
| ---------- | ------------------------ |
| PRIMARY | id |
| uri-id-url | UNIQUE, uri-id, url(512) |
| uri-id-id | uri-id, id |
Foreign Keys
------------

View file

@ -0,0 +1,30 @@
Table post-question-option
===========
Question option
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------- | --------------------------------------------------------- | ------------ | ---- | --- | ------- | ----- |
| id | Id of the question | int unsigned | NO | PRI | NULL | |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| name | Name of the option | varchar(255) | YES | | NULL | |
| replies | Number of replies for this question option | int unsigned | YES | | NULL | |
Indexes
------------
| Name | Fields |
| ------- | ---------- |
| PRIMARY | uri-id, id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,32 @@
Table post-question
===========
Question
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| -------- | --------------------------------------------------------- | ------------ | ---- | --- | ------------------- | -------------- |
| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
| multiple | Multiple choice | boolean | NO | | 0 | |
| voters | Number of voters for this question | int unsigned | YES | | NULL | |
| end-time | Question end time | datetime | YES | | 0001-01-01 00:00:00 | |
Indexes
------------
| Name | Fields |
| ------- | -------------- |
| PRIMARY | id |
| uri-id | UNIQUE, uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -18,13 +18,13 @@ Fields
| changed | Date that something in the conversation changed, indicating clients should fetch the conversation again | datetime | NO | | 0001-01-01 00:00:00 | |
| commented | | datetime | NO | | 0001-01-01 00:00:00 | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | 0 | |
| pinned | The thread is pinned on the profile page | boolean | NO | | 0 | |
| pinned | deprecated | boolean | NO | | 0 | |
| starred | | boolean | NO | | 0 | |
| ignored | Ignore updates for this thread | boolean | NO | | 0 | |
| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
| mention | | boolean | NO | | 0 | |
| pubmail | | boolean | NO | | 0 | |
| forum_mode | | tinyint unsigned | NO | | 0 | |
| forum_mode | Deprecated | tinyint unsigned | NO | | 0 | |
| contact-id | contact.id | int unsigned | NO | | 0 | |
| unseen | post has not been seen | boolean | NO | | 1 | |
| hidden | Marker to hide the post from the user | boolean | NO | | 0 | |
@ -49,7 +49,6 @@ Indexes
| commented | commented |
| uid_received | uid, received |
| uid_wall_received | uid, wall, received |
| uid_pinned | uid, pinned |
| uid_commented | uid, commented |
| uid_starred | uid, starred |
| uid_mention | uid, mention |

View file

@ -10,7 +10,7 @@ Fields
| ----------------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | NULL | |
| notification-type | | tinyint unsigned | NO | | 0 | |
| notification-type | | smallint unsigned | NO | | 0 | |
Indexes
------------

View file

@ -6,11 +6,12 @@ tags and mentions
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ----------- | -------------- | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| name | | varchar(96) | NO | | | |
| url | | varbinary(255) | NO | | | |
| Field | Description | Type | Null | Key | Default | Extra |
| ----- | ----------------------------------------------------------------------------- | ---------------- | ---- | --- | ------- | -------------- |
| id | | int unsigned | NO | PRI | NULL | auto_increment |
| name | | varchar(96) | NO | | | |
| url | | varbinary(255) | NO | | | |
| type | Type of the tag (Unknown, General Collection, Follower Collection or Account) | tinyint unsigned | YES | | NULL | |
Indexes
------------

View file

@ -15,6 +15,7 @@ Fields
| ignored | Posts from this contact are ignored | boolean | YES | | NULL | |
| collapsed | Posts from this contact are collapsed | boolean | YES | | NULL | |
| hidden | This contact is hidden from the others | boolean | YES | | NULL | |
| is-blocked | User is blocked by this contact | boolean | YES | | NULL | |
| pending | | boolean | YES | | NULL | |
| rel | The kind of the relation between the user and the contact | tinyint unsigned | YES | | NULL | |
| info | | mediumtext | YES | | NULL | |

View file

@ -106,12 +106,6 @@ Derzeitige Hooks
$b ist das Item-Array einer Information, die in der Datenbank und im Item gespeichert ist.
{Bitte beachte: der Seiteninhalt ist bbcode - nicht HTML)
**'settings_form'** - wird aufgerufen, wenn die HTML-Ausgabe für die Einstellungsseite generiert wird.
$b ist die HTML-Ausgabe (String) der Einstellungsseite vor dem finalen "</form>"-Tag.
**'settings_post'** - wird aufgerufen, wenn die Einstellungsseiten geladen werden.
$b ist der $_POST-Array
**'addon_settings'** - wird aufgerufen, wenn die HTML-Ausgabe der Addon-Einstellungsseite generiert wird.
$b ist die HTML-Ausgabe (String) der Addon-Einstellungsseite vor dem finalen "</form>"-Tag.
@ -236,10 +230,6 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('personal_xrd', $arr);
### mod/ping.php
Hook::callAll('network_ping', $arr);
### mod/parse_url.php
Hook::callAll("parse_link", $arr);
@ -271,11 +261,9 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('addon_settings_post', $_POST);
Hook::callAll('connector_settings_post', $_POST);
Hook::callAll('display_settings_post', $_POST);
Hook::callAll('settings_post', $_POST);
Hook::callAll('addon_settings', $settings_addons);
Hook::callAll('connector_settings', $settings_connectors);
Hook::callAll('display_settings', $o);
Hook::callAll('settings_form', $o);
### mod/photos.php
@ -426,6 +414,10 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('storage_instance', $data);
Hook::callAll('storage_config', $data);
### src/Module/Notifications/Ping.php
Hook::callAll('network_ping', $arr);
### src/Module/PermissionTooltip.php
Hook::callAll('lockview_content', $item);

View file

@ -65,17 +65,17 @@ table.bbcodes > * > tr > th {
<td><a href="http://friendi.ca" target="external-link">Friendica</a></td>
</tr>
<tr>
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="Immagine/foto"></td>
<td>[img]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png"></td>
</tr>
<tr>
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg]Das Friendica Logo[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" alt="Das Friendica Logo"></td>
<td>[img=https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png]Das Friendica Logo[/img]</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.png" alt="Das Friendica Logo"></td>
</tr>
<tr>
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg[/img]<br>
<td>[img=64x32]https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg[/img]<br>
<br>Note: provided height is simply discarded.</td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica-32.jpg" style="width: 64px;"></td>
<td><img src="https://raw.githubusercontent.com/friendica/friendica/stable/images/friendica.svg" style="width: 64px;"></td>
</tr>
<tr>
<td>[size=xx-small]kleiner Text[/size]</td>

View file

@ -3,7 +3,7 @@
* [Home](help)
Zusätzlich zum [Umziehen des Accounts](help/Move-Account) kannst du die Liste der von dir gefolgten Kontakte exportieren und importieren.
Die exportierte Liste wird als CSV Datei in einem zu anderen Plattformen, z.B. Mastodon oder Pleroma, kompatiblen Format gespeichert.
Die exportierte Liste wird als CSV Datei in einem zu anderen Plattformen, z.B. Mastodon, Misskey oder Pleroma, kompatiblen Format gespeichert.
## Export der gefolgten Kontakte

View file

@ -4,7 +4,7 @@
To change the look of friendica you have to touch the themes.
The current default theme is [Vier](https://github.com/friendica/friendica/tree/stable/view/theme/vier) but there are numerous others.
Have a look at [friendica-themes.com](http://friendica-themes.com) for an overview of the existing themes.
Have a look at [github.com/bkil/friendica-themes](https://github.com/bkil/friendica-themes) for an overview of the existing themes.
In case none of them suits your needs, there are several ways to change a theme.
So, how to work on the UI of friendica.

BIN
images/default/corgidon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
images/default/diaspora.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1000px"
height="1000px"
viewBox="0 0 1000 1000"
version="1.1"
id="SVGRoot"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="GoToSocial_icon1.svg"
inkscape:export-xdpi="95.999992"
inkscape:export-ydpi="95.999992">
<defs
id="defs5117">
<inkscape:path-effect
effect="spiro"
id="path-effect5760"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5756"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5752"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5748"
is_visible="true" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.70710678"
inkscape:cx="460.72691"
inkscape:cy="522.20279"
inkscape:document-units="px"
inkscape:current-layer="layer3"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1057"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata5120">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="background"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<rect
style="fill:#d0d0d0;fill-opacity:1;stroke:none;stroke-width:1.51092136;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
id="rect5876"
width="1000.0042"
height="1000"
x="0"
y="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="sloth"
style="display:inline">
<g
id="g5890"
transform="translate(-10)">
<path
sodipodi:nodetypes="ssscccs"
inkscape:connector-curvature="0"
id="path5762"
d="M 861.29285,497.07031 C 861.65556,665.3247 774.21642,807.40548 511.60027,807.86794 270.63622,808.29226 154.54309,691.2756 155.19024,504.19228 155.7289,348.47535 251.17288,227.4551 422.3176,205.3802 c -35.32036,-75.85452 52.24232,-96.94648 73.77615,-32.00508 13.73451,-37.63439 108.24345,-49.1716 62.21106,24.77055 147.95052,3.75658 302.58353,111.28061 302.98804,298.92464 z"
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:2.57058167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<path
sodipodi:nodetypes="sssssss"
inkscape:connector-curvature="0"
id="path5780"
d="m 809.15213,517.31679 c -4.83374,150.52526 -109.85544,235.22815 -297.81171,235.31839 -179.6675,0.0863 -290.56109,-70.98245 -298.50223,-235.31839 -4.6366,-95.95095 54.62861,-181.84442 144.83016,-194.18834 80.92123,-11.07393 99.7402,21.01802 153.67207,21.01802 59.21658,0 83.64871,-35.09608 162.84221,-21.85479 87.78391,14.67763 137.90533,103.6017 134.9695,195.02511 z"
style="display:inline;fill:#e8e8e8;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<path
sodipodi:nodetypes="scssscs"
inkscape:connector-curvature="0"
id="path5780-9"
d="m 809.15213,517.31679 c -1.32872,41.37724 -10.22787,77.78081 -26.33906,108.8204 -46.60931,-39.48031 -99.53509,-10.7281 -171.50115,-39.43334 -44.77145,-17.85808 -51.41659,-56.56453 -51.21999,-81.3542 0.54836,-69.14384 48.17003,-93.45758 95.53601,-97.60875 55.74677,-4.88566 124.5246,36.1482 151.01547,66.79433 2.11531,14.01083 2.97167,28.36512 2.50872,42.78156 z"
style="display:inline;fill:#a1a1a1;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<ellipse
ry="50.575684"
rx="37.800804"
cy="502.64291"
cx="646.85773"
id="path5816"
style="fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.51185882;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<path
sodipodi:nodetypes="scssscs"
inkscape:connector-curvature="0"
id="path5780-9-1"
d="m 212.51463,517.3246 c 1.32872,41.37724 10.22787,77.78081 26.33906,108.8204 46.60931,-39.48031 99.57415,-10.73591 171.54021,-39.44115 44.77145,-17.85808 51.41659,-56.56453 51.21999,-81.3542 -0.54836,-69.14384 -48.20909,-93.44977 -95.57507,-97.60094 -55.74677,-4.88566 -124.5246,36.1482 -151.01547,66.79433 -2.11531,14.01083 -2.97167,28.36512 -2.50872,42.78156 z"
style="display:inline;fill:#a1a1a1;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<ellipse
transform="scale(-1,1)"
ry="50.575684"
rx="37.800804"
cy="502.64294"
cx="-374.84808"
id="path5816-0"
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.51185882;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<path
sodipodi:nodetypes="sssss"
inkscape:connector-curvature="0"
id="path5862"
d="m 543.96613,556.96185 c 0,11.0622 -14.51648,20.02988 -32.42347,20.02988 -17.90698,0 -32.42347,-8.96769 -32.42347,-20.02988 0,-11.0622 14.14619,-15.58638 32.05318,-15.58638 17.90698,0 32.79376,4.52417 32.79376,15.58638 z"
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.60515046;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<path
sodipodi:nodetypes="sssss"
inkscape:connector-curvature="0"
id="path5865"
d="m 552.00195,620.36132 c 7.06643,13.89391 -19.38375,21.24024 -40.2832,21.24024 -20.89945,0 -47.71708,-7.02219 -41.50391,-21.24024 5.71775,-13.08435 20.11619,0.73243 41.01563,0.73243 20.89944,0 34.43888,-13.1835 40.77148,-0.73243 z"
style="display:inline;fill:#767676;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<ellipse
transform="rotate(-6.669407)"
ry="24.882849"
rx="19.511755"
cy="560.95673"
cx="600.24731"
id="path5818"
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.53898752;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
<ellipse
transform="rotate(-6.6694071)"
ry="24.882849"
rx="19.511755"
cy="529.32086"
cx="329.69714"
id="path5818-8"
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.53898752;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
images/default/hometown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
images/default/mastodon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
images/default/pleroma.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

BIN
images/default/plume.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 756 B

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 1920 1920">
<rect fill="#1872a2" width="1920" height="1920"/>
<path fill="#febf19" d="M390 595q0-84 61-145 60-60 144-60h730q85 0 145 60 60 61 60 145v730q0 84-60 145-60 60-145 60H595q-84 0-144-60-60-61-61-145zm935-160h-183v274H778v231l363-2 1 273H778v274h547q67 0 114-47 46-46 45-113V595q0-67-45-113-46-46-114-47z"/>
</svg>

After

Width:  |  Height:  |  Size: 403 B

View file

@ -1 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg2" width="96" height="96" version="1.1"><defs id="defs4"><linearGradient id="highlightgradient"><stop id="stop3833" offset="0" style="stop-color:#fff;stop-opacity:.74374998"/><stop style="stop-color:#fff;stop-opacity:0" id="stop3829" offset="1"/></linearGradient><linearGradient id="shadowgradient"><stop id="stop3833-5" offset="0" style="stop-color:#000;stop-opacity:.5"/><stop style="stop-color:#818080;stop-opacity:0" id="stop3829-9" offset="1"/></linearGradient><linearGradient id="linearGradient4011" x1="44.948" x2="54.103" y1="0" y2="46.797" gradientTransform="scale(1,0.54545455)" gradientUnits="userSpaceOnUse" xlink:href="#highlightgradient"/><linearGradient id="linearGradient4021" x1="52.017" x2="42.868" y1="96" y2="41.838" gradientTransform="matrix(1,0,0,0.5,0,48)" gradientUnits="userSpaceOnUse" xlink:href="#shadowgradient"/><filter id="filter4055" width="1.06" height="1.24" x="-.03" y="-.12"><feGaussianBlur id="feGaussianBlur4057" stdDeviation="1.2"/></filter><filter id="filter4059" width="1.06" height="1.244" x="-.03" y="-.122"><feGaussianBlur id="feGaussianBlur4061" stdDeviation="1.22"/></filter></defs><metadata id="metadata7"/><g id="layer1" transform="translate(0,-956.3622)" style="display:inline"><path style="fill:#ffc019;fill-opacity:1;stroke:none" id="rect2993" d="M 16,0 C 7.0091019,0.04308252 0,7.0521845 0,16 0,16 0,57.499123 0,80 0,89.120146 7.0091019,96 16,96 L 32,96 32,70 64,70 63.916016,46.068359 32,46.236328 32,26 64,26 64,0 C 64,0 24,0 16,0 z" transform="translate(0,956.3622)"/><path style="fill:#1872a2;fill-opacity:1;stroke:none" id="rect2993-6" d="m 80,1052.3622 c 8.990898,0 16.086165,-6.966 16,-16 0,0 0,-41.4991 0,-64 0.07767,-9.01639 -7.067354,-16 -16,-16 l -16,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26 c 0,0 32,0 48,0 z"/></g><g style="display:inline" id="g3997"><path id="path3999" d="m 64,0 0,26 -32,0 0,22 m 32,0 0,22 -32,0 0,26" style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/><rect id="rect4001" width="96" height="96" x="0" y="0" rx="16" ry="16" style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/></g><g id="layer3" style="display:none"><path style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="path3926" d="m 64,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26"/><rect style="fill:none;stroke:#000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="rect3928" width="96" height="96" x="0" y="0" rx="16" ry="16"/></g><g id="layer2" style="display:inline"><rect style="fill:url(#linearGradient3930);fill-opacity:1;stroke:none" id="rect3823" width="96" height="48.044" x="0" y="0" rx="15.215" ry="15.216"/><rect style="fill:url(#linearGradient3904);fill-opacity:1;stroke:none" id="rect3823-8" width="96" height="47.867" x="0" y="-96" rx="15.215" ry="15.16" transform="scale(1,-1)"/><rect style="fill:url(#linearGradient4011);fill-opacity:1;stroke:none;filter:url(#filter4059)" id="rect4003" width="98" height="24" x="0" y="0" rx="15.215" ry="8.299" transform="matrix(1.0296115,0,0,1.1963836,-2.901924,-4.7132067)"/><rect style="opacity:.56746030000000003;fill:url(#linearGradient4021);fill-opacity:1;stroke:none;filter:url(#filter4055)" id="rect4013" width="96" height="24" x="0" y="72" rx="14.008" ry="12" transform="matrix(0.9768331,0,0,0.91974646,1.1649641,8.098115)"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 1920 1920">
<rect fill="#1872a2" x="60" y="60" width="1800" height="1800" rx="333"/>
<path fill="#febf19" d="M40 371q0-136 98-234 98-97 234-97h1178q136 0 233 97 97 98 97 234v1178q0 136-97 234-97 97-233 97H372q-137 0-234-97-97-98-98-234Zm1510-258h-296v442H666v373l587-4 1 441H666v442h884q107 0 182-75 75-74 74-183V371q0-108-74-182-74-75-182-76z"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 434 B

View file

@ -28,12 +28,14 @@ use Friendica\Content\Nav;
use Friendica\Content\Widget;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Event;
use Friendica\Model\Item;
use Friendica\Model\User;
use Friendica\Module\BaseProfile;
use Friendica\Module\Response;
use Friendica\Network\HTTPException;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Temporal;
@ -216,8 +218,7 @@ function cal_content(App $a)
$events = Event::prepareListForTemplate($r);
if (!empty(DI::args()->getArgv()[2]) && (DI::args()->getArgv()[2] === 'json')) {
echo json_encode($events);
exit();
System::jsonExit($events);
}
// links: array('href', 'text', 'extra css classes', 'title')
@ -253,8 +254,7 @@ function cal_content(App $a)
]);
if (!empty($_GET['id'])) {
echo $o;
exit();
System::httpExit($o);
}
return $o;
@ -289,10 +289,8 @@ function cal_content(App $a)
// If nothing went wrong we can echo the export content
if ($evexport["success"]) {
header('Content-type: text/calendar');
header('content-disposition: attachment; filename="' . DI::l10n()->t('calendar') . '-' . $nick . '.' . $evexport["extension"] . '"');
echo $evexport["content"];
exit();
System::httpExit($evexport["content"], Response::TYPE_BLANK, 'text/calendar');
}
return;

View file

@ -23,9 +23,9 @@ use Friendica\App;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Widget;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
@ -33,9 +33,12 @@ use Friendica\Model\Item;
use Friendica\Model\Post;
use Friendica\Model\User;
use Friendica\Module\ActivityPub\Objects;
use Friendica\Module\Response;
use Friendica\Network\HTTPException;
use Friendica\Protocol\ActivityPub;
use Friendica\Protocol\DFRN;
use Friendica\Protocol\Diaspora;
use Friendica\Util\DateTimeFormat;
function display_init(App $a)
{
@ -104,59 +107,34 @@ function display_init(App $a)
}
if ($item['gravity'] != GRAVITY_PARENT) {
$parent = Post::selectFirstForUser($item_user, $fields, ['uid' => $item['uid'], 'uri-id' => $item['parent-uri-id']]);
$parent = Post::selectFirstForUser($item_user, $fields, ['uid' => [0, $item_user], 'uri-id' => $item['parent-uri-id']], ['order' => ['uid' => true]]);
$item = $parent ?: $item;
}
$profiledata = display_fetchauthor($item);
$author = display_fetchauthor($item);
DI::page()['aside'] = Widget\VCard::getHTML($profiledata);
if (\Friendica\Util\Network::isLocalLink($author['url'])) {
\Friendica\Model\Profile::load(DI::app(), $author['nick'], false);
} else {
DI::page()['aside'] = Widget\VCard::getHTML($author);
}
$a->setProfileOwner($item['uid']);
}
function display_fetchauthor($item)
{
$profiledata = Contact::getByURLForUser($item['author-link'], local_user());
// Check for a repeated message
$shared = Item::getShareArray($item);
if (!empty($shared) && empty($shared['comment'])) {
$profiledata = [
'uid' => 0,
'id' => -1,
'nickname' => '',
'name' => '',
'picdate' => '',
'photo' => '',
'url' => '',
'network' => '',
];
if (!empty($shared['author'])) {
$profiledata['name'] = $shared['author'];
}
if (Diaspora::isReshare($item['body'], true)) {
$shared = Item::getShareArray($item);
if (!empty($shared['profile'])) {
$profiledata['url'] = $shared['profile'];
$contact = Contact::getByURLForUser($shared['profile'], local_user());
}
if (!empty($shared['avatar'])) {
$profiledata['photo'] = $shared['avatar'];
}
$profiledata['nickname'] = $profiledata['name'];
$profiledata['network'] = Protocol::PHANTOM;
$profiledata['address'] = '';
$profiledata['about'] = '';
$profiledata = Contact::getByURLForUser($profiledata['url'], local_user()) ?: $profiledata;
}
if (!empty($profiledata['photo'])) {
$profiledata['photo'] = DI::baseUrl()->remove($profiledata['photo']);
if (empty($contact)) {
$contact = Contact::getById($item['author-id']);
}
return $profiledata;
return $contact;
}
function display_content(App $a, $update = false, $update_uid = 0)
@ -182,6 +160,20 @@ function display_content(App $a, $update = false, $update_uid = 0)
}
$parent_uri_id = $item['parent-uri-id'];
}
if (empty($_REQUEST['force'])) {
$browser_update = intval(DI::pConfig()->get($update_uid, 'system', 'update_interval'));
if (!empty($browser_update)) {
$update_date = date(DateTimeFormat::MYSQL, time() - ($browser_update / 500));
if (!Post::exists(["`parent-uri-id` = ? AND `uid` IN (?, ?) AND `received` > ?", $parent_uri_id, 0, $update_uid, $update_date])) {
Logger::debug('No updated content', ['uri-id' => $uri_id, 'uid' => $update_uid, 'updated' => $update_date]);
return '';
} else {
Logger::debug('Updated content found', ['uri-id' => $uri_id, 'uid' => $update_uid, 'updated' => $update_date]);
}
}
} else {
Logger::debug('Forced content update', ['uri-id' => $uri_id, 'uid' => $update_uid]);
}
} else {
$uri_id = ((DI::args()->getArgc() > 2) ? DI::args()->getArgv()[2] : 0);
$parent_uri_id = $uri_id;
@ -374,7 +366,6 @@ function displayShowFeed(int $uri_id, int $uid, bool $conversation)
if ($xml == '') {
throw new HTTPException\InternalServerErrorException(DI::l10n()->t('The feed for this item is unavailable.'));
}
header("Content-type: application/atom+xml");
echo $xml;
exit();
System::httpExit($xml, Response::TYPE_ATOM);
}

View file

@ -27,6 +27,7 @@ use Friendica\Core\ACL;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\Core\Theme;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
@ -122,8 +123,7 @@ function events_post(App $a)
if (strcmp($finish, $start) < 0 && !$nofinish) {
notice(DI::l10n()->t('Event can not end before it has started.'));
if (intval($_REQUEST['preview'])) {
echo DI::l10n()->t('Event can not end before it has started.');
exit();
System::httpExit(DI::l10n()->t('Event can not end before it has started.'));
}
DI::baseUrl()->redirect($onerror_path);
}
@ -131,8 +131,7 @@ function events_post(App $a)
if (!$summary || ($start === DBA::NULL_DATETIME)) {
notice(DI::l10n()->t('Event title and start time are required.'));
if (intval($_REQUEST['preview'])) {
echo DI::l10n()->t('Event title and start time are required.');
exit();
System::httpExit(DI::l10n()->t('Event title and start time are required.'));
}
DI::baseUrl()->redirect($onerror_path);
}
@ -192,9 +191,7 @@ function events_post(App $a)
$datarray['id'] = $event_id;
if (intval($_REQUEST['preview'])) {
$html = Event::getHTML($datarray);
echo $html;
exit();
System::httpExit(Event::getHTML($datarray));
}
$event_id = Event::store($datarray);
@ -391,8 +388,7 @@ function events_content(App $a)
]);
if (!empty($_GET['id'])) {
echo $o;
exit();
System::httpExit($o);
}
return $o;

View file

@ -24,6 +24,7 @@
use Friendica\App;
use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Photo;
@ -38,15 +39,15 @@ use Friendica\Util\Strings;
function fbrowser_content(App $a)
{
if (!local_user()) {
exit();
System::exit();
}
if (DI::args()->getArgc() == 1) {
exit();
System::exit();
}
// Needed to match the correct template in a module that uses a different theme than the user/site/default
$theme = Strings::sanitizeFilePathItem($_GET['theme'] ?? null);
$theme = Strings::sanitizeFilePathItem($_GET['theme'] ?? '');
if ($theme && is_file("view/theme/$theme/config.php")) {
$a->setCurrentTheme($theme);
}
@ -153,7 +154,6 @@ function fbrowser_content(App $a)
if (!empty($_GET['mode'])) {
return $o;
} else {
echo $o;
exit();
System::httpExit($o);
}
}

View file

@ -29,7 +29,6 @@
*/
use Friendica\App;
use Friendica\Content\Item as ItemHelper;
use Friendica\Content\PageInfo;
use Friendica\Content\Text\BBCode;
use Friendica\Core\Hook;
@ -37,10 +36,8 @@ use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Session;
use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\APContact;
use Friendica\Model\Attach;
use Friendica\Model\Contact;
use Friendica\Model\Conversation;
@ -58,7 +55,6 @@ use Friendica\Protocol\Activity;
use Friendica\Security\Security;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\ParseUrl;
use Friendica\Worker\Delivery;
function item_post(App $a) {
if (!Session::isAuthenticated()) {
@ -384,80 +380,34 @@ function item_post(App $a) {
$contact_record = DBA::selectFirst('contact', [], ['uid' => $profile_uid, 'self' => true]) ?: [];
}
// Look for any tags and linkify them
$inform = '';
$private_forum = false;
$private_id = null;
$only_to_forum = false;
$forum_contact = [];
// Personal notes must never be altered to a forum post.
if ($posttype != Item::PT_PERSONAL_NOTE) {
// Convert mentions in the body to a unified format
$body = BBCode::setMentions($body, local_user() ? local_user() : $profile_uid, $network);
// Look for any tags and linkify them
$item = [
'uid' => local_user() ? local_user() : $profile_uid,
'gravity' => $toplevel_item_id ? GRAVITY_COMMENT : GRAVITY_PARENT,
'network' => $network,
'body' => $body,
'postopts' => $postopts,
'private' => $private,
'allow_cid' => $str_contact_allow,
'allow_gid' => $str_group_allow,
'deny_cid' => $str_contact_deny,
'deny_gid' => $str_group_deny,
];
// Search for forum mentions
foreach (Tag::getFromBody($body, Tag::TAG_CHARACTER[Tag::MENTION] . Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) {
$contact = Contact::getByURLForUser($tag[2], $profile_uid);
if (!empty($inform)) {
$inform .= ',';
}
$inform .= 'cid:' . $contact['id'];
$item = DI::contentItem()->expandTags($item);
if (!$toplevel_item_id || empty($contact['cid']) || ($contact['contact-type'] != Contact::TYPE_COMMUNITY)) {
continue;
}
if (!empty($contact['prv']) || ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION])) {
$private_forum = $contact['prv'];
$only_to_forum = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]);
$private_id = $contact['id'];
$forum_contact = $contact;
Logger::info('Private forum or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]);
} elseif ($str_contact_allow == '<' . $contact['id'] . '>') {
$private_forum = false;
$only_to_forum = true;
$private_id = $contact['id'];
$forum_contact = $contact;
Logger::info('Public forum', ['url' => $tag[2], 'mention' => $tag[1]]);
} else {
Logger::info('Post with forum mention will not be converted to a forum post', ['url' => $tag[2], 'mention' => $tag[1]]);
}
}
Logger::info('Got inform', ['inform' => $inform]);
}
$original_contact_id = $contact_id;
if (!$toplevel_item_id && !empty($forum_contact) && ($private_forum || $only_to_forum)) {
// we tagged a forum in a top level post. Now we change the post
$private = $private_forum ? Item::PRIVATE : Item::UNLISTED;
if ($only_to_forum) {
$postopts = '';
}
if (!$private_forum) {
$str_contact_allow = '';
$str_group_allow = '';
$str_contact_deny = '';
$str_group_deny = '';
}
if ($private_forum || !APContact::getByURL($forum_contact['url'])) {
$str_group_allow = '';
$str_contact_deny = '';
$str_group_deny = '';
if ($private_forum) {
$str_contact_allow = '<' . $private_id . '>';
} else {
$str_contact_allow = '';
}
$contact_id = $private_id;
$contact_record = $forum_contact;
$_REQUEST['origin'] = false;
$wall = 0;
}
$body = $item['body'];
$inform = $item['inform'];
$postopts = $item['postopts'];
$private = $item['private'];
$str_contact_allow = $item['allow_cid'];
$str_group_allow = $item['allow_gid'];
$str_contact_deny = $item['deny_cid'];
$str_group_deny = $item['deny_gid'];
} else {
$inform = '';
}
/*
@ -472,7 +422,7 @@ function item_post(App $a) {
$match = null;
if (!$preview && Photo::setPermissionFromBody($body, $uid, $original_contact_id, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny)) {
if (!$preview && Photo::setPermissionFromBody($body, $uid, $contact_id, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny)) {
$objecttype = Activity\ObjectType::IMAGE;
}
@ -487,7 +437,7 @@ function item_post(App $a) {
if (count($attaches)) {
foreach ($attaches as $attach) {
// Ensure to only modify attachments that you own
$srch = '<' . intval($original_contact_id) . '>';
$srch = '<' . intval($contact_id) . '>';
$condition = ['allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '',
'id' => $attach];
@ -591,11 +541,11 @@ function item_post(App $a) {
$datarray['author-link'] = $author['url'];
$datarray['author-avatar'] = $author['thumb'];
$datarray['author-id'] = Contact::getIdForURL($datarray['author-link']);
$datarray['created'] = DateTimeFormat::utcNow();
$datarray['edited'] = DateTimeFormat::utcNow();
$datarray['commented'] = DateTimeFormat::utcNow();
$datarray['created'] = empty($_REQUEST['created_at']) ? DateTimeFormat::utcNow() : $_REQUEST['created_at'];
$datarray['edited'] = $datarray['created'];
$datarray['commented'] = $datarray['created'];
$datarray['changed'] = $datarray['created'];
$datarray['received'] = DateTimeFormat::utcNow();
$datarray['changed'] = DateTimeFormat::utcNow();
$datarray['extid'] = $extid;
$datarray['guid'] = $guid;
$datarray['uri'] = $uri;
@ -671,6 +621,11 @@ function item_post(App $a) {
$datarray["id"] = -1;
$datarray["uri-id"] = -1;
$datarray["author-network"] = Protocol::DFRN;
$datarray["author-updated"] = '';
$datarray["author-gsid"] = 0;
$datarray["author-uri-id"] = ItemURI::getIdByURI($datarray["author-link"]);
$datarray["owner-updated"] = '';
$datarray["has-media"] = false;
$o = DI::conversation()->create([array_merge($contact_record, $datarray)], 'search', false, true);
@ -713,21 +668,17 @@ function item_post(App $a) {
$datarray['uri-id'] = ItemURI::getIdByURI($datarray['uri']);
if ($orig_post) {
// Fill the cache field
// This could be done in Item::update as well - but we have to check for the existance of some fields.
Item::putInCache($datarray);
$fields = [
'title' => $datarray['title'],
'body' => $datarray['body'],
'attach' => $datarray['attach'],
'file' => $datarray['file'],
'rendered-html' => $datarray['rendered-html'],
'rendered-hash' => $datarray['rendered-hash'],
'edited' => DateTimeFormat::utcNow(),
'changed' => DateTimeFormat::utcNow()];
'changed' => DateTimeFormat::utcNow()
];
Item::update($fields, ['id' => $post_id]);
Item::updateDisplayCache($datarray['uri-id']);
if ($return_path) {
DI::baseUrl()->redirect($return_path);
@ -809,12 +760,6 @@ function item_post(App $a) {
}
}
// When we are doing some forum posting via ! we have to start the notifier manually.
// These kind of posts don't initiate the notifier call in the item class.
if ($only_to_forum) {
Worker::add(['priority' => PRIORITY_HIGH, 'dont_fork' => false], "Notifier", Delivery::POST, (int)$datarray['uri-id'], (int)$datarray['uid']);
}
Logger::info('post_complete');
if ($api_source) {

View file

@ -308,7 +308,7 @@ function message_content(App $a)
$body_e = BBCode::convertForUriId($message['uri-id'], $message['body']);
$to_name_e = $message['name'];
$contact = Contact::getByURL($message['from-url'], false, ['thumb', 'addr', 'id', 'avatar']);
$contact = Contact::getByURL($message['from-url'], false, ['thumb', 'addr', 'id', 'avatar', 'url']);
$from_photo = Contact::getThumb($contact);
$mails[] = [
@ -440,7 +440,7 @@ function render_messages(array $msg, $t)
continue;
}
$contact = Contact::getByURL($rr['url'], false, ['thumb', 'addr', 'id', 'avatar']);
$contact = Contact::getByURL($rr['url'], false, ['thumb', 'addr', 'id', 'avatar', 'url']);
$from_photo = Contact::getThumb($contact);
$rslt .= Renderer::replaceMacros($tpl, [

View file

@ -20,6 +20,7 @@
*/
use Friendica\App;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\User;
@ -37,8 +38,7 @@ function msearch_post(App $a)
if (!strlen($search)) {
$output = ['total' => 0, 'items_page' => $perpage, 'page' => $page, 'results' => $results];
echo json_encode($output);
exit();
System::jsonExit($output);
}
$total = 0;
@ -60,7 +60,5 @@ function msearch_post(App $a)
$output = ['total' => $total, 'items_page' => $perpage, 'page' => $page, 'results' => $results];
echo json_encode($output);
exit();
System::jsonExit($output);
}

View file

@ -21,7 +21,9 @@
use Friendica\App;
use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\DI;
use Friendica\Module\Response;
use Friendica\Module\Security\Login;
function oexchange_init(App $a) {
@ -30,8 +32,7 @@ function oexchange_init(App $a) {
$tpl = Renderer::getMarkupTemplate('oexchange_xrd.tpl');
$o = Renderer::replaceMacros($tpl, ['$base' => DI::baseUrl()]);
echo $o;
exit();
System::httpExit($o, Response::TYPE_XML, 'application/xrd+xml');
}
}

View file

@ -24,6 +24,7 @@ use Friendica\Core\Protocol;
use Friendica\DI;
use Friendica\Model\APContact;
use Friendica\Model\Contact;
use Friendica\Network\HTTPClient\Client\HttpClientAccept;
use Friendica\Protocol\ActivityPub;
function ostatus_subscribe_content(App $a)
@ -57,7 +58,7 @@ function ostatus_subscribe_content(App $a)
$api = $contact['baseurl'] . '/api/';
// Fetching friends
$curlResult = DI::httpClient()->get($api . 'statuses/friends.json?screen_name=' . $contact['nick']);
$curlResult = DI::httpClient()->get($api . 'statuses/friends.json?screen_name=' . $contact['nick'], HttpClientAccept::JSON);
if (!$curlResult->isSuccess()) {
DI::pConfig()->delete($uid, 'ostatus', 'legacy_contact');

View file

@ -65,7 +65,7 @@ function photos_init(App $a) {
if (DI::args()->getArgc() > 1) {
$owner = User::getOwnerDataByNick(DI::args()->getArgv()[1]);
if (!$owner) {
if (empty($owner) || $owner['account_removed']) {
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
@ -158,7 +158,7 @@ function photos_post(App $a)
if (!$can_post) {
notice(DI::l10n()->t('Permission denied.'));
exit();
System::exit();
}
$owner_record = User::getOwnerDataById($page_owner_uid);
@ -166,7 +166,7 @@ function photos_post(App $a)
if (!$owner_record) {
notice(DI::l10n()->t('Contact information unavailable'));
DI::logger()->info('photos_post: unable to locate contact record for page owner. uid=' . $page_owner_uid);
exit();
System::exit();
}
$aclFormatter = DI::aclFormatter();
@ -187,7 +187,7 @@ function photos_post(App $a)
}
if (DI::args()->getArgc() > 3 && DI::args()->getArgv()[2] === 'album') {
if (!Strings::isHex(DI::args()->getArgv()[3])) {
if (!Strings::isHex(DI::args()->getArgv()[3] ?? '')) {
DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album');
}
$album = hex2bin(DI::args()->getArgv()[3]);
@ -355,12 +355,6 @@ function photos_post(App $a)
if ($albname !== $origaname) {
Photo::clearAlbumCache($page_owner_uid);
}
/* Don't make the item visible if the only change was the album name */
$visibility = 0;
if ($photo['desc'] !== $desc || strlen($rawtags)) {
$visibility = 1;
}
}
if (DBA::isResult($photos) && !$item_id) {
@ -387,7 +381,7 @@ function photos_post(App $a)
$arr['allow_gid'] = $photo['allow_gid'];
$arr['deny_cid'] = $photo['deny_cid'];
$arr['deny_gid'] = $photo['deny_gid'];
$arr['visible'] = $visibility;
$arr['visible'] = 0;
$arr['origin'] = 1;
$arr['body'] = '[url=' . DI::baseUrl() . '/photos/' . $user['nickname'] . '/image/' . $photo['resource-id'] . ']'
@ -549,7 +543,7 @@ function photos_post(App $a)
$arr['allow_gid'] = $photo['allow_gid'];
$arr['deny_cid'] = $photo['deny_cid'];
$arr['deny_gid'] = $photo['deny_gid'];
$arr['visible'] = 1;
$arr['visible'] = 0;
$arr['verb'] = Activity::TAG;
$arr['gravity'] = GRAVITY_PARENT;
$arr['object-type'] = Activity\ObjectType::PERSON;
@ -898,7 +892,7 @@ function photos_content(App $a)
return;
}
$selname = Strings::isHex($datum) ? hex2bin($datum) : '';
$selname = (!is_null($datum) && Strings::isHex($datum)) ? hex2bin($datum) : '';
$albumselect = '';
@ -960,7 +954,7 @@ function photos_content(App $a)
// Display a single photo album
if ($datatype === 'album') {
// if $datum is not a valid hex, redirect to the default page
if (!Strings::isHex($datum)) {
if (is_null($datum) || !Strings::isHex($datum)) {
DI::baseUrl()->redirect('photos/' . $user['nickname']. '/album');
}
$album = hex2bin($datum);
@ -1090,7 +1084,7 @@ function photos_content(App $a)
// Display one photo
if ($datatype === 'image') {
// fetch image, item containing image, then comments
$ph = Photo::selectToArray([], ["`uid` = ? AND `resource-id` = ? " . $sql_extra, $owner_uid, $datum], ['order' => ['scale' => true]]);
$ph = Photo::selectToArray([], ["`uid` = ? AND `resource-id` = ? " . $sql_extra, $owner_uid, $datum], ['order' => ['scale']]);
if (!DBA::isResult($ph)) {
if (DBA::exists('photo', ['resource-id' => $datum, 'uid' => $owner_uid])) {
@ -1129,12 +1123,14 @@ function photos_content(App $a)
$order_field = $_GET['order'] ?? '';
if ($order_field === 'posted') {
$order = 'ASC';
$params = ['order' => [$order_field]];
} elseif (!empty($order_field)) {
$params = ['order' => [$order_field => true]];
} else {
$order = 'DESC';
$params = [];
}
$prvnxt = Photo::selectToArray(['resource-id'], ["`album` = ? AND `uid` = ? AND `scale` = ?" . $sql_extra, $ph[0]['album'], $owner_uid, 0]);
$prvnxt = Photo::selectToArray(['resource-id'], ["`album` = ? AND `uid` = ? AND `scale` = ?" . $sql_extra, $ph[0]['album'], $owner_uid, 0], $params);
if (DBA::isResult($prvnxt)) {
$prv = null;
@ -1257,14 +1253,12 @@ function photos_content(App $a)
$tags = null;
if (!empty($link_item['id'])) {
$tag_text = Tag::getCSVByURIId($link_item['uri-id']);
$arr = explode(',', $tag_text);
// parse tags and add links
$tag_arr = [];
foreach ($arr as $tag) {
foreach (Tag::getByURIId($link_item['uri-id']) as $tag) {
$tag_arr[] = [
'name' => BBCode::convert($tag),
'removeurl' => '/tagrm/' . $link_item['id'] . '/' . bin2hex($tag)
'name' => $tag['name'],
'removeurl' => '/tagrm/' . $link_item['id'] . '/' . bin2hex($tag['name'])
];
}
$tags = ['title' => DI::l10n()->t('Tags: '), 'tags' => $tag_arr];

View file

@ -1,531 +0,0 @@
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
use Friendica\App;
use Friendica\Content\ForumManager;
use Friendica\Content\Text\BBCode;
use Friendica\Core\Cache\Enum\Duration;
use Friendica\Core\Hook;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Group;
use Friendica\Model\Notification;
use Friendica\Model\Post;
use Friendica\Model\Verb;
use Friendica\Protocol\Activity;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Proxy;
use Friendica\Util\Temporal;
use Friendica\Util\XML;
/**
* Outputs the counts and the lists of various notifications
*
* The output format can be controlled via the GET parameter 'format'. It can be
* - xml (deprecated legacy default)
* - json (outputs JSONP with the 'callback' GET parameter)
*
* Expected JSON structure:
* {
* "result": {
* "intro": 0,
* "mail": 0,
* "net": 0,
* "home": 0,
* "register": 0,
* "all-events": 0,
* "all-events-today": 0,
* "events": 0,
* "events-today": 0,
* "birthdays": 0,
* "birthdays-today": 0,
* "groups": [ ],
* "forums": [ ],
* "notification": 0,
* "notifications": [ ],
* "sysmsgs": {
* "notice": [ ],
* "info": [ ]
* }
* }
* }
*
* @param App $a The Friendica App instance
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function ping_init(App $a)
{
$format = 'xml';
if (isset($_GET['format']) && $_GET['format'] == 'json') {
$format = 'json';
}
$regs = [];
$notifications = [];
$intro_count = 0;
$mail_count = 0;
$home_count = 0;
$network_count = 0;
$register_count = 0;
$sysnotify_count = 0;
$groups_unseen = [];
$forums_unseen = [];
$all_events = 0;
$all_events_today = 0;
$events = 0;
$events_today = 0;
$birthdays = 0;
$birthdays_today = 0;
$data = [];
$data['intro'] = $intro_count;
$data['mail'] = $mail_count;
$data['net'] = $network_count;
$data['home'] = $home_count;
$data['register'] = $register_count;
$data['all-events'] = $all_events;
$data['all-events-today'] = $all_events_today;
$data['events'] = $events;
$data['events-today'] = $events_today;
$data['birthdays'] = $birthdays;
$data['birthdays-today'] = $birthdays_today;
if (local_user()) {
// Different login session than the page that is calling us.
if (!empty($_GET['uid']) && intval($_GET['uid']) != local_user()) {
$data = ['result' => ['invalid' => 1]];
if ($format == 'json') {
if (isset($_GET['callback'])) {
// JSONP support
header("Content-type: application/javascript");
echo $_GET['callback'] . '(' . json_encode($data) . ')';
} else {
header("Content-type: application/json");
echo json_encode($data);
}
} else {
header("Content-type: text/xml");
echo XML::fromArray($data, $xml);
}
exit();
}
$notifications = ping_get_notifications(local_user());
$condition = ["`unseen` AND `uid` = ? AND NOT `origin` AND (`vid` != ? OR `vid` IS NULL)",
local_user(), Verb::getID(Activity::FOLLOW)];
$items = Post::selectForUser(local_user(), ['wall', 'uid', 'uri-id'], $condition, ['limit' => 1000]);
if (DBA::isResult($items)) {
$items_unseen = Post::toArray($items, false);
$arr = ['items' => $items_unseen];
Hook::callAll('network_ping', $arr);
foreach ($items_unseen as $item) {
if ($item['wall']) {
$home_count++;
} else {
$network_count++;
}
}
}
DBA::close($items);
if ($network_count) {
// Find out how unseen network posts are spread across groups
$group_counts = Group::countUnseen();
if (DBA::isResult($group_counts)) {
foreach ($group_counts as $group_count) {
if ($group_count['count'] > 0) {
$groups_unseen[] = $group_count;
}
}
}
$forum_counts = ForumManager::countUnseenItems();
if (DBA::isResult($forum_counts)) {
foreach ($forum_counts as $forum_count) {
if ($forum_count['count'] > 0) {
$forums_unseen[] = $forum_count;
}
}
}
}
$intros1 = DBA::toArray(DBA::p(
"SELECT `intro`.`id`, `intro`.`datetime`,
`contact`.`name`, `contact`.`url`, `contact`.`photo`
FROM `intro` INNER JOIN `contact` ON `intro`.`suggest-cid` = `contact`.`id`
WHERE `intro`.`uid` = ? AND NOT `intro`.`blocked` AND NOT `intro`.`ignore` AND `intro`.`suggest-cid` != 0",
local_user()
));
$intros2 = DBA::toArray(DBA::p(
"SELECT `intro`.`id`, `intro`.`datetime`,
`contact`.`name`, `contact`.`url`, `contact`.`photo`
FROM `intro` INNER JOIN `contact` ON `intro`.`contact-id` = `contact`.`id`
WHERE `intro`.`uid` = ? AND NOT `intro`.`blocked` AND NOT `intro`.`ignore` AND `intro`.`contact-id` != 0 AND (`intro`.`suggest-cid` = 0 OR `intro`.`suggest-cid` IS NULL)",
local_user()
));
$intro_count = count($intros1) + count($intros2);
$intros = $intros1 + $intros2;
$myurl = DI::baseUrl() . '/profile/' . $a->getLoggedInUserNickname();
$mail_count = DBA::count('mail', ["`uid` = ? AND NOT `seen` AND `from-url` != ?", local_user(), $myurl]);
if (intval(DI::config()->get('config', 'register_policy')) === \Friendica\Module\Register::APPROVE && $a->isSiteAdmin()) {
$regs = Friendica\Model\Register::getPending();
if (DBA::isResult($regs)) {
$register_count = count($regs);
}
}
$cachekey = "ping_init:".local_user();
$ev = DI::cache()->get($cachekey);
if (is_null($ev)) {
$ev = DBA::selectToArray('event', ['type', 'start'],
["`uid` = ? AND `start` < ? AND `finish` > ? AND NOT `ignore`",
local_user(), DateTimeFormat::utc('now + 7 days'), DateTimeFormat::utcNow()]);
if (DBA::isResult($ev)) {
DI::cache()->set($cachekey, $ev, Duration::HOUR);
}
}
if (DBA::isResult($ev)) {
$all_events = count($ev);
if ($all_events) {
$str_now = DateTimeFormat::localNow('Y-m-d');
foreach ($ev as $x) {
$bd = false;
if ($x['type'] === 'birthday') {
$birthdays ++;
$bd = true;
} else {
$events ++;
}
if (DateTimeFormat::local($x['start'], 'Y-m-d') === $str_now) {
$all_events_today ++;
if ($bd) {
$birthdays_today ++;
} else {
$events_today ++;
}
}
}
}
}
$data['intro'] = $intro_count;
$data['mail'] = $mail_count;
$data['net'] = ($network_count < 1000) ? $network_count : '999+';
$data['home'] = ($home_count < 1000) ? $home_count : '999+';
$data['register'] = $register_count;
$data['all-events'] = $all_events;
$data['all-events-today'] = $all_events_today;
$data['events'] = $events;
$data['events-today'] = $events_today;
$data['birthdays'] = $birthdays;
$data['birthdays-today'] = $birthdays_today;
if (DBA::isResult($notifications)) {
foreach ($notifications as $notif) {
if ($notif['seen'] == 0) {
$sysnotify_count ++;
}
}
}
// merge all notification types in one array
if (DBA::isResult($intros)) {
foreach ($intros as $intro) {
$notif = [
'id' => 0,
'href' => DI::baseUrl() . '/notifications/intros/' . $intro['id'],
'name' => BBCode::convert($intro['name']),
'url' => $intro['url'],
'photo' => $intro['photo'],
'date' => $intro['datetime'],
'seen' => false,
'message' => DI::l10n()->t('{0} wants to be your friend'),
];
$notifications[] = $notif;
}
}
if (DBA::isResult($regs)) {
if (count($regs) <= 1 || DI::pConfig()->get(local_user(), 'system', 'detailed_notif')) {
foreach ($regs as $reg) {
$notif = [
'id' => 0,
'href' => DI::baseUrl() . '/admin/users/pending',
'name' => $reg['name'],
'url' => $reg['url'],
'photo' => $reg['micro'],
'date' => $reg['created'],
'seen' => false,
'message' => DI::l10n()->t('{0} requested registration'),
];
$notifications[] = $notif;
}
} else {
$notif = [
'id' => 0,
'href' => DI::baseUrl() . '/admin/users/pending',
'name' => $regs[0]['name'],
'url' => $regs[0]['url'],
'photo' => $regs[0]['micro'],
'date' => $regs[0]['created'],
'seen' => false,
'message' => DI::l10n()->t('{0} and %d others requested registration', count($regs) - 1),
];
$notifications[] = $notif;
}
}
// sort notifications by $[]['date']
$sort_function = function ($a, $b) {
$adate = strtotime($a['date']);
$bdate = strtotime($b['date']);
// Unseen messages are kept at the top
// The value 31536000 means one year. This should be enough :-)
if (!$a['seen']) {
$adate += 31536000;
}
if (!$b['seen']) {
$bdate += 31536000;
}
if ($adate == $bdate) {
return 0;
}
return ($adate < $bdate) ? 1 : -1;
};
usort($notifications, $sort_function);
array_walk($notifications, function (&$notification) {
$notification['photo'] = Contact::getAvatarUrlForUrl($notification['url'], local_user(), Proxy::SIZE_MICRO);
$notification['timestamp'] = DateTimeFormat::local($notification['date']);
$notification['date'] = Temporal::getRelativeDate($notification['date']);
});
}
$sysmsgs = [];
$sysmsgs_info = [];
if (!empty($_SESSION['sysmsg'])) {
$sysmsgs = $_SESSION['sysmsg'];
unset($_SESSION['sysmsg']);
}
if (!empty($_SESSION['sysmsg_info'])) {
$sysmsgs_info = $_SESSION['sysmsg_info'];
unset($_SESSION['sysmsg_info']);
}
if ($format == 'json') {
$notification_count = $sysnotify_count + $intro_count + $register_count;
$data['groups'] = $groups_unseen;
$data['forums'] = $forums_unseen;
$data['notification'] = ($notification_count < 50) ? $notification_count : '49+';
$data['notifications'] = $notifications;
$data['sysmsgs'] = [
'notice' => $sysmsgs,
'info' => $sysmsgs_info
];
$json_payload = json_encode(["result" => $data]);
if (isset($_GET['callback'])) {
// JSONP support
header("Content-type: application/javascript");
echo $_GET['callback'] . '(' . $json_payload . ')';
} else {
header("Content-type: application/json");
echo $json_payload;
}
} else {
// Legacy slower XML format output
$data = ping_format_xml_data($data, $sysnotify_count, $notifications, $sysmsgs, $sysmsgs_info, $groups_unseen, $forums_unseen);
header("Content-type: text/xml");
echo XML::fromArray(["result" => $data], $xml);
}
exit();
}
/**
* Retrieves the notifications array for the given user ID
*
* @param int $uid User id
* @return array Associative array of notifications
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function ping_get_notifications($uid)
{
$result = [];
$offset = 0;
$seen = false;
$seensql = "NOT";
$order = "DESC";
$quit = false;
do {
$r = DBA::toArray(DBA::p(
"SELECT `notify`.*, `post`.`visible`, `post`.`deleted`
FROM `notify` LEFT JOIN `post` ON `post`.`uri-id` = `notify`.`uri-id`
WHERE `notify`.`uid` = ? AND `notify`.`msg` != ''
AND NOT (`notify`.`type` IN (?, ?))
AND $seensql `notify`.`seen` ORDER BY `notify`.`date` $order LIMIT ?, 50",
$uid,
Notification\Type::INTRO,
Notification\Type::MAIL,
$offset
));
if (!$r && !$seen) {
$seen = true;
$seensql = "";
$order = "DESC";
$offset = 0;
} elseif (!$r) {
$quit = true;
} else {
$offset += 50;
}
foreach ($r as $notification) {
if (is_null($notification["visible"])) {
$notification["visible"] = true;
}
if (is_null($notification["deleted"])) {
$notification["deleted"] = 0;
}
if ($notification["msg_cache"]) {
$notification["name"] = $notification["name_cache"];
$notification["message"] = $notification["msg_cache"];
} else {
$notification["name"] = strip_tags(BBCode::convert($notification["name"]));
$notification["message"] = \Friendica\Navigation\Notifications\Entity\Notify::formatMessage($notification["name"], BBCode::toPlaintext($notification["msg"]));
// @todo Replace this with a call of the Notify model class
DBA::update('notify', ['name_cache' => $notification["name"], 'msg_cache' => $notification["message"]], ['id' => $notification["id"]]);
}
$notification["href"] = DI::baseUrl() . "/notification/" . $notification["id"];
if ($notification["visible"]
&& !$notification["deleted"]
&& empty($result['p:' . $notification['parent']])
) {
// Should we condense the notifications or show them all?
if (($notification['verb'] != Activity::POST) || DI::pConfig()->get(local_user(), 'system', 'detailed_notif')) {
$result[] = $notification;
} else {
$result['p:' . $notification['parent']] = $notification;
}
}
}
} while ((count($result) < 50) && !$quit);
return($result);
}
/**
* Backward-compatible XML formatting for ping.php output
* @deprecated
*
* @param array $data The initial ping data array
* @param int $sysnotify_count Number of unseen system notifications
* @param array $notifs Complete list of notification
* @param array $sysmsgs List of system notice messages
* @param array $sysmsgs_info List of system info messages
* @param array $groups_unseen List of unseen group items
* @param array $forums_unseen List of unseen forum items
*
* @return array XML-transform ready data array
*/
function ping_format_xml_data($data, $sysnotify_count, $notifs, $sysmsgs, $sysmsgs_info, $groups_unseen, $forums_unseen)
{
$notifications = [];
foreach ($notifs as $key => $notif) {
$notifications[$key . ':note'] = $notif['message'];
$notifications[$key . ':@attributes'] = [
'id' => $notif['id'],
'href' => $notif['href'],
'name' => $notif['name'],
'url' => $notif['url'],
'photo' => $notif['photo'],
'date' => $notif['date'],
'seen' => $notif['seen'],
'timestamp' => $notif['timestamp']
];
}
$sysmsg = [];
foreach ($sysmsgs as $key => $m) {
$sysmsg[$key . ':notice'] = $m;
}
foreach ($sysmsgs_info as $key => $m) {
$sysmsg[$key . ':info'] = $m;
}
$data['notif'] = $notifications;
$data['@attributes'] = ['count' => $sysnotify_count + $data['intro'] + $data['mail'] + $data['register']];
$data['sysmsgs'] = $sysmsg;
if ($data['register'] == 0) {
unset($data['register']);
}
$groups = [];
if (count($groups_unseen)) {
foreach ($groups_unseen as $key => $item) {
$groups[$key . ':group'] = $item['count'];
$groups[$key . ':@attributes'] = ['id' => $item['id']];
}
$data['groups'] = $groups;
}
$forums = [];
if (count($forums_unseen)) {
foreach ($forums_unseen as $key => $item) {
$forums[$key . ':forum'] = $item['count'];
$forums[$key . ':@attributes'] = ['id' => $item['id']];
}
$data['forums'] = $forums;
}
return $data;
}

View file

@ -25,9 +25,11 @@ use Friendica\Content\Text\BBCode;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Util\Strings;
use Friendica\Module\Response;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\XML;
function poco_init(App $a) {
@ -121,10 +123,12 @@ function poco_init(App $a) {
if (isset($contact['account-type'])) {
$contact['contact-type'] = $contact['account-type'];
}
$about = DI::cache()->get("about:" . $contact['updated'] . ":" . $contact['nurl']);
$cacheKey = 'about:' . $contact['nick'] . ':' . DateTimeFormat::utc($contact['updated'], DateTimeFormat::ATOM);
$about = DI::cache()->get($cacheKey);
if (is_null($about)) {
$about = BBCode::convertForUriId($contact['uri-id'], $contact['about']);
DI::cache()->set("about:" . $contact['updated'] . ":" . $contact['nurl'], $about);
DI::cache()->set($cacheKey, $about);
}
// Non connected persons can only see the keywords of a Diaspora account
@ -226,14 +230,10 @@ function poco_init(App $a) {
Logger::info("End of poco");
if ($format === 'xml') {
header('Content-type: text/xml');
echo Renderer::replaceMacros(Renderer::getMarkupTemplate('poco_xml.tpl'), XML::arrayEscape(['$response' => $ret]));
exit();
System::httpExit(Renderer::replaceMacros(Renderer::getMarkupTemplate('poco_xml.tpl'), XML::arrayEscape(['$response' => $ret])), Response::TYPE_XML);
}
if ($format === 'json') {
header('Content-type: application/json');
echo json_encode($ret);
exit();
System::jsonExit($ret);
} else {
throw new \Friendica\Network\HTTPException\InternalServerErrorException();
}

View file

@ -22,6 +22,7 @@
use Friendica\App;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
@ -38,7 +39,7 @@ function hub_return($valid, $body)
} else {
throw new \Friendica\Network\HTTPException\NotFoundException();
}
exit();
System::exit();
}
// when receiving an XML feed, always return OK

View file

@ -21,6 +21,7 @@
use Friendica\App;
use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\PushSubscriber;
@ -142,5 +143,5 @@ function pubsubhubbub_init(App $a) {
throw new \Friendica\Network\HTTPException\AcceptedException();
}
exit();
System::exit();
}

View file

@ -27,6 +27,8 @@ use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Profile;
use Friendica\Network\HTTPClient\Client\HttpClientAccept;
use Friendica\Network\HTTPClient\Client\HttpClientOptions;
use Friendica\Util\Strings;
function redir_init(App $a) {
@ -142,7 +144,7 @@ function redir_magic($a, $cid, $url)
}
// Test for magic auth on the target system
$serverret = DI::httpClient()->get($basepath . '/magic');
$serverret = DI::httpClient()->head($basepath . '/magic', [HttpClientOptions::ACCEPT_CONTENT => HttpClientAccept::HTML]);
if ($serverret->isSuccess()) {
$separator = strpos($target_url, '?') ? '&' : '?';
$target_url .= $separator . 'zrl=' . urlencode($visitor) . '&addr=' . urlencode($contact_url);

View file

@ -57,12 +57,14 @@ function removeme_post(App $a)
continue;
}
$l10n = DI::l10n()->withLang($admin['language']);
$email = DI::emailer()
->newSystemMail()
->withMessage(
DI::l10n()->t('[Friendica System Notify]') . ' ' . DI::l10n()->t('User deleted their account'),
DI::l10n()->t('On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'),
DI::l10n()->t('The user id is %d', local_user()))
$l10n->t('[Friendica System Notify]') . ' ' . $l10n->t('User deleted their account'),
$l10n->t('On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'),
$l10n->t('The user id is %d', local_user()))
->forUser($admin)
->withRecipient($admin['email'])
->build();

View file

@ -23,22 +23,16 @@ use Friendica\App;
use Friendica\BaseModule;
use Friendica\Content\Feature;
use Friendica\Content\Nav;
use Friendica\Core\ACL;
use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\Core\Renderer;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Group;
use Friendica\Model\Notification;
use Friendica\Model\Profile;
use Friendica\Model\Item;
use Friendica\Model\User;
use Friendica\Module\BaseSettings;
use Friendica\Module\Security\Login;
use Friendica\Protocol\Email;
use Friendica\Util\Temporal;
use Friendica\Worker\Delivery;
function settings_init(App $a)
{
@ -107,7 +101,7 @@ function settings_post(App $a)
'port' => $mail_port,
'ssltype' => $mail_ssl,
'user' => $mail_user,
`action` => $mail_action,
'action' => $mail_action,
'movetofolder' => $mail_movetofolder,
'mailbox' => 'INBOX',
'reply_to' => $mail_replyto,
@ -146,258 +140,8 @@ function settings_post(App $a)
}
return;
}
BaseModule::checkFormSecurityTokenRedirectOnError('/settings', 'settings');
// Import Contacts from CSV file
if (!empty($_POST['importcontact-submit'])) {
if (isset($_FILES['importcontact-filename'])) {
// was there an error
if ($_FILES['importcontact-filename']['error'] > 0) {
Logger::notice('Contact CSV file upload error', ['error' => $_FILES['importcontact-filename']['error']]);
notice(DI::l10n()->t('Contact CSV file upload error'));
} else {
$csvArray = array_map('str_getcsv', file($_FILES['importcontact-filename']['tmp_name']));
Logger::notice('Import started', ['lines' => count($csvArray)]);
// import contacts
foreach ($csvArray as $csvRow) {
// The 1st row may, or may not contain the headers of the table
// We expect the 1st field of the row to contain either the URL
// or the handle of the account, therefore we check for either
// "http" or "@" to be present in the string.
// All other fields from the row will be ignored
if ((strpos($csvRow[0],'@') !== false) || in_array(parse_url($csvRow[0], PHP_URL_SCHEME), ['http', 'https'])) {
Worker::add(PRIORITY_LOW, 'AddContact', $_SESSION['uid'], $csvRow[0]);
} else {
Logger::notice('Invalid account', ['url' => $csvRow[0]]);
}
}
Logger::notice('Import done');
info(DI::l10n()->t('Importing Contacts done'));
// delete temp file
unlink($_FILES['importcontact-filename']['tmp_name']);
}
} else {
Logger::notice('Import triggered, but no import file was found.');
}
return;
}
if (!empty($_POST['resend_relocate'])) {
Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::RELOCATION, local_user());
info(DI::l10n()->t("Relocate message has been send to your contacts"));
DI::baseUrl()->redirect('settings');
}
Hook::callAll('settings_post', $_POST);
if (!empty($_POST['password']) || !empty($_POST['confirm'])) {
$newpass = $_POST['password'];
$confirm = $_POST['confirm'];
try {
if ($newpass != $confirm) {
throw new Exception(DI::l10n()->t('Passwords do not match.'));
}
// check if the old password was supplied correctly before changing it to the new value
User::getIdFromPasswordAuthentication(local_user(), $_POST['opassword']);
$result = User::updatePassword(local_user(), $newpass);
if (!DBA::isResult($result)) {
throw new Exception(DI::l10n()->t('Password update failed. Please try again.'));
}
info(DI::l10n()->t('Password changed.'));
} catch (Exception $e) {
notice($e->getMessage());
notice(DI::l10n()->t('Password unchanged.'));
}
}
$username = (!empty($_POST['username']) ? trim($_POST['username']) : '');
$email = (!empty($_POST['email']) ? trim($_POST['email']) : '');
$timezone = (!empty($_POST['timezone']) ? trim($_POST['timezone']) : '');
$language = (!empty($_POST['language']) ? trim($_POST['language']) : '');
$defloc = (!empty($_POST['defloc']) ? trim($_POST['defloc']) : '');
$maxreq = (!empty($_POST['maxreq']) ? intval($_POST['maxreq']) : 0);
$expire = (!empty($_POST['expire']) ? intval($_POST['expire']) : 0);
$def_gid = (!empty($_POST['group-selection']) ? intval($_POST['group-selection']) : 0);
$expire_items = (!empty($_POST['expire_items']) ? intval($_POST['expire_items']) : 0);
$expire_notes = (!empty($_POST['expire_notes']) ? intval($_POST['expire_notes']) : 0);
$expire_starred = (!empty($_POST['expire_starred']) ? intval($_POST['expire_starred']) : 0);
$expire_photos = (!empty($_POST['expire_photos'])? intval($_POST['expire_photos']) : 0);
$expire_network_only = (!empty($_POST['expire_network_only'])? intval($_POST['expire_network_only']) : 0);
$delete_openid = ((!empty($_POST['delete_openid']) && (intval($_POST['delete_openid']) == 1)) ? 1: 0);
$allow_location = ((!empty($_POST['allow_location']) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
$publish = ((!empty($_POST['profile_in_directory']) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
$net_publish = ((!empty($_POST['profile_in_netdirectory']) && (intval($_POST['profile_in_netdirectory']) == 1)) ? 1: 0);
$old_visibility = ((!empty($_POST['visibility']) && (intval($_POST['visibility']) == 1)) ? 1 : 0);
$account_type = ((!empty($_POST['account-type']) && (intval($_POST['account-type']))) ? intval($_POST['account-type']) : 0);
$page_flags = ((!empty($_POST['page-flags']) && (intval($_POST['page-flags']))) ? intval($_POST['page-flags']) : 0);
$blockwall = ((!empty($_POST['blockwall']) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted!
$blocktags = ((!empty($_POST['blocktags']) && (intval($_POST['blocktags']) == 1)) ? 0: 1); // this setting is inverted!
$unkmail = ((!empty($_POST['unkmail']) && (intval($_POST['unkmail']) == 1)) ? 1: 0);
$cntunkmail = (!empty($_POST['cntunkmail']) ? intval($_POST['cntunkmail']) : 0);
$hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0);
$hidewall = (($_POST['hidewall'] == 1) ? 1: 0);
$unlisted = (($_POST['unlisted'] == 1) ? 1: 0);
$accessiblephotos = (($_POST['accessible-photos'] == 1) ? 1: 0);
$notify_like = (($_POST['notify_like'] == 1) ? 1 : 0);
$notify_announce = (($_POST['notify_announce'] == 1) ? 1 : 0);
$email_textonly = (($_POST['email_textonly'] == 1) ? 1 : 0);
$detailed_notif = (($_POST['detailed_notif'] == 1) ? 1 : 0);
$notify_ignored = (($_POST['notify_ignored'] == 1) ? 1 : 0);
$notify = 0;
if (!empty($_POST['notify1'])) {
$notify += intval($_POST['notify1']);
}
if (!empty($_POST['notify2'])) {
$notify += intval($_POST['notify2']);
}
if (!empty($_POST['notify3'])) {
$notify += intval($_POST['notify3']);
}
if (!empty($_POST['notify4'])) {
$notify += intval($_POST['notify4']);
}
if (!empty($_POST['notify5'])) {
$notify += intval($_POST['notify5']);
}
if (!empty($_POST['notify6'])) {
$notify += intval($_POST['notify6']);
}
if (!empty($_POST['notify7'])) {
$notify += intval($_POST['notify7']);
}
if (!empty($_POST['notify8'])) {
$notify += intval($_POST['notify8']);
}
// Adjust the page flag if the account type doesn't fit to the page flag.
if (($account_type == User::ACCOUNT_TYPE_PERSON) && !in_array($page_flags, [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_FREELOVE])) {
$page_flags = User::PAGE_FLAGS_NORMAL;
} elseif (($account_type == User::ACCOUNT_TYPE_ORGANISATION) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) {
$page_flags = User::PAGE_FLAGS_SOAPBOX;
} elseif (($account_type == User::ACCOUNT_TYPE_NEWS) && !in_array($page_flags, [User::PAGE_FLAGS_SOAPBOX])) {
$page_flags = User::PAGE_FLAGS_SOAPBOX;
} elseif (($account_type == User::ACCOUNT_TYPE_COMMUNITY) && !in_array($page_flags, [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) {
$page_flags = User::PAGE_FLAGS_COMMUNITY;
}
$err = '';
if ($username != $user['username']) {
if (strlen($username) > 40) {
$err .= DI::l10n()->t('Please use a shorter name.');
}
if (strlen($username) < 3) {
$err .= DI::l10n()->t('Name too short.');
}
}
if ($email != $user['email']) {
// check for the correct password
try {
User::getIdFromPasswordAuthentication(local_user(), $_POST['mpassword']);
} catch (Exception $ex) {
$err .= DI::l10n()->t('Wrong Password.');
$email = $user['email'];
}
// check the email is valid
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$err .= DI::l10n()->t('Invalid email.');
}
// ensure new email is not the admin mail
if (DI::config()->get('config', 'admin_email')) {
$adminlist = explode(",", str_replace(" ", "", strtolower(DI::config()->get('config', 'admin_email'))));
if (in_array(strtolower($email), $adminlist)) {
$err .= DI::l10n()->t('Cannot change to that email.');
$email = $user['email'];
}
}
}
if (strlen($err)) {
notice($err);
return;
}
if (($timezone != $user['timezone']) && strlen($timezone)) {
$a->setTimeZone($timezone);
}
$aclFormatter = DI::aclFormatter();
$str_group_allow = !empty($_POST['group_allow']) ? $aclFormatter->toString($_POST['group_allow']) : '';
$str_contact_allow = !empty($_POST['contact_allow']) ? $aclFormatter->toString($_POST['contact_allow']) : '';
$str_group_deny = !empty($_POST['group_deny']) ? $aclFormatter->toString($_POST['group_deny']) : '';
$str_contact_deny = !empty($_POST['contact_deny']) ? $aclFormatter->toString($_POST['contact_deny']) : '';
DI::pConfig()->set(local_user(), 'expire', 'items', $expire_items);
DI::pConfig()->set(local_user(), 'expire', 'notes', $expire_notes);
DI::pConfig()->set(local_user(), 'expire', 'starred', $expire_starred);
DI::pConfig()->set(local_user(), 'expire', 'photos', $expire_photos);
DI::pConfig()->set(local_user(), 'expire', 'network_only', $expire_network_only);
DI::pConfig()->set(local_user(), 'system', 'notify_like', $notify_like);
DI::pConfig()->set(local_user(), 'system', 'notify_announce', $notify_announce);
DI::pConfig()->set(local_user(), 'system', 'email_textonly', $email_textonly);
DI::pConfig()->set(local_user(), 'system', 'detailed_notif', $detailed_notif);
DI::pConfig()->set(local_user(), 'system', 'notify_ignored', $notify_ignored);
DI::pConfig()->set(local_user(), 'system', 'unlisted', $unlisted);
DI::pConfig()->set(local_user(), 'system', 'accessible-photos', $accessiblephotos);
if ($page_flags == User::PAGE_FLAGS_PRVGROUP) {
$hidewall = 1;
if (!$str_contact_allow && !$str_group_allow && !$str_contact_deny && !$str_group_deny) {
if ($def_gid) {
info(DI::l10n()->t('Private forum has no privacy permissions. Using default privacy group.'));
$str_group_allow = '<' . $def_gid . '>';
} else {
notice(DI::l10n()->t('Private forum has no privacy permissions and no default privacy group.'));
}
}
}
$fields = ['username' => $username, 'email' => $email, 'timezone' => $timezone,
'allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow, 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny,
'notify-flags' => $notify, 'page-flags' => $page_flags, 'account-type' => $account_type, 'default-location' => $defloc,
'allow_location' => $allow_location, 'maxreq' => $maxreq, 'expire' => $expire, 'def_gid' => $def_gid, 'blockwall' => $blockwall,
'hidewall' => $hidewall, 'blocktags' => $blocktags, 'unkmail' => $unkmail, 'cntunkmail' => $cntunkmail, 'language' => $language];
if ($delete_openid) {
$fields['openid'] = '';
$fields['openidserver'] = '';
}
$profile_fields = ['publish' => $publish, 'net-publish' => $net_publish, 'hide-friends' => $hide_friends];
if (!User::update($fields, local_user()) || !Profile::update($profile_fields, local_user())) {
notice(DI::l10n()->t('Settings were not updated.'));
}
// clear session language
unset($_SESSION['language']);
DI::baseUrl()->redirect('settings');
return; // NOTREACHED
}
function settings_content(App $a)
{
$o = '';
@ -570,7 +314,17 @@ function settings_content(App $a)
'$ostat_enabled' => $ostat_enabled,
'$general_settings' => DI::l10n()->t('General Social Media Settings'),
'$accept_only_sharer' => ['accept_only_sharer', DI::l10n()->t('Accept only top level posts by contacts you follow'), $accept_only_sharer, DI::l10n()->t('The system does an auto completion of threads when a comment arrives. This has got the side effect that you can receive posts that had been started by a non-follower but had been commented by someone you follow. This setting deactivates this behaviour. When activated, you strictly only will receive posts from people you really do follow.')],
'$accept_only_sharer' => [
'accept_only_sharer',
DI::l10n()->t('Followed content scope'),
$accept_only_sharer,
DI::l10n()->t('By default, conversations in which your follows participated but didn\'t start will be shown in your timeline. You can turn this behavior off, or expand it to the conversations in which your follows liked a post.'),
[
Item::COMPLETION_NONE => DI::l10n()->t('Only conversations my follows started'),
Item::COMPLETION_COMMENT => DI::l10n()->t('Conversations my follows started or commented on (default)'),
Item::COMPLETION_LIKE => DI::l10n()->t('Any conversation my follows interacted with, including likes'),
]
],
'$enable_cw' => ['enable_cw', DI::l10n()->t('Enable Content Warning'), $enable_cw, DI::l10n()->t('Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This enables the automatic collapsing instead of setting the content warning as the post title. Doesn\'t affect any other content filtering you eventually set up.')],
'$enable_smart_shortening' => ['enable_smart_shortening', DI::l10n()->t('Enable intelligent shortening'), $enable_smart_shortening, DI::l10n()->t('Normally the system tries to find the best link to add to shortened posts. If disabled, every shortened post will always point to the original friendica post.')],
'$simple_shortening' => ['simple_shortening', DI::l10n()->t('Enable simple text shortening'), $simple_shortening, DI::l10n()->t('Normally the system shortens posts at the next line feed. If this option is enabled then the system will shorten the text at the maximum character limit.')],
@ -601,234 +355,4 @@ function settings_content(App $a)
Hook::callAll('display_settings', $o);
return $o;
}
/*
* ACCOUNT SETTINGS
*/
$profile = DBA::selectFirst('profile', [], ['uid' => local_user()]);
if (!DBA::isResult($profile)) {
notice(DI::l10n()->t('Unable to find your profile. Please contact your admin.'));
return '';
}
$user = User::getById($a->getLoggedInUserId());
$username = $user['username'];
$email = $user['email'];
$nickname = $a->getLoggedInUserNickname();
$timezone = $user['timezone'];
$language = $user['language'];
$notify = $user['notify-flags'];
$defloc = $user['default-location'];
$openid = $user['openid'];
$maxreq = $user['maxreq'];
$expire = ((intval($user['expire'])) ? $user['expire'] : '');
$unkmail = $user['unkmail'];
$cntunkmail = $user['cntunkmail'];
$expire_items = DI::pConfig()->get(local_user(), 'expire', 'items', true);
$expire_notes = DI::pConfig()->get(local_user(), 'expire', 'notes', true);
$expire_starred = DI::pConfig()->get(local_user(), 'expire', 'starred', true);
$expire_photos = DI::pConfig()->get(local_user(), 'expire', 'photos', false);
$expire_network_only = DI::pConfig()->get(local_user(), 'expire', 'network_only', false);
if (!strlen($user['timezone'])) {
$timezone = $a->getTimeZone();
}
// Set the account type to "Community" when the page is a community page but the account type doesn't fit
// This is only happening on the first visit after the update
if (in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]) &&
($user['account-type'] != User::ACCOUNT_TYPE_COMMUNITY))
$user['account-type'] = User::ACCOUNT_TYPE_COMMUNITY;
$pageset_tpl = Renderer::getMarkupTemplate('settings/pagetypes.tpl');
$pagetype = Renderer::replaceMacros($pageset_tpl, [
'$account_types' => DI::l10n()->t("Account Types"),
'$user' => DI::l10n()->t("Personal Page Subtypes"),
'$community' => DI::l10n()->t("Community Forum Subtypes"),
'$account_type' => $user['account-type'],
'$type_person' => User::ACCOUNT_TYPE_PERSON,
'$type_organisation' => User::ACCOUNT_TYPE_ORGANISATION,
'$type_news' => User::ACCOUNT_TYPE_NEWS,
'$type_community' => User::ACCOUNT_TYPE_COMMUNITY,
'$account_person' => ['account-type', DI::l10n()->t('Personal Page'), User::ACCOUNT_TYPE_PERSON,
DI::l10n()->t('Account for a personal profile.'),
($user['account-type'] == User::ACCOUNT_TYPE_PERSON)],
'$account_organisation' => ['account-type', DI::l10n()->t('Organisation Page'), User::ACCOUNT_TYPE_ORGANISATION,
DI::l10n()->t('Account for an organisation that automatically approves contact requests as "Followers".'),
($user['account-type'] == User::ACCOUNT_TYPE_ORGANISATION)],
'$account_news' => ['account-type', DI::l10n()->t('News Page'), User::ACCOUNT_TYPE_NEWS,
DI::l10n()->t('Account for a news reflector that automatically approves contact requests as "Followers".'),
($user['account-type'] == User::ACCOUNT_TYPE_NEWS)],
'$account_community' => ['account-type', DI::l10n()->t('Community Forum'), User::ACCOUNT_TYPE_COMMUNITY,
DI::l10n()->t('Account for community discussions.'),
($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY)],
'$page_normal' => ['page-flags', DI::l10n()->t('Normal Account Page'), User::PAGE_FLAGS_NORMAL,
DI::l10n()->t('Account for a regular personal profile that requires manual approval of "Friends" and "Followers".'),
($user['page-flags'] == User::PAGE_FLAGS_NORMAL)],
'$page_soapbox' => ['page-flags', DI::l10n()->t('Soapbox Page'), User::PAGE_FLAGS_SOAPBOX,
DI::l10n()->t('Account for a public profile that automatically approves contact requests as "Followers".'),
($user['page-flags'] == User::PAGE_FLAGS_SOAPBOX)],
'$page_community' => ['page-flags', DI::l10n()->t('Public Forum'), User::PAGE_FLAGS_COMMUNITY,
DI::l10n()->t('Automatically approves all contact requests.'),
($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY)],
'$page_freelove' => ['page-flags', DI::l10n()->t('Automatic Friend Page'), User::PAGE_FLAGS_FREELOVE,
DI::l10n()->t('Account for a popular profile that automatically approves contact requests as "Friends".'),
($user['page-flags'] == User::PAGE_FLAGS_FREELOVE)],
'$page_prvgroup' => ['page-flags', DI::l10n()->t('Private Forum [Experimental]'), User::PAGE_FLAGS_PRVGROUP,
DI::l10n()->t('Requires manual approval of contact requests.'),
($user['page-flags'] == User::PAGE_FLAGS_PRVGROUP)],
]);
$noid = DI::config()->get('system', 'no_openid');
if ($noid) {
$openid_field = false;
} else {
$openid_field = ['openid_url', DI::l10n()->t('OpenID:'), $openid, DI::l10n()->t("\x28Optional\x29 Allow this OpenID to login to this account."), "", "readonly", "url"];
}
$opt_tpl = Renderer::getMarkupTemplate("field_checkbox.tpl");
if (DI::config()->get('system', 'publish_all')) {
$profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
} else {
$profile_in_dir = Renderer::replaceMacros($opt_tpl, [
'$field' => ['profile_in_directory', DI::l10n()->t('Publish your profile in your local site directory?'), $profile['publish'], DI::l10n()->t('Your profile will be published in this node\'s <a href="%s">local directory</a>. Your profile details may be publicly visible depending on the system settings.', DI::baseUrl().'/directory')]
]);
}
$net_pub_desc = '';
if (strlen(DI::config()->get('system', 'directory'))) {
$net_pub_desc = ' ' . DI::l10n()->t('Your profile will also be published in the global friendica directories (e.g. <a href="%s">%s</a>).', DI::config()->get('system', 'directory'), DI::config()->get('system', 'directory'));
}
$tpl_addr = Renderer::getMarkupTemplate('settings/nick_set.tpl');
$prof_addr = Renderer::replaceMacros($tpl_addr,[
'$desc' => DI::l10n()->t("Your Identity Address is <strong>'%s'</strong> or '%s'.", $nickname . '@' . DI::baseUrl()->getHostname() . DI::baseUrl()->getUrlPath(), DI::baseUrl() . '/profile/' . $nickname),
'$basepath' => DI::baseUrl()->getHostname()
]);
$stpl = Renderer::getMarkupTemplate('settings/settings.tpl');
/* Installed langs */
$lang_choices = DI::l10n()->getAvailableLanguages();
/// @TODO Fix indending (or so)
$o .= Renderer::replaceMacros($stpl, [
'$ptitle' => DI::l10n()->t('Account Settings'),
'$submit' => DI::l10n()->t('Save Settings'),
'$baseurl' => DI::baseUrl()->get(true),
'$uid' => local_user(),
'$form_security_token' => BaseModule::getFormSecurityToken("settings"),
'$nickname_block' => $prof_addr,
'$h_pass' => DI::l10n()->t('Password Settings'),
'$password1'=> ['password', DI::l10n()->t('New Password:'), '', DI::l10n()->t('Allowed characters are a-z, A-Z, 0-9 and special characters except white spaces, accentuated letters and colon (:).')],
'$password2'=> ['confirm', DI::l10n()->t('Confirm:'), '', DI::l10n()->t('Leave password fields blank unless changing')],
'$password3'=> ['opassword', DI::l10n()->t('Current Password:'), '', DI::l10n()->t('Your current password to confirm the changes')],
'$password4'=> ['mpassword', DI::l10n()->t('Password:'), '', DI::l10n()->t('Your current password to confirm the changes of the email address')],
'$oid_enable' => (!DI::config()->get('system', 'no_openid')),
'$openid' => $openid_field,
'$delete_openid' => ['delete_openid', DI::l10n()->t('Delete OpenID URL'), false, ''],
'$h_basic' => DI::l10n()->t('Basic Settings'),
'$username' => ['username', DI::l10n()->t('Full Name:'), $username, ''],
'$email' => ['email', DI::l10n()->t('Email Address:'), $email, '', '', '', 'email'],
'$timezone' => ['timezone_select' , DI::l10n()->t('Your Timezone:'), Temporal::getTimezoneSelect($timezone), ''],
'$language' => ['language', DI::l10n()->t('Your Language:'), $language, DI::l10n()->t('Set the language we use to show you friendica interface and to send you emails'), $lang_choices],
'$defloc' => ['defloc', DI::l10n()->t('Default Post Location:'), $defloc, ''],
'$allowloc' => ['allow_location', DI::l10n()->t('Use Browser Location:'), ($user['allow_location'] == 1), ''],
'$h_prv' => DI::l10n()->t('Security and Privacy Settings'),
'$visibility' => $profile['net-publish'],
'$maxreq' => ['maxreq', DI::l10n()->t('Maximum Friend Requests/Day:'), $maxreq , DI::l10n()->t("\x28to prevent spam abuse\x29")],
'$profile_in_dir' => $profile_in_dir,
'$profile_in_net_dir' => ['profile_in_netdirectory', DI::l10n()->t('Allow your profile to be searchable globally?'), $profile['net-publish'], DI::l10n()->t("Activate this setting if you want others to easily find and follow you. Your profile will be searchable on remote systems. This setting also determines whether Friendica will inform search engines that your profile should be indexed or not.") . $net_pub_desc],
'$hide_friends' => ['hide-friends', DI::l10n()->t('Hide your contact/friend list from viewers of your profile?'), $profile['hide-friends'], DI::l10n()->t('A list of your contacts is displayed on your profile page. Activate this option to disable the display of your contact list.')],
'$hide_wall' => ['hidewall', DI::l10n()->t('Hide your profile details from anonymous viewers?'), $user['hidewall'], DI::l10n()->t('Anonymous visitors will only see your profile picture, your display name and the nickname you are using on your profile page. Your public posts and replies will still be accessible by other means.')],
'$unlisted' => ['unlisted', DI::l10n()->t('Make public posts unlisted'), DI::pConfig()->get(local_user(), 'system', 'unlisted'), DI::l10n()->t('Your public posts will not appear on the community pages or in search results, nor be sent to relay servers. However they can still appear on public feeds on remote servers.')],
'$accessiblephotos' => ['accessible-photos', DI::l10n()->t('Make all posted pictures accessible'), DI::pConfig()->get(local_user(), 'system', 'accessible-photos'), DI::l10n()->t("This option makes every posted picture accessible via the direct link. This is a workaround for the problem that most other networks can't handle permissions on pictures. Non public pictures still won't be visible for the public on your photo albums though.")],
'$blockwall' => ['blockwall', DI::l10n()->t('Allow friends to post to your profile page?'), (intval($user['blockwall']) ? '0' : '1'), DI::l10n()->t('Your contacts may write posts on your profile wall. These posts will be distributed to your contacts')], // array('blockwall', DI::l10n()->t('Allow friends to post to your profile page:'), !$blockwall, ''),
'$blocktags' => ['blocktags', DI::l10n()->t('Allow friends to tag your posts?'), (intval($user['blocktags']) ? '0' : '1'), DI::l10n()->t('Your contacts can add additional tags to your posts.')], // array('blocktags', DI::l10n()->t('Allow friends to tag your posts:'), !$blocktags, ''),
'$unkmail' => ['unkmail', DI::l10n()->t('Permit unknown people to send you private mail?'), $unkmail, DI::l10n()->t('Friendica network users may send you private messages even if they are not in your contact list.')],
'$cntunkmail' => ['cntunkmail', DI::l10n()->t('Maximum private messages per day from unknown people:'), $cntunkmail , DI::l10n()->t("\x28to prevent spam abuse\x29")],
'$group_select' => Group::displayGroupSelection(local_user(), $user['def_gid']),
'$permissions' => DI::l10n()->t('Default Post Permissions'),
'$aclselect' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId()),
'$expire' => [
'label' => DI::l10n()->t('Expiration settings'),
'days' => ['expire', DI::l10n()->t("Automatically expire posts after this many days:"), $expire, DI::l10n()->t('If empty, posts will not expire. Expired posts will be deleted')],
'items' => ['expire_items', DI::l10n()->t('Expire posts'), $expire_items, DI::l10n()->t('When activated, posts and comments will be expired.')],
'notes' => ['expire_notes', DI::l10n()->t('Expire personal notes'), $expire_notes, DI::l10n()->t('When activated, the personal notes on your profile page will be expired.')],
'starred' => ['expire_starred', DI::l10n()->t('Expire starred posts'), $expire_starred, DI::l10n()->t('Starring posts keeps them from being expired. That behaviour is overwritten by this setting.')],
'photos' => ['expire_photos', DI::l10n()->t('Expire photos'), $expire_photos, DI::l10n()->t('When activated, photos will be expired.')],
'network_only' => ['expire_network_only', DI::l10n()->t('Only expire posts by others'), $expire_network_only, DI::l10n()->t('When activated, your own posts never expire. Then the settings above are only valid for posts you received.')],
],
'$h_not' => DI::l10n()->t('Notification Settings'),
'$lbl_not' => DI::l10n()->t('Send a notification email when:'),
'$notify1' => ['notify1', DI::l10n()->t('You receive an introduction'), ($notify & Notification\Type::INTRO), Notification\Type::INTRO, ''],
'$notify2' => ['notify2', DI::l10n()->t('Your introductions are confirmed'), ($notify & Notification\Type::CONFIRM), Notification\Type::CONFIRM, ''],
'$notify3' => ['notify3', DI::l10n()->t('Someone writes on your profile wall'), ($notify & Notification\Type::WALL), Notification\Type::WALL, ''],
'$notify4' => ['notify4', DI::l10n()->t('Someone writes a followup comment'), ($notify & Notification\Type::COMMENT), Notification\Type::COMMENT, ''],
'$notify5' => ['notify5', DI::l10n()->t('You receive a private message'), ($notify & Notification\Type::MAIL), Notification\Type::MAIL, ''],
'$notify6' => ['notify6', DI::l10n()->t('You receive a friend suggestion'), ($notify & Notification\Type::SUGGEST), Notification\Type::SUGGEST, ''],
'$notify7' => ['notify7', DI::l10n()->t('You are tagged in a post'), ($notify & Notification\Type::TAG_SELF), Notification\Type::TAG_SELF, ''],
'$notify8' => ['notify8', DI::l10n()->t('You are poked/prodded/etc. in a post'), ($notify & Notification\Type::POKE), Notification\Type::POKE, ''],
'$lbl_notify' => DI::l10n()->t('Create a desktop notification when:'),
'$notify_like' => ['notify_like', DI::l10n()->t('Someone liked your content'), DI::pConfig()->get(local_user(), 'system', 'notify_like'), ''],
'$notify_announce' => ['notify_announce', DI::l10n()->t('Someone shared your content'), DI::pConfig()->get(local_user(), 'system', 'notify_announce'), ''],
'$desktop_notifications' => ['desktop_notifications', DI::l10n()->t('Activate desktop notifications') , false, DI::l10n()->t('Show desktop popup on new notifications')],
'$email_textonly' => ['email_textonly', DI::l10n()->t('Text-only notification emails'),
DI::pConfig()->get(local_user(), 'system', 'email_textonly'),
DI::l10n()->t('Send text only notification emails, without the html part')],
'$detailed_notif' => ['detailed_notif', DI::l10n()->t('Show detailled notifications'),
DI::pConfig()->get(local_user(), 'system', 'detailed_notif'),
DI::l10n()->t('Per default, notifications are condensed to a single notification per item. When enabled every notification is displayed.')],
'$notify_ignored' => ['notify_ignored', DI::l10n()->t('Show notifications of ignored contacts') ,
DI::pConfig()->get(local_user(), 'system', 'notify_ignored', true),
DI::l10n()->t("You don't see posts from ignored contacts. But you still see their comments. This setting controls if you want to still receive regular notifications that are caused by ignored contacts or not.")],
'$h_advn' => DI::l10n()->t('Advanced Account/Page Type Settings'),
'$h_descadvn' => DI::l10n()->t('Change the behaviour of this account for special situations'),
'$pagetype' => $pagetype,
'$importcontact' => DI::l10n()->t('Import Contacts'),
'$importcontact_text' => DI::l10n()->t('Upload a CSV file that contains the handle of your followed accounts in the first column you exported from the old account.'),
'$importcontact_button' => DI::l10n()->t('Upload File'),
'$importcontact_maxsize' => DI::config()->get('system', 'max_csv_file_size', 30720),
'$relocate' => DI::l10n()->t('Relocate'),
'$relocate_text' => DI::l10n()->t("If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."),
'$relocate_button' => DI::l10n()->t("Resend relocate message to contacts"),
]);
Hook::callAll('settings_form', $o);
$o .= '</form>' . "\r\n";
return $o;
}

View file

@ -21,6 +21,7 @@
use Friendica\App;
use Friendica\Content\Text\BBCode;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Item;
@ -30,7 +31,7 @@ function share_init(App $a) {
$post_id = ((DI::args()->getArgc() > 1) ? intval(DI::args()->getArgv()[1]) : 0);
if (!$post_id || !local_user()) {
exit();
System::exit();
}
$fields = ['private', 'body', 'author-name', 'author-link', 'author-avatar',
@ -38,7 +39,7 @@ function share_init(App $a) {
$item = Post::selectFirst($fields, ['id' => $post_id]);
if (!DBA::isResult($item) || $item['private'] == Item::PRIVATE) {
exit();
System::exit();
}
if (strpos($item['body'], "[/share]") !== false) {
@ -56,5 +57,5 @@ function share_init(App $a) {
}
echo $o;
exit();
System::exit();
}

View file

@ -167,6 +167,5 @@ EOT;
$post = Post::selectFirst(['uri-id', 'uid'], ['id' => $post_id]);
Worker::add(PRIORITY_HIGH, "Notifier", Delivery::POST, $post['uri-id'], $post['uid']);
exit();
System::exit();
}

View file

@ -122,8 +122,7 @@ function unfollow_process(string $url)
$owner = User::getOwnerDataById($uid);
if (!$owner) {
(new \Friendica\Module\Security\Logout())->init();
// NOTREACHED
throw new \Friendica\Network\HTTPException\NotFoundException();
}
$condition = ["`uid` = ? AND (`rel` = ? OR `rel` = ?) AND (`nurl` = ? OR `alias` = ? OR `alias` = ?)",
@ -140,15 +139,10 @@ function unfollow_process(string $url)
$return_path = $base_return_path . '/' . $contact['id'];
try {
$result = Contact::terminateFriendship($owner, $contact);
if ($result === false) {
$notice_message = DI::l10n()->t('Unable to unfollow this contact, please retry in a few minutes or contact your administrator.');
} else {
$notice_message = DI::l10n()->t('Contact was successfully unfollowed');
}
Contact::unfollow($contact);
$notice_message = DI::l10n()->t('Contact was successfully unfollowed');
} catch (Exception $e) {
DI::logger()->error($e->getMessage(), ['owner' => $owner, 'contact' => $contact]);
DI::logger()->error($e->getMessage(), ['contact' => $contact]);
$notice_message = DI::l10n()->t('Unable to unfollow this contact, please contact your administrator');
}

View file

@ -21,6 +21,7 @@
use Friendica\App;
use Friendica\Core\Session;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Attach;
@ -36,15 +37,13 @@ function wall_attach_post(App $a) {
$owner = User::getOwnerDataByNick($nick);
if (!DBA::isResult($owner)) {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
exit();
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
}
return;
}
} else {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
exit();
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
}
return;
@ -65,18 +64,17 @@ function wall_attach_post(App $a) {
if (!$can_post) {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Permission denied.')]);
exit();
System::jsonExit(['error' => DI::l10n()->t('Permission denied.')]);
}
notice(DI::l10n()->t('Permission denied.') . EOL );
exit();
System::exit();
}
if (empty($_FILES['userfile'])) {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
}
exit();
System::exit();
}
$src = $_FILES['userfile']['tmp_name'];
@ -93,24 +91,24 @@ function wall_attach_post(App $a) {
if ($filesize <= 0) {
$msg = DI::l10n()->t('Sorry, maybe your upload is bigger than the PHP configuration allows') . EOL .(DI::l10n()->t('Or - did you try to upload an empty file?'));
@unlink($src);
if ($r_json) {
echo json_encode(['error' => $msg]);
System::jsonExit(['error' => $msg]);
} else {
notice($msg);
}
@unlink($src);
exit();
System::exit();
}
if ($maxfilesize && $filesize > $maxfilesize) {
$msg = DI::l10n()->t('File exceeds size limit of %s', Strings::formatBytes($maxfilesize));
@unlink($src);
if ($r_json) {
echo json_encode(['error' => $msg]);
System::jsonExit(['error' => $msg]);
} else {
echo $msg . EOL;
}
@unlink($src);
exit();
System::exit();
}
$newid = Attach::storeFile($src, $page_owner_uid, $filename, '<' . $page_owner_cid . '>');
@ -120,22 +118,20 @@ function wall_attach_post(App $a) {
if ($newid === false) {
$msg = DI::l10n()->t('File upload failed.');
if ($r_json) {
echo json_encode(['error' => $msg]);
System::jsonExit(['error' => $msg]);
} else {
echo $msg . EOL;
}
exit();
System::exit();
}
if ($r_json) {
echo json_encode(['ok' => true, 'id' => $newid]);
exit();
System::jsonExit(['ok' => true, 'id' => $newid]);
}
$lf = "\n";
echo $lf . $lf . '[attachment]' . $newid . '[/attachment]' . $lf;
exit();
System::exit();
// NOTREACHED
}

View file

@ -28,6 +28,7 @@
use Friendica\App;
use Friendica\Core\Logger;
use Friendica\Core\Session;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Photo;
@ -50,8 +51,7 @@ function wall_upload_post(App $a, $desktopmode = true)
$user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['nickname' => $nick, 'blocked' => false]);
if (!DBA::isResult($user)) {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
exit();
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
}
return;
}
@ -60,8 +60,7 @@ function wall_upload_post(App $a, $desktopmode = true)
}
} else {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
exit();
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
}
return;
}
@ -87,18 +86,17 @@ function wall_upload_post(App $a, $desktopmode = true)
if (!$can_post) {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Permission denied.')]);
exit();
System::jsonExit(['error' => DI::l10n()->t('Permission denied.')]);
}
notice(DI::l10n()->t('Permission denied.'));
exit();
System::exit();
}
if (empty($_FILES['userfile']) && empty($_FILES['media'])) {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
}
exit();
System::exit();
}
$src = '';
@ -147,11 +145,10 @@ function wall_upload_post(App $a, $desktopmode = true)
if ($src == "") {
if ($r_json) {
echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
exit();
System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
}
notice(DI::l10n()->t('Invalid request.'));
exit();
System::exit();
}
$filetype = Images::getMimeTypeBySource($src, $filename, $filetype);
@ -160,31 +157,31 @@ function wall_upload_post(App $a, $desktopmode = true)
" - size: " . $filesize . " - type: " . $filetype);
$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.');
@unlink($src);
if ($r_json) {
echo json_encode(['error' => $msg]);
System::jsonExit(['error' => $msg]);
} else {
echo $msg. EOL;
}
@unlink($src);
exit();
System::exit();
}
$Image->orient($src);
$image->orient($src);
@unlink($src);
$max_length = DI::config()->get('system', 'max_image_length');
if ($max_length > 0) {
$Image->scaleDown($max_length);
$filesize = strlen($Image->asString());
$image->scaleDown($max_length);
$filesize = strlen($image->asString());
Logger::info("File upload: Scaling picture to new size " . $max_length);
}
$width = $Image->getWidth();
$height = $Image->getHeight();
$width = $image->getWidth();
$height = $image->getHeight();
$maximagesize = DI::config()->get('system', 'maximagesize');
@ -193,22 +190,22 @@ function wall_upload_post(App $a, $desktopmode = true)
foreach ([5120, 2560, 1280, 640] as $pixels) {
if (($filesize > $maximagesize) && (max($width, $height) > $pixels)) {
Logger::info('Resize', ['size' => $filesize, 'width' => $width, 'height' => $height, 'max' => $maximagesize, 'pixels' => $pixels]);
$Image->scaleDown($pixels);
$filesize = strlen($Image->asString());
$width = $Image->getWidth();
$height = $Image->getHeight();
$image->scaleDown($pixels);
$filesize = strlen($image->asString());
$width = $image->getWidth();
$height = $image->getHeight();
}
}
if ($filesize > $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));
@unlink($src);
if ($r_json) {
echo json_encode(['error' => $msg]);
System::jsonExit(['error' => $msg]);
} else {
echo $msg. EOL;
}
@unlink($src);
exit();
System::exit();
}
}
@ -223,29 +220,29 @@ function wall_upload_post(App $a, $desktopmode = true)
$defperm = '<' . $default_cid . '>';
$r = Photo::store($Image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 0, Photo::DEFAULT, $defperm);
$r = Photo::store($image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 0, Photo::DEFAULT, $defperm);
if (!$r) {
$msg = DI::l10n()->t('Image upload failed.');
if ($r_json) {
echo json_encode(['error' => $msg]);
System::jsonExit(['error' => $msg]);
} else {
echo $msg. EOL;
}
exit();
System::exit();
}
if ($width > 640 || $height > 640) {
$Image->scaleDown(640);
$r = Photo::store($Image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 1, Photo::DEFAULT, $defperm);
$image->scaleDown(640);
$r = Photo::store($image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 1, Photo::DEFAULT, $defperm);
if ($r) {
$smallest = 1;
}
}
if ($width > 320 || $height > 320) {
$Image->scaleDown(320);
$r = Photo::store($Image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 2, Photo::DEFAULT, $defperm);
$image->scaleDown(320);
$r = Photo::store($image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 2, Photo::DEFAULT, $defperm);
if ($r && ($smallest == 0)) {
$smallest = 2;
}
@ -255,8 +252,7 @@ function wall_upload_post(App $a, $desktopmode = true)
$photo = Photo::selectFirst(['id', 'datasize', 'width', 'height', 'type'], ['resource-id' => $resource_id], ['order' => ['width']]);
if (!$photo) {
if ($r_json) {
echo json_encode(['error' => '']);
exit();
System::jsonExit(['error' => '']);
}
return false;
}
@ -268,12 +264,11 @@ function wall_upload_post(App $a, $desktopmode = true)
$picture["height"] = $photo["height"];
$picture["type"] = $photo["type"];
$picture["albumpage"] = DI::baseUrl() . '/photos/' . $page_owner_nick . '/image/' . $resource_id;
$picture["picture"] = DI::baseUrl() . "/photo/{$resource_id}-0." . $Image->getExt();
$picture["preview"] = DI::baseUrl() . "/photo/{$resource_id}-{$smallest}." . $Image->getExt();
$picture["picture"] = DI::baseUrl() . "/photo/{$resource_id}-0." . $image->getExt();
$picture["preview"] = DI::baseUrl() . "/photo/{$resource_id}-{$smallest}." . $image->getExt();
if ($r_json) {
echo json_encode(['picture' => $picture]);
exit();
System::jsonExit(['picture' => $picture]);
}
Logger::info("upload done");
return $picture;
@ -282,11 +277,10 @@ function wall_upload_post(App $a, $desktopmode = true)
Logger::info("upload done");
if ($r_json) {
echo json_encode(['ok' => true]);
exit();
System::jsonExit(['ok' => true]);
}
echo "\n\n" . '[url=' . DI::baseUrl() . '/photos/' . $page_owner_nick . '/image/' . $resource_id . '][img]' . DI::baseUrl() . "/photo/{$resource_id}-{$smallest}.".$Image->getExt()."[/img][/url]\n\n";
exit();
echo "\n\n" . '[url=' . DI::baseUrl() . '/photos/' . $page_owner_nick . '/image/' . $resource_id . '][img]' . DI::baseUrl() . "/photo/{$resource_id}-{$smallest}." . $image->getExt() . "[/img][/url]\n\n";
System::exit();
// NOTREACHED
}

View file

@ -125,7 +125,7 @@ function showForm($error, $content) {
echo <<<EOF
<div class='wrap1'>
<h2><img class='logo' src='friendica-32.png' align='middle';/>
<h2><img class='logo' width="32" height="32" src='friendica.svg' align='middle';/>
Friendica Bookmarklet</h2>
</div>

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 1920 1920">
<rect fill="#1872a2" x="60" y="60" width="1800" height="1800" rx="333"/>
<path fill="#febf19" d="M40 371q0-136 98-234 98-97 234-97h1178q136 0 233 97 97 98 97 234v1178q0 136-97 234-97 97-233 97H372q-137 0-234-97-97-98-98-234Zm1510-258h-296v442H666v373l587-4 1 441H666v442h884q107 0 182-75 75-74 74-183V371q0-108-74-182-74-75-182-76z"/>
</svg>

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -1,6 +1,6 @@
Contact: mailto:info@friendi.ca
Expires: Sun, 31 Jul 2022 23:59 +0000
Expires: Sun, 31 Dec 2022 23:59 +0000
Preferred-Languages: en

View file

@ -145,7 +145,7 @@ class App
$this->nickname = $nickname;
}
public function isLoggedIn()
public function isLoggedIn(): bool
{
return local_user() && $this->user_id && ($this->user_id == local_user());
}
@ -155,7 +155,7 @@ class App
*
* @return bool true if user is an admin
*/
public function isSiteAdmin()
public function isSiteAdmin(): bool
{
$admin_email = $this->config->get('config', 'admin_email');
@ -166,18 +166,18 @@ class App
/**
* Fetch the user id
* @return int
* @return int User id
*/
public function getLoggedInUserId()
public function getLoggedInUserId(): int
{
return $this->user_id;
}
/**
* Fetch the user nick name
* @return string
* @return string User's nickname
*/
public function getLoggedInUserNickname()
public function getLoggedInUserNickname(): string
{
return $this->nickname;
}
@ -198,7 +198,7 @@ class App
*
* @return int
*/
public function getProfileOwner():int
public function getProfileOwner(): int
{
return $this->profile_owner;
}
@ -219,7 +219,7 @@ class App
*
* @return int
*/
public function getContactId():int
public function getContactId(): int
{
return $this->contact_id;
}
@ -241,7 +241,7 @@ class App
*
* @return int
*/
public function getTimeZone():string
public function getTimeZone(): string
{
return $this->timezone;
}
@ -260,9 +260,9 @@ class App
/**
* Fetch workerqueue information
*
* @return array
* @return array Worker queue
*/
public function getQueue()
public function getQueue(): array
{
return $this->queue ?? [];
}
@ -270,8 +270,8 @@ class App
/**
* Fetch a specific workerqueue field
*
* @param string $index
* @return mixed
* @param string $index Work queue record to fetch
* @return mixed Work queue item or NULL if not found
*/
public function getQueueValue(string $index)
{
@ -306,9 +306,9 @@ class App
/**
* The basepath of this app
*
* @return string
* @return string Base path from configuration
*/
public function getBasePath()
public function getBasePath(): string
{
// Don't use the basepath of the config table for basepath (it should always be the config-file one)
return $this->config->getCache()->get('system', 'basepath');
@ -396,10 +396,10 @@ class App
/**
* Returns the current theme name. May be overriden by the mobile theme name.
*
* @return string
* @return string Current theme name or empty string in installation phase
* @throws Exception
*/
public function getCurrentTheme()
public function getCurrentTheme(): string
{
if ($this->mode->isInstall()) {
return '';
@ -425,10 +425,10 @@ class App
/**
* Returns the current mobile theme name.
*
* @return string
* @return string Mobile theme name or empty string if installer
* @throws Exception
*/
public function getCurrentMobileTheme()
public function getCurrentMobileTheme(): string
{
if ($this->mode->isInstall()) {
return '';
@ -441,12 +441,22 @@ class App
return $this->currentMobileTheme;
}
public function setCurrentTheme($theme)
/**
* Setter for current theme name
*
* @param string $theme Name of current theme
*/
public function setCurrentTheme(string $theme)
{
$this->currentTheme = $theme;
}
public function setCurrentMobileTheme($theme)
/**
* Setter for current mobile theme name
*
* @param string $theme Name of current mobile theme
*/
public function setCurrentMobileTheme(string $theme)
{
$this->currentMobileTheme = $theme;
}
@ -472,7 +482,7 @@ class App
// Allow folks to override user themes and always use their own on their own site.
// This works only if the user is on the same server
$user = $this->database->selectFirst('user', ['theme'], ['uid' => $this->profile_owner]);
if ($this->database->isResult($user) && !$this->pConfig->get(local_user(), 'system', 'always_my_theme')) {
if ($this->database->isResult($user) && !local_user()) {
$page_theme = $user['theme'];
}
}
@ -504,7 +514,7 @@ class App
if (!empty($this->profile_owner) && ($this->profile_owner != local_user())) {
// Allow folks to override user themes and always use their own on their own site.
// This works only if the user is on the same server
if (!$this->pConfig->get(local_user(), 'system', 'always_my_theme')) {
if (!local_user()) {
$page_mobile_theme = $this->pConfig->get($this->profile_owner, 'system', 'mobile-theme');
}
}
@ -525,10 +535,10 @@ class App
/**
* Provide a sane default if nothing is chosen or the specified theme does not exist.
*
* @return string
* @return string Current theme's stylsheet path
* @throws Exception
*/
public function getCurrentThemeStylesheetPath()
public function getCurrentThemeStylesheetPath(): string
{
return Core\Theme::getStylesheetPath($this->getCurrentTheme());
}
@ -576,6 +586,7 @@ class App
$this->profiler->set(microtime(true), 'classinit');
$moduleName = $this->args->getModuleName();
$page->setLogging($this->args->getCommand(), $this->args->getMethod());
try {
// Missing DB connection: ERROR
@ -718,6 +729,7 @@ class App
} catch (HTTPException $e) {
(new ModuleHTTPException())->rawContent($e);
}
$page->logRuntime($this->config, 'runFrontend');
}
/**
@ -728,7 +740,7 @@ class App
*
* @throws HTTPException\InternalServerErrorException
*/
public function redirect($toUrl)
public function redirect(string $toUrl)
{
if (!empty(parse_url($toUrl, PHP_URL_SCHEME))) {
Core\System::externalRedirect($toUrl);

View file

@ -78,7 +78,7 @@ class Arguments
/**
* @return string The whole command of this call
*/
public function getCommand()
public function getCommand(): string
{
return $this->command;
}
@ -94,7 +94,7 @@ class Arguments
/**
* @return array All arguments of this call
*/
public function getArgv()
public function getArgv(): array
{
return $this->argv;
}
@ -102,7 +102,7 @@ class Arguments
/**
* @return string The used HTTP method
*/
public function getMethod()
public function getMethod(): string
{
return $this->method;
}
@ -110,7 +110,7 @@ class Arguments
/**
* @return int The count of arguments of this call
*/
public function getArgc()
public function getArgc(): int
{
return $this->argc;
}
@ -145,7 +145,7 @@ class Arguments
*
* @return bool if the argument position exists
*/
public function has(int $position)
public function has(int $position): bool
{
return array_key_exists($position, $this->argv);
}
@ -158,7 +158,7 @@ class Arguments
*
* @return Arguments The determined arguments
*/
public function determine(array $server, array $get)
public function determine(array $server, array $get): Arguments
{
// removing leading / - maybe a nginx problem
$server['QUERY_STRING'] = ltrim($server['QUERY_STRING'] ?? '', '/');

View file

@ -107,7 +107,7 @@ class BaseURL
*
* @return string
*/
public function getHostname()
public function getHostname(): string
{
return $this->hostname;
}
@ -117,7 +117,7 @@ class BaseURL
*
* @return string
*/
public function getScheme()
public function getScheme(): string
{
return $this->scheme;
}
@ -127,7 +127,7 @@ class BaseURL
*
* @return int
*/
public function getSSLPolicy()
public function getSSLPolicy(): int
{
return $this->sslPolicy;
}
@ -137,7 +137,7 @@ class BaseURL
*
* @return string
*/
public function getUrlPath()
public function getUrlPath(): string
{
return $this->urlPath;
}
@ -151,7 +151,7 @@ class BaseURL
*
* @return string
*/
public function get($ssl = false)
public function get(bool $ssl = false): string
{
if ($this->sslPolicy === self::SSL_POLICY_SELFSIGN && $ssl) {
return Network::switchScheme($this->url);
@ -168,8 +168,9 @@ class BaseURL
* @param string? $urlPath
*
* @return bool true, if successful
* @TODO Find proper types
*/
public function save($hostname = null, $sslPolicy = null, $urlPath = null)
public function save($hostname = null, $sslPolicy = null, $urlPath = null): bool
{
$currHostname = $this->hostname;
$currSSLPolicy = $this->sslPolicy;
@ -224,11 +225,11 @@ class BaseURL
/**
* Save the current url as base URL
*
* @param $url
* @param string $url
*
* @return bool true, if the save was successful
*/
public function saveByURL($url)
public function saveByURL(string $url): bool
{
$parsed = @parse_url($url);
@ -421,7 +422,7 @@ class BaseURL
*
* @return string The cleaned url
*/
public function remove(string $origURL)
public function remove(string $origURL): string
{
// Remove the hostname from the url if it is an internal link
$nurl = Strings::normaliseLink($origURL);
@ -445,7 +446,7 @@ class BaseURL
*
* @throws HTTPException\InternalServerErrorException In Case the given URL is not relative to the Friendica node
*/
public function redirect($toUrl = '', $ssl = false)
public function redirect(string $toUrl = '', bool $ssl = false)
{
if (!empty(parse_url($toUrl, PHP_URL_SCHEME))) {
throw new HTTPException\InternalServerErrorException("'$toUrl is not a relative path, please use System::externalRedirectTo");
@ -458,8 +459,8 @@ class BaseURL
/**
* Returns the base url as string
*/
public function __toString()
public function __toString(): string
{
return $this->get();
return (string) $this->get();
}
}

View file

@ -130,7 +130,7 @@ class Mode
*
* @throws \Exception
*/
public function determine(BasePath $basepath, Database $database, Cache $configCache)
public function determine(BasePath $basepath, Database $database, Cache $configCache): Mode
{
$mode = 0;
@ -178,7 +178,7 @@ class Mode
*
* @return Mode returns the determined mode
*/
public function determineRunMode(bool $isBackend, array $server, Arguments $args, MobileDetect $mobileDetect)
public function determineRunMode(bool $isBackend, array $server, Arguments $args, MobileDetect $mobileDetect): Mode
{
foreach (self::BACKEND_CONTENT_TYPES as $type) {
if (strpos(strtolower($server['HTTP_ACCEPT'] ?? ''), $type) !== false) {
@ -201,7 +201,7 @@ class Mode
*
* @return bool returns true, if the mode is set
*/
public function has($mode)
public function has(int $mode): bool
{
return ($this->mode & $mode) > 0;
}
@ -227,7 +227,7 @@ class Mode
*
* @return int Execution Mode
*/
public function getExecutor()
public function getExecutor(): int
{
return $this->executor;
}
@ -235,9 +235,9 @@ class Mode
/**
* Install mode is when the local config file is missing or the DB schema hasn't been installed yet.
*
* @return bool
* @return bool Whether installation mode is active (local/database configuration files present or not)
*/
public function isInstall()
public function isInstall(): bool
{
return !$this->has(Mode::LOCALCONFIGPRESENT) ||
!$this->has(MODE::DBCONFIGAVAILABLE);
@ -248,7 +248,7 @@ class Mode
*
* @return bool
*/
public function isNormal()
public function isNormal(): bool
{
return $this->has(Mode::LOCALCONFIGPRESENT) &&
$this->has(Mode::DBAVAILABLE) &&
@ -261,7 +261,7 @@ class Mode
*
* @return bool Is it a backend call
*/
public function isBackend()
public function isBackend(): bool
{
return $this->isBackend;
}
@ -271,7 +271,7 @@ class Mode
*
* @return bool true if it was an AJAX request
*/
public function isAjax()
public function isAjax(): bool
{
return $this->isAjax;
}
@ -281,7 +281,7 @@ class Mode
*
* @return bool true if it was an mobile request
*/
public function isMobile()
public function isMobile(): bool
{
return $this->isMobile;
}
@ -291,7 +291,7 @@ class Mode
*
* @return bool true if it was an tablet request
*/
public function isTablet()
public function isTablet(): bool
{
return $this->isTablet;
}

View file

@ -30,8 +30,11 @@ use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Core\Logger;
use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\Core\Theme;
use Friendica\Module\Response;
use Friendica\Network\HTTPException;
use Friendica\Util\Network;
use Friendica\Util\Strings;
@ -76,14 +79,37 @@ class Page implements ArrayAccess
*/
private $basePath;
private $timestamp = 0;
private $command = '';
private $method = '';
/**
* @param string $basepath The Page basepath
*/
public function __construct(string $basepath)
{
$this->timestamp = microtime(true);
$this->basePath = $basepath;
}
public function setLogging(string $command, string $method)
{
$this->command = $command;
$this->method = $method;
}
public function logRuntime(IManageConfigValues $config, string $origin = '')
{
if (in_array($this->command, $config->get('system', 'runtime_ignore'))) {
return;
}
$runtime = number_format(microtime(true) - $this->timestamp, 3);
if ($runtime > $config->get('system', 'runtime_loglimit')) {
Logger::debug('Runtime', ['method' => $this->method, 'command' => $this->command, 'runtime' => $runtime, 'origin' => $origin]);
}
}
/**
* Whether a offset exists
*
@ -169,7 +195,7 @@ class Page implements ArrayAccess
* @param string $media
* @see Page::initHead()
*/
public function registerStylesheet($path, string $media = 'screen')
public function registerStylesheet(string $path, string $media = 'screen')
{
$path = Network::appendQueryParam($path, ['v' => FRIENDICA_VERSION]);
@ -229,7 +255,7 @@ class Page implements ArrayAccess
$shortcut_icon = $config->get('system', 'shortcut_icon');
if ($shortcut_icon == '') {
$shortcut_icon = 'images/friendica-32.png';
$shortcut_icon = 'images/friendica.svg';
}
$touch_icon = $config->get('system', 'touch_icon');
@ -262,7 +288,7 @@ class Page implements ArrayAccess
*
* Taken from http://webcheatsheet.com/php/get_current_page_url.php
*/
private function curPageURL()
private function curPageURL(): string
{
$pageURL = 'http';
if (!empty($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on")) {
@ -419,6 +445,9 @@ class Page implements ArrayAccess
{
$moduleName = $args->getModuleName();
$this->command = $moduleName;
$this->method = $args->getMethod();
/* Create the page content.
* Calls all hooks which are including content operations
*
@ -503,11 +532,7 @@ class Page implements ArrayAccess
}
if ($_GET["mode"] == "raw") {
header("Content-type: text/html; charset=utf-8");
echo substr($target->saveHTML(), 6, -8);
exit();
System::httpExit(substr($target->saveHTML(), 6, -8), Response::TYPE_HTML);
}
}

Some files were not shown because too many files have changed in this diff Show more