Compare commits

...

609 commits

Author SHA1 Message Date
Hypolite Petovan e8da8c5a2b
Merge pull request #14182 from annando/magic
Improve "magic" with Hubzilla
2024-05-26 10:03:07 -04:00
Hypolite Petovan 1b022a91fa
Merge pull request #14181 from mexon/mat/block-doc
Add documentation about behaviour of blocks
2024-05-26 10:00:08 -04:00
Hypolite Petovan e3100c62ce
Merge pull request #14180 from annando/authredirect
Provide OpenWebAuth related data
2024-05-26 09:57:50 -04:00
Michael dca93a9606 Enable "magic" with Hubzilla 2024-05-26 12:44:08 +00:00
Matthew Exon f70546d37b Add documentation about behaviour of blocks 2024-05-26 14:02:20 +02:00
Michael 4d3d4de972 Provide OpenWebAuth related data 2024-05-26 06:45:26 +00:00
Tobias Diekershoff 5751311e99
Merge pull request #14179 from annando/authredirect
Store the "authredirect" path of a server
2024-05-26 08:05:23 +02:00
Tobias Diekershoff eba67fdd88
Merge pull request #14178 from annando/issue-14175
Issue 14175: Fix problems with upper case host names
2024-05-26 08:03:10 +02:00
Michael 1853f00a12 Store the "authredirect" path of a server 2024-05-26 00:07:06 +00:00
Michael df0440ea97 Issue 14175: Fix problems with upper case host names 2024-05-25 19:00:53 +00:00
Hypolite Petovan c432924d27
Merge pull request #14176 from annando/feed
Improved summary handling for feeds
2024-05-24 12:19:25 -04:00
Michael Vogel b1e2675dff
Merge pull request #14177 from tobiasd/20240524-lng
translation updates
2024-05-24 10:17:16 +02:00
Tobias Diekershoff 14759ff50a translation updates 2024-05-24 07:59:09 +02:00
Michael 4066a5403c Improved summary handling for feeds 2024-05-23 19:45:42 +00:00
Hypolite Petovan d20c5493ae
Merge pull request #14173 from annando/owa
OpenWebAuth path is now fetched during probing
2024-05-20 16:00:55 -04:00
Michael da37516abf OpenWebAuth path is now fetched during probing 2024-05-20 19:46:29 +00:00
Tobias Diekershoff ea5e1f1edc
Merge pull request #14172 from annando/fix-warning
Fix: Undefined array key "host"
2024-05-20 17:40:17 +02:00
Michael 92a7b65587 Fix: Undefined array key "host" 2024-05-20 14:49:36 +00:00
Tobias Diekershoff 6b04dcf90b
Merge pull request #14171 from annando/idn
Fix international domains
2024-05-20 12:08:58 +02:00
Michael 7176fed316 Fix international domains 2024-05-20 09:11:09 +00:00
Tobias Diekershoff 97c12055a2
Merge pull request #14169 from annando/issue-14160
Issue 14160: Don't add simple participants to "cc"
2024-05-19 17:58:05 +02:00
Michael 8ae1f0d0e9 Issue 14160: Don't add simple participants to "cc" 2024-05-19 14:52:41 +00:00
Tobias Diekershoff 4b3498710f
Merge pull request #14168 from annando/issue-14153
Issue 14153: Don't transmit activities to all participants
2024-05-19 13:52:10 +02:00
Michael cb0b3e67be Issue 14153: Don't transmit activities to all participants 2024-05-19 08:37:18 +00:00
Hypolite Petovan a5e12c82df
Merge pull request #14167 from annando/warning
Fix: Undefined array key "content-warning"
2024-05-18 07:45:48 -04:00
Michael 058499cd92 Fix: Undefined array key "content-warning" 2024-05-18 11:15:47 +00:00
Tobias Diekershoff bda829665e
Merge pull request #14166 from annando/streams
Improved streams detection
2024-05-16 18:44:33 +02:00
Michael 846addf7b3 Improved streams detection 2024-05-16 15:26:46 +00:00
Hypolite Petovan 1f12d1e668
Merge pull request #14165 from annando/probe
Fixes "Undefined array key url"
2024-05-16 11:15:59 -04:00
Hypolite Petovan 570de6a91a
Merge pull request #14164 from loma-one/develop
Colour for fading in a comment adjusted
2024-05-16 11:14:26 -04:00
Hypolite Petovan c81ee0d1c3
Merge pull request #14162 from annando/sensitive
Respect the "sensitive" flag for posts
2024-05-16 11:12:28 -04:00
Michael 4ce1911889 Fixes " Undefined array key url" 2024-05-16 10:54:59 +00:00
loma-one 367170a92a
Colour for fading in a comment adjusted
When a comment is called up via the notification, the comment is highlighted brightly. With a dark theme, this is disproportionately bright. 

The changed colour values represent a compromise between light and dark themes. 

https://github.com/friendica/friendica/issues/14052
2024-05-16 11:28:33 +02:00
Michael 0426572e92 Respect the "sensitive" flag for summaries 2024-05-15 12:17:06 +00:00
Hypolite Petovan cad3a01b1c
Merge pull request #14161 from annando/error
Fix " Call to undefined method Friendica\App::getLoggedInUserNickname"
2024-05-15 07:56:56 -04:00
Michael 69b1958483 Fix " Call to undefined method Friendica\App::getLoggedInUserNickname" 2024-05-15 06:15:50 +00:00
Hypolite Petovan 3493b2c1b5
Merge pull request #14159 from annando/unparseurl
"Network::unparseURL" is replaced with "Uri::fromParts"
2024-05-14 19:49:33 -04:00
Michael 1c66d49599 "Network::unparseURL" is replaced with "Uri::fromParts" 2024-05-14 21:47:57 +00:00
Hypolite Petovan a6f3c961dc
Merge pull request #14157 from annando/deprecated2
Some more deprecated function calls are replaced
2024-05-14 15:23:47 -04:00
Michael e12f92e516 Some more deprecated function calls are replaced 2024-05-14 19:21:25 +00:00
Hypolite Petovan bd6616e84f
Merge pull request #14155 from annando/deprecated
Many deprecated function calls are replaced
2024-05-13 18:40:38 -04:00
Michael 60f5fd8188 Many deprecated function calls are replaced 2024-05-13 21:37:15 +00:00
Hypolite Petovan cfad5809ff
Merge pull request #14154 from annando/probe
Friendica probing simplified / Zot probing improved
2024-05-13 14:15:27 -04:00
Hypolite Petovan 104d355096
Merge pull request #14146 from annando/loglevels
Improve the log level display
2024-05-13 14:14:10 -04:00
Michael 82327b0b06 Improve the log level display 2024-05-13 12:34:35 +00:00
Michael 8a100e847d Friendica probing simplified / Zot probing improved 2024-05-13 12:33:32 +00:00
Tobias Diekershoff 9ae4a17977
Merge pull request #14152 from annando/feed-no-html
Log the feed fix only if it has an effect.
2024-05-13 06:29:02 +02:00
Hypolite Petovan c604477cac
Merge pull request #14151 from annando/local-link
Probing for Zot improved and Pumpio removed
2024-05-12 21:03:20 -04:00
Michael 21fc28029a Probing for Zot improved and Pumpio removed 2024-05-13 00:58:54 +00:00
Michael 52b11856fa Log the feed fix only if it has an effect. 2024-05-13 00:36:30 +00:00
Hypolite Petovan 9e1362ba46
Merge pull request #14150 from annando/request-type
Request type set for all HTTP requests
2024-05-12 15:33:58 -04:00
Michael 5751e024c0 Request type set for all HTTP requests 2024-05-12 17:53:21 +00:00
Hypolite Petovan d788cb82cc
Merge pull request #14148 from annando/summary
Use the field for the summary instead of the "abstract" element
2024-05-11 18:14:32 -04:00
Hypolite Petovan ec5e8a55b5
Merge pull request #14147 from annando/feed-no-html
Support for non HTML content for feed imports
2024-05-11 18:13:40 -04:00
Hypolite Petovan a73ba083f9
Merge pull request #14142 from annando/attachments
Issue 11963: Set Permissions for attachments
2024-05-11 18:09:19 -04:00
Michael e43f96740b Use the field for the summary instead of the "abstract" element 2024-05-11 20:14:01 +00:00
Michael bca86beda0 Support for non HTML content for feed imports 2024-05-11 20:03:19 +00:00
Michael 567292533e Issue 11963: Set Permissions for attachments 2024-05-11 19:19:18 +00:00
Tobias Diekershoff ee9510e17d
Merge pull request #14140 from haheute/docs-channels-de
German translation of Channels Documentation
2024-05-11 14:40:36 +02:00
Tobias Diekershoff 99426d4188
Merge pull request #14144 from annando/unneeded-log-entry
Unneeded log entry removed
2024-05-11 14:34:47 +02:00
Michael Vogel 0be622e049
Merge pull request #14139 from MrPetovan/bug/apexrabbit-vulns
Fix a couple of stored XSS vulnerabilities
2024-05-11 14:03:24 +02:00
Michael f574bc72ca Unneeded log entry removed 2024-05-11 08:52:50 +00:00
Michael Vogel 5b55ba2176
Merge pull request #14141 from MrPetovan/bug/14045-addon-unregistration
Add support for absolute file paths when removing addon
2024-05-11 10:46:57 +02:00
Tobias Diekershoff db8cab77c1
Merge pull request #14143 from MrPetovan/bug/fatal-errors
Fix wrong return value in Item::gettopLevelParent()
2024-05-11 10:01:13 +02:00
Hypolite Petovan 40949483f3 Fix wrong return value in Item::gettopLevelParent()
- Address https://github.com/friendica/friendica/issues/14025#issuecomment-2105033182
2024-05-10 21:54:19 -04:00
Hypolite Petovan 28784eef85 Update main translation file after changing several strings 2024-05-10 20:41:22 -04:00
Hypolite Petovan 42c3faa450 Add support for absolute file paths when removing addon
- This handles a rare case where absolute addon file paths were saved to the hook table
2024-05-10 20:34:47 -04:00
Hannes Heute 786a8dbd3b (-group) posts of group 2024-05-10 18:30:22 +02:00
Hannes Heute afda3de363 tabs to 4 spaces 2024-05-10 18:26:31 +02:00
Hypolite Petovan 25475b4838 Escape album name select list in photo upload form
- Thanks to @apexrabbit for the report!
2024-05-10 11:25:59 -04:00
Hypolite Petovan a6cb3ed903 Escape output of PermissionTooltip module
- Create AclReceivers and AddressedReceivers entities to collect contact names
- Create privacy/permission_tooltip.tpl to escape contact names
- Move PermissionTooltip module to Privacy namespace
- Thanks to @apexrabbit for the report!
2024-05-10 11:25:59 -04:00
Hypolite Petovan c19a68dc64 Remove DI dependency from PermissionTooltip module
- Update PHPDoc of APContact::getByURL
2024-05-10 11:25:27 -04:00
Hannes Heute a356fe65d0 typo 2024-05-10 17:24:38 +02:00
Hypolite Petovan f566c52624
Merge pull request #14138 from annando/user-agent
Improved user agent string
2024-05-10 11:07:39 -04:00
Hypolite Petovan 9dc0e5393e
Merge pull request #14135 from tobiasd/colorize-loglevels
Colorize loglevels
2024-05-10 10:59:05 -04:00
Hannes Heute e049fd5e47 Unified Indentation 2024-05-10 16:58:17 +02:00
Hannes Heute 579a0b43ce German translation of Channels documentation 2024-05-10 16:47:15 +02:00
Michael afff2b949f Improved user agent string 2024-05-10 09:01:43 +00:00
Tobias Diekershoff 0ae91b59ca
Merge pull request #14136 from annando/issue-14134
Issue 14134: Allow reshare posts from Bluesky and Tumblr
2024-05-10 08:04:33 +02:00
Tobias Diekershoff e7b9d97672
Merge pull request #14137 from annando/issue-14132
Issue 14132: Title for videos
2024-05-10 08:02:45 +02:00
Michael e7b861388d Issue 14132: Title for videos 2024-05-10 05:42:45 +00:00
Michael 55fb52299d Issue 14134: Allow reshare posts from Bluesky and Tumblr 2024-05-10 04:55:57 +00:00
Tobias Diekershoff 38e082949d adopt colors 2024-05-10 06:34:29 +02:00
Tobias Diekershoff aeb1382039 make warnings bold as well
now the three most severe levels are bold, while the three less severe levels have a normal font weight
2024-05-09 11:45:30 +02:00
Tobias Diekershoff 63a7536624 remove whitespaces 2024-05-09 10:33:51 +02:00
Tobias Diekershoff bf278adb15 admin panel - colorize error levels
With this patch the error levels shown in the Admin Panel -> Log view are coloured according to severity. Starting from green for debug, over orange for notices to bold red for errors and criticals.
2024-05-09 10:32:55 +02:00
Hypolite Petovan 765af10f00
Merge pull request #14119 from MrPetovan/imgbot
[ImgBot] Optimize images
2024-04-27 11:04:01 -04:00
ImgBotApp e98b3a307b [ImgBot] Optimize images
*Total -- 1,838.08kb -> 1,439.34kb (21.69%)

/images/screenshots/friendica-2023-12-frio-desktop.png -- 1,011.26kb -> 706.65kb (30.12%)
/images/screenshots/friendica-2023-10-frio-mobile-options-dark-blue.png -- 184.63kb -> 149.93kb (18.8%)
/images/screenshots/friendica-2023-10-frio-mobile-options-light-blue.png -- 166.19kb -> 138.00kb (16.96%)
/images/screenshots/friendica-2023-10-frio-mobile-timeline-dark-blue.png -- 400.47kb -> 370.62kb (7.45%)
/images/bluesky.jpg -- 7.75kb -> 7.55kb (2.58%)
/view/js/vanillaEmojiPicker/screenshot.png -- 67.77kb -> 66.58kb (1.76%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2024-04-27 10:59:46 -04:00
Michael Vogel e8aaa9cfec
Merge pull request #14114 from MrPetovan/bug/14110-reports-query
Rework reports query in Moderation\Reports module class
2024-04-25 06:47:51 +02:00
Hypolite Petovan b1b2e9bd11 Rework reports query in Moderation\Reports module class
- References to non-existent fields removed
- Added computed rules field
- Patch originally submitted by @TheTomcat14
2024-04-24 22:43:59 -04:00
Hypolite Petovan fe9ef20392
Merge pull request #14103 from annando/api-channel-list
API: Access channels and groups via lists
2024-04-19 18:16:34 -04:00
Michael 984a972e72 API: Access channels and groups via lists 2024-04-19 21:42:34 +00:00
Hypolite Petovan 1cabf53bf5
Merge pull request #14101 from annando/self-this
"self::" should be "$this->" on non static functions
2024-04-18 10:40:56 -04:00
Michael 2776411c6c "self::" should be "$this->" on non static functions 2024-04-18 05:18:44 +00:00
Hypolite Petovan 894c56ea22
Merge pull request #14100 from annando/origin
Performance improvements when displaying local posts
2024-04-17 17:21:18 -04:00
Michael c82a1ed467 Performance improvements when displaying local posts 2024-04-17 19:16:47 +00:00
Hypolite Petovan bae1f63424
Merge pull request #14097 from annando/enable-user-defined-channel
Enable user defined channels upon adding/editing
2024-04-15 19:16:02 -04:00
Michael 652802f758 Enable user defined channels upon adding/editing 2024-04-15 20:20:42 +00:00
Tobias Diekershoff ac195c7061
Merge pull request #14096 from annando/noproxy
The legacy proxy functionality is removed
2024-04-15 21:17:31 +02:00
Michael 9cf8678323 Unused function removed 2024-04-15 19:06:12 +00:00
Michael 0e79b5373b The legacy proxy functionality is removed 2024-04-15 18:58:02 +00:00
Hypolite Petovan c30e4c02de
Merge pull request #14095 from annando/warning
Fix warning: Undefined array key "post-reason"
2024-04-15 00:09:01 -04:00
Michael b351819986 Fix: Undefined array key "allow_cid" 2024-04-15 03:25:06 +00:00
Michael 642c55ee3e Fix: "Undefined property: stdClass::$personal" 2024-04-15 03:24:38 +00:00
Michael 6e0118f3fe Fix warning: Undefined array key "post-reason" 2024-04-15 03:10:15 +00:00
Hypolite Petovan 49a0b0fc3c
Merge pull request #14090 from annando/bbcode
The BBCode conversion is split into several smaller functions
2024-04-14 21:59:46 -04:00
Hypolite Petovan 4a0b989386
Merge pull request #14094 from mexon/mat/testing-doc
update testing documentation
2024-04-14 21:58:26 -04:00
Hypolite Petovan 9329eebec0
Merge pull request #14093 from mexon/mat/autotest-password
allow overriding password during local testing
2024-04-14 21:54:59 -04:00
Matthew Exon 619a63af6b update testing documentation 2024-04-14 11:11:00 +02:00
Michael 38da9013ff The BBCode conversion is split into several smaller functions 2024-04-14 07:45:56 +00:00
Matthew Exon e24d1da13b tidy up more password definitions 2024-04-14 09:06:48 +02:00
Hypolite Petovan ed01b0f409
Merge pull request #14075 from mexon/mat/empty-picture-scale
round scaled dimensions up to avoid zero size
2024-04-13 18:30:44 -04:00
Matthew Exon f616dc054f allow overriding password during local testing 2024-04-13 22:24:30 +02:00
Matthew Exon a20b876d67 add unit tests for getScalingDimensions 2024-04-13 21:50:17 +02:00
Matthew Exon c5b8abcaf0 round scaled dimensions up to avoid zero size 2024-04-13 21:50:17 +02:00
Hypolite Petovan 9fe0d72461
Merge pull request #14080 from annando/issue-14079
Issue #14079:  Shorten the displayed URL
2024-04-11 21:55:59 -04:00
Michael 45b30825f0 Isolate the link conversion into a dedicated function 2024-04-11 22:10:30 +00:00
Michael 7dc5622dca Issue #14079: Shorten the displayed URL 2024-04-11 04:37:42 +00:00
Hypolite Petovan ce580241e2
Merge pull request #14089 from annando/ping-lock
Prevent concurring ping requests
2024-04-10 19:19:24 -04:00
Michael a440619769 Prevent concurring ping requests 2024-04-10 22:25:14 +00:00
Tobias Diekershoff 9626a76b18
Merge pull request #14083 from annando/issue-13812
Issue 13812: Public groups with manual request approval
2024-04-09 18:46:44 +02:00
Tobias Diekershoff b02a5ed701
Merge pull request #14085 from annando/generator
Use similar values for generator and system actor
2024-04-09 18:38:22 +02:00
Michael 69fc2c04e4 Issue 13812: Public groups with manual request approval 2024-04-08 07:58:45 +00:00
Michael d7e8ee51ae Use similar values for generator and system actor 2024-04-08 06:33:03 +00:00
Tobias Diekershoff 02d8cc2f71
Merge pull request #14076 from annando/follow-vcard
Don't display the "follow/unfollow" vcard-link on pages meant for follow/unfollow
2024-04-08 07:35:16 +02:00
Tobias Diekershoff 0a88d5a94a
Merge pull request #14082 from annando/issue-14055
Issue 14055: Set link to group server for group posts
2024-04-08 07:31:53 +02:00
Michael 8b75aab4ad Don't display the "follow/unfollow" vcard-link on pages meant for follow/unfollow 2024-04-07 21:30:39 +00:00
Michael a2da42640c Issue 14055: Set link to group server for group posts 2024-04-07 15:46:55 +00:00
Tobias Diekershoff ad65e56b16
Merge pull request #14077 from annando/idn
Fallback mechanism for missing IDN functions
2024-04-07 08:11:35 +02:00
Michael 78dc61b59e Fallback mechanism for missing IDN functions 2024-04-06 11:26:12 +00:00
Hypolite Petovan e9dcf15d86
Merge pull request #14074 from annando/searchtext
Menu option to display the search text
2024-04-05 08:40:45 -04:00
Michael b40687081e The data for the language display is now fetched on demand 2024-04-05 10:29:27 +00:00
Michael 50b1de5959 Menu option to display the search text 2024-04-05 07:35:21 +00:00
Michael Vogel 44344af055
Merge pull request #14072 from jlamothe/from-to
fixed Channels documentation
2024-04-04 00:51:40 +02:00
Jonathan Lamothe cbcec17bcb fixed Channels documentation
The "to" keyword documentation seemed incorrect.
2024-04-03 15:48:03 -04:00
Hypolite Petovan 9ab5d8a83a
Merge pull request #14069 from annando/invalid-link
Avoid exception "Unable to retrieve the host in URL" in the search
2024-04-03 09:25:46 -04:00
Michael 0d4f956fba Avoid exception "Unable to retrieve the host in URL" in the search 2024-04-03 07:51:02 +00:00
Hypolite Petovan c71f4eb1df
Merge pull request #14068 from annando/wall-read
Don't set posts to seen on channel ping
2024-04-02 21:22:13 -04:00
Michael 626ab7cb54 Don't set posts to seen on channel ping 2024-04-02 21:31:57 +00:00
Hypolite Petovan c8fff8c50c
Merge pull request #14064 from haheute/mobile-padding-2
Add some padding for the login page at mobile width (frio)
2024-04-01 20:33:07 -04:00
Hypolite Petovan 3bb00f36f8 [frio] Restore lateral margins on home/login page for mobile display
- They had been removed site-wide to give more space to posts in the network view
2024-04-01 09:41:08 -04:00
Hypolite Petovan fda2873a92
Merge pull request #14060 from eibhear-from-athlone/friendica_14059_nexttry
Show the next try date and time on the deferred worker job list in the admin pages
2024-03-29 23:00:27 -04:00
Éibhear Ó hAnluain 394c388a46
Fixing the queue.tpl files 2024-03-29 20:36:40 +00:00
Éibhear Ó hAnluain 6e7178022b
Updates messages file following run of bin/run_xgettext.sh 2024-03-29 20:29:31 +00:00
Éibhear Ó hAnluain 1d86146f64
Show next_try only for the deferred worker job. 2024-03-29 20:27:10 +00:00
Éibhear Ó hAnluain 751ffe6bc6
Add the next_try field to the worker job queue list 2024-03-29 20:27:10 +00:00
Hypolite Petovan 31b74b1c8a
Merge pull request #14046 from annando/channel-counter
Improvements for channel counter
2024-03-27 11:15:44 -04:00
Michael 0fde21ff28 Improvements for channel counter 2024-03-27 11:12:44 +00:00
Hypolite Petovan 53a2fb648f
Merge pull request #14043 from haheute/typo-independent
fix typo: Independant --> Independent
2024-03-26 13:40:39 -04:00
Hannes Heute 13b890605b add messages.po again 2024-03-26 18:35:50 +01:00
Hypolite Petovan 97f7a99382
Merge pull request #14044 from haheute/img-div-class
Img div class
2024-03-26 13:07:30 -04:00
Hannes Heute e602b16dfb follow naming convention 2024-03-26 17:33:45 +01:00
Hannes Heute 5c7dd34fba remove the typo fix from this PR 2024-03-26 17:29:52 +01:00
Hannes Heute 4b647d288a added messages.po 2024-03-26 17:21:19 +01:00
Hannes Heute 71a9e6112e Add class to div for custom styling 2024-03-26 14:04:05 +01:00
Hannes Heute 0fd5c00010 fix typo: Independant --> Independent 2024-03-26 13:14:19 +01:00
Hypolite Petovan 250b3b813c
Merge pull request #14041 from annando/feature-admin
Simplified admin frontend for features
2024-03-26 07:30:24 -04:00
Michael f537d7a64f Simplified admin frontend for features 2024-03-25 21:55:42 +00:00
Hypolite Petovan 5ec445e90b
Merge pull request #14040 from annando/widget-lock
The visibility of network widgets can now be locked
2024-03-25 10:42:10 +00:00
Michael 67e0b6357e The visibility of network widgets can now be locked 2024-03-25 08:00:46 +00:00
Tobias Diekershoff f928372266
Merge pull request #14039 from annando/widget-features
Configuration for widgets
2024-03-25 08:45:16 +01:00
Michael 200cf29a8d Configuration for widgets 2024-03-25 07:38:36 +00:00
Michael Vogel f78b0e7c51
Merge pull request #14037 from MrPetovan/bug/warnings
Add expected field 'uri-id' in Mastodon\Statuses\Bookmark
2024-03-24 20:57:20 +01:00
Hypolite Petovan b21604a720
Merge pull request #14038 from annando/feature-constants
Constants for features
2024-03-24 19:37:39 +00:00
Hypolite Petovan c67225c62d Add expected field 'uri-id' in Mastodon\Statuses\Bookmark
- Address https://github.com/friendica/friendica/issues/14026#issuecomment-2016469896
2024-03-24 15:30:44 -04:00
Michael Vogel 449464a2b1
Merge pull request #14036 from MrPetovan/bug/deprecated
Add `'$VERSION'` template variable to make Friendica version available in templates
2024-03-24 15:55:29 +01:00
Michael c041c65c1d Comstants for features 2024-03-24 14:48:23 +00:00
Hypolite Petovan e293de04f5 Add '$VERSION' template variable to make Friendica version available in templates
- constant() Smarty function is deprecated
- Remove unused site-wide template variable '$APP'
- Address https://github.com/friendica/friendica/issues/14027#issuecomment-2016469408
2024-03-24 09:20:58 -04:00
Hypolite Petovan b4d71f1855 Remove duplicated '$baseurl' template variable declarations
- This variable is declared for all templates in Renderer
2024-03-24 09:11:46 -04:00
Tobias Diekershoff d824bb536f
Merge pull request #14032 from annando/quoted-posts
Implementation of FEP-e232 for quoted posts
2024-03-24 07:59:53 +01:00
Tobias Diekershoff 1b9fa0fe00
Merge pull request #14033 from annando/content-link
Add a link to the post if "no preview" is selected
2024-03-24 07:54:35 +01:00
Michael b72e32a842 Add a link to the post if "no preview" is selected 2024-03-24 06:46:48 +00:00
Michael b39c48fb02 Implementation of FEP-e232 for quoted posts 2024-03-24 06:05:37 +00:00
Hypolite Petovan b5a69da872
Merge pull request #14029 from annando/issue-13910
Issue 13910: Display the unseen counter based on the channel
2024-03-24 00:08:25 +00:00
Michael 618a3153ab Issue 13910: Display the unseen counter based on the channel 2024-03-23 17:17:56 +00:00
Hypolite Petovan 0ccb3e7efe
Merge pull request #14017 from annando/active-admin-check
Automatically close the registration when the admin is inactive
2024-03-22 11:52:24 +00:00
Michael 4b695e361c Automatically close the registration when the admin is inactive 2024-03-22 04:19:40 +00:00
Hypolite Petovan 4834255acf
Merge pull request #14015 from annando/did
Internal support for Bluesky tokens
2024-03-21 22:10:09 +00:00
Michael 325932dc5a Internal support for Bluesky tokens 2024-03-21 21:33:12 +00:00
Hypolite Petovan faac52e078
Merge pull request #14020 from annando/issue-13714
Issue 13714: Support for "commentsEnabled" and "capabilities"
2024-03-21 17:21:51 +00:00
Michael 7a0c5d141e Issue 13714: Support for "commentsEnabled" and "capabilities" 2024-03-21 17:11:20 +00:00
Hypolite Petovan 732d738b82
Merge pull request #14022 from annando/channel-only
Possibility to mark contacts as "channel only"
2024-03-21 16:11:49 +00:00
Michael 3d267c7b8f Possibility to mark contacts as "channel only" 2024-03-21 13:20:52 +00:00
Hypolite Petovan 987e6c5ea6
Merge pull request #14016 from annando/issue-13787
Issue 13787: Filter in circles editor by contact relation
2024-03-21 13:07:57 +00:00
Hypolite Petovan 9e240c24ce
Merge pull request #14023 from annando/files
Updated database.sql / messages.po
2024-03-21 13:03:31 +00:00
Michael 3b419cae1e Issue 13787: Filter in circles editor by contact relation 2024-03-21 12:58:54 +00:00
Hypolite Petovan 56f3743e75
Merge pull request #14021 from annando/worker-idletime
Execute a worker task when there hadn't one for some seconds
2024-03-21 12:41:20 +00:00
Hypolite Petovan f26f35f009
Merge pull request #14018 from annando/content-type-check
Improved Content-Type check on incoming requests
2024-03-21 11:58:08 +00:00
Michael fdd777d75d Updated database.sql / messages.po 2024-03-21 10:49:42 +00:00
Michael aff45278e1 Execute a worker task when there hadn't one for some seconds 2024-03-21 09:10:07 +00:00
Michael 11a16589da Improved Content-Type check on incoming requests 2024-03-21 09:02:25 +00:00
Tobias Diekershoff f60638787e added empty 2024.06 block to the CHANGELOG 2024-03-21 08:10:42 +01:00
Tobias Diekershoff c5936bb51e bump version to 2024.06-dev 2024-03-21 08:09:16 +01:00
Tobias Diekershoff f13c5dcbaf bump version to 2024.03 2024-03-21 08:01:47 +01:00
Tobias Diekershoff 2fcd090b11 new expiration date for security.txt 2024-03-21 08:01:12 +01:00
Tobias Diekershoff 4aa53beaea Merge branch '2024.03-rc' into stable 2024-03-21 07:58:02 +01:00
Tobias Diekershoff 25a22ad3ae set release date in CHANGELOG 2024-03-21 07:56:18 +01:00
Tobias Diekershoff ae217ce27c
Merge pull request #13963 from tobiasd/2024.03-CHANGELOG
CHANGELOG for 2024.03
2024-03-21 07:54:54 +01:00
Hypolite Petovan 17dea0aa5a
Merge pull request #14013 from foss-/patch-13
Update FAQ.md
2024-03-21 00:20:14 +00:00
foss- bd142218c1
Update FAQ.md
fix Windows link for Whalebird
2024-03-21 00:12:42 +01:00
Michael Vogel ce8d0b3b57
Merge pull request #14011 from MrPetovan/task/composer
Update Composer dependencies ahead of release
2024-03-20 10:00:31 +01:00
Hypolite Petovan 8f7edcef22 Update Composer dependencies ahead of release
Main changes:
- Updating matriphe/iso-639 (1.2 => 1.3)
- Updating phpseclib/phpseclib (3.0.35 => 3.0.37)
- Updating smarty/smarty (v4.3.4 => v4.5.1)
- Updating composer/ca-bundle (1.4.0 => 1.5.0)

Dev changes:
- Updating mockery/mockery (1.6.7 => 1.6.10)
- Updating sebastian/resource-operations (3.0.3 => 3.0.4)
- Updating sebastian/global-state (5.0.6 => 5.0.7)
- Updating sebastian/exporter (4.0.5 => 4.0.6)
- Updating sebastian/diff (4.0.5 => 4.0.6)
- Updating sebastian/cli-parser (1.0.1 => 1.0.2)
- Updating theseer/tokenizer (1.2.2 => 1.2.3)
- Updating nikic/php-parser (v5.0.0 => v5.0.2)
- Updating phpunit/php-code-coverage (9.2.30 => 9.2.31)
- Updating phar-io/manifest (2.0.3 => 2.0.4)
- Updating phpunit/phpunit (9.6.15 => 9.6.17)
- Updating symfony/stopwatch (v5.4.21 => v5.4.35)
- Updating symfony/polyfill-php80 (v1.28.0 => v1.29.0)
- Updating symfony/process (v5.4.34 => v5.4.36)
- Updating symfony/polyfill-php81 (v1.28.0 => v1.29.0)
- Updating symfony/polyfill-mbstring (v1.28.0 => v1.29.0)
- Updating symfony/polyfill-php73 (v1.28.0 => v1.29.0)
- Updating symfony/finder (v5.4.27 => v5.4.35)
- Updating symfony/polyfill-ctype (v1.28.0 => v1.29.0)
- Updating symfony/filesystem (v5.4.25 => v5.4.35)
- Updating symfony/event-dispatcher (v5.4.34 => v5.4.35)
- Updating symfony/polyfill-intl-normalizer (v1.28.0 => v1.29.0)
- Updating symfony/polyfill-intl-grapheme (v1.28.0 => v1.29.0)
- Updating symfony/string (v5.4.34 => v5.4.36)
- Updating symfony/console (v5.4.34 => v5.4.36)
- Updating composer/pcre (3.1.1 => 3.1.3)
- Updating friendsofphp/php-cs-fixer (v3.46.0 => v3.52.1)
2024-03-19 23:19:43 -04:00
Hypolite Petovan 2f526f7a80
Merge pull request #14010 from friendica/2024.03-CREDITS
updated the credits
2024-03-18 16:40:11 +00:00
Tobias Diekershoff 2780b3e3a4 updated CHANGELOG 2024-03-18 17:21:18 +01:00
Tobias Diekershoff 2785b074f8 updated the credits 2024-03-18 17:08:46 +01:00
Hypolite Petovan 8a693fed37
Merge pull request #13991 from foss-/patch-13
Re-wrote themes.md
2024-03-18 12:35:11 +00:00
Hypolite Petovan 6f5585ffd7
Merge pull request #14009 from foss-/patch-15
Update FAQ.md
2024-03-18 04:26:59 +00:00
foss- c9f6590353
Update FAQ.md
- Pachli website instead of GitHub link
2024-03-18 04:32:09 +01:00
foss- 3f1cac2251
Update doc/FAQ.md
- link to tusky website

Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2024-03-18 04:30:29 +01:00
Hypolite Petovan 3a8f1f6304
Merge pull request #14008 from foss-/patch-14
Update API-Mastodon.md
2024-03-18 02:25:58 +00:00
foss- a5c265b6aa
Update FAQ.md
- fix typo
- added Pachli
- fixed Subway Tooter F-Droid link and specified Izzy repo)
- removed Fedi (last update in 2021, https://fediapp.com/ dead)
- updated Husky repo link
- changed tusky link to repo instead of website
2024-03-18 00:53:24 +01:00
foss- ea79782a93
Update API-Mastodon.md Fixes #13914
- removed unsupported clients (information is no longer accurate) and simplified Clients section
- new API Endpoints were added in https://github.com/friendica/friendica/pull/14007
2024-03-18 00:24:06 +01:00
Hypolite Petovan 882673c260
Merge pull request #14007 from annando/api-documentation
Slightly updated API documentation
2024-03-17 15:02:22 +00:00
Michael 668bb3e6f4 Slightly updated API documentation 2024-03-17 14:40:35 +00:00
Hypolite Petovan 7331e44a1c
Merge pull request #14006 from annando/accounttype
Fix accounttype/nosharer url
2024-03-16 17:19:55 +00:00
Michael 1ffdb19c8e Fix accounttype/nosharer url 2024-03-16 16:44:25 +00:00
Hypolite Petovan 5c62d91960
Merge pull request #14005 from annando/issue-13984
Issue 13984: Fix preview picture
2024-03-16 15:07:54 +00:00
Hypolite Petovan 7615a3103f
Merge pull request #14002 from annando/relais-update
Fix handling of relay contact updates
2024-03-16 15:07:16 +00:00
Michael 2ecdd683ac Issue 13984: Fix preview picture 2024-03-16 10:30:43 +00:00
Michael a9b78d1974 Merge remote-tracking branch 'upstream/2024.03-rc' into relais-update 2024-03-16 08:35:56 +00:00
Michael Vogel e6c23e69cc
Apply suggestions from code review
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2024-03-16 09:19:57 +01:00
Hypolite Petovan c81a47c764
Merge pull request #14004 from annando/warning
Fix "Undefined variable $success"
2024-03-16 08:15:42 +00:00
Hypolite Petovan 4bbc1d84ce
Merge pull request #14003 from annando/issue-14001
Issue 14001: Fix "Incorrect integer value"
2024-03-16 08:14:45 +00:00
Hypolite Petovan f7cb9ec504
Merge pull request #14000 from nupplaphil/feat/CI_php83
[CI] Add PHP 8.3 and upgrade CI images
2024-03-16 08:08:01 +00:00
Michael 28363a5416 Fix "Undefined variable $success" 2024-03-16 07:58:51 +00:00
Michael f1be6d5181 Issue 14001: Fix "Incorrect integer value" 2024-03-16 07:53:12 +00:00
Michael b75fdbbd32 Fix handling of relais contact updates 2024-03-16 05:30:21 +00:00
Philipp Holzer 9ce2142d99
Adhere deprecation notes
- Use `when:`
- Remove `group: lint`
2024-03-15 23:59:08 +01:00
Philipp Holzer 4f24247aa7
Use PHP 8.2 for other pipelines 2024-03-15 23:58:31 +01:00
Philipp Holzer 0eec20d203
Use PHP 8.2 for codecoverage 2024-03-15 23:58:31 +01:00
Philipp Holzer adeb9af502
Update PHP 8.1 and PHP 8.2 CI image 2024-03-15 23:03:44 +01:00
Philipp Holzer c577773e07
[CI] Add PHP 8.3 2024-03-15 22:55:48 +01:00
Tobias Diekershoff b8396daca2
Merge pull request #13998 from annando/probe-hide
Fix: "unsearchable" is now stored
2024-03-15 07:24:13 +01:00
Michael eaddf5318a Fix: "unsearchable" is now stored 2024-03-15 06:07:47 +00:00
Tobias Diekershoff aee9a61fb1 added missing closed issue 2024-03-14 08:42:42 +01:00
Tobias Diekershoff 81b5ed160b Updated CHANGELOG 2024-03-14 08:40:55 +01:00
Tobias Diekershoff 49b79d0457
Merge pull request #13993 from annando/statistics
Systems added to the federation statistics
2024-03-14 07:35:23 +01:00
Michael 8ce1797480 Systems added to the federation statistics 2024-03-14 04:33:19 +00:00
foss- 650aa089d9
Re-wrote themes.md
- rewrite to reflect new default theme frio and describe settings options
- old information was obsolete and replaced (please double check)
2024-03-13 12:17:27 +01:00
Michael Vogel 2c689f2b73
Merge pull request #13990 from friendica/bug/profile-rss-xss
Escape HTML characters in profile RSS titles
2024-03-12 21:52:14 +01:00
Hypolite Petovan aac5d41fd6
Escape HTML characters in profile RSS titles
Thanks to @r1pu5u for the tip left through the `security.txt` contact address!
2024-03-12 20:42:00 +00:00
Hypolite Petovan 57187f26ae
Merge pull request #13978 from annando/issue-13972
Default behaviour for adding media types
2024-03-12 20:06:24 +00:00
Hypolite Petovan 7446048d5d
Merge pull request #13987 from annando/api-issues
Fixes API-Issues #13985 and #13986
2024-03-12 19:33:42 +00:00
Hypolite Petovan d3ee4d589b
Merge pull request #13988 from annando/network-groups
"network/group" fragments are removed
2024-03-12 19:31:58 +00:00
Michael fda832cd83 "network/group" fragments are removed 2024-03-12 08:02:00 +00:00
Michael 30f31828ae Fixes API-Issues #13985 and #13986 2024-03-12 03:12:36 +00:00
Tobias Diekershoff cd7a663733
Merge pull request #13983 from annando/fix-notice
Fix notice when sending private messages
2024-03-10 20:09:25 +01:00
Michael 3b024450ff Fix notice when sending private messages 2024-03-10 18:55:58 +00:00
Tobias Diekershoff e22ef85386
Merge pull request #13982 from annando/no-unknown-media
Fix: Don't attach unknown media
2024-03-10 14:28:14 +01:00
Tobias Diekershoff e206175a50
Merge pull request #13980 from annando/mail-summary
Fix: Subject for private messages from Friendica systems
2024-03-10 13:55:09 +01:00
Michael 76d469675e Fix: Don't attach unknown media to posts 2024-03-10 10:14:54 +00:00
Michael 3496d3948a Fix: Subject for private messages from Friendica systems 2024-03-09 22:32:38 +00:00
Michael 00b325d521 Default behaviour for adding media types 2024-03-09 15:45:38 +00:00
Tobias Diekershoff 2077e00eae
Merge pull request #13977 from annando/dont-retry
Don't retry when fetching invalid content
2024-03-09 13:59:36 +01:00
Michael a1427a52b3 Don't offer the invalid content type 2024-03-09 10:46:53 +00:00
Michael 40a47b076d Don't retry when fetching invalid content 2024-03-09 10:37:43 +00:00
Hypolite Petovan f041701765
Merge pull request #13976 from annando/content-type-logging
Centralized logging for a wrong JSON content-type
2024-03-08 11:03:03 -05:00
Michael d9bedbb473 Centralized logging for a wrong JSON content-type 2024-03-08 13:48:21 +00:00
Hypolite Petovan 013bba50bc
Merge pull request #13975 from annando/check-content-type
Check for the content type before fetching the content
2024-03-07 21:58:43 -05:00
Michael 5f0657a30c Don't show the body in the log 2024-03-07 22:29:04 +00:00
Michael 435b30be11 Check for the content type before fetching the content 2024-03-07 22:16:52 +00:00
Hypolite Petovan 73863561d2
Merge pull request #13974 from annando/videoheight
Set default value for max video height
2024-03-07 09:33:11 -05:00
Michael 67696d08da Set default value for max video height 2024-03-07 14:22:40 +00:00
Hypolite Petovan 1b00b91767
Merge pull request #13973 from annando/parent-activity
Change the last activity for delegation parents and siblings as well
2024-03-07 09:02:46 -05:00
Michael 68c2bdb98e Change the last activity for delegation parents and siblings as well 2024-03-07 06:12:36 +00:00
Michael Vogel 54852ecb56
Merge pull request #13970 from MrPetovan/bug/warnings
Address a couple of warnings
2024-03-06 20:13:40 +01:00
Hypolite Petovan 8c4b2107b5 Include author-alias to the field list in mod/photos
- It's used to generate magic links of authors of comments on photos
- Address https://github.com/friendica/friendica/issues/13761#issuecomment-1980738080
2024-03-06 12:07:43 -05:00
Hypolite Petovan 111df607bc Don't call mb_strlen() on $body if it isn't set in Model\Post\Counts
- Address https://github.com/friendica/friendica/issues/13761#issuecomment-1978354153
2024-03-06 12:01:25 -05:00
Tobias Diekershoff b8b76e870d
Merge pull request #13967 from annando/diaspora-avatar
Issue 13939: Fix avatars for Diaspora
2024-03-06 06:55:39 +01:00
Michael 41c89abe68 Update routine added 2024-03-06 03:41:13 +00:00
Michael 24e7556f85 Transmit the user avatar path 2024-03-06 03:25:04 +00:00
Michael 8cc7bad1ea Issue 13939: Fix avatars for Diaspora 2024-03-06 03:00:09 +00:00
Hypolite Petovan 2357385162
Merge pull request #13966 from annando/max-video-height
Reduce the height of portrait videos
2024-03-05 19:01:48 -05:00
Michael 31b92b16ed Reduce the height of portrait videos 2024-03-05 21:25:00 +00:00
Hypolite Petovan 3ad4ab2940
Merge pull request #13965 from annando/last-activity
Improved assigning of "last-activity" and "login_date"
2024-03-05 10:38:41 -05:00
Michael Vogel 5ab81abaa6
Merge pull request #10 from MrPetovan/bug/last-activity-api-fixture-fix
Normalize API fixture data
2024-03-05 16:29:00 +01:00
Hypolite Petovan 1b651519a3 Normalize API fixture data
- Change public contact name to the related local user name
- Add location data to profile record that is used to update self and public contact during Auth
2024-03-05 10:10:15 -05:00
Michael ba07172a65 Compare with the utc value 2024-03-05 14:24:40 +00:00
Michael 72e045e744 Improved assigning of "last-activity" and "login_date" 2024-03-05 14:06:26 +00:00
Tobias Diekershoff 2cedbae206 ypots 2024-03-05 07:14:39 +01:00
Tobias Diekershoff a6b033c4f6 CHANGELOG for 2024.03 2024-03-04 17:38:32 +01:00
Michael Vogel dc96a72173
Merge pull request #13962 from tobiasd/20240304-lng
translation updates
2024-03-04 16:49:13 +01:00
Tobias Diekershoff 38141edbea translation updates 2024-03-04 16:40:13 +01:00
Tobias Diekershoff 9b0e243350
Merge pull request #13961 from annando/issue-13765
Issue 13765: Fixed creation of self user contact for approval
2024-03-04 11:44:55 +01:00
Michael 52cc8ab73b Issue 13765: Fixed creation of self user contact for approval 2024-03-04 07:30:04 +00:00
Hypolite Petovan ea4e66c74c
Merge pull request #13957 from annando/issue-13940
Issue 13940: handle posts that can't be found in contexts
2024-03-03 13:42:00 -05:00
Hypolite Petovan f4826bae52
Merge pull request #13960 from annando/oembed-full-cleanup
Oembed: Some more cleanup
2024-03-03 13:41:35 -05:00
Michael 7471513269 Issue 13940: handle posts that can't be found in contexts 2024-03-03 18:32:26 +00:00
Michael ae37c44cc0 Oembed: Some more cleanup 2024-03-03 18:06:25 +00:00
Hypolite Petovan 424e219c53
Merge pull request #13956 from annando/issue-13955
Issue 13955: Check for publish date upon receival
2024-03-03 12:23:13 -05:00
Michael bae7644d6f Issue 13955: Check for publish date upon receival 2024-03-02 19:21:14 +00:00
Michael Vogel f2ccce05b8
Merge pull request #13948 from MrPetovan/task/12420-frio-remove-legacy-scheme
[frio] Remove legacy schemes
2024-03-02 06:06:15 +01:00
Michael Vogel 89ffe6875f
Merge pull request #13942 from MrPetovan/bug/fix-api-fixture
Fix API fixture data
2024-03-02 05:48:19 +01:00
Hypolite Petovan 7284210bf7 Updated main translation file after changing some strings 2024-03-01 08:52:58 -05:00
Hypolite Petovan 4fcc92e532 [frio] Delete legacy scheme files 2024-03-01 08:48:41 -05:00
Hypolite Petovan 2c259c5c6f [frio] Remove legacy schemes
- [frio] Replace default scheme file by default scheme value
- [frio] Simplify frio theme settings
- [frio] Remove query string scheme setting
2024-03-01 08:48:38 -05:00
Hypolite Petovan 39d25b9699
Merge pull request #13954 from annando/issue-13953
Issue 13953: Fix warning during postupdate
2024-03-01 08:38:42 -05:00
Michael 5df1ead001 Issue 13953: Fix warning during postupdate 2024-03-01 08:41:12 +00:00
Hypolite Petovan 2d4f28dcde
Merge pull request #13951 from annando/issue-13949
Issue 13949: Block access via OAuth
2024-02-29 21:00:12 -05:00
Michael dd55ba2d77 Issue 13949: Block access via OAuth 2024-02-29 22:03:57 +00:00
Hypolite Petovan c9f7d9baff
Merge pull request #13946 from annando/issue-13819
Issue 13819: Ensure to not use OEmbed if not wanted
2024-02-29 07:54:43 -05:00
Hypolite Petovan 504a2e91e2
Merge pull request #13945 from annando/errors
Exceptions and warnings fixed
2024-02-29 07:53:13 -05:00
Michael 40e882004e Use the exact embed URLs 2024-02-29 07:40:36 +00:00
Michael e394a6b0fa Issue 13819: Ensure to not use OEmbed if not wanted 2024-02-29 07:37:58 +00:00
Michael 8cf82a8449 Exceptions and warnings fixed 2024-02-29 04:40:04 +00:00
Hypolite Petovan 0d922b75af Use public contact ids where they should be used in API fixture data 2024-02-27 08:41:51 -05:00
Hypolite Petovan ba0a8069c4 Normalize local node hostname across API fixtures
- This was causing the fixture data to be wrongly "repaired" in Model\User::getOwnerDataById because of a mismatch between the local base URL and the fixture-provided self contact URL
2024-02-27 08:41:51 -05:00
Hypolite Petovan d37699bc08 Throw Not Found exception when $uid doesn't exist in Factory\Api\Twitter\User->createFromUserId
- Contact::getPublicIdByUserId() wrongly returns 0 when $uid doesn't exist, which is an existing albeit invalid record.
2024-02-27 08:41:51 -05:00
Hypolite Petovan ac087749e3
Merge pull request #13938 from annando/output-type
Image handling: separate between output and input type, use Imagick on PNG
2024-02-25 10:01:34 -05:00
Michael ddc9f5f595 Image handling: separate between outout and input type, use Imagick on PNG 2024-02-25 08:52:52 +00:00
Tobias Diekershoff 35bba685fa
Merge pull request #13936 from annando/rounding
Round the load to two digits
2024-02-24 18:56:11 +01:00
Michael e52fa44d3f Round the load to two digits 2024-02-24 17:37:30 +00:00
Hypolite Petovan f74d6f9ebb
Merge pull request #13932 from annando/oembed-cleanup
Unused OEmbed functionality is removed
2024-02-24 11:03:48 -05:00
Michael ae358cae4c Updated messages.po 2024-02-24 15:29:33 +00:00
Michael b572b8989f Use media link instead of proxy for pictures 2024-02-24 15:11:27 +00:00
Michael 5800a973cb Fixed positive list 2024-02-24 13:56:12 +00:00
Michael Vogel 44ce5471b3
Onepoll: Prevent errors with invalid mails (#13934) 2024-02-24 13:18:44 +01:00
Michael e05b57cd5d messages.po updated 2024-02-24 11:56:55 +00:00
Michael ecdf8f2b47 Merge remote-tracking branch 'upstream/2024.03-rc' into oembed-cleanup 2024-02-24 11:54:35 +00:00
Michael Vogel 1c5681c199
Merge pull request #13933 from annando/fix2
Accidentally merged changes are reverted
2024-02-24 12:40:19 +01:00
Michael 20fd25258a Accidentally changes are reverted 2024-02-24 11:35:32 +00:00
Michael 00bb538fd0 Merge branch '2024.03-rc' of https://github.com/friendica/friendica into 2024.03-rc 2024-02-24 11:01:44 +00:00
Michael 12bdbaaba8 OEmbed: Complete cleanup 2024-02-24 11:01:34 +00:00
Michael 821a135033 Unused OEmbed functionality is removed 2024-02-24 10:58:18 +00:00
Michael Vogel 0ff37c0075
Merge pull request #13931 from MrPetovan/bug/13930-photo-preview-sizes
Increase API photo preview size for Mastodon API to 640
2024-02-24 09:39:31 +01:00
Hypolite Petovan 0a73050de1 Increase API photo preview size for Mastodon API to 640 2024-02-23 22:41:21 -05:00
Hypolite Petovan a25dbf839a Remove photo user id fallback from 2021
- Remove deprecated /photos/{nickname} fallback routes
- The contact id fallback is a lie, there's no replacement feature
2024-02-23 22:41:18 -05:00
Hypolite Petovan e16b6ee6e1
Check form security token in /settings/userexport module (#13929)
* Escape HTML in the location field of a calendar event post

- This allowed script tags to be interpreted in the post display of an event.

* Add form security token check to /admin/phpinfo module

- This prevents basic XSS attacks against /admin/phpinfo

* Add form security token check to /babel module

- This prevents basic XSS attacks against /babel

* Prevent pass-through for attachments

- This addresses a straightforward Reflected XSS vulnerability if a malicious HTML/Javascript file is attached to a post through upload

* Prevent overwriting cid on event edit

- This allowed to share an event as any other user after zeroing the cid field of an existing event

* Check form security token in /settings/userexport module

- Prevents basic XSS attacks against /settings/userexport/*
2024-02-22 21:08:32 +01:00
Hypolite Petovan 5c5d7eb04f
Fix several vulnerabilities (#13927)
* Escape HTML in the location field of a calendar event post

- This allowed script tags to be interpreted in the post display of an event.

* Add form security token check to /admin/phpinfo module

- This prevents basic XSS attacks against /admin/phpinfo

* Add form security token check to /babel module

- This prevents basic XSS attacks against /babel

* Prevent pass-through for attachments

- This addresses a straightforward Reflected XSS vulnerability if a malicious HTML/Javascript file is attached to a post through upload

* Prevent overwriting cid on event edit

- This allowed to share an event as any other user after zeroing the cid field of an existing event
2024-02-22 06:53:52 +01:00
Michael Vogel fc3898fe64
Updated Bluesky logo (#13926) 2024-02-21 18:23:36 +01:00
Michael Vogel 71384e6f39
Issue 13909: Filter channels by network (#13924) 2024-02-20 07:11:26 +01:00
Michael Vogel d95c9d28a8
Issue 13922: "voted" must not be null (#13923) 2024-02-20 07:09:55 +01:00
Hypolite Petovan bb7d25dfc9
Merge pull request #13921 from annando/content-type
Check for activity pub mime types
2024-02-19 05:57:47 -05:00
Michael Vogel d5c0f086bd
Disallow mail addresses for registration (#13920)
* Disallow mail addresses for registration

* Order for allow/disallow has been changed
2024-02-19 09:33:20 +01:00
Michael 892e0a5623 Check for activity pub mime types 2024-02-19 07:11:56 +00:00
Michael Vogel cb294cf411
Avoid problems with an empty domain in the blocklist (#13919)
* Avoid problems with an empty domain in the blocklist

* Test code removed
2024-02-19 07:22:19 +01:00
Michael Vogel 9ad452a19b
Merge pull request #13918 from MrPetovan/bug/fixup-13911
Move Api\Mastodon\Instance\Extended to ExtendedDescription
2024-02-19 04:05:42 +01:00
Hypolite Petovan 623a5be8a6 Clarify condition on offset in Mastodon\Search->searchStatuses 2024-02-18 18:48:37 -05:00
Hypolite Petovan d1cd9a016e Move Api\Mastodon\Instance\Extended to ExtendedDescription
- Add reference to Mastodon documentation
2024-02-18 18:47:59 -05:00
Michael Vogel 7d5d3b3c29
Issue 13293: Endpoint /api/v1/accounts/lookup implemented (#13917) 2024-02-18 20:17:06 +01:00
Michael Vogel bcec6c5ab2
Issue #13899: Fix error on postupdate (#13915) 2024-02-18 20:09:56 +01:00
Michael Vogel 6384265cbd
Issue #13823: Fix "Mutes" endpoint (#13916) 2024-02-18 20:07:51 +01:00
Michael Vogel f12276eff8
New channel "quiet sharers" for posts from lesser frequent posters (#13913) 2024-02-18 15:54:21 +01:00
Michael Vogel c6160a1c38
Fix API issues #13887, #13886, #13863, #13809, #13897 (#13911) 2024-02-18 15:52:30 +01:00
Michael Vogel 07c20da08f
Issue 13905: ostatus context added (#13912) 2024-02-18 15:46:41 +01:00
Michael Vogel 4eefd0a205
Merge pull request #13908 from MrPetovan/bug/warnings
Avoid passing null bytes in regular expression in Object\Image
2024-02-18 05:33:41 +01:00
Hypolite Petovan 78bc1359e0
Merge pull request #13907 from annando/fix-relations
Fix contact-relation follower calculation
2024-02-17 22:30:56 -05:00
Hypolite Petovan 1956c2ecfd Avoid passing null bytes in regular expression in Object\Image
- Remove capturing expression for A|B in favor of bracket syntax in regular expression since matches aren't used.
- Regular expressions have their own character escape notation including backslashes that need to be escaped in a PHP string.
- Actually address https://github.com/friendica/friendica/issues/13761#issuecomment-1949930922
2024-02-17 22:27:37 -05:00
Michael ade2369b5d Merge remote-tracking branch 'upstream/2024.03-rc' into fix-relations 2024-02-17 21:56:56 +00:00
Michael 0d2ea97eb1 Fix comtact-relation follower calculation 2024-02-17 21:32:17 +00:00
Michael Vogel 08fa51d0bb
Fix the handling of unhandled image types and of animations (#13904)
* Fix the handling of unhandled image types and of animations

* Avoid warnings
2024-02-17 15:46:48 +01:00
Michael 7d10518e94 Revert "Fix unhandled image detection"
This reverts commit 1069cfb570.
2024-02-17 10:50:09 +00:00
Michael 1069cfb570 Fix unhandled image detection 2024-02-17 10:46:48 +00:00
Michael Vogel 14e5b06029
Image handling reworked, new image formats added (#13900)
* Image handling reworked, new image formats added

* Updated messages.po

* The dot is now part of the file extension

* Added WebP in install documentation

* Handle unhandled mime types

* Fixed animated picture detected
2024-02-17 07:45:41 +01:00
Tobias Diekershoff 1ea8a4042d bump version to 2024.03-rc 2024-02-14 08:24:41 +01:00
Michael Vogel fad55e0948
Prevent users from following relay accounts (#13894) 2024-02-13 06:50:46 +01:00
Hypolite Petovan 262ca4131d
Merge pull request #13893 from annando/fix-relay-unsubscribe
Fixed relay detection on unsubscription
2024-02-12 23:55:01 -05:00
Michael c7e0500529 Fixed relay detection on unsubscription 2024-02-13 04:30:38 +00:00
Hypolite Petovan 686d0b6dbb
Merge pull request #13892 from annando/no-preview-on-sensitive
Don't display preview images for links, when the post is marked as sensitive
2024-02-12 22:30:31 -05:00
Hypolite Petovan 59c27a6cbb
Merge pull request #13889 from annando/issue-13884
Issue 13884: Sanitation of links in BBCode parser
2024-02-12 15:28:04 -05:00
Michael e2cbe0983a Don't display preview images for links, when the post is marked as sensitive 2024-02-12 06:01:07 +00:00
Michael 3b0cc45588 Link sanitation added to some more places 2024-02-12 05:40:09 +00:00
Michael 061f43788c Sanitize links before storing them 2024-02-12 05:21:13 +00:00
Michael fe00a3893d urlencode for tags / fix smiley replacement 2024-02-12 04:46:20 +00:00
Michael 5d4f72698d Function renamed 2024-02-12 04:44:13 +00:00
Michael 96ede22abb Issue 13884: Sanitation of links in BBCode parser 2024-02-11 12:05:31 +00:00
Michael Vogel 2cc8fcc4aa
Merge pull request #13880 from MrPetovan/bug/13878-deprecate-star-list
Deprecate use of [*] BBCode tag for list items in favor of [li]
2024-02-11 03:13:28 +01:00
Hypolite Petovan 98900c33d4
Merge pull request #13881 from annando/valid-object
Ckeck for host differences of fetched activities
2024-02-10 11:13:16 -05:00
Michael 7dc9a812f6 Updated messages.po 2024-02-10 11:46:42 +00:00
Michael 7a14d5f7e4 Merge branch 'develop' of https://github.com/annando/friendica into develop 2024-02-10 11:39:47 +00:00
Michael 909d516ed4 Merge remote-tracking branch 'upstream/develop' into valid-object 2024-02-10 11:34:17 +00:00
Michael Vogel 52825cb4c4
User setting to disable blurring of sensitive pictures (#13883) 2024-02-10 09:50:49 +01:00
Michael Vogel dbc72adaf9
Merge pull request #13882 from tobiasd/20240210-lng
update translations
2024-02-10 09:31:58 +01:00
Michael ba5a288b2d User setting to disable blurring of sensitive pictures 2024-02-10 08:27:54 +00:00
Tobias Diekershoff 84043abbda update translations 2024-02-10 08:57:19 +01:00
Michael Vogel f212888e90
Merge pull request #13879 from MrPetovan/bug/13877-fpostit-ssrf
Remove deprecated fpostit mod
2024-02-10 07:16:48 +01:00
Michael 50c0fd6738 Ckeck for host differences of fetched objects 2024-02-10 04:58:11 +00:00
Hypolite Petovan 5b5c9ddc74 Deprecate use of [*] BBCode tag for list items in favor of [li]
- It is conflicting with Markdown syntax
2024-02-09 20:33:42 -05:00
Hypolite Petovan cb992f693c Remove deprecated fpostit mod
- This feature allowed unauthenticated requests to arbitrary domains.
2024-02-09 20:17:35 -05:00
Hypolite Petovan ede41166ae
Merge pull request #13876 from annando/sensitive2
Sensitive previews are now blurred
2024-02-06 21:19:36 -05:00
Michael caa7b6f326 "sensitive" is added to the API 2024-02-06 16:30:46 +00:00
Michael 0a6dff0618 Sensitive previews are now blurred 2024-02-06 16:15:58 +00:00
Hypolite Petovan 9b4ade4542
Merge pull request #13872 from friendica/issue-13845
Issue 13845: Support "sensitive" attribute
2024-02-06 05:54:26 -05:00
Michael 0153c2a027 Merge remote-tracking branch 'upstream/develop' into issue-13845 2024-02-06 09:47:38 +00:00
Hypolite Petovan 1a0f7c15ad
Merge pull request #13874 from annando/media-card-post
Two new search options "media:card" and "media:post"
2024-02-06 03:27:59 -05:00
Michael d5bf306884 We now use xonstants 2024-02-06 06:34:16 +00:00
Michael 4cd2fde6f2 Two new search options "media:card" and "media:post" 2024-02-05 22:21:58 +00:00
Michael 259e7876ad Merge remote-tracking branch 'upstream/develop' into issue-13845 2024-02-05 22:17:43 +00:00
Hypolite Petovan 760c7deba3
Merge pull request #13873 from annando/libpng
Possible fixes "libpng warning: Interlace handling should be turned on when using png_read_image"
2024-02-05 15:20:23 -05:00
Michael 83306949ac Possible fixes "libpng warning: Interlace handling should be turned on when using png_read_image" 2024-02-05 18:16:47 +00:00
Michael c0cd0dc74d "sensitive" added to fierld list 2024-02-05 12:21:57 +00:00
Michael f7b0a0bef1 Merge remote-tracking branch 'upstream/develop' into issue-13845 2024-02-05 06:31:08 +00:00
Hypolite Petovan a9d668cc78
Merge pull request #13871 from annando/channel-network
Issue 13844: User defined channels based on the network
2024-02-04 23:29:38 -05:00
Michael 15df9990da Issue 13845: Support "sensitive" attribute 2024-02-04 21:45:30 +00:00
Michael 91ddb406ab Merge remote-tracking branch 'upstream/develop' into channel-network 2024-02-04 16:36:25 +00:00
Hypolite Petovan d9d42105d6
Merge pull request #13870 from annando/channel-languages
Fix: Saving of channel languages
2024-02-04 09:18:02 -05:00
Michael 7924085c94 Issue 13844: User defined channels based on the network 2024-02-04 07:14:57 +00:00
Michael 672186e549 Additional revert 2024-02-03 11:06:05 +00:00
Michael 053dfb3e2b Revert test changes / added saving of languages 2024-02-03 11:04:42 +00:00
Michael f1efb8d277 Fix: Saving of channel languages 2024-02-03 11:01:17 +00:00
Hypolite Petovan b6e958fdcf
Merge pull request #13869 from annando/engagement-searchindex
Unify searchindex table with engagement table
2024-02-02 12:18:11 -05:00
Michael 885b3a12b9 Search for tags and media in full text when doing full text searches 2024-02-02 16:05:24 +00:00
Michael fc05daefb5 "media" is added to the search text 2024-02-02 10:46:20 +00:00
Michael 7faa42882b language field renamed to "language" 2024-02-02 07:05:39 +00:00
Michael fc22a3e83f Unify searchindex table with engagement table 2024-02-01 23:08:53 +00:00
Hypolite Petovan 8ddc71188f
Merge pull request #13866 from annando/channel-reshare-privat
Channel relay reshares are now private follwers posts
2024-02-01 16:48:55 -05:00
Michael b77a5c3eb4 Merge remote-tracking branch 'upstream/develop' into channel-reshare-privat 2024-02-01 19:41:35 +00:00
Michael Vogel 6a6e2cd2a2
Avoid duplicated post button on the contact conversation page (#13867)
* Avoid duplicated post button on the contact conversation page

* Updated messages.po
2024-02-01 19:47:43 +01:00
Michael 01c04fe2c2 messages.po updated 2024-02-01 16:10:14 +00:00
Michael e60f3e1a99 Channel relay reshares are now private follwers posts 2024-02-01 15:59:04 +00:00
Michael Vogel 665316c14d
Issue 13859: Posts to a group in "Vier" is now possible (#13864) 2024-01-31 19:09:57 +01:00
Hypolite Petovan fef14d96c7
Merge pull request #13861 from annando/size
Filter user defined channels by size
2024-01-30 17:52:40 -05:00
Michael c8087a7827 Merge remote-tracking branch 'upstream/develop' into size 2024-01-30 15:24:38 +00:00
Michael Vogel 5a59dff817
Update doc/Channels.md
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2024-01-30 16:20:44 +01:00
Hypolite Petovan e9554c32c9
Merge pull request #13862 from Raroun/fix_for_issue_13837_External_profile_image_URL_wrongly_redirect_to_default_-avatar_URL_for_all-digits_usernames
fix for issue #13837 External profile image URL wrongly redirect to default avatar URL for all-digits usernames
2024-01-30 09:43:58 -05:00
Raroun d2f935df1d Updated messages.po 2024-01-30 15:32:27 +01:00
Raroun ed30d888fa
Update src/Module/Register.php
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2024-01-30 15:28:49 +01:00
Raroun 606bd0be60
Check if nickname contains only US-ASCII and do not start with a digit
Update Register.php
2024-01-30 15:18:11 +01:00
Michael d29d7c40cd Alternatives are added to the documentation 2024-01-30 11:55:36 +00:00
Michael 1e3cfca58d search term alternatives added 2024-01-30 11:14:41 +00:00
Michael d6632bb0ea Updated messages.po 2024-01-30 10:14:03 +00:00
Michael 3fe4991fcf Filter user defined channels by size 2024-01-30 10:05:05 +00:00
Hypolite Petovan 0c583574e1
Merge pull request #13860 from annando/baseurl
Account type relay / fix missing baseurl for own contacts
2024-01-29 18:17:31 -05:00
Michael 7432e47f7a Fix code standards 2024-01-29 18:07:53 +00:00
Michael Vogel 25f2ad1b97
Merge pull request #13838 from MrPetovan/task/refactor-throwaway-fulltext-search
Refactor user-defined channel match
2024-01-29 16:53:41 +01:00
Hypolite Petovan 391e41d6d6 Fix exists() condition in DisposableFullTextSearch 2024-01-29 07:37:40 -05:00
Michael cda1b91b77 Update searchindex on reshare 2024-01-29 12:32:21 +00:00
Hypolite Petovan 50cc2be3d1 Improve uniqueness loop by adding an exists() call in DisposableFullTextSearch 2024-01-29 06:56:30 -05:00
Michael 7c43b41f0b Searchtext functionality added 2024-01-29 11:02:13 +00:00
Michael 36313fe35b Relay data added to the search text as well 2024-01-29 11:00:39 +00:00
Michael 820674a7ad Use plural 2024-01-29 06:50:46 +00:00
Michael 9bd8d974b3 Account type relay / fix missing baseurl for own contacts 2024-01-29 06:28:43 +00:00
Hypolite Petovan 9af5abaf0b
Merge pull request #13858 from annando/tags
Use unified functions for tag string handling
2024-01-28 23:14:09 -05:00
Michael 25f45cf116 Logging improved 2024-01-28 12:22:58 +00:00
Michael b948b2c7cb Added tests 2024-01-28 06:56:25 +00:00
Michael d2702dfe9c Use centralized functions for tag string handling 2024-01-28 06:32:55 +00:00
Hypolite Petovan 7397b38763 Ensure identifier uniqueness in Disposable FullTextSearch 2024-01-27 11:33:28 -05:00
Hypolite Petovan 9e738253e7
Merge pull request #13856 from annando/spam2
Compare lengths of hashtags with the content length for improved spam detection
2024-01-26 18:59:38 -05:00
Michael Vogel 120044f3da
Update src/Protocol/Relay.php
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2024-01-27 00:13:14 +01:00
Hypolite Petovan 142a563a80
Merge pull request #13857 from annando/discover
New channel option "discover"
2024-01-26 17:39:44 -05:00
Hypolite Petovan abd5768044 Add documentation to DisposableFullTextSearch->idenfier field 2024-01-26 16:48:55 -05:00
Michael f1173853f3 Merge remote-tracking branch 'upstream/develop' into discover 2024-01-26 13:54:25 +00:00
Michael ef8461733b The "nosharer" widget is added to the network 2024-01-26 13:51:20 +00:00
Michael b8f80a8d25 Compare lengths of hashtags with the content length for improved spam detection 2024-01-26 11:22:01 +00:00
Hypolite Petovan c19af39d8a
Merge pull request #13853 from annando/error
Fixes "Counts::update(): Argument #3 ($vid) must be of type int, null given"
2024-01-25 18:12:59 -05:00
Michael Vogel e1381cfc5c
Update src/Model/Post/Counts.php
Co-authored-by: Hypolite Petovan <hypolite@mrpetovan.com>
2024-01-25 22:16:38 +01:00
Hypolite Petovan efe1ea5c3c
Merge pull request #13850 from annando/reaction
Fix "Data too long for column 'reaction' at row 1"
2024-01-25 15:12:50 -05:00
Michael Vogel 09edf251ee
Anti spam measures against hashtag spam (#13855) 2024-01-25 19:41:07 +01:00
Michael dcb6fa32a1 Fixes "Counts::update(): Argument #3 ($vid) must be of type int, null given" 2024-01-25 13:20:50 +00:00
Michael 08ee1e1f63 New channel option "discover" 2024-01-25 10:50:28 +00:00
Hypolite Petovan b3e4b9675a
Merge pull request #13851 from annando/account-overview
The account overview is now grouped by the account type
2024-01-24 14:49:14 -05:00
Hypolite Petovan 0ee87b8116 Refactor user-defined channel match
- Remove disposable full-text search feature from UserDefinedChannels repository
- Fix return value of Repository\UserDefinedChannel->match
2024-01-24 14:46:07 -05:00
Hypolite Petovan 1191024609 Add throwaway full-text search feature in a dedicated Database class
- Add explicit return type to UserDefinedChannels->current() to help IDE auto-completion
2024-01-24 14:42:45 -05:00
Michael 8f9de98c35 Updated messages.po 2024-01-23 22:11:34 +00:00
Michael dc8b87e008 The account overview is now grouped by the account type 2024-01-23 22:05:14 +00:00
Michael 03e831b607 Fix "Data too long for column 'reaction' at row 1" 2024-01-23 09:59:47 +00:00
Hypolite Petovan 2e5046f8c3
Merge pull request #13846 from annando/search
Improved search results and performance by adding a separate search index table
2024-01-22 22:31:20 -05:00
Michael 7b638617f1 Merge remote-tracking branch 'upstream/develop' into search 2024-01-22 14:09:29 +00:00
Hypolite Petovan ec6ff7380e
Merge pull request #13849 from annando/title
Import the image attribut "title"
2024-01-22 08:21:26 -05:00
Hypolite Petovan a0f7625c34
Merge pull request #13848 from annando/getbodystring
Changed leftover "getBody" to "getBodyString"
2024-01-22 08:20:37 -05:00
Michael 7e88b703d8 Import the image attribut "title" 2024-01-22 07:47:38 +00:00
Michael ad6976a407 Changed leftover "getBody" to "getBodyString" 2024-01-22 07:38:05 +00:00
Michael 39e1f2c0fc Code standards 2024-01-21 17:05:18 +00:00
Michael 5a33a494e8 Updated full text indexes 2024-01-21 16:39:28 +00:00
Michael 6389133575 Expiry post search index entries 2024-01-21 16:24:59 +00:00
Michael 919f97c9a0 Postupdate added 2024-01-17 21:10:33 +00:00
Michael e9f7ea0afa New search keyword "language" 2024-01-17 20:25:49 +00:00
Michael ee9a68e40c New table "post-searchindex" 2024-01-17 19:46:22 +00:00
Michael Vogel 75b37fe376
Merge pull request #13834 from MrPetovan/task/remove-delete-rotator
[frio] Move item deletion rotator to button
2024-01-17 18:00:31 +01:00
Hypolite Petovan 3a2461322d
Merge pull request #13836 from Quix0r/fixes/configurable-file-size
Make hard-coded max response configurable
2024-01-16 22:35:08 -05:00
Roland Häder 550b4ce420
Added note 2024-01-17 01:51:13 +01:00
Hypolite Petovan 28a7884ad9
Merge pull request #13806 from annando/channel-relay
New user account type "Channel Relay"
2024-01-16 19:49:59 -05:00
Roland Häder a7bdcc1216
Better description (@MrPetovan) 2024-01-17 01:11:59 +01:00
Roland Häder 7d3723592b
Renamed 'http_client' -> 'performance' 2024-01-16 20:32:53 +01:00
Roland Häder 075915e3b7
Continued:
- moved to new configuration category 'http_client' (thanks to @MrPetovan)
2024-01-16 20:13:53 +01:00
Roland Häder 931c73d3c1
Continued:
- added max_response_data_size to default configuration with hard-coded value
  from code
2024-01-16 20:04:23 +01:00
Roland Häder 3263a0b98e
Make hard-coded max response configurable:
- see discussion started by @schmaker@schmaker.eu at https://schmaker.eu/display/c83e3896-1265-a3d6-0ab5-a78119129626
- this allows servers with lower RAM amount to still run without OOMs (or much lesser)
2024-01-16 19:52:06 +01:00
Michael 586a221eb9 Merge branch 'channel-relay' of https://github.com/annando/friendica into channel-relay 2024-01-15 22:28:46 +00:00
Michael 63b958dcc6 Centralized functionality to store and delete the check-full-text-search table 2024-01-15 22:28:42 +00:00
Michael 976ec30417 Merge branch 'channel-relay' of https://github.com/annando/friendica into channel-relay 2024-01-15 19:53:07 +00:00
Michael 0c8c03153b Merge remote-tracking branch 'upstream/develop' into channel-relay 2024-01-15 19:51:20 +00:00
Michael 23b247d1c3 Merge remote-tracking branch 'upstream/develop' into channel-relay 2024-01-15 19:41:26 +00:00
Hypolite Petovan dd534919d7
Merge pull request #13831 from friendica/warning
Fix warning concerning a missing "created" field
2024-01-15 14:17:06 -05:00
Hypolite Petovan 8fc51cf63e
Merge pull request #13835 from annando/no-any-value
"ANY_VALUE" is removed
2024-01-15 14:16:12 -05:00
Michael f6335590c5 Improve query 2024-01-15 17:00:32 +00:00
Michael a60910be69 Updated messages.po 2024-01-15 16:53:24 +00:00
Michael f83f61f7ac "ANY_VALUE" is removed 2024-01-15 16:45:24 +00:00
Hypolite Petovan 0b93270d7b [frio] Move item deletion rotator to button 2024-01-15 10:22:37 -05:00
Hypolite Petovan 886e231091 Exclude Apple keyboard Meta key from the Pause shortcut 2024-01-15 09:55:46 -05:00
Hypolite Petovan 4c402f6af4
Merge pull request #13824 from toddy15/php-cs-fixer
Update and install PHP-CS-Fixer
2024-01-15 07:53:39 -05:00
Hypolite Petovan a0dec23f2d
Merge pull request #13832 from mexon/console-set-password
Update use of PasswordExposed API
2024-01-15 07:43:23 -05:00
Dr. Tobias Quathamer 591f54f64d Add license header to php-cs-fixer configuration file 2024-01-15 13:31:29 +01:00
Dr. Tobias Quathamer 5a89cecc5e Regenerate composer.lock 2024-01-15 13:24:46 +01:00
Dr. Tobias Quathamer 540b2b74cc Do not reformat addon directory 2024-01-15 13:24:46 +01:00
Dr. Tobias Quathamer d19181016f Update .gitignore for new php-cs-fixer filename 2024-01-15 13:24:46 +01:00
Dr. Tobias Quathamer 13d1576dad Remove unneeded requirement of autoload file 2024-01-15 12:05:51 +01:00
Dr. Tobias Quathamer 6cea1c3472 Copy php-cs-fixer configuration file to currently expected name 2024-01-15 12:05:38 +01:00
Dr. Tobias Quathamer 893c2e4fd3 Add new script commands for php-cs-fixer 2024-01-15 12:04:30 +01:00
Dr. Tobias Quathamer 9daf83ce9b Add friendsofphp/php-cs-fixer to development packages 2024-01-15 11:59:17 +01:00
Michael 9075d7f37d Constant for undeterminded language 2024-01-15 06:20:49 +00:00
Michael 7a13d8b8ac Merge remote-tracking branch 'upstream/develop' into channel-relay 2024-01-15 06:14:55 +00:00
Hypolite Petovan 60b81bb6ca
Merge pull request #13833 from mexon/create-user-photo
Allow setting user avatar in the console at creation
2024-01-15 01:09:01 -05:00
Hypolite Petovan faa1cbeaf6
Merge pull request #13827 from annando/ocr
Use OCR to fetch text in images
2024-01-15 01:06:50 -05:00
Michael a12fbf7ff3 Move to addon 2024-01-14 19:18:41 +00:00
Michael a2f4b4cd3d Composer 2024-01-14 18:40:32 +00:00
Michael 7150faa09c Composer 2024-01-14 18:38:22 +00:00
Michael 5acfff1152 Merge remote-tracking branch 'upstream/develop' into ocr 2024-01-14 18:33:02 +00:00
Matthew Exon 921bf15419 Update use of PasswordExposed API 2024-01-14 18:40:40 +01:00
Matthew Exon 36c37e0c62 Allow setting user avatar in the console at creation 2024-01-14 16:19:20 +01:00
Michael 3b1d636322 Merge remote-tracking branch 'upstream/develop' into warning 2024-01-14 12:13:10 +00:00
Michael d4c16b8704 Fix warning concerning a missing "created" field 2024-01-14 11:58:06 +00:00
Michael Vogel 02123bda98
Issue 13828: Use the alias as profile link if present (#13829)
* Issue 13828: Use the alias as profile link if present

* Updated messages.po
2024-01-14 10:08:00 +01:00
Michael Vogel 5dc49352e8
Merge pull request #13826 from MrPetovan/bug/deprecated
[Composer] Bump guzzlehttp/guzzle to version 7 to suppress deprecation notices
2024-01-13 21:38:22 +01:00
Michael 1fc1e478f8 Improved config description 2024-01-13 19:37:24 +00:00
Michael 3a60229e5c Use OCR to fetch text in images 2024-01-13 19:30:20 +00:00
Michael 98de6ad464 Fix regexp for search text generation 2024-01-13 19:20:45 +00:00
Michael 1eeef896fe Link preview text and description added to search text. 2024-01-13 15:46:37 +00:00
Hypolite Petovan e8c256bcff [Composer] Bump guzzlehttp/guzzle to version 7 to suppress deprecation notices
- Bump divineomega/password_exposed to version 3 to remove dependency on Guzzle version 6
- Add new ICanHandleHttpResponses->getBodyString method to solve inheritance mismatch with GuzzleHttp\Psr7\ResponseInterface->getBody return type
2024-01-12 08:42:46 -05:00
Michael a30b9e6927 Improved handling of empty default languages 2024-01-12 09:58:16 +00:00
Hypolite Petovan 728130908e
Merge pull request #13825 from toddy15/undefined-array-key
Fix Undefined array key.
2024-01-12 00:19:48 -05:00
Dr. Tobias Quathamer 5cd5fa8403 Fix Undefined array key.
- Address https://github.com/friendica/friendica/issues/13761#issuecomment-1878806230
2024-01-11 23:38:29 +01:00
Michael 62975b0ef2 Simplify SQL check 2024-01-11 20:40:24 +00:00
Michael cc0b16c0ae Fix a problem with MySQL 2024-01-11 07:01:48 +00:00
Michael 43d5409937 Property added 2024-01-11 06:49:15 +00:00
Michael ad15b7b256 Fix warning: E_WARNING: Undefined array key "publish" 2024-01-10 22:04:02 +00:00
Michael 61555657c3 Code clean up 2024-01-10 21:51:34 +00:00
Michael dfce85a09f Improved performance with full text search 2024-01-10 21:17:21 +00:00
Michael b48467c3f8 Validate full search text 2024-01-10 20:17:44 +00:00
Michael Vogel b515292b1c
Merge pull request #13820 from haheute/remove-01
remove a superfluous '01' that appeared next to checkboxes from templ…
2024-01-10 18:09:33 +01:00
Hannes Heute 60e1427ffe remove a superfluous '01' that appeared next to checkboxes from template file 2024-01-10 17:41:53 +01:00
Michael b2dd95affa Language check added 2024-01-10 10:55:18 +00:00
Michael a04dc06aab Handle reshares / improved code 2024-01-09 22:55:47 +00:00
Michael 0b84e0d056 Compare with lowered tags 2024-01-09 06:40:07 +00:00
Hypolite Petovan 83c187e3ac
Merge pull request #13807 from toddy15/develop
Clean up smarty templates.
2024-01-08 10:12:07 -05:00
Michael 7a680dd9b7 Take language from quoted post 2024-01-08 06:48:49 +00:00
Michael 5dedf5e500 Execute the language detection all the time 2024-01-08 06:23:28 +00:00
Michael 43fa22470c Fix warning, when the language is invalid 2024-01-07 23:10:28 +00:00
Dr. Tobias Quathamer 6fd057fd00 Use double quotes where possible 2024-01-07 21:48:22 +01:00
Dr. Tobias Quathamer e6036b8266 Clean up smarty templates.
This simplifies some logic in if-conditions, because
smarty just returns an empty string for undefined
variables.

Also, this commit removes unnecessary values from
HTML input attributes.
2024-01-07 21:40:01 +01:00
Michael 7e8aee61ba Updated messages.po 2024-01-07 19:57:53 +00:00
Michael d2a74d1936 New option to disallow 2024-01-07 19:22:56 +00:00
Michael c4b85ef25a New field "publish" for channels 2024-01-07 18:36:47 +00:00
Michael 08738e6551 Improved handling of undetected languages 2024-01-07 12:45:08 +00:00
Michael da02df20c3 Simplified language check 2024-01-07 12:09:13 +00:00
Michael 6e830f7774 Improved handling for undeterminded languages 2024-01-07 10:11:52 +00:00
Hypolite Petovan bbd3e75399
Merge pull request #13808 from mexon/allow-ipv6-failure
allow hosts to be validated even if ipv6 fails
2024-01-06 21:03:52 -05:00
Michael 6cd0e1e35f Use owner instead of author 2024-01-07 01:08:59 +00:00
Matthew Exon 1550ce2764 allow hosts to be validated even if ipv6 fails 2024-01-06 23:56:11 +01:00
Michael 4aedf7f650 Improved code / updated messages.po 2024-01-06 22:04:30 +00:00
Michael aba4a482f0 Limited settings for the relay account type 2024-01-06 21:52:28 +00:00
Michael 811a9f01bc New user account type "Channel Relay" 2024-01-06 17:27:42 +00:00
Hypolite Petovan 2b8126b780
Merge pull request #13805 from toddy15/develop
Enable HTML attributes in all form fields.
2024-01-06 11:13:54 -05:00
Dr. Tobias Quathamer 26f4532d47 Enable HTML attributes in all form fields.
Closes #13804
2024-01-06 16:28:48 +01:00
Hypolite Petovan 16b12e1545
Merge pull request #13800 from annando/channel-languages
User defined channels can now have got individual language definitions
2024-01-03 18:48:51 -05:00
Michael 4e1263c1f8 Fixed indentation 2024-01-03 19:22:53 +00:00
Michael 93dd1b5973 Updated messages.po / database.sql 2024-01-03 19:20:56 +00:00
Michael 31b88da9d5 Merge remote-tracking branch 'upstream/develop' into channel-languages 2024-01-03 19:17:58 +00:00
Michael da3d390187 User defined channels can now have got individual language definitions 2024-01-03 19:17:14 +00:00
Hypolite Petovan 67a9f6269e
Merge pull request #13799 from foss-/patch-12
Update README.md: fixing links for mobile screenshots
2024-01-03 10:13:05 -05:00
foss- bc67be2b91
Update README.md: fixing links for mobile screenshots 2024-01-03 16:08:18 +01:00
Hypolite Petovan 4132e7a468
Merge pull request #13798 from annando/unkmail2
The "unkmail" functionality is removed
2024-01-03 10:02:31 -05:00
Hypolite Petovan 25fecc1945
Merge pull request #13785 from foss-/patch-11
Update README.md
2024-01-03 09:59:01 -05:00
Hypolite Petovan a077418af0 Fix formatting and wording in README 2024-01-03 09:58:20 -05:00
Hypolite Petovan 2e81803a52 Fix absolute image paths in README 2024-01-03 09:56:11 -05:00
Hypolite Petovan fe39ead790 Update README screenshot 2024-01-03 09:55:51 -05:00
Michael Vogel d385296e0d
Merge pull request #13797 from tobiasd/20240103-lang
DE, FR, RO translation updates
2024-01-03 11:44:49 +01:00
Michael 7ecf143e4c The "unkmail" functionality is removed 2024-01-03 10:23:11 +00:00
Tobias Diekershoff ffad9c523b DE, FR, RO translation updates 2024-01-03 10:39:42 +01:00
Hypolite Petovan 21b16ef822
Merge pull request #13795 from annando/copyright
Friendica copyright changed from 2023 to 2034
2024-01-02 21:28:02 -05:00
Hypolite Petovan 80103bef38
Merge pull request #13794 from annando/simplified-group-display
There is now a single way to display group postings
2024-01-02 21:27:31 -05:00
Hypolite Petovan 6c023f832b
Merge pull request #13796 from annando/discoverable
Don't set a profile to "discoverable" for restricted hosts
2024-01-02 21:25:17 -05:00
Michael 73df36ca72 Don't set a profile to "discoverable" for restricted hosts 2024-01-03 00:55:21 +00:00
Michael 523247f0fe Updated messages.po 2024-01-02 20:59:23 +00:00
Michael 89e7420237 Friendica copyright changed from 2023 to 2034 2024-01-02 20:57:26 +00:00
Michael 16d0d17169 There is now a single way to display group postings 2024-01-02 20:45:02 +00:00
Michael Vogel 9592292dba
Improved server detection / new servers added to federation statistics (#13793)
* Improved server detection / new servers added to federation statistics

* Fix wrong color code
2024-01-02 20:12:37 +01:00
Michael Vogel bf80001c80
Fixed detection for empty server data in apcontact (#13791) 2024-01-02 14:56:08 +01:00
hoergen 4e7f0f9f04
added jit and preload explanation in comment
added information to identify which parameter causes which result
2024-01-01 18:01:22 +01:00
foss- 85eb09806f
Update README.md
- updated main screenshot (changed post action icons, text no longer shown)
- fixed path for mobile screenshots
- removed vier screenshot (it as not seen any development for ages, is not the default and thus not representative or needed for a first impression)
- tweaked humane tech mention text
2023-12-31 14:51:14 +01:00
Michael Vogel 8fc96477e7
Use the post-counts table to display content (#13781)
* Use the post-counts table to display content

* Use verb instead of vid

* Use verb

* Update counter on delete
2023-12-31 12:50:07 +01:00
Michael Vogel 0c68a53e1e
Remove 'blocklist' pconfig functionality (#13780)
* Cache blocklist

* Remove 'blocklist' pconfig functionality

* The blocklist variable isn't used anymore
2023-12-30 00:51:41 +01:00
Michael Vogel ad1389b20a
Transmitting events to Diaspora does work again (#13777) 2023-12-30 00:43:14 +01:00
Michael Vogel 1564c297bb
Cache blocklist (#13779) 2023-12-30 00:27:57 +01:00
Hypolite Petovan 5b516b1dbb
Merge pull request #13778 from annando/post-counts
New table "post-counts" to precalculate the counts
2023-12-28 13:13:44 -05:00
Michael e88cd16644 Code standards 2023-12-28 17:50:11 +00:00
Michael 40a1263066 New table "post-counts" to precalculate the counts 2023-12-28 17:42:39 +00:00
Hypolite Petovan 2588ac1a16
Merge pull request #13774 from annando/no-blubb
Unneeded logging removed
2023-12-28 12:06:09 -05:00
Hypolite Petovan 8d4a16a71c
Merge pull request #13773 from annando/user-self
"User::" is changed to "self::"
2023-12-28 12:05:31 -05:00
Michael ba760bb340 Unneeded logging removed 2023-12-28 10:25:22 +00:00
Michael 86a27b51ad "User::" is changed to "self::" 2023-12-28 10:23:01 +00:00
Hypolite Petovan ac1ebac112
Merge pull request #13771 from Raroun/fix_for_issue_#13710_frio]_Long_handles_prevent_a_clean_display_of_common_contacts
Fix for issue #13710 - [frio] long handles prevent a clean display of common contacts
2023-12-26 19:17:15 -05:00
Hypolite Petovan f4fddb2921
Merge pull request #13770 from annando/restrict-for-ignored
Restrict the access for servers that the user ignored
2023-12-26 19:11:34 -05:00
Raroun b26a5ce0fa
Update style.css
Added missing space
2023-12-26 19:41:37 +01:00
Raroun 6c1df6471a
Update style.css
Added missing spaces
2023-12-26 19:40:44 +01:00
Raroun 53c7da87a6
removed unnecessary empty line 2023-12-26 16:53:34 +01:00
Raroun a609e545b6
Update remote_friends_common.tpl
Addes collapsable remote friends in common for frio and vier
2023-12-26 16:43:23 +01:00
Raroun 4e3302ea0d
Update style.css
Addes remote friends in common wrapper
2023-12-26 16:42:07 +01:00
Raroun 4faa43766d
Added collapsable support for remote friends in common in vier theme 2023-12-26 16:39:08 +01:00
Raroun bfc11495f3
Update style.css
Adjusted the BGcolor as suggested by Annando
2023-12-26 14:13:02 +01:00
Raroun 46d34c53e6
Update style.css - removed unnecessary empty line 2023-12-26 10:04:24 +01:00
Raroun 2bb5785dfa
Update style.css
addes missing empty lines
2023-12-26 09:53:12 +01:00
Raroun cc5711b2df
Update remote_friends_common.tpl
moved rfic-desc to top, tested on vier, frio and both mobile views
2023-12-26 09:48:57 +01:00
Raroun 243bcba726
Update style.css to display remote friends in common in a css grid 2023-12-26 09:46:33 +01:00
Michael cb816bde66 Restrict the access for servers that the user ignored 2023-12-26 08:32:17 +00:00
Hypolite Petovan 04cdd3e8ec
Fix Smarty reference to version constant after it was moved to App class (#13769) 2023-12-25 19:26:19 +01:00
Michael Vogel f23ecaff6a
Posts per author/server on the community pages (#13764)
* Posts per author/server on the community pages

* Updated database.sql
2023-12-25 12:39:15 +01:00
Tobias Diekershoff f9c484c642 updated changelog 2023-12-24 18:05:59 +01:00
Tobias Diekershoff d2feade9cf new CHANGELOG for 2024.03 2023-12-24 16:15:01 +01:00
Tobias Diekershoff 9b62ba6dfe bump version 2024.03-dev 2023-12-24 15:57:10 +01:00
1462 changed files with 49146 additions and 40608 deletions

3
.gitignore vendored
View file

@ -83,8 +83,9 @@ venv/
#Ignore temporary installed phpunit
/bin/phpunit
#Ignore cache file
#Ignore cache files
.php_cs.cache
.php-cs-fixer.cache
#ignore avatar picture cache path
/avatar

93
.php-cs-fixer.dist.php Normal file
View file

@ -0,0 +1,93 @@
<?php
/**
* @copyright Copyright (C) 2010-2024, 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/>.
*/
declare(strict_types=1);
$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
->notPath('addon')
->notPath('bin/dev')
->notPath('config')
->notPath('doc')
->notPath('images')
->notPath('mods')
->notPath('spec')
->notPath('vendor')
->notPath('view/asset')
->notPath('lang')
->notPath('view/smarty3/compiled');
$config = new PhpCsFixer\Config();
return $config
->setRules([
'@PSR1' => true,
'@PSR2' => true,
'@PSR12' => true,
'align_multiline_comment' => true,
'array_indentation' => true,
'array_syntax' => [
'syntax' => 'short',
],
'binary_operator_spaces' => [
'default' => 'single_space',
'operators' => [
'=>' => 'align_single_space_minimal',
'=' => 'align_single_space_minimal',
'??' => 'align_single_space_minimal',
],
],
'blank_line_after_namespace' => true,
'braces' => [
'position_after_anonymous_constructs' => 'same',
'position_after_control_structures' => 'same',
'position_after_functions_and_oop_constructs' => 'next',
],
'elseif' => true,
'encoding' => true,
'full_opening_tag' => true,
'function_declaration' => [
'closure_function_spacing' => 'one',
],
'indentation_type' => true,
'line_ending' => true,
'list_syntax' => [
'syntax' => 'long',
],
'lowercase_keywords' => true,
'method_argument_space' => [],
'no_closing_tag' => true,
'no_spaces_after_function_name' => true,
'no_spaces_inside_parenthesis' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unused_imports' => true,
'single_blank_line_at_eof' => true,
'single_class_element_per_statement' => true,
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'switch_case_space' => true,
'ternary_operator_spaces' => false,
'visibility_required' => [
'elements' => ['property', 'method']
],
'new_with_braces' => true,
])
->setFinder($finder)
->setIndent("\t");

View file

@ -6,6 +6,7 @@ require_once __DIR__ . '/bin/dev/php-cs-fixer/vendor/autoload.php';
$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
->notPath('addon')
->notPath('bin/dev')
->notPath('config')
->notPath('doc')

View file

@ -39,7 +39,7 @@ steps:
branch: [ develop, '*-rc' ]
event: push
composer_install:
image: friendicaci/php7.4:php7.4.33
image: friendicaci/php8.2:php8.2.16
commands:
- export COMPOSER_HOME=.composer
- composer validate

View file

@ -1,10 +1,11 @@
matrix:
include:
- PHP_MAJOR_VERSION: 7.4
PHP_VERSION: 7.4.33
- PHP_MAJOR_VERSION: 8.2
PHP_VERSION: 8.2.16
branches:
exclude: [ stable ]
when:
- branch:
exclude: [ stable ]
# This forces CI executions at the "opensocial" labeled location (because of much more power...)
labels:

View file

@ -8,5 +8,6 @@ steps:
commands:
- /check-messages.sh
branches:
exclude: [ stable ]
when:
- branch:
exclude: [ stable ]

View file

@ -5,9 +5,11 @@ matrix:
- PHP_MAJOR_VERSION: 8.0
PHP_VERSION: 8.0.30
- PHP_MAJOR_VERSION: 8.1
PHP_VERSION: 8.1.23
PHP_VERSION: 8.1.27
- PHP_MAJOR_VERSION: 8.2
PHP_VERSION: 8.2.11
PHP_VERSION: 8.2.16
- PHP_MAJOR_VERSION: 8.3
PHP_VERSION: 8.3.3
# This forces PHP Unit executions at the "opensocial" labeled location (because of much more power...)
labels:
@ -16,7 +18,6 @@ labels:
steps:
php-lint:
image: php:${PHP_MAJOR_VERSION}
group: lint
commands:
- find . -name \*.php -not -path './vendor/*' -not -path './view/asset/*' -print0 | xargs -0 -n1 php -l
restore_cache:
@ -64,7 +65,7 @@ steps:
- cp config/local-sample.config.php config/local.config.php
- if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi
- mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql
- if [ "${PHP_MAJOR_VERSION}" = "7.4" -a "${CI_REPO}" = "friendica/friendica" ]; then
- if [ "${PHP_MAJOR_VERSION}" = "8.2" -a "${CI_REPO}" = "friendica/friendica" ]; then
phpenmod xdebug;
export XDEBUG_MODE=coverage;
phpunit --configuration tests/phpunit.xml -d memory_limit=-1 --coverage-clover clover.xml;
@ -75,8 +76,8 @@ steps:
image: friendicaci/codecov
when:
matrix:
PHP_MAJOR_VERSION: 7.4
PHP_VERSION: 7.4.33
PHP_MAJOR_VERSION: 8.2
PHP_VERSION: 8.2.16
repo:
- friendica/friendica
commands:

View file

@ -37,7 +37,7 @@ steps:
branch: stable
event: tag
composer_install:
image: friendicaci/php7.4:php7.4.33
image: friendicaci/php8.2:php8.2.16
commands:
- export COMPOSER_HOME=.composer
- composer validate

View file

@ -1,4 +1,73 @@
Version 2023.12 (unreleased)
Version 2024.06 (unreleased)
Friendica Core
Friendica Addons
Closed Issues
Version 2024.03 (2024-03-21)
Friendica Core
Updates to the translations AR, BG, CS, DE, EO, ES, FR, GD, HU, IS, IT, JA, PL, RO, RU, SV
Updates to the themes (frio, vier) [annando, foss-, haheute, MrPetovan, Raroun, toddy15]
Improved the channel feature [annando]
Improved the search performance [annando]
Improved spam detection [annando]
Improved the account overview on the moderation page [annando]
Improved account creation via CLI console [mexon]
Improved the Mastodon compatible API [annando, MrPetovan]
Improved logging of the system load value [annando]
Improved image handling [annando]
Improved detection of user activity [annando]
Improved display of embedded videos [annando]
Fixed an issue that could lead to empty URLs in the server block list [annando]
Fixed XSS attacks [leoOliver, MrPetovan, snajafov]
Fixed an issue when importing emails [annando]
Fixed an issue that blocked users could still use the API [annando]
Fixed an issue when fetching remote content [annando, arcanicanis]
Fixed an issue with unescaped HTML characters for RSS feeds [MrPetovan, r1pu5u]
Fixed an issue when showing the post preview [annando]
General code cleanup [annando, MrPetovan]
Updated the PasswordExposed usage [mexon]
Removed fpostit (Friendica post bookmarklet) [MrPetovan]
Removed the possibility for users to follow relays directly [annando]
Removed unused OEmbed functionality [annando]
Removed legacy schemes from frio theme [MrPetovan]
Added blur effect to sensitive images and user setting against it [annando]
Added account type Channel Relay [annando]
Added OCR generated image descriptions via tesseract addon [annando]
Added WebP and BMP support [annando]
Added blocked email addresses for registration [annando]
Friendica Addons
advancedcontentfilter
Updated dependency for PHP8.2 compatibility [MrPetovan]
blockbot
Fixed an issue preventing the creation of previews on remote systems [annando]
Updated block lists [annando]
bluesky
Overhaul of the Bluesky connector [annando]
Fixed problem with empty quoted shares [annando]
openstreetmap
Fix a config problem [haheute]
pnut:
Connector addon was added [spacenerdmo]
tesseract
Added the addon to generate image descriptions from images via OCR [annando]
tumblr
Improved handling of quoted shares [annando]
url_replace
Added addon to replace URLs from Twitter, Youtube and some others using 12ft.io [toddy15]
Fixed an issue with empty config vars [MrPetovan]
Closed Issues
903, 7732, 8768, 11142, 13220, 13293, 13765, 13768, 13809,
13814, 13814, 13818, 13819, 13822, 13823, 13828, 13837, 13839,
13844, 13845, 13859, 13863, 13873, 13877, 13886, 13887, 13897,
13899, 13905, 13909, 13922, 13925, 13930, 13939, 13940, 13946,
13947, 13949, 13950, 13953, 13955, 13959, 13968, 13969, 13972,
13984, 13985, 13986
Version 2023.12 (2023-12-24)
Friendica Core
Raised minimal PHP version to 7.4
Updates to the translations AR, BG, CA, CS, DE, EN GB, EN US, EO, ES, ET, FI, FR, GD, HU, IS, IT, JA, NL, PL, RO, RU, SV
@ -498,7 +567,7 @@ Version 2022.02 (2022-02-06)
Added a media tab on profile pages [annando]
Removed video tab on profile pages [annando]
Bumped the minimal version of PHP to 7.3
Friendica Addons
Updates to the translations AR, DE, FR, HU, IT, PL, SV [translation teams]
Deprecated addons: blogger, buffer, jappixmini, notimeline, xmpp
@ -523,7 +592,7 @@ Version 2022.02 (2022-02-06)
Fixed API calls [MrPetovan]
Fixed a problem leading to duplicated links [annando]
Updated twitteroauth dependency [nupplaphil]
Closed Issues
9720, 10301, 10365, 10454, 10634, 10691, 10725, 10726, 10729, 10734,
10737, 10739, 10745, 10754, 10767, 10791, 10829, 10832, 10839, 10841,
@ -627,7 +696,7 @@ Version 2021.07 (2021-07-04)
The "authenticate" hook was moved deeper into the process [very-ape]
Added support for RTL languages [MrPetovan]
Added download link for the calendar entries [annando]
Friendica Addons
Updates to the translations DE, HU, IT, JA [translation teams]
nitter
@ -652,7 +721,7 @@ Version 2021.07 (2021-07-04)
adaptation of new addon functionalities and code improvements [mexon]
phpmailer
updated dependencies [nupplaphil]
Closed Issues
7967, 8262, 9715, 9064, 9993, 10055, 10147, 10184, 10198, 10205, 10210,
10219, 10232, 10254, 10287, 10293, 10306, 10312, 10314, 10342, 10364,
@ -1046,7 +1115,7 @@ Version 2020.03 "Red Hot Poker" (2020-03-30)
Added fetching of contact relations [annando]
unicode emoticons:
Extended the list of supported emoticons [loma-one]
Closed Issues:
4599, 5562, 6205, 6418, 6757, 7558, 7560, 7771, 7808, 7817, 7892,
7964, 7968, 7978, 7984, 7991, 7992, 7994, 8002, 8008, 8014, 8058,
@ -1283,7 +1352,7 @@ Version 2019.06 (2019-06-23)
Version 2019.04 (2019-04-28)
Friendica Core:
Fixed a privacy problem with postings accessed by feed [MrPetovan]
Version 2019.03 (2019-03-22)
Friendica Core:
Update to the translation (CS, DE, EN-GB, EN-US, ES, FR, IT, PL, SV, ZH-CN) [translation teams]
@ -1458,7 +1527,7 @@ Version 2019.01 (2019-01-21)
6268, 6282, 6283, 6208, 6289, 6294, 6308, 6309, 6313, 6316, 6323,
6329, 6334, 6344, 6347, 6343, 6349, 6350, 6355, 6358, 6360, 6361,
6363, 6368, 6370, 6391, 6394, 6424, 6425, 6439, 6459
Version 2018.09 (2018-09-23)
Friendica Core:
Update to the translation (CS, DE, EN-US, FI, IT, NL, PL, ZH-CN) [translation teams]
@ -1493,13 +1562,13 @@ Version 2018.09 (2018-09-23)
Fixed a bug in the daemon mode of the background worker [annando]
Fixed a bug in the frio theme that contact filtering [rabuzarus]
Fixed a bug that mangled the display of some additional smileys [abanink]
Fixed a bug in generating registration mails [MrPetovan]
Fixed a bug in generating registration mails [MrPetovan]
Fixed a bug that caused blank re-share bodies [MrPetovon]
Fixed a bug in the API handling of private mails [fabrixxm]
Fixed a bug when calling the mail() function [miqrogroove]
Fixed a bug that caused deleted accounts being displayed in the local directory [miqrogroove]
Fixed a bug when checking the domain of an email address [VVelox]
Fixed a bug that prevented re-shares from Twitter to be shown as this [annando]
Fixed a bug that prevented re-shares from Twitter to be shown as this [annando]
Fixed a bug that caused broken profile links [miqrogroove]
Fixed a bug that caused content from unknown accounts appearing in the timeline [annando]
Fixed a bug with the ignoring and blocking of contacts [annando]

View file

@ -32,6 +32,7 @@ Anthronaut
Anton
Antron Samurai
Anubis2814
arcanicanis
Arian - Cazare Muncitori
Asher Pen
atjn
@ -136,6 +137,7 @@ gudzpoz
GunChleoc
guzzisti
Haakon Meland Eriksen
haheute
Hank Grabowski
Hannes Heute
Hans Meine
@ -147,6 +149,7 @@ hlad
hoergen
Hubert Kościański
Hypolite Petovan
ike
Ilmari
ImgBotApp
irhen
@ -222,6 +225,7 @@ Michal Šupler
Michalina
Mike Macgirvin
miqrogroove
Morgan McMillian
mpanhans
mytbk
nathilia-peirce
@ -255,8 +259,10 @@ Pierre Bernardeau
Pierre Rudloff
Piotr Blonkowski
Piotr Strębski
pixelroot
pokerazor
R C
r1pu5u
Rabuzarus
Radek
Rafael Garau
@ -294,9 +300,11 @@ Senex Petrovic
Seth
SickShark X
Silke Meyer
Simon
Simon L'nu
Simon Rupf
Simó Albert i Beltran
snajafov
softmetz
soko1
Spencer Dub

View file

@ -3,27 +3,28 @@ Friendica - your open and free social network
Welcome to the free social web. Friendica is a platform for decentralised social communication linking to other independent social and corporate services.
Friendica connects you to a federated communications network of thousands of servers called the Fediverse. Through various protocols you can interact with anyone on [Friendica]( https://friendi.ca), [Mastodon](https://joinmastodon.org), [Lemmy](https://join-lemmy.org/), [Diaspora](https://diasporafoundation.org), [Misskey](https://join.misskey.page), [Peertube](https://joinpeertube.org/), [Pixelfed](https://pixelfed.org/), [Pleroma](https://pleroma.social) and many more. Receiving content from Tumblr, Wordpress and RSS is also possible. Friendica allows to import and mirror your content via add-ons such as ITTT and Buffer. You can customize and control how publicly or privately you want to share your content.
Friendica connects you to a federated communications network of thousands of servers called the Fediverse.
Through various protocols you can interact with anyone on [Friendica]( https://friendi.ca), [Mastodon](https://joinmastodon.org), [Lemmy](https://join-lemmy.org/), [Diaspora](https://diasporafoundation.org), [Misskey](https://join.misskey.page), [Peertube](https://joinpeertube.org/), [Pixelfed](https://pixelfed.org/), [Pleroma](https://pleroma.social) and many more.
Receiving content from Tumblr, WordPress and RSS is also possible.
Friendica allows to import and mirror your content via add-ons such as ITTT and Buffer.
You can control the privacy scope of your content.
Being part of the Fediverse allows you to be free from data-harvesting corporations. Enjoy open social communication, independent of any specific provider.
Being part of the Fediverse allows you to be free from data-harvesting corporations.
Enjoy open social communication, independent of any specific provider.
[Join Friendica](https://dir.friendica.social/servers) today or setup [your own Friendica instance](doc/Install.md).
[Join Friendica](https://dir.friendica.social/servers) today or set up [your own Friendica instance](doc/Install.md).
### Friendica on desktop
![Frio theme in desktop browser](images/screenshots/friendica-2023-10-frio-desktop.png?raw=true "Frio theme in desktop browser")
![Frio theme in desktop browser](images/screenshots/friendica-2023-12-frio-desktop.png?raw=true "Frio theme in desktop browser")
### Friendica on mobile
<p float="left">
<img src ="https://github.com/friendica/friendica/blob/2023.09-rc/images/screenshots/friendica-2023-10-frio-mobile-timeline-dark-blue.png" width="370" alt="frio on mobile, dark color scheme">
<img src="https://github.com/friendica/friendica/blob/2023.09-rc/images/screenshots/friendica-2023-10-frio-mobile-options-light-blue.png" width="370" alt="frio on mobile, light color scheme">
<img src="images/screenshots/friendica-2023-10-frio-mobile-timeline-dark-blue.png" width="370" alt="frio on mobile, dark color scheme">
<img src="images/screenshots/friendica-2023-10-frio-mobile-options-light-blue.png" width="370" alt="frio on mobile, light color scheme">
</p>
### Alternative Theme "Vier"
![Vier theme in desktop browser](images/screenshots/friendica-vier-community.png?raw=true "Vier theme in desktop browser")
## Endorsements
- [![Awesome Humane Tech](images/humane-tech-badge.svg)](https://codeberg.org/teaserbot-labs/delightful-humane-design) In August 2020 Friendica was added to the curated delightful humane design resources in the [Fediverse category](https://codeberg.org/teaserbot-labs/delightful-humane-design#fediverse).
- Friendica is listed on [![Awesome Humane Tech](images/humane-tech-badge.svg)](https://codeberg.org/teaserbot-labs/delightful-humane-design) in the [Fediverse category](https://codeberg.org/teaserbot-labs/delightful-humane-design#fediverse).

View file

@ -1 +1 @@
2023.12
2024.06-dev

View file

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -138,9 +138,9 @@ function execute_tests() {
if [ -n "${USEDOCKER}" ]; then
echo "Fire up the mysql docker"
DOCKER_CONTAINER_ID=$(docker run \
-e MYSQL_ROOT_PASSWORD=friendica \
-e MYSQL_ROOT_PASSWORD="${DATABASE_PASSWORD}" \
-e MYSQL_USER="${DATABASE_USER}" \
-e MYSQL_PASSWORD=friendica \
-e MYSQL_PASSWORD="${DATABASE_PASSWORD}" \
-e MYSQL_DATABASE="${DATABASE_NAME}" \
-d mysql)
DATABASE_HOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "${DOCKER_CONTAINER_ID}")
@ -152,8 +152,8 @@ function execute_tests() {
echo "To use the docker container set the USEDOCKER environment variable"
exit 3
fi
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}
mysql -u "${DATABASE_USER}" -p"${DATABASE_PASSWORD}" -e "DROP DATABASE IF EXISTS ${DATABASE_NAME}" -h ${DATABASE_HOST} || true
mysql -u "${DATABASE_USER}" -p"${DATABASE_PASSWORD}" -e "CREATE DATABASE ${DATABASE_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h ${DATABASE_HOST}
else
DATABASE_HOST=mysql
fi
@ -171,9 +171,9 @@ function execute_tests() {
if [ -n "${USEDOCKER}" ]; then
echo "Fire up the mariadb docker"
DOCKER_CONTAINER_ID=$(docker run \
-e MYSQL_ROOT_PASSWORD=friendica \
-e MYSQL_ROOT_PASSWORD="${DATABASE_PASSWORD}" \
-e MYSQL_USER="${DATABASE_USER}" \
-e MYSQL_PASSWORD=friendica \
-e MYSQL_PASSWORD="${DATABASE_PASSWORD}" \
-e MYSQL_DATABASE="${DATABASE_NAME}" \
-d mariadb)
DATABASE_HOST=$(docker inspect --format="{{.NetworkSettings.IPAddress}}" "${DOCKER_CONTAINER_ID}")
@ -185,8 +185,8 @@ function execute_tests() {
echo "To use the docker container set the USEDOCKER environment variable"
exit 3
fi
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}
mysql -u "${DATABASE_USER}" -p"${DATABASE_PASSWORD}" -e "DROP DATABASE IF EXISTS ${DATABASE_NAME}" -h ${DATABASE_HOST} || true
mysql -u "${DATABASE_USER}" -p"${DATABASE_PASSWORD}" -e "CREATE DATABASE ${DATABASE_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -h ${DATABASE_HOST}
else
DATABASE_HOST=mariadb
fi
@ -203,14 +203,14 @@ function execute_tests() {
if [ -n "${USEDOCKER}" ]; then
echo "Initialize database..."
docker exec ${DOCKER_CONTAINER_ID} mysql -u root -pfriendica -e "CREATE DATABASE IF NOT EXISTS ${DATABASE_NAME};"
docker exec ${DOCKER_CONTAINER_ID} mysql -u root -p"${DATABASE_PASSWORD}" -e "CREATE DATABASE IF NOT EXISTS ${DATABASE_NAME};"
fi
export MYSQL_HOST="${DATABASE_HOST}"
#call installer
echo "Installing Friendica..."
"${PHP}" ./bin/console.php autoinstall --dbuser="${DATABASE_USER}" --dbpass=friendica --dbdata="${DATABASE_NAME}" --dbhost="${DATABASE_HOST}" --url=https://friendica.local --admin=admin@friendica.local
"${PHP}" ./bin/console.php autoinstall --dbuser="${DATABASE_USER}" --dbpass="${DATABASE_PASSWORD}" --dbdata="${DATABASE_NAME}" --dbhost="${DATABASE_HOST}" --url=https://friendica.local --admin=admin@friendica.local
fi
#test execution

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,7 +1,7 @@
#!/usr/bin/php
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,7 +1,7 @@
#!/usr/bin/env php
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -29,12 +29,12 @@
"ext-xml": "*",
"asika/simple-console": "^1.0",
"bacon/bacon-qr-code": "^2.0.0",
"divineomega/password_exposed": "^2.8",
"divineomega/password_exposed": "^3",
"enyo/dropzone": "^5.9",
"ezyang/htmlpurifier": "^4.7",
"friendica/json-ld": "^1.0",
"geekwright/po": "^2.0",
"guzzlehttp/guzzle": "^6.5",
"guzzlehttp/guzzle": "^7",
"guzzlehttp/oauth-subscriber": "^0.6",
"kornrunner/blurhash": "^1.2",
"league/html-to-markdown": "^4.8",
@ -135,7 +135,8 @@
"mockery/mockery": "^1.3",
"mikey179/vfsstream": "^1.6",
"phpunit/phpunit": "^9",
"dms/phpunit-arraysubset-asserts": "^0.3.1"
"dms/phpunit-arraysubset-asserts": "^0.3.1",
"friendsofphp/php-cs-fixer": "^3.46"
},
"scripts": {
"test": "phpunit",
@ -149,6 +150,8 @@
"cs:fix": [
"@cs:install",
"bin/dev/php-cs-fixer/vendor/bin/php-cs-fixer fix"
]
],
"cs:check-v3": "vendor/bin/php-cs-fixer check --diff",
"cs:fix-v3": "vendor/bin/php-cs-fixer fix"
}
}

2344
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
-- ------------------------------------------
-- Friendica 2023.12 (Yellow archangel)
-- DB_UPDATE_VERSION 1542
-- Friendica 2024.06-dev (Yellow Archangel)
-- DB_UPDATE_VERSION 1562
-- ------------------------------------------
@ -23,6 +23,8 @@ CREATE TABLE IF NOT EXISTS `gserver` (
`local-comments` int unsigned COMMENT 'Number of local comments',
`directory-type` tinyint DEFAULT 0 COMMENT 'Type of directory service (Poco, Mastodon)',
`poco` varbinary(383) NOT NULL DEFAULT '' COMMENT '',
`openwebauth` varbinary(383) COMMENT 'Path to the OpenWebAuth endpoint',
`authredirect` varbinary(383) COMMENT 'Path to the authRedirect endpoint',
`noscrape` varbinary(383) NOT NULL DEFAULT '' COMMENT '',
`network` char(4) NOT NULL DEFAULT '' COMMENT '',
`protocol` tinyint unsigned COMMENT 'The protocol of the server',
@ -73,8 +75,6 @@ CREATE TABLE IF NOT EXISTS `user` (
`blockwall` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to post to the profile page of the user',
`hidewall` boolean NOT NULL DEFAULT '0' COMMENT 'Hide profile details from unknown viewers',
`blocktags` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to tag the post of this user',
`unkmail` boolean NOT NULL DEFAULT '0' COMMENT 'Permit unknown people to send private mails to this user',
`cntunkmail` int unsigned NOT NULL DEFAULT 10 COMMENT '',
`notify-flags` smallint unsigned NOT NULL DEFAULT 65535 COMMENT 'email notification options',
`page-flags` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'page/profile type',
`account-type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
@ -504,8 +504,13 @@ CREATE TABLE IF NOT EXISTS `channel` (
`access-key` varchar(1) COMMENT 'Access key',
`include-tags` varchar(1023) COMMENT 'Comma separated list of tags that will be included in the channel',
`exclude-tags` varchar(1023) COMMENT 'Comma separated list of tags that aren\'t allowed in the channel',
`min-size` int unsigned COMMENT 'Minimum post size',
`max-size` int unsigned COMMENT 'Maximum post size',
`full-text-search` varchar(1023) COMMENT 'Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode',
`media-type` smallint unsigned COMMENT 'Filtered media types',
`languages` mediumtext COMMENT 'Desired languages',
`publish` boolean COMMENT 'publish channel content',
`valid` boolean COMMENT 'Set, when the full-text-search is valid',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
@ -536,6 +541,7 @@ CREATE TABLE IF NOT EXISTS `contact-relation` (
`relation-score` smallint unsigned COMMENT 'score for interactions of relation-cid on cid',
`thread-score` smallint unsigned COMMENT 'score for interactions of cid on threads of relation-cid',
`relation-thread-score` smallint unsigned COMMENT 'score for interactions of relation-cid on threads of cid',
`post-score` smallint unsigned COMMENT 'score for the amount of posts from cid that can be seen by relation-cid',
PRIMARY KEY(`cid`,`relation-cid`),
INDEX `relation-cid` (`relation-cid`),
FOREIGN KEY (`cid`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
@ -1236,6 +1242,23 @@ CREATE TABLE IF NOT EXISTS `post-category` (
FOREIGN KEY (`tid`) REFERENCES `tag` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='post relation to categories';
--
-- TABLE post-counts
--
CREATE TABLE IF NOT EXISTS `post-counts` (
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`vid` smallint unsigned NOT NULL COMMENT 'Id of the verb table entry that contains the activity verbs',
`reaction` varchar(4) NOT NULL COMMENT 'Emoji Reaction',
`parent-uri-id` int unsigned COMMENT 'Id of the item-uri table that contains the parent uri',
`count` int unsigned DEFAULT 0 COMMENT 'Number of activities',
PRIMARY KEY(`uri-id`,`vid`,`reaction`),
INDEX `vid` (`vid`),
INDEX `parent-uri-id` (`parent-uri-id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`vid`) REFERENCES `verb` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
FOREIGN KEY (`parent-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Original remote activity';
--
-- TABLE post-collection
--
@ -1263,6 +1286,7 @@ CREATE TABLE IF NOT EXISTS `post-content` (
`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',
`sensitive` boolean COMMENT 'If true, this post contains sensitive content',
`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',
@ -1275,7 +1299,6 @@ CREATE TABLE IF NOT EXISTS `post-content` (
PRIMARY KEY(`uri-id`),
INDEX `plink` (`plink`(191)),
INDEX `resource-id` (`resource-id`),
FULLTEXT INDEX `title-content-warning-body` (`title`,`content-warning`,`body`),
INDEX `quote-uri-id` (`quote-uri-id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`quote-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
@ -1326,10 +1349,12 @@ CREATE TABLE IF NOT EXISTS `post-engagement` (
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
`contact-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Person, organisation, news, community, relay',
`media-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Type of media in a bit array (1 = image, 2 = video, 4 = audio',
`language` varbinary(128) COMMENT 'Language information about this post',
`media-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Type of media in a bit array (1 = image, 2 = video, 4 = audio)',
`language` char(2) COMMENT 'Language information about this post in the ISO 639-1 format',
`searchtext` mediumtext COMMENT 'Simplified text for the full text search',
`size` int unsigned COMMENT 'Body size',
`created` datetime COMMENT '',
`network` char(4) COMMENT '',
`restricted` boolean NOT NULL DEFAULT '0' COMMENT 'If true, this post is either unlisted or not from a federated network',
`comments` mediumint unsigned COMMENT 'Number of comments',
`activities` mediumint unsigned COMMENT 'Number of activities (like, dislike, ...)',
@ -1416,6 +1441,36 @@ CREATE TABLE IF NOT EXISTS `post-media` (
FOREIGN KEY (`media-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Attached media';
--
-- TABLE post-origin
--
CREATE TABLE IF NOT EXISTS `post-origin` (
`id` int unsigned NOT NULL,
`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',
`parent-uri-id` int unsigned COMMENT 'Id of the item-uri table that contains the parent uri',
`thr-parent-id` int unsigned COMMENT 'Id of the item-uri table that contains the thread parent uri',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation timestamp.',
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime',
`gravity` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`vid` smallint unsigned COMMENT 'Id of the verb table entry that contains the activity verbs',
`private` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '0=public, 1=private, 2=unlisted',
`wall` boolean NOT NULL DEFAULT '0' COMMENT 'This item was posted to the wall of uid',
PRIMARY KEY(`id`),
UNIQUE INDEX `uid_uri-id` (`uid`,`uri-id`),
INDEX `uri-id` (`uri-id`),
INDEX `parent-uri-id` (`parent-uri-id`),
INDEX `thr-parent-id` (`thr-parent-id`),
INDEX `vid` (`vid`),
INDEX `parent-uri-id_uid` (`parent-uri-id`,`uid`),
INDEX `uid_wall_received` (`uid`,`wall`,`received`),
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 (`parent-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`thr-parent-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`vid`) REFERENCES `verb` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Posts from local users';
--
-- TABLE post-question
--
@ -1442,6 +1497,26 @@ CREATE TABLE IF NOT EXISTS `post-question-option` (
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Question option';
--
-- TABLE post-searchindex
--
CREATE TABLE IF NOT EXISTS `post-searchindex` (
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
`media-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Type of media in a bit array (1 = image, 2 = video, 4 = audio)',
`language` char(2) COMMENT 'Language information about this post in the ISO 639-1 format',
`searchtext` mediumtext COMMENT 'Simplified text for the full text search',
`size` int unsigned COMMENT 'Body size',
`created` datetime COMMENT '',
`restricted` boolean NOT NULL DEFAULT '0' COMMENT 'If true, this post is either unlisted or not from a federated network',
PRIMARY KEY(`uri-id`),
INDEX `owner-id` (`owner-id`),
INDEX `created` (`created`),
FULLTEXT INDEX `searchtext` (`searchtext`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Content for all posts';
--
-- TABLE post-tag
--
@ -1507,6 +1582,7 @@ CREATE TABLE IF NOT EXISTS `post-user` (
`post-reason` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Reason why the post arrived at the user',
`vid` smallint unsigned COMMENT 'Id of the verb table entry that contains the activity verbs',
`private` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '0=public, 1=private, 2=unlisted',
`restrictions` tinyint unsigned COMMENT 'Bit array of post restrictions (1 = Reply, 2 = Like, 4 = Announce)',
`global` boolean NOT NULL DEFAULT '0' COMMENT '',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT 'item has been marked for deletion',
@ -1693,7 +1769,6 @@ CREATE TABLE IF NOT EXISTS `profile` (
`net-publish` boolean NOT NULL DEFAULT '0' COMMENT 'publish profile in global directory',
PRIMARY KEY(`id`),
INDEX `uid_is-default` (`uid`,`is-default`),
FULLTEXT INDEX `pub_keywords` (`pub_keywords`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='user profiles data';
@ -1905,6 +1980,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',
`channel-only` boolean COMMENT 'This contact is displayed only in channels, but not in the network stream.',
`is-blocked` boolean COMMENT 'User is blocked by this contact',
`channel-frequency` tinyint unsigned COMMENT 'Controls the frequency of the appearance of this contact in channels',
`pending` boolean COMMENT '',
@ -1975,7 +2051,8 @@ CREATE VIEW `application-view` AS SELECT
`application-token`.`follow` AS `follow`,
`application-token`.`push` AS `push`
FROM `application-token`
INNER JOIN `application` ON `application-token`.`application-id` = `application`.`id`;
INNER JOIN `application` ON `application-token`.`application-id` = `application`.`id`
INNER JOIN `user` ON `user`.`uid` = `application-token`.`uid` AND `user`.`verified` AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND NOT `user`.`account_expired`;
--
-- VIEW circle-member-view
@ -2008,6 +2085,20 @@ CREATE VIEW `circle-member-view` AS SELECT
INNER JOIN `contact` ON `group_member`.`contact-id` = `contact`.`id`
INNER JOIN `group` ON `group_member`.`gid` = `group`.`id`;
--
-- VIEW post-counts-view
--
DROP VIEW IF EXISTS `post-counts-view`;
CREATE VIEW `post-counts-view` AS SELECT
`post-counts`.`uri-id` AS `uri-id`,
`post-counts`.`vid` AS `vid`,
`verb`.`name` AS `verb`,
`post-counts`.`reaction` AS `reaction`,
`post-counts`.`parent-uri-id` AS `parent-uri-id`,
`post-counts`.`count` AS `count`
FROM `post-counts`
INNER JOIN `verb` ON `verb`.`id` = `post-counts`.`vid`;
--
-- VIEW post-timeline-view
--
@ -2053,6 +2144,458 @@ CREATE VIEW `post-timeline-view` AS SELECT
STRAIGHT_JOIN `contact` AS `owner` ON `owner`.`id` = `post-user`.`owner-id`
LEFT JOIN `contact` AS `causer` ON `causer`.`id` = `post-user`.`causer-id`;
--
-- VIEW post-timeline-origin-view
--
DROP VIEW IF EXISTS `post-timeline-origin-view`;
CREATE VIEW `post-timeline-origin-view` AS SELECT
`post-origin`.`uid` AS `uid`,
`post-origin`.`uri-id` AS `uri-id`,
`post-origin`.`gravity` AS `gravity`,
`post-origin`.`created` AS `created`,
`post-user`.`edited` AS `edited`,
`post-thread-user`.`commented` AS `commented`,
`post-origin`.`received` AS `received`,
`post-thread-user`.`changed` AS `changed`,
`post-origin`.`private` AS `private`,
`post-user`.`visible` AS `visible`,
`post-user`.`deleted` AS `deleted`,
true AS `origin`,
`post-user`.`global` AS `global`,
`post-user`.`network` AS `network`,
`post-user`.`protocol` AS `protocol`,
`post-origin`.`vid` AS `vid`,
`post-user`.`contact-id` AS `contact-id`,
`contact`.`blocked` AS `contact-blocked`,
`contact`.`readonly` AS `contact-readonly`,
`contact`.`pending` AS `contact-pending`,
`contact`.`rel` AS `contact-rel`,
`contact`.`uid` AS `contact-uid`,
`contact`.`self` AS `self`,
`post-user`.`author-id` AS `author-id`,
`author`.`blocked` AS `author-blocked`,
`author`.`hidden` AS `author-hidden`,
`author`.`gsid` AS `author-gsid`,
`post-user`.`owner-id` AS `owner-id`,
`owner`.`blocked` AS `owner-blocked`,
`owner`.`gsid` AS `owner-gsid`,
`post-user`.`causer-id` AS `causer-id`,
`causer`.`blocked` AS `causer-blocked`,
`causer`.`gsid` AS `causer-gsid`
FROM `post-origin`
INNER JOIN `post-user` ON `post-user`.`id` = `post-origin`.`id`
LEFT JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-origin`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-origin`.`uid`
STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-user`.`contact-id`
STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-user`.`author-id`
STRAIGHT_JOIN `contact` AS `owner` ON `owner`.`id` = `post-user`.`owner-id`
LEFT JOIN `contact` AS `causer` ON `causer`.`id` = `post-user`.`causer-id`;
--
-- VIEW post-searchindex-user-view
--
DROP VIEW IF EXISTS `post-searchindex-user-view`;
CREATE VIEW `post-searchindex-user-view` AS SELECT
`post-thread-user`.`uid` AS `uid`,
`post-searchindex`.`uri-id` AS `uri-id`,
`post-searchindex`.`owner-id` AS `owner-id`,
`post-searchindex`.`media-type` AS `media-type`,
`post-searchindex`.`language` AS `language`,
`post-searchindex`.`searchtext` AS `searchtext`,
`post-searchindex`.`size` AS `size`,
`post-thread-user`.`commented` AS `commented`,
`post-thread-user`.`received` AS `received`,
`post-thread-user`.`created` AS `created`,
`post-thread-user`.`network` AS `network`,
`post-searchindex`.`language` AS `restricted`,
0 AS `comments`,
0 AS `activities`
FROM `post-thread-user`
INNER JOIN `post-searchindex` ON `post-searchindex`.`uri-id` = `post-thread-user`.`uri-id`
INNER JOIN `post-user` ON `post-user`.`id` = `post-thread-user`.`post-user-id`
STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
STRAIGHT_JOIN `contact` AS `authorcontact` ON `authorcontact`.`id` = `post-thread-user`.`author-id`
STRAIGHT_JOIN `contact` AS `ownercontact` ON `ownercontact`.`id` = `post-thread-user`.`owner-id`
WHERE `post-user`.`visible` AND NOT `post-user`.`deleted`
AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
AND (`post-thread-user`.`hidden` IS NULL OR NOT `post-thread-user`.`hidden`)
AND NOT `authorcontact`.`blocked` AND NOT `ownercontact`.`blocked`
AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`authorcontact`.`id`, `ownercontact`.`id`) AND (`blocked` OR `ignored`))
AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
--
-- VIEW post-origin-view
--
DROP VIEW IF EXISTS `post-origin-view`;
CREATE VIEW `post-origin-view` AS SELECT
`post-origin`.`id` AS `id`,
`post-origin`.`id` AS `post-user-id`,
`post-origin`.`uid` AS `uid`,
`post-thread-user`.`post-user-id` AS `parent`,
`item-uri`.`uri` AS `uri`,
`post-origin`.`uri-id` AS `uri-id`,
`parent-item-uri`.`uri` AS `parent-uri`,
`post-origin`.`parent-uri-id` AS `parent-uri-id`,
`thr-parent-item-uri`.`uri` AS `thr-parent`,
`post-origin`.`thr-parent-id` AS `thr-parent-id`,
`conversation-item-uri`.`uri` AS `conversation`,
`post-thread-user`.`conversation-id` AS `conversation-id`,
`quote-item-uri`.`uri` AS `quote-uri`,
`post-content`.`quote-uri-id` AS `quote-uri-id`,
`item-uri`.`guid` AS `guid`,
`post-origin`.`wall` AS `wall`,
`post-origin`.`gravity` AS `gravity`,
`external-item-uri`.`uri` AS `extid`,
`post-user`.`external-id` AS `external-id`,
`post-origin`.`created` AS `created`,
`post-user`.`edited` AS `edited`,
`post-thread-user`.`commented` AS `commented`,
`post-origin`.`received` AS `received`,
`post-thread-user`.`changed` AS `changed`,
`post-user`.`post-type` AS `post-type`,
`post-user`.`post-reason` AS `post-reason`,
`post-origin`.`private` AS `private`,
`post-thread-user`.`pubmail` AS `pubmail`,
`post-user`.`visible` AS `visible`,
`post-thread-user`.`starred` AS `starred`,
`post-user`.`unseen` AS `unseen`,
`post-user`.`deleted` AS `deleted`,
true AS `origin`,
`post-thread-user`.`origin` AS `parent-origin`,
`post-thread-user`.`mention` AS `mention`,
`post-user`.`global` AS `global`,
EXISTS(SELECT `type` FROM `post-collection` WHERE `type` = 0 AND `uri-id` = `post-origin`.`uri-id`) AS `featured`,
`post-user`.`network` AS `network`,
`post-user`.`protocol` AS `protocol`,
`post-origin`.`vid` AS `vid`,
`post-user`.`psid` AS `psid`,
IF (`post-origin`.`vid` IS NULL, '', `verb`.`name`) AS `verb`,
`post-content`.`title` AS `title`,
`post-content`.`content-warning` AS `content-warning`,
`post-content`.`raw-body` AS `raw-body`,
IFNULL (`post-content`.`body`, '') AS `body`,
`post-content`.`rendered-hash` AS `rendered-hash`,
`post-content`.`rendered-html` AS `rendered-html`,
`post-content`.`language` AS `language`,
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
`post-content`.`sensitive` AS `sensitive`,
`post-user`.`restrictions` AS `restrictions`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
`post-content`.`target-type` AS `target-type`,
`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`,
`contact`.`nick` AS `contact-nick`,
`contact`.`thumb` AS `contact-avatar`,
`contact`.`network` AS `contact-network`,
`contact`.`blocked` AS `contact-blocked`,
`contact`.`hidden` AS `contact-hidden`,
`contact`.`readonly` AS `contact-readonly`,
`contact`.`archive` AS `contact-archive`,
`contact`.`pending` AS `contact-pending`,
`contact`.`rel` AS `contact-rel`,
`contact`.`uid` AS `contact-uid`,
`contact`.`contact-type` AS `contact-contact-type`,
IF (`post-user`.`network` IN ('apub', 'dfrn', 'dspr', 'stat'), true, `contact`.`writable`) AS `writable`,
`contact`.`self` AS `self`,
`contact`.`id` AS `cid`,
`contact`.`alias` AS `alias`,
`contact`.`photo` AS `photo`,
`contact`.`name-date` AS `name-date`,
`contact`.`uri-date` AS `uri-date`,
`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`,
`author`.`nick` AS `author-nick`,
`author`.`alias` AS `author-alias`,
IF (`contact`.`url` = `author`.`url` AND `contact`.`thumb` != '', `contact`.`thumb`, `author`.`thumb`) AS `author-avatar`,
`author`.`network` AS `author-network`,
`author`.`blocked` AS `author-blocked`,
`author`.`hidden` AS `author-hidden`,
`author`.`updated` AS `author-updated`,
`author`.`contact-type` AS `author-contact-type`,
`author`.`gsid` AS `author-gsid`,
`author`.`baseurl` AS `author-baseurl`,
`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`,
`owner`.`nick` AS `owner-nick`,
`owner`.`alias` AS `owner-alias`,
IF (`contact`.`url` = `owner`.`url` AND `contact`.`thumb` != '', `contact`.`thumb`, `owner`.`thumb`) AS `owner-avatar`,
`owner`.`network` AS `owner-network`,
`owner`.`blocked` AS `owner-blocked`,
`owner`.`hidden` AS `owner-hidden`,
`owner`.`updated` AS `owner-updated`,
`owner`.`gsid` AS `owner-gsid`,
`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`,
`causer`.`nick` AS `causer-nick`,
`causer`.`alias` AS `causer-alias`,
`causer`.`thumb` AS `causer-avatar`,
`causer`.`network` AS `causer-network`,
`causer`.`blocked` AS `causer-blocked`,
`causer`.`hidden` AS `causer-hidden`,
`causer`.`gsid` AS `causer-gsid`,
`causer`.`contact-type` AS `causer-contact-type`,
`post-delivery-data`.`postopts` AS `postopts`,
`post-delivery-data`.`inform` AS `inform`,
`post-delivery-data`.`queue_count` AS `delivery_queue_count`,
`post-delivery-data`.`queue_done` AS `delivery_queue_done`,
`post-delivery-data`.`queue_failed` AS `delivery_queue_failed`,
IF (`post-user`.`psid` IS NULL, '', `permissionset`.`allow_cid`) AS `allow_cid`,
IF (`post-user`.`psid` IS NULL, '', `permissionset`.`allow_gid`) AS `allow_gid`,
IF (`post-user`.`psid` IS NULL, '', `permissionset`.`deny_cid`) AS `deny_cid`,
IF (`post-user`.`psid` IS NULL, '', `permissionset`.`deny_gid`) AS `deny_gid`,
`post-user`.`event-id` AS `event-id`,
`event`.`created` AS `event-created`,
`event`.`edited` AS `event-edited`,
`event`.`start` AS `event-start`,
`event`.`finish` AS `event-finish`,
`event`.`summary` AS `event-summary`,
`event`.`desc` AS `event-desc`,
`event`.`location` AS `event-location`,
`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-origin`.`uri-id` AND `post-category`.`uid` = `post-origin`.`uid`) AS `has-categories`,
EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-origin`.`uri-id`) AS `has-media`,
`diaspora-interaction`.`interaction` AS `signed_text`,
`parent-item-uri`.`guid` AS `parent-guid`,
`post-thread-user`.`network` AS `parent-network`,
`post-thread-user`.`author-id` AS `parent-author-id`,
`parent-post-author`.`url` AS `parent-author-link`,
`parent-post-author`.`name` AS `parent-author-name`,
`parent-post-author`.`nick` AS `parent-author-nick`,
`parent-post-author`.`network` AS `parent-author-network`
FROM `post-origin`
INNER JOIN `post-user` ON `post-user`.`id` = `post-origin`.`id`
INNER JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-origin`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-origin`.`uid`
STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-user`.`contact-id`
STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-user`.`author-id`
STRAIGHT_JOIN `contact` AS `owner` ON `owner`.`id` = `post-user`.`owner-id`
LEFT JOIN `contact` AS `causer` ON `causer`.`id` = `post-user`.`causer-id`
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-origin`.`uri-id`
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-origin`.`thr-parent-id`
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-origin`.`parent-uri-id`
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread-user`.`conversation-id`
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
LEFT JOIN `verb` ON `verb`.`id` = `post-origin`.`vid`
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `item-uri` AS `quote-item-uri` ON `quote-item-uri`.`id` = `post-content`.`quote-uri-id`
LEFT JOIN `post-delivery-data` ON `post-delivery-data`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `permissionset` ON `permissionset`.`id` = `post-user`.`psid`
LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `post-thread-user`.`author-id`;
--
-- VIEW post-thread-origin-view
--
DROP VIEW IF EXISTS `post-thread-origin-view`;
CREATE VIEW `post-thread-origin-view` AS SELECT
`post-origin`.`id` AS `id`,
`post-origin`.`id` AS `post-user-id`,
`post-origin`.`uid` AS `uid`,
`post-thread-user`.`post-user-id` AS `parent`,
`item-uri`.`uri` AS `uri`,
`post-origin`.`uri-id` AS `uri-id`,
`parent-item-uri`.`uri` AS `parent-uri`,
`post-origin`.`parent-uri-id` AS `parent-uri-id`,
`thr-parent-item-uri`.`uri` AS `thr-parent`,
`post-origin`.`thr-parent-id` AS `thr-parent-id`,
`conversation-item-uri`.`uri` AS `conversation`,
`post-thread-user`.`conversation-id` AS `conversation-id`,
`quote-item-uri`.`uri` AS `quote-uri`,
`post-content`.`quote-uri-id` AS `quote-uri-id`,
`item-uri`.`guid` AS `guid`,
`post-origin`.`wall` AS `wall`,
`post-origin`.`gravity` AS `gravity`,
`external-item-uri`.`uri` AS `extid`,
`post-user`.`external-id` AS `external-id`,
`post-origin`.`created` AS `created`,
`post-user`.`edited` AS `edited`,
`post-thread-user`.`commented` AS `commented`,
`post-origin`.`received` AS `received`,
`post-thread-user`.`changed` AS `changed`,
`post-user`.`post-type` AS `post-type`,
`post-user`.`post-reason` AS `post-reason`,
`post-origin`.`private` AS `private`,
`post-thread-user`.`pubmail` AS `pubmail`,
`post-thread-user`.`ignored` AS `ignored`,
`post-user`.`visible` AS `visible`,
`post-thread-user`.`starred` AS `starred`,
`post-thread-user`.`unseen` AS `unseen`,
`post-user`.`deleted` AS `deleted`,
true AS `origin`,
`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-origin`.`vid` AS `vid`,
`post-thread-user`.`psid` AS `psid`,
IF (`post-origin`.`vid` IS NULL, '', `verb`.`name`) AS `verb`,
`post-content`.`title` AS `title`,
`post-content`.`content-warning` AS `content-warning`,
`post-content`.`raw-body` AS `raw-body`,
`post-content`.`body` AS `body`,
`post-content`.`rendered-hash` AS `rendered-hash`,
`post-content`.`rendered-html` AS `rendered-html`,
`post-content`.`language` AS `language`,
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
`post-content`.`sensitive` AS `sensitive`,
`post-user`.`restrictions` AS `restrictions`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
`post-content`.`target-type` AS `target-type`,
`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`,
`contact`.`nick` AS `contact-nick`,
`contact`.`thumb` AS `contact-avatar`,
`contact`.`network` AS `contact-network`,
`contact`.`blocked` AS `contact-blocked`,
`contact`.`hidden` AS `contact-hidden`,
`contact`.`readonly` AS `contact-readonly`,
`contact`.`archive` AS `contact-archive`,
`contact`.`pending` AS `contact-pending`,
`contact`.`rel` AS `contact-rel`,
`contact`.`uid` AS `contact-uid`,
`contact`.`gsid` AS `contact-gsid`,
`contact`.`contact-type` AS `contact-contact-type`,
IF (`post-user`.`network` IN ('apub', 'dfrn', 'dspr', 'stat'), true, `contact`.`writable`) AS `writable`,
`contact`.`self` AS `self`,
`contact`.`id` AS `cid`,
`contact`.`alias` AS `alias`,
`contact`.`photo` AS `photo`,
`contact`.`name-date` AS `name-date`,
`contact`.`uri-date` AS `uri-date`,
`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`,
`author`.`nick` AS `author-nick`,
`author`.`alias` AS `author-alias`,
IF (`contact`.`url` = `author`.`url` AND `contact`.`thumb` != '', `contact`.`thumb`, `author`.`thumb`) AS `author-avatar`,
`author`.`network` AS `author-network`,
`author`.`blocked` AS `author-blocked`,
`author`.`hidden` AS `author-hidden`,
`author`.`updated` AS `author-updated`,
`author`.`contact-type` AS `author-contact-type`,
`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`,
`owner`.`nick` AS `owner-nick`,
`owner`.`alias` AS `owner-alias`,
IF (`contact`.`url` = `owner`.`url` AND `contact`.`thumb` != '', `contact`.`thumb`, `owner`.`thumb`) AS `owner-avatar`,
`owner`.`network` AS `owner-network`,
`owner`.`blocked` AS `owner-blocked`,
`owner`.`hidden` AS `owner-hidden`,
`owner`.`updated` AS `owner-updated`,
`owner`.`gsid` AS `owner-gsid`,
`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`,
`causer`.`nick` AS `causer-nick`,
`causer`.`alias` AS `causer-alias`,
`causer`.`thumb` AS `causer-avatar`,
`causer`.`network` AS `causer-network`,
`causer`.`blocked` AS `causer-blocked`,
`causer`.`hidden` AS `causer-hidden`,
`causer`.`gsid` AS `causer-gsid`,
`causer`.`contact-type` AS `causer-contact-type`,
`post-delivery-data`.`postopts` AS `postopts`,
`post-delivery-data`.`inform` AS `inform`,
`post-delivery-data`.`queue_count` AS `delivery_queue_count`,
`post-delivery-data`.`queue_done` AS `delivery_queue_done`,
`post-delivery-data`.`queue_failed` AS `delivery_queue_failed`,
IF (`post-thread-user`.`psid` IS NULL, '', `permissionset`.`allow_cid`) AS `allow_cid`,
IF (`post-thread-user`.`psid` IS NULL, '', `permissionset`.`allow_gid`) AS `allow_gid`,
IF (`post-thread-user`.`psid` IS NULL, '', `permissionset`.`deny_cid`) AS `deny_cid`,
IF (`post-thread-user`.`psid` IS NULL, '', `permissionset`.`deny_gid`) AS `deny_gid`,
`post-user`.`event-id` AS `event-id`,
`event`.`created` AS `event-created`,
`event`.`edited` AS `event-edited`,
`event`.`start` AS `event-start`,
`event`.`finish` AS `event-finish`,
`event`.`summary` AS `event-summary`,
`event`.`desc` AS `event-desc`,
`event`.`location` AS `event-location`,
`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`,
`post-thread-user`.`network` AS `parent-network`,
`post-thread-user`.`author-id` AS `parent-author-id`,
`author`.`url` AS `parent-author-link`,
`author`.`name` AS `parent-author-name`,
`author`.`nick` AS `parent-author-nick`,
`author`.`network` AS `parent-author-network`
FROM `post-origin`
INNER JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-origin`.`uri-id` AND `post-thread-user`.`uid` = `post-origin`.`uid`
INNER JOIN `post-user` ON `post-user`.`id` = `post-origin`.`id`
STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-thread-user`.`author-id`
STRAIGHT_JOIN `contact` AS `owner` ON `owner`.`id` = `post-thread-user`.`owner-id`
LEFT JOIN `contact` AS `causer` ON `causer`.`id` = `post-thread-user`.`causer-id`
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-origin`.`uri-id`
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-origin`.`thr-parent-id`
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-origin`.`parent-uri-id`
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread-user`.`conversation-id`
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
LEFT JOIN `verb` ON `verb`.`id` = `post-origin`.`vid`
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `item-uri` AS `quote-item-uri` ON `quote-item-uri`.`id` = `post-content`.`quote-uri-id`
LEFT JOIN `post-delivery-data` ON `post-delivery-data`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-origin`.`uri-id`
LEFT JOIN `permissionset` ON `permissionset`.`id` = `post-thread-user`.`psid`;
--
-- VIEW post-user-view
--
@ -2110,6 +2653,8 @@ CREATE VIEW `post-user-view` AS SELECT
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
`post-content`.`sensitive` AS `sensitive`,
`post-user`.`restrictions` AS `restrictions`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
@ -2294,6 +2839,8 @@ CREATE VIEW `post-thread-user-view` AS SELECT
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
`post-content`.`sensitive` AS `sensitive`,
`post-user`.`restrictions` AS `restrictions`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
@ -2464,6 +3011,7 @@ CREATE VIEW `post-view` AS SELECT
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
`post-content`.`sensitive` AS `sensitive`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
@ -2610,6 +3158,7 @@ CREATE VIEW `post-thread-view` AS SELECT
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
`post-content`.`sensitive` AS `sensitive`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
@ -2783,36 +3332,6 @@ CREATE VIEW `tag-view` AS SELECT
LEFT JOIN `tag` ON `post-tag`.`tid` = `tag`.`id`
LEFT JOIN `contact` ON `post-tag`.`cid` = `contact`.`id`;
--
-- VIEW network-item-view
--
DROP VIEW IF EXISTS `network-item-view`;
CREATE VIEW `network-item-view` AS SELECT
`post-user`.`uri-id` AS `uri-id`,
`post-thread-user`.`post-user-id` AS `parent`,
`post-user`.`received` AS `received`,
`post-thread-user`.`commented` AS `commented`,
`post-user`.`created` AS `created`,
`post-user`.`uid` AS `uid`,
`post-thread-user`.`starred` AS `starred`,
`post-thread-user`.`mention` AS `mention`,
`post-user`.`network` AS `network`,
`post-user`.`unseen` AS `unseen`,
`post-user`.`gravity` AS `gravity`,
`post-user`.`contact-id` AS `contact-id`,
`ownercontact`.`contact-type` AS `contact-type`
FROM `post-user`
INNER JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`
STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
STRAIGHT_JOIN `contact` AS `authorcontact` ON `authorcontact`.`id` = `post-thread-user`.`author-id`
STRAIGHT_JOIN `contact` AS `ownercontact` ON `ownercontact`.`id` = `post-thread-user`.`owner-id`
WHERE `post-user`.`visible` AND NOT `post-user`.`deleted`
AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
AND (`post-user`.`hidden` IS NULL OR NOT `post-user`.`hidden`)
AND NOT `authorcontact`.`blocked` AND NOT `ownercontact`.`blocked`
AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`authorcontact`.`id`, `ownercontact`.`id`) AND (`blocked` OR `ignored`))
AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
--
-- VIEW network-thread-view
--
@ -2838,8 +3357,8 @@ CREATE VIEW `network-thread-view` AS SELECT
AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
AND (`post-thread-user`.`hidden` IS NULL OR NOT `post-thread-user`.`hidden`)
AND NOT `authorcontact`.`blocked` AND NOT `ownercontact`.`blocked`
AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`authorcontact`.`id`, `ownercontact`.`id`) AND (`blocked` OR `ignored`))
AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`post-thread-user`.`author-id`, `post-thread-user`.`owner-id`, `post-thread-user`.`causer-id`) AND (`blocked` OR `ignored` OR `channel-only`))
AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
--
-- VIEW owner-view
@ -2936,8 +3455,6 @@ CREATE VIEW `owner-view` AS SELECT
`user`.`blockwall` AS `blockwall`,
`user`.`hidewall` AS `hidewall`,
`user`.`blocktags` AS `blocktags`,
`user`.`unkmail` AS `unkmail`,
`user`.`cntunkmail` AS `cntunkmail`,
`user`.`notify-flags` AS `notify-flags`,
`user`.`page-flags` AS `page-flags`,
`user`.`account-type` AS `account-type`,

View file

@ -11,21 +11,7 @@ Authentication is the same as described in [Using the APIs](help/api#Authenticat
## Clients
### Supported apps
For supported apps please have a look at the [FAQ](help/FAQ#clients)
### Unsupported apps
#### Android
- [Fedilab](https://framagit.org/tom79/fedilab) Automatically uses the legacy API, see issue: https://framagit.org/tom79/fedilab/-/issues/520
- [Mammut](https://github.com/jamiesanson/Mammut) There are problems with the token request, see issue https://github.com/jamiesanson/Mammut/issues/19
#### iOS
- [Mast](https://github.com/Beesitech/Mast) Doesn't accept the entered instance name. Claims that it is invalid (Message is: "Not a valid instance (may be closed or dead)")
- [Toot!](https://apps.apple.com/app/toot/id1229021451)
Please find a list of supported apps at [FAQ](help/FAQ#clients).
## Entities
@ -170,7 +156,8 @@ Example:
- [`GET /api/v1/followed_tags`](https://docs.joinmastodon.org/methods/followed_tags/)
- [`GET /api/v1/instance`](https://docs.joinmastodon.org/methods/instance/#v1)
- `GET /api/v1/instance/rules` Undocumented, returns Terms of Service
- [`GET /api/v1/instance/extended_description`](https://docs.joinmastodon.org/methods/instance/#extended_description)
- [`GET /api/v1/instance/rules`](https://docs.joinmastodon.org/methods/instance/#rules)
- [`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/)
@ -314,7 +301,6 @@ They refer to features or data that don't exist in Friendica yet.
- [`PUT /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`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/)
- [`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/)

View file

@ -34,6 +34,7 @@ General
* y - for you
* f - followers
* r - sharers of sharers
* q - quiet sharers
* h - what's hot
* i - Images
* v - Videos

View file

@ -850,10 +850,6 @@ 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

@ -376,8 +376,8 @@ code</code></td>
&nbsp;&nbsp;[li] Second list element<br>
[/ul]<br>
[list]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/list]</td>
<td>
<ul class="listbullet" style="list-style-type: circle;">
@ -388,12 +388,12 @@ code</code></td>
</tr>
<tr>
<td>[ol]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/ol]<br>
[list=1]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/list]</td>
<td>
<ul class="listdecimal" style="list-style-type: decimal;">
@ -404,8 +404,8 @@ code</code></td>
</tr>
<tr>
<td>[list=]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/list]</td>
<td>
<ul class="listnone" style="list-style-type: none;">
@ -416,8 +416,8 @@ code</code></td>
</tr>
<tr>
<td>[list=i]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/list]</td>
<td>
<ul class="listlowerroman" style="list-style-type: lower-roman;">
@ -428,8 +428,8 @@ code</code></td>
</tr>
<tr>
<td>[list=I]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/list]</td>
<td>
<ul class="listupperroman" style="list-style-type: upper-roman;">
@ -440,8 +440,8 @@ code</code></td>
</tr>
<tr>
<td>[list=a]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/list]</td>
<td>
<ul class="listloweralpha" style="list-style-type: lower-alpha;">
@ -452,8 +452,8 @@ code</code></td>
</tr>
<tr>
<td>[list=A]<br>
&nbsp;&nbsp;[*] First list element<br>
&nbsp;&nbsp;[*] Second list element<br>
&nbsp;&nbsp;[li] First list element<br>
&nbsp;&nbsp;[li] Second list element<br>
[/list]</td>
<td>
<ul class="listupperalpha" style="list-style-type: upper-alpha;">

View file

@ -23,12 +23,17 @@ Predefined Channels
* For you: Posts from contacts you interact with and who interact with you. In detail, it consists of:
* Posts from people you interact with on a more than average level.
* Posts from the accounts that you follow with a more than average number of interactions-
* Posts from the accounts that you follow with a more than average number of interactions.
* Posts from accounts where you activated "notify on new posts" or where you have set the channel frequency accordingly.
* Discover: Posts from contacts you don't follow, but that might be of interest for you to follow. In detail, it consists of:
* Posts from people you don't follow but you interact with on a more than average level.
* Posts from people you don't follow but that interact with you on a more than average level.
* Popular posts from people you don't follow but you interacted with or who interacted with you on any level.
* What's Hot: Posts with a more than average number of interactions.
* Language: Posts in your language.
* Followers: Posts from your followers that you don't follow.
* Sharers of sharers: Posts from accounts that are followed by accounts that you follow.
* Quiet sharers: Posts from accounts that you follow but who don't post very often.
* Images: Posts with images.
* Audio: Posts with audio.
* Videos: Posts with videos.
@ -43,43 +48,52 @@ Each channel is defined by these values:
* Label: This value is mandatory and is used for the menu label.
* Description: A short description of the content. This can help to keep the overview, when you have got a lot of channels.
* Access Key: When you want to access this channel via an access key, you can define it here. Pay attention to not use an already used one.
* Circle: This defines the data source for this channel. By default it is set to the public timeline. There are some predefined values, like the accounts that you follow or the accounts that follow you. Also all of your circles can be selected.
* Circle: This defines the data source for this channel. By default it is set to the public timeline. There are some predefined values, like the accounts that you follow or the accounts that follow you. Also all of your circles can be selected.
* Include Tags: Comma separated list of tags. A post will be used when it contains any of the listed tags.
* Exclude Tags: Comma separated list of tags. If a post contain any of these tags, then it will not be part of nthis channel.
* Exclude Tags: Comma separated list of tags. If a post contain any of these tags, then it will not be part of this channel.
* Full Text Search: This can be used to include or exclude content, based on the content and some additional keywords. It uses the "boolean mode" operators from MariaDB: https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode
* Images, Videos, Audio: When selected, you will see content with the selected media type. This can be combined. If none of these fields are checked, you will see any content, with or without attacked media.
* Images, Videos, Audio: When selected, you will see content with the selected media type. This can be combined. If none of these fields are checked, you will see any content, with or without attached media.
Additional keywords for the full text search
---
Additionally to the search for content, there are additional keywords that can be used in the full text search:
Additionally to the search for content, there are keywords that can be used in the full text search.
Alternatives are presented with "|".
* from - Use "from:nickname" or "from:nickname@domain.tld" to search for posts from a specific author.
* to - Use "from:nickname" or "from:nickname@domain.tld" to search for posts with the given contact as receiver.
* group - Use "from:nickname" or "from:nickname@domain.tld" to search for group post of the given group.
* to - Use "to:nickname" or "to:nickname@domain.tld" to search for posts with the given contact as receiver.
* group - Use "group:nickname" or "group:nickname@domain.tld" to search for posts of the given group.
* application | relay - Use "application:nickname" or "application:nickname@domain.tld" to search for posts that had been reshared by the given relay application.
* server - Use "server:hostname" to search for posts from a specific server. In the case of group postings, the search text contains both the hostname of the group server and the author's hostname.
* source - The ActivityPub type of the post source. Use this for example to include or exclude group posts or posts from services (aka bots).
* source:person - The post is created by a regular user account.
* source:organization - The post is created by an organisation.
* source:group - The post is created by or distributed via a group.
* source:service - The posts originates from a service account. This source type is often used to mark bot accounts.
* source:application - The post is created by an application. This is most likely unused in the fediverse for post creation.
* source:service | source:news - The posts originates from a service account. This source type is often used to mark bot accounts.
* source:application | source:relay - The post is created by an application. This is most likely unused in the fediverse for post creation.
* tag - Use "tag:tagname" to search for a specific tag.
* network - Use this to include or exclude some networks from your channel.
* network:apub - ActivityPub (Used by the systems in the Fediverse)
* network:dfrn - Legacy Friendica protocol. Nowayday Friendica mostly uses ActivityPub.
* network:dspr - The Diaspora protocol is mainly used by Diaspora itself. Some other systems support the protocol as well like Hubzilla, Socialhome or Ganggo.
* media - With this keyword you can search for attached media.
* media:image | media:photo | media:picture - The post contains an image
* media:video - The post contains a video
* media:audio - The post contains audio
* media:card - The post contains a link preview card
* media:post - The post links another post, means it is a quoted post
* network | net - Use this to include or exclude some networks from your channel.
* network:apub | network:activitypub - ActivityPub (Used by the systems in the Fediverse)
* network:dfrn | network:friendica - Legacy Friendica protocol. Nowayday Friendica mostly uses ActivityPub.
* network:dspr | network:diaspora - The Diaspora protocol is mainly used by Diaspora itself. Some other systems support the protocol as well like Hubzilla, Socialhome or Ganggo.
* network:feed - RSS/Atom feeds
* network:mail - Mails that had been imported via IMAP.
* network:stat - The OStatus protocol is mainly used by old GNU Social installations.
* network:dscs - Posts that are received by the Discourse connector.
* network:tmbl - Posts that are received by the Tumblr connector.
* network:bsky - Posts that are received by the Bluesky connector.
* network:stat | network:ostatus - The OStatus protocol is mainly used by old GNU Social installations.
* network:dscs | network:discourse - Posts that are received by the Discourse connector.
* network:tmbl | network:tumblr - Posts that are received by the Tumblr connector.
* network:bsky | network:bluesky - Posts that are received by the Bluesky connector.
* platform - Use this to include or exclude some platforms from your channel, e.g. "+platform:friendica". In the case of group postings, the search text contains both the platform of the group server and the author's platform.
* visibility - You have the choice between different visibilities. You can only see unlisted or private posts that you have the access for.
* visibility:public
* visibility:unlisted
* visibility:private
* language | lang - Use "language:code" to search for posts with the given language in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.
Remember that you can combine these kerywords.
So for example you can create a channel with all posts that talk about the Fediverse - that aren't posted in the Fediverse with the search terms: "fediverse -network:apub -network:dfrn"
Remember that you can combine these keywords.
So for example you can create a channel with all posts that talk about the Fediverse - that aren't posted in the Fediverse with the search terms: "fediverse -network:apub -network:dfrn"

View file

@ -178,12 +178,12 @@ The available features are client specific and may differ.
#### Android
* [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))
* [Fedi](https://github.com/Big-Fig/Fediverse.app) ([Google Play](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://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))
* [Husky](https://codeberg.org/husky/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](https://github.com/mastodon/mastodon-android) ([F-Droid](https://f-droid.org/en/packages/org.joinmastodon.android/), [Google Play](https://play.google.com/store/apps/details?id=org.joinmastodon.android))
* [Subway Tooter](https://github.com/tateisu/SubwayTooter) ([F-Droid](https://android.izzysoft.de/repo/apk/jp.juggler.subwaytooter))
* [Pachli](https://pachli.app/) ([F-Droid](https://f-droid.org/en/packages/app.pachli/), [Google Play](https://play.google.com/store/apps/details?id=app.pachli))
* [Subway Tooter](https://github.com/tateisu/SubwayTooter) ([F-Droid via Izzy](https://android.izzysoft.de/repo/apk/jp.juggler.subwaytooter.noFcm))
* [Tooot](https://tooot.app/) ([Google Play](https://play.google.com/store/apps/details?id=com.xmflsct.app.tooot))
* [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))
* [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))
@ -193,7 +193,7 @@ The available features are client specific and may differ.
* [Mastodon](https://joinmastodon.org/apps) ([App Store](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974))
* [Stella*](https://www.stella-app.net/) ([App Store](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048))
* [Tooot](https://github.com/tooot-app) ([App Store](https://apps.apple.com/app/id1549772269)
* [Tooot](https://github.com/tooot-app) ([App Store](https://apps.apple.com/app/id1549772269))
* [TwidereX](https://github.com/TwidereProject/TwidereX-iOS) ([App Store](https://apps.apple.com/app/twidere-x/id1530314034))
#### Linux
@ -211,7 +211,7 @@ The available features are client specific and may differ.
#### Windows
* [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk))
* [Whalebird](https://whalebird.social/en/desktop/contents) ([Website Download](https://whalebird.social/en/desktop/contents/downloads#windows), [GitHub](https://github.com/h3poteto/whalebird-desktop))
* [Whalebird](https://whalebird.social/en/desktop/contents) ([Microsoft Store](https://apps.microsoft.com/detail/9nbw4csdv5hc), [GitHub](https://github.com/h3poteto/whalebird-desktop))
#### Web Frontend

View file

@ -30,7 +30,7 @@ Due to the large variety of operating systems and PHP platforms in existence we
* Apache with mod-rewrite enabled and "Options All" so you can use a local `.htaccess` file
* PHP 7.4+
* PHP *command line* access with register_argc_argv set to true in the php.ini file
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar and OpenSSL extensions
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar, IDN and OpenSSL extensions
* The POSIX module of PHP needs to be activated (e.g. [RHEL, CentOS](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) have disabled it)
* Some form of email server or email gateway such that PHP mail() works.
If you cannot set up your own email server, you can use the [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) addon and use a remote SMTP server.
@ -44,7 +44,7 @@ For alternative server configurations (such as Nginx server and MariaDB database
### Optional
* PHP ImageMagick extension (php-imagick) for animated GIF support.
* PHP ImageMagick extension (php-imagick) for animated GIF and animated WebP support.
## Installation procedure

View file

@ -107,5 +107,7 @@ They think they are a friend.
You can also "block" a person.
This completely blocks communications with that person.
They may still be able to see your public posts, as can anybody in the world, but they cannot communicate with you directly.
Friendica will notify their server that you have blocked them, although normally that server should not notify them individually.
However, there are various simple ways they can deduce that they have been blocked if they investigate.
You can also delete a friend no matter what the friendship status - which completely removes everything relating to that person from your website.

View file

@ -61,14 +61,17 @@ Database Tables
| [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-counts](help/database/db_post-counts) | Original remote activity |
| [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-engagement](help/database/db_post-engagement) | Engagement data per post |
| [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-origin](help/database/db_post-origin) | Posts from local users |
| [post-question](help/database/db_post-question) | Question |
| [post-question-option](help/database/db_post-question-option) | Question option |
| [post-searchindex](help/database/db_post-searchindex) | Content for all posts |
| [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

@ -16,8 +16,13 @@ Fields
| access-key | Access key | varchar(1) | YES | | NULL | |
| include-tags | Comma separated list of tags that will be included in the channel | varchar(1023) | YES | | NULL | |
| exclude-tags | Comma separated list of tags that aren't allowed in the channel | varchar(1023) | YES | | NULL | |
| min-size | Minimum post size | int unsigned | YES | | NULL | |
| max-size | Maximum post size | int unsigned | YES | | NULL | |
| full-text-search | Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode | varchar(1023) | YES | | NULL | |
| media-type | Filtered media types | smallint unsigned | YES | | NULL | |
| languages | Desired languages | mediumtext | YES | | NULL | |
| publish | publish channel content | boolean | YES | | NULL | |
| valid | Set, when the full-text-search is valid | boolean | YES | | NULL | |
Indexes
------------

View file

@ -6,17 +6,18 @@ Contact relations
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| --------------------- | -------------------------------------------------------- | ----------------- | ---- | --- | ------------------- | ----- |
| cid | contact the related contact had interacted with | int unsigned | NO | PRI | 0 | |
| relation-cid | related contact who had interacted with the contact | int unsigned | NO | PRI | 0 | |
| last-interaction | Date of the last interaction by relation-cid on cid | datetime | NO | | 0001-01-01 00:00:00 | |
| follow-updated | Date of the last update of the contact relationship | datetime | NO | | 0001-01-01 00:00:00 | |
| follows | if true, relation-cid follows cid | boolean | NO | | 0 | |
| score | score for interactions of cid on relation-cid | smallint unsigned | YES | | NULL | |
| relation-score | score for interactions of relation-cid on cid | smallint unsigned | YES | | NULL | |
| thread-score | score for interactions of cid on threads of relation-cid | smallint unsigned | YES | | NULL | |
| relation-thread-score | score for interactions of relation-cid on threads of cid | smallint unsigned | YES | | NULL | |
| Field | Description | Type | Null | Key | Default | Extra |
| --------------------- | ----------------------------------------------------------------------- | ----------------- | ---- | --- | ------------------- | ----- |
| cid | contact the related contact had interacted with | int unsigned | NO | PRI | 0 | |
| relation-cid | related contact who had interacted with the contact | int unsigned | NO | PRI | 0 | |
| last-interaction | Date of the last interaction by relation-cid on cid | datetime | NO | | 0001-01-01 00:00:00 | |
| follow-updated | Date of the last update of the contact relationship | datetime | NO | | 0001-01-01 00:00:00 | |
| follows | if true, relation-cid follows cid | boolean | NO | | 0 | |
| score | score for interactions of cid on relation-cid | smallint unsigned | YES | | NULL | |
| relation-score | score for interactions of relation-cid on cid | smallint unsigned | YES | | NULL | |
| thread-score | score for interactions of cid on threads of relation-cid | smallint unsigned | YES | | NULL | |
| relation-thread-score | score for interactions of relation-cid on threads of cid | smallint unsigned | YES | | NULL | |
| post-score | score for the amount of posts from cid that can be seen by relation-cid | smallint unsigned | YES | | NULL | |
Indexes
------------

View file

@ -23,6 +23,8 @@ Fields
| local-comments | Number of local comments | int unsigned | YES | | NULL | |
| directory-type | Type of directory service (Poco, Mastodon) | tinyint | YES | | 0 | |
| poco | | varbinary(383) | NO | | | |
| openwebauth | Path to the OpenWebAuth endpoint | varbinary(383) | YES | | NULL | |
| authredirect | Path to the authRedirect endpoint | varbinary(383) | YES | | NULL | |
| noscrape | | varbinary(383) | NO | | | |
| network | | char(4) | NO | | | |
| protocol | The protocol of the server | tinyint unsigned | YES | | NULL | |

View file

@ -17,6 +17,7 @@ Fields
| 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 | |
| sensitive | If true, this post contains sensitive content | boolean | 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 | |
@ -30,13 +31,12 @@ Fields
Indexes
------------
| Name | Fields |
| -------------------------- | -------------------------------------- |
| PRIMARY | uri-id |
| plink | plink(191) |
| resource-id | resource-id |
| title-content-warning-body | FULLTEXT, title, content-warning, body |
| quote-uri-id | quote-uri-id |
| Name | Fields |
| ------------ | ------------ |
| PRIMARY | uri-id |
| plink | plink(191) |
| resource-id | resource-id |
| quote-uri-id | quote-uri-id |
Foreign Keys
------------

View file

@ -0,0 +1,35 @@
Table post-counts
===========
Original remote activity
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 | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | NO | PRI | NULL | |
| reaction | Emoji Reaction | varchar(4) | NO | PRI | NULL | |
| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
| count | Number of activities | int unsigned | YES | | 0 | |
Indexes
------------
| Name | Fields |
| ------------- | --------------------- |
| PRIMARY | uri-id, vid, reaction |
| vid | vid |
| parent-uri-id | parent-uri-id |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| vid | [verb](help/database/db_verb) | id |
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
Return to [database documentation](help/database)

View file

@ -11,10 +11,12 @@ Fields
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
| owner-id | Item owner | int unsigned | NO | | 0 | |
| contact-type | Person, organisation, news, community, relay | tinyint | NO | | 0 | |
| media-type | Type of media in a bit array (1 = image, 2 = video, 4 = audio | tinyint | NO | | 0 | |
| language | Language information about this post | varbinary(128) | YES | | NULL | |
| media-type | Type of media in a bit array (1 = image, 2 = video, 4 = audio) | tinyint | NO | | 0 | |
| language | Language information about this post in the ISO 639-1 format | char(2) | YES | | NULL | |
| searchtext | Simplified text for the full text search | mediumtext | YES | | NULL | |
| size | Body size | int unsigned | YES | | NULL | |
| created | | datetime | YES | | NULL | |
| network | | char(4) | YES | | NULL | |
| restricted | If true, this post is either unlisted or not from a federated network | boolean | NO | | 0 | |
| comments | Number of comments | mediumint unsigned | YES | | NULL | |
| activities | Number of activities (like, dislike, ...) | mediumint unsigned | YES | | NULL | |

View file

@ -0,0 +1,48 @@
Table post-origin
===========
Posts from local users
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------- | ------------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | ----- |
| id | | int unsigned | NO | PRI | NULL | |
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | |
| uid | Owner id which owns this copy of the item | mediumint unsigned | NO | | NULL | |
| parent-uri-id | Id of the item-uri table that contains the parent uri | int unsigned | YES | | NULL | |
| thr-parent-id | Id of the item-uri table that contains the thread parent uri | int unsigned | YES | | NULL | |
| created | Creation timestamp. | datetime | NO | | 0001-01-01 00:00:00 | |
| received | datetime | datetime | NO | | 0001-01-01 00:00:00 | |
| gravity | | tinyint unsigned | NO | | 0 | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
| wall | This item was posted to the wall of uid | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ----------------- | ------------------- |
| PRIMARY | id |
| uid_uri-id | UNIQUE, uid, uri-id |
| uri-id | uri-id |
| parent-uri-id | parent-uri-id |
| thr-parent-id | thr-parent-id |
| vid | vid |
| parent-uri-id_uid | parent-uri-id, uid |
| uid_wall_received | uid, wall, received |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| uid | [user](help/database/db_user) | uid |
| parent-uri-id | [item-uri](help/database/db_item-uri) | id |
| thr-parent-id | [item-uri](help/database/db_item-uri) | id |
| vid | [verb](help/database/db_verb) | id |
Return to [database documentation](help/database)

View file

@ -0,0 +1,38 @@
Table post-searchindex
===========
Content for all 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 | |
| owner-id | Item owner | int unsigned | NO | | 0 | |
| media-type | Type of media in a bit array (1 = image, 2 = video, 4 = audio) | tinyint | NO | | 0 | |
| language | Language information about this post in the ISO 639-1 format | char(2) | YES | | NULL | |
| searchtext | Simplified text for the full text search | mediumtext | YES | | NULL | |
| size | Body size | int unsigned | YES | | NULL | |
| created | | datetime | YES | | NULL | |
| restricted | If true, this post is either unlisted or not from a federated network | boolean | NO | | 0 | |
Indexes
------------
| Name | Fields |
| ---------- | -------------------- |
| PRIMARY | uri-id |
| owner-id | owner-id |
| created | created |
| searchtext | FULLTEXT, searchtext |
Foreign Keys
------------
| Field | Target Table | Target Field |
|-------|--------------|--------------|
| uri-id | [item-uri](help/database/db_item-uri) | id |
| owner-id | [contact](help/database/db_contact) | id |
Return to [database documentation](help/database)

View file

@ -25,6 +25,7 @@ Fields
| post-reason | Reason why the post arrived at the user | tinyint unsigned | NO | | 0 | |
| vid | Id of the verb table entry that contains the activity verbs | smallint unsigned | YES | | NULL | |
| private | 0=public, 1=private, 2=unlisted | tinyint unsigned | NO | | 0 | |
| restrictions | Bit array of post restrictions (1 = Reply, 2 = Like, 4 = Announce) | tinyint unsigned | YES | | NULL | |
| global | | boolean | NO | | 0 | |
| visible | | boolean | NO | | 0 | |
| deleted | item has been marked for deletion | boolean | NO | | 0 | |

View file

@ -56,11 +56,10 @@ Fields
Indexes
------------
| Name | Fields |
| -------------- | ---------------------- |
| PRIMARY | id |
| uid_is-default | uid, is-default |
| pub_keywords | FULLTEXT, pub_keywords |
| Name | Fields |
| -------------- | --------------- |
| PRIMARY | id |
| uid_is-default | uid, is-default |
Foreign Keys
------------

View file

@ -6,29 +6,30 @@ User specific public contact data
Fields
------
| Field | Description | Type | Null | Key | Default | Extra |
| ------------------------- | ----------------------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| cid | Contact id of the linked public contact | int unsigned | NO | PRI | 0 | |
| uid | User id | mediumint unsigned | NO | PRI | 0 | |
| uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | |
| blocked | Contact is completely blocked for this user | boolean | YES | | NULL | |
| 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 | |
| channel-frequency | Controls the frequency of the appearance of this contact in channels | tinyint unsigned | 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 | |
| notify_new_posts | | boolean | YES | | NULL | |
| remote_self | 0 => No mirroring, 1-2 => Mirror as own post, 3 => Mirror as reshare | tinyint unsigned | YES | | NULL | |
| fetch_further_information | 0 => None, 1 => Fetch information, 3 => Fetch keywords, 2 => Fetch both | tinyint unsigned | YES | | NULL | |
| ffi_keyword_denylist | | text | YES | | NULL | |
| subhub | | boolean | YES | | NULL | |
| hub-verify | | varbinary(383) | YES | | NULL | |
| protocol | Protocol of the contact | char(4) | YES | | NULL | |
| rating | Automatically detected feed poll frequency | tinyint | YES | | NULL | |
| priority | Feed poll priority | tinyint unsigned | YES | | NULL | |
| Field | Description | Type | Null | Key | Default | Extra |
| ------------------------- | -------------------------------------------------------------------------- | ------------------ | ---- | --- | ------- | ----- |
| cid | Contact id of the linked public contact | int unsigned | NO | PRI | 0 | |
| uid | User id | mediumint unsigned | NO | PRI | 0 | |
| uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | |
| blocked | Contact is completely blocked for this user | boolean | YES | | NULL | |
| 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 | |
| channel-only | This contact is displayed only in channels, but not in the network stream. | boolean | YES | | NULL | |
| is-blocked | User is blocked by this contact | boolean | YES | | NULL | |
| channel-frequency | Controls the frequency of the appearance of this contact in channels | tinyint unsigned | 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 | |
| notify_new_posts | | boolean | YES | | NULL | |
| remote_self | 0 => No mirroring, 1-2 => Mirror as own post, 3 => Mirror as reshare | tinyint unsigned | YES | | NULL | |
| fetch_further_information | 0 => None, 1 => Fetch information, 3 => Fetch keywords, 2 => Fetch both | tinyint unsigned | YES | | NULL | |
| ffi_keyword_denylist | | text | YES | | NULL | |
| subhub | | boolean | YES | | NULL | |
| hub-verify | | varbinary(383) | YES | | NULL | |
| protocol | Protocol of the contact | char(4) | YES | | NULL | |
| rating | Automatically detected feed poll frequency | tinyint | YES | | NULL | |
| priority | Feed poll priority | tinyint unsigned | YES | | NULL | |
Indexes
------------

View file

@ -34,8 +34,6 @@ Fields
| blockwall | Prohibit contacts to post to the profile page of the user | boolean | NO | | 0 | |
| hidewall | Hide profile details from unknown viewers | boolean | NO | | 0 | |
| blocktags | Prohibit contacts to tag the post of this user | boolean | NO | | 0 | |
| unkmail | Permit unknown people to send private mails to this user | boolean | NO | | 0 | |
| cntunkmail | | int unsigned | NO | | 10 | |
| notify-flags | email notification options | smallint unsigned | NO | | 65535 | |
| page-flags | page/profile type | tinyint unsigned | NO | | 0 | |
| account-type | | tinyint unsigned | NO | | 0 | |

View file

@ -418,10 +418,6 @@ 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

@ -356,8 +356,8 @@ Zeilen</code></td>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/ul]<br>
[list]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/list]</td>
<td>
<ul class="listbullet" style="list-style-type: circle;">
@ -368,12 +368,12 @@ Zeilen</code></td>
</tr>
<tr>
<td>[ol]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/ol]<br>
[list=1]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/list]</td>
<td>
<ul class="listdecimal" style="list-style-type: decimal;">
@ -384,8 +384,8 @@ Zeilen</code></td>
</tr>
<tr>
<td>[list=]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/list]</td>
<td>
<ul class="listnone" style="list-style-type: none;">
@ -396,8 +396,8 @@ Zeilen</code></td>
</tr>
<tr>
<td>[list=i]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/list]</td>
<td>
<ul class="listlowerroman" style="list-style-type: lower-roman;">
@ -408,8 +408,8 @@ Zeilen</code></td>
</tr>
<tr>
<td>[list=I]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/list]</td>
<td>
<ul class="listupperroman" style="list-style-type: upper-roman;">
@ -420,8 +420,8 @@ Zeilen</code></td>
</tr>
<tr>
<td>[list=a]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/list]</td>
<td>
<ul class="listloweralpha" style="list-style-type: lower-alpha;">
@ -432,8 +432,8 @@ Zeilen</code></td>
</tr>
<tr>
<td>[list=A]<br>
&nbsp;&nbsp;[*] Erstes Listenelement<br>
&nbsp;&nbsp;[*] Zweites Listenelement<br>
&nbsp;&nbsp;[li] Erstes Listenelement<br>
&nbsp;&nbsp;[li] Zweites Listenelement<br>
[/list]</td>
<td>
<ul class="listupperalpha" style="list-style-type: upper-alpha;">

99
doc/de/Channels.md Normal file
View file

@ -0,0 +1,99 @@
Kanäle (Channels)
=====
* [Home](help)
Kanäle sind eine Möglichkeit neue Inhalte zu finden, oder Inhalte anzuzeigen, die du sonst möglicherweise verpasst hättest.
Es gibt mehrere vordefinierte Kanäle und zusätzlich kannst du deine eigenen, basierend auf ein paar Regeln, erstellen.
Kanäle zeigen nur Beiträge aus den letzten 24 Stunden an. (Dieser Wert kann vom Administrator geändert werden.)
In den Anzeige-Einstellungen, im Bereich "Timelines", kannst du definieren, welche Kanäle und andere Timelines du im "Kanäle"-Widget auf der "Network"-Seite sehen möchtest und welche Kanäle in der Menüleiste oben auf der Seite erscheinen sollen.
Ebenfalls in den Anzeige-Einstellungen, im Bereich "Kanäle", kannst du alle die Sprachen einstellen, die du in deinen Kanälen sehen möchtest. Hier kannst du mehr als eine Sprache auswählen.
Auf der Profilseite kannst du die Kanal-Frequenz für jeden Kontakt definieren. Die Optionen sind:
* Standardhäufigkeit: Beiträge dieses Kontakts werden im "Für Dich"-Kanal angezeigt, wenn du häufig mit diesem Kontakt interagiert hast oder wenn ein Beitrag ein gewisses Maß an Interaktion erreicht hat.
* Alle Beiträge dieses Kontakts anzeigen: Alle Beiträge dieses Kontakts werden auf dem Kanal "Für Dich" erscheinen
* Zeige nur einige Beiträge an: Wenn ein Kontakt viele Beiträge in einem kurzen Zeitraum erstellt, reduziert diese Einstellung die Anzahl der angezeigten Beiträge in jedem Kanal.
* Zeige keine Beiträge an: Beiträge von diesem Kontakt werden in keinem Kanal angezeigt.
Voreingestellte Kanäle
---
* Für Dich: Beiträge von Kontakten mit denen du interagierst und die mit dir interagieren. Im Detail bestehend aus:
* Beiträge von Leuten, mit denen du überdurchschnittlich viel interagierst.
* Beiträge von Kontakten, denen du folgst und mit denen du überdurchschnittlich viel interagierst.
* Beiträge von Kontakten, bei denen du "Benachrichtigung bei neuen Beiträgen" aktiviert hast oder wo du die Kanalfrequenz entsprechend eingestellt hast.
* Entdecken: Beiträge von Kontakten denen du nicht folgst, aber denen zu folgen für dich interessant sein könnte. Im Detail bestehend aus:
* Beiträge von Leuten denen du nicht folgst, aber mit denen du überdurchschnittlich viel interagierst.
* Beiträge von Leuten denen du nicht folgst, aber die mit dir überdurchschnittlich viel interagieren.
* Beliebte Beiträge von Leuten denen du nicht folgst, aber mit denen du interagiert hast oder die mit dir interagiert haben.
* Angesagt: Beiträge mit überdurchschnittlich hoher Anzahl von Interaktionen.
* Sprache: Beiträge in deiner Sprache.
* Folgende: Beiträge von Leuten die dir folgen, aber denen du nicht folgst.
* Geteilt von teilenden: Beiträge von Kontakten denen die Leute folgen, denen du folgst.
* Ruhige teilende: Beiträge von Konten denen du folgst, aber die nicht sehr oft posten.
* Bilder: Beiträge mit Bildern.
* Audio: Beiträge mit Audio.
* Videos: Beiträge mit Videos.
Vom Benutzer eingestellte Kanäle
---
In den Einstellungen, unter "Kanäle", kannst du deine eigenen Kanäle erstellen.
Jeder Kanal wird durch diese Werte definiert:
* Bezeichnung: Dieses Feld ist notwendig und wird für die Kanalbezeichnung verwendet.
* Beschreibung: Eine kurze Beschreibung des Inhalts. Dies kann helfen den Überblick zu behalten, wenn du viele Kanäle hast.
* Zugriffsschlüssel: Wenn du auf diesen Kanal über einen Zugriffsschlüssel zugreifen willst, kannst du ihn hier festlegen. Achte darauf, dass du nicht einen bereits verwendeten Schlüssel benutzt.
* Circle/Kanal: Dies definiert die Datenquelle für diesen Kanal. Voreingestellt ist die Globale Gemeinschaft. Es gibt ein paar vorgegebene Werte, wie die Konten denen du folgst, oder die Kontakte, die dir folgen. Außerdem können alle deine Circles ausgewählt werden.
* Tags einschließen: Durch Kommata getrennte Liste von Tags. Ein Beitrag wird verwendet, wenn er eines der aufgeführten Tags enthält.
* Tags ausschließen: Durch Kommata getrennte Liste von Tags. Wenn ein Beitrag eines dieser Tags enthält, wird er nicht Teil dieses Kanals sein.
* Volltextsuche: Dies kann genutzt werden um Inhalte, basierend auf dem Inhalt und ein paar zusätzlichen Schlüsselwörtern, ein- oder auszuschließen. Es nutzt die "boolean mode"-Operatoren von MariaDB: https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode
* Bilder, Videos, Audio: Wenn ausgewählt, wirst du Inhalte mit dem gewählten Medientyp sehen. Diese Optionen können kombiniert werden. Wenn keines dieser Felder ausgewählt wurde, wirst du alle Inhalte, mit oder ohne angefügten Medien, sehen.
Zusätzliche Schlüsselwörter für die Volltextsuche
---
Zusätzlich zu der Suche nach Inhalten, gibt es Schlüsselwörter, die in der Volltextsuche genutzt werden können.
Alternativen werden durch "|" dargestellt.
* from - Verwende "from:nickname" oder "from:nickname@domain.tld" um nach Beiträgen von einem bestimmten Autor zu suchen.
* to - Verwende "to:nickname" oder "to:nickname@domain.tld" um nach Beiträgen mit dem gegebenen Empfänger zu suchen.
* group - Verwende "group:nickname" oder "group:nickname@domain.tld" um nach Beiträgen aus der gegebenen Gruppe zu suchen.
* application | relay - Nutze "application:nickname" oder "application:nickname@domain.tld" um Beiträge zu finden, die von der gegebenen relay application geteilt wurden.
* server - Verwende "server:hostname" um Beiträge von einem bestimmten Server zu suchen. Im Falle eine Gruppen-Postings enthält der Suchtext beides, den Hostname des Gruppen-Servers und den Hostname des Autors.
* source - Der ActivityPub-Typ der Beitragsquelle. Nutze dies um beispielsweise Gruppenpostings oder Beiträge von Services (aka Bots) ein- oder auszuschließen.
* source:person - Der Beitrag wurde von einem regulären Nutzerkonto erstellt.
* source:organization - Der Beitrag wurde von einer Organisation erstellt.
* source:group - Dieser Beitrag wurde über eine Gruppe erstellt oder verteilt.
* source:service | source:news - Dieser Beitrag stammt aus einem 'service' Account. Dieser Quellen(source)-Typ wird oft genutzt um Bot Accounts zu markieren.
* source:application | source:relay - Dieser Beitrag wurde von einer Anwendung (application) erstellt. Dies wird im Fediverse höchstwahrscheinlich für die Beitragserstellung nicht genutzt.
* tag - Nutze "tag:tagname" um nach einem bestimmten tag (Schlagwort) zu suchen.
* media - Mit diesem Schlüsselwort kannst du nach angefügten Medien suchen.
* media:image | media:photo | media:picture - Dieser Beitrag enthält ein Bild
* media:video - Dieser Beitrag enthält ein Video
* media:audio - Dieser Beitrag enthält Audio
* media:card - Dieser Beitrag enthält eine Linkvorschau-'card'
* media:post - Dieser Beitrag verweist auf einen anderen Beitrag, was bedeutet, es ist ein zitierter Beitrag
* network | net - Verwende dies um Netzwerke in deinen Kanal einzuschließen oder von ihm auszuschließen.
* network:apub | network:activitypub - ActivityPub (verwendet von den Systemen im Fediverse)
* network:dfrn | network:friendica - altes Friendica-Protokoll. Heutzutage nutzt Friendica meist ActivityPub.
* network:dspr | network:diaspora - Das Diaspora-Protokoll wird hauptsächlich von Diaspora selbst genutzt. Ein paar andere Systeme unterstützen dieses Protokoll ebenfalls, wie Hubzilla, Socialhome or Ganggo.
* network:feed - RSS/Atom feeds
* network:mail - Mails die via IMAP importiert worden sind.
* network:stat | network:ostatus - Das OStatus-Protokoll wird hauptsächlich von alten GNU Social-Installationen genutzt.
* network:dscs | network:discourse - Beiträge, die über den Discourse connector empfangen werden.
* network:tmbl | network:tumblr - Beiträge, die über den Tumblr connector empfangen werden.
* network:bsky | network:bluesky - Beiträge, die über den Bluesky connector empfangen werden.
* platform - Benutze dies, um Plattformen in deinen Kanal einzuschließen, oder von ihm auszuschließen, d.h. "+platform:friendica". Im Falle eines Gruppen-Postings enthält der Suchtext beides, die Plattform des Gruppen-Servers und die Plattform des Autors.
* visibility - Du hast die Wahl zwischen verschiedenen Sichtbarkeiten. Du kannst nur die ungelisteten oder privaten Beiträge sehen, zu denen du Zugang hast.
* visibility:public - (öffentlich)
* visibility:unlisted - (ungelistet)
* visibility:private - (privat)
* language | lang - Verwende "language:code" um nach Beiträgen in der gewünschten Sprache (im [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format) zu suchen.
Denke daran, dass du diese Schlüsselwörter kombinieren kannst.
So kannst du zum Beispiel einen Kanal erstellen, mit allen Beiträgen, die über das Fediverse sprechen, aber nicht im Fediverse veröffentlich wurden, mit diesen Suchbegriffen: "fediverse -network:apub -network:dfrn".

View file

@ -17,7 +17,7 @@ Friendica - Dokumentation und Ressourcen
* [Circles und Privatsphäre](help/Circles-and-Privacy)
* [Tags und Erwähnungen](help/Tags-and-Mentions)
* [Community-Gruppen](help/Groups)
* [Channels](help/Channels)
* [Kanäle (Channels)](help/Channels)
* [Chats](help/Chats)
* Weiterführende Informationen
* [Account umziehen](help/Move-Account)

View file

@ -27,7 +27,7 @@ Requirements
* Apache mit einer aktiverten mod-rewrite-Funktion und dem Eintrag "Options All", so dass du die lokale .htaccess-Datei nutzen kannst
* PHP 7.4+
* PHP *Kommandozeilen*-Zugang mit register_argc_argv auf "true" gesetzt in der php.ini-Datei
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar and OpenSSL-Erweiterung
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar, IDN und OpenSSL-Erweiterung
* Das POSIX Modul muss aktiviert sein ([CentOS, RHEL](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) haben dies z.B. deaktiviert)
* Einen E-Mail Server, so dass PHP `mail()` funktioniert.
Wenn kein eigener E-Mail Server zur Verfügung steht, kann alternativ das [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) Addon mit einem externen SMTP Account verwendet werden.

View file

@ -2,153 +2,10 @@
* [Home](help)
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 [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.
The default Theme in Friendica is called [frio](https://github.com/friendica/friendica/tree/stable/view/theme/frio).
So, how to work on the UI of friendica.
Open `Settings > Display > Custom Theme Settings` adjust the Theme to your liking. Select your preferred Appearance - light, dark or black - and your favorite Accent color. Click `Submit` to save your changes.
You can either directly edit an existing theme.
But you might loose your changes when the theme is updated by the friendica team.
The `Custom` Appearance allows to tweak the themes CSS and set colors for UI elements. So called `schemestrings` can be shared between users.
If you are almost happy with an existing theme, the easiest way to cover your needs is to create a new theme, inheriting most of the properties of the parent theme and change just minor stuff.
The below for a more detailed description of theme heritage.
Some themes also allow users to select *variants* of the theme.
Those theme variants most often contain an additional [CSS](https://en.wikipedia.org/wiki/CSS) file to override some styling of the default theme values.
From the themes in the main repository *vier* and *vier* are using this methods for variations.
Quattro is using a slightly different approach.
Third you can start your theme from scratch.
Which is the most complex way to change friendicas look.
But it leaves you the most freedom.
So below for a *detailed* description and the meaning of some special files.
### Styling
If you want to change the styling of a theme, have a look at the themes CSS file.
In most cases, you can found these in
/view/theme/**your-theme-name**/style.css
sometimes, there is also a file called style.php in the theme directory.
This is only needed if the theme allows the user to change certain things of the theme dynamically.
Say the font size or set a background image.
### Templates
If you want to change the structure of the theme, you need to change the templates used by the theme.
Friendica themes are using [SMARTY3](http://www.smarty.net/) for templating.
The default template can be found in
/view/templates
if you want to override any template within your theme create your version of the template in
/view/theme/**your-theme-name**/templates
any template that exists there will be used instead of the default one.
### JavaScript
The same rule applies to the JavaScript files found in
/js
they will be overwritten by files in
/view/theme/**your-theme-name**/js.
## Creating a Theme from Scratch
Keep patient.
Basically what you have to do is identify which template you have to change so it looks more like what you want.
Adopt the CSS of the theme accordingly.
And iterate the process until you have the theme the way you want it.
*Use the source Luke.* and don't hesitate to ask in @[developers](https://forum.friendi.ca/profile/developers) or @[helpers](https://forum.friendi.ca/profile/helpers).
## Special Files
### unsupported
If a file with this name (which might be empty) exists in the theme directory, the theme is marked as *unsupported*.
An unsupported theme may not be selected by a user in the settings.
Users who are already using it wont notice anything.
### README(.md)
The contents of this file, with or without the .md which indicates [Markdown](https://daringfireball.net/projects/markdown/) syntax, will be displayed at most repository hosting services and in the theme page within the admin panel of friendica.
This file should contain information you want to let others know about your theme.
### screenshot.[png|jpg]
If you want to have a preview image of your theme displayed in the settings you should take a screenshot and save it with this name.
Supported formats are PNG and JPEG.
### theme.php
This is the main definition file of the theme.
In the header of that file, some meta information is stored.
For example, have a look at the theme.php of the *vier* theme:
<?php
/**
* [Licence]
*
* Name: Vier
* Version: 1.2
* Author: Fabio <http://kirgroup.com/profile/fabrixxm>
* Author: Ike <http://pirati.ca/profile/heluecht>
* Author: Beanow <https://fc.oscp.info/profile/beanow>
* Maintainer: Ike <http://pirati.ca/profile/heluecht>
* Description: "Vier" is a very compact and modern theme. It uses the font awesome font library: http://fortawesome.github.com/Font-Awesome/
*/
You see the definition of the theme's name, it's version and the initial author of the theme.
These three pieces of information should be listed.
If the original author is no longer working on the theme, but a maintainer has taken over, the maintainer should be listed as well.
The information from the theme header will be displayed in the admin panel.
The first thing in file is to import the `App` class from `\Friendica\` namespace.
use Friendica\App;
This will make our job a little easier, as we don't have to specify the full name every time we need to use the `App` class.
The next crucial part of the theme.php file is a definition of an init function.
The name of the function is <theme-name>_init.
So in the case of vier it is
function vier_init(App $a) {
$a->theme_info = array();
$a->set_template_engine('smarty3');
}
Here we have set the basic theme information, in this case they are empty.
But the array needs to be set.
And we have set the template engine that should be used by friendica for this theme.
At the moment you should use the *smarty3* engine.
There once was a friendica specific templating engine as well but that is not used anymore.
If you like to use another templating engine, please implement it.
If you want to add something to the HTML header of the theme, one way to do so is by adding it to the theme.php file.
To do so, add something alike
DI::page()['htmlhead'] .= <<< EOT
/* stuff you want to add to the header */
EOT;
So you can access the properties of this friendica session from the theme.php file as well.
### default.php
This file covers the structure of the underlying HTML layout.
The default file is in
/view/default.php
if you want to change it, say adding a 4th column for banners of your favourite FLOSS projects, place a new default.php file in your theme directory.
As with the theme.php file, you can use the properties of the $a variable with holds the friendica application to decide what content is displayed.
In the `General Theme Settings` you can also find the [vier](https://github.com/friendica/friendica/tree/stable/view/theme/vier) Theme, which precedes frio and is no longer officially maintained.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 400 KiB

After

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 KiB

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -45,7 +45,8 @@ use Friendica\Model\Post;
use Friendica\Network\HTTPException;
use Friendica\Util\DateTimeFormat;
function item_post(App $a) {
function item_post()
{
$uid = DI::userSession()->getLocalUserId();
if (!$uid) {
@ -233,13 +234,15 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat
function item_process(array $post, array $request, bool $preview, string $return_path): array
{
$post['self'] = true;
$post['api_source'] = false;
$post['attach'] = '';
$post['title'] = trim($request['title'] ?? '');
$post['body'] = $request['body'] ?? '';
$post['location'] = trim($request['location'] ?? '');
$post['coord'] = trim($request['coord'] ?? '');
$post['self'] = true;
$post['api_source'] = false;
$post['attach'] = '';
$post['title'] = trim($request['title'] ?? '');
$post['content-warning'] = trim($request['summary'] ?? '');
$post['sensitive'] = !empty($request['sensitive'] ?? false);
$post['body'] = $request['body'] ?? '';
$post['location'] = trim($request['location'] ?? '');
$post['coord'] = trim($request['coord'] ?? '');
$post = DI::contentItem()->addCategories($post, $request['category'] ?? '');
@ -248,7 +251,7 @@ function item_process(array $post, array $request, bool $preview, string $return
$post['body'] .= DI::contentItem()->storeAttachmentFromRequest($request);
}
$post = DI::contentItem()->finalizePost($post);
$post = DI::contentItem()->finalizePost($post, $preview);
if (!strlen($post['body'])) {
if ($preview) {
@ -278,13 +281,15 @@ function item_process(array $post, array $request, bool $preview, string $return
$post['quote-uri-id'] = Item::getQuoteUriId($post['body'], $post['uid']);
$post['body'] = BBCode::removeSharedData(Item::setHashtags($post['body']));
$post['writable'] = true;
$post['sensitive'] = false;
$post['post-reason'] = Item::PR_LOCAL;
$o = DI::conversation()->render([$post], Conversation::MODE_SEARCH, false, true);
System::jsonExit(['preview' => $o]);
}
Hook::callAll('post_local',$post);
Hook::callAll('post_local', $post);
unset($post['edit']);
unset($post['self']);

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -19,7 +19,6 @@
*
*/
use Friendica\App;
use Friendica\Content\Nav;
use Friendica\Content\Pager;
use Friendica\Content\Text\BBCode;
@ -34,7 +33,7 @@ use Friendica\Util\DateTimeFormat;
use Friendica\Util\Strings;
use Friendica\Util\Temporal;
function message_init(App $a)
function message_init()
{
$tabs = '';
@ -61,7 +60,7 @@ function message_init(App $a)
]);
}
function message_post(App $a)
function message_post()
{
if (!DI::userSession()->getLocalUserId()) {
DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.'));
@ -104,7 +103,7 @@ function message_post(App $a)
}
}
function message_content(App $a)
function message_content()
{
$o = '';
Nav::setSelected('messages');
@ -114,7 +113,7 @@ function message_content(App $a)
return Login::form();
}
$myprofile = DI::baseUrl() . '/profile/' . $a->getLoggedInUserNickname();
$myprofile = DI::baseUrl() . '/profile/' . DI::userSession()->getLocalUserNickname();
$tpl = Renderer::getMarkupTemplate('mail_head.tpl');
if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] == 'new') {
@ -177,7 +176,7 @@ function message_content(App $a)
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
'$nickname' => $a->getLoggedInUserNickname(),
'$nickname' => DI::userSession()->getLocalUserNickname(),
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
]);
@ -282,7 +281,7 @@ function message_content(App $a)
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
'$nickname' => $a->getLoggedInUserNickname(),
'$nickname' => DI::userSession()->getLocalUserNickname(),
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
]);
@ -415,12 +414,10 @@ function get_messages(int $uid, int $start, int $limit): array
function render_messages(array $msg, string $t): string
{
$a = DI::app();
$tpl = Renderer::getMarkupTemplate($t);
$rslt = '';
$myprofile = DI::baseUrl() . '/profile/' . $a->getLoggedInUserNickname();
$myprofile = DI::baseUrl() . '/profile/' . DI::userSession()->getLocalUserNickname();
foreach ($msg as $rr) {
if ($rr['unknown']) {

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -46,7 +46,7 @@ function notes_content(App $a, bool $update = false)
return;
}
$o = BaseProfile::getTabsHTML('notes', true, $a->getLoggedInUserNickname(), false);
$o = BaseProfile::getTabsHTML('notes', true, DI::userSession()->getLocalUserNickname(), false);
if (!$update) {
$o .= '<h3>' . DI::l10n()->t('Personal Notes') . '</h3>';

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -19,11 +19,9 @@
*
*/
use Friendica\App;
use Friendica\Content\Nav;
use Friendica\Content\Pager;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Widget;
use Friendica\Core\ACL;
use Friendica\Core\Addon;
use Friendica\Core\Hook;
@ -44,6 +42,7 @@ use Friendica\Module\BaseProfile;
use Friendica\Network\HTTPException;
use Friendica\Network\Probe;
use Friendica\Protocol\Activity;
use Friendica\Protocol\ActivityNamespace;
use Friendica\Security\Security;
use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat;
@ -53,7 +52,7 @@ use Friendica\Util\Strings;
use Friendica\Util\Temporal;
use Friendica\Util\XML;
function photos_init(App $a)
function photos_init()
{
if (DI::config()->get('system', 'block_public') && !DI::userSession()->isAuthenticated()) {
return;
@ -67,8 +66,6 @@ function photos_init(App $a)
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
$is_owner = (DI::userSession()->getLocalUserId() && (DI::userSession()->getLocalUserId() == $owner['uid']));
$albums = Photo::getAlbums($owner['uid']);
$albums_visible = ((intval($owner['hidewall']) && !DI::userSession()->isAuthenticated()) ? false : true);
@ -125,20 +122,18 @@ function photos_init(App $a)
return;
}
function photos_post(App $a)
function photos_post()
{
$user = User::getByNickname(DI::args()->getArgv()[1]);
if (!DBA::isResult($user)) {
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
$phototypes = Images::supportedTypes();
$can_post = false;
$visitor = 0;
$page_owner_uid = intval($user['uid']);
$community_page = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
$community_page = in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN]);
if (DI::userSession()->getLocalUserId() && (DI::userSession()->getLocalUserId() == $page_owner_uid)) {
$can_post = true;
@ -202,7 +197,7 @@ function photos_post(App $a)
// Update the photo albums cache
Photo::clearAlbumCache($page_owner_uid);
DI::baseUrl()->redirect('photos/' . $a->getLoggedInUserNickname() . '/album/' . bin2hex($newalbum));
DI::baseUrl()->redirect('photos/' . DI::userSession()->getLocalUserNickname() . '/album/' . bin2hex($newalbum));
return; // NOTREACHED
}
@ -215,14 +210,14 @@ function photos_post(App $a)
// get the list of photos we are about to delete
if ($visitor) {
$r = DBA::toArray(DBA::p(
"SELECT distinct(`resource-id`) as `rid` FROM `photo` WHERE `contact-id` = ? AND `uid` = ? AND `album` = ?",
"SELECT distinct(`resource-id`) AS `rid` FROM `photo` WHERE `contact-id` = ? AND `uid` = ? AND `album` = ?",
$visitor,
$page_owner_uid,
$album
));
} else {
$r = DBA::toArray(DBA::p(
"SELECT distinct(`resource-id`) as `rid` FROM `photo` WHERE `uid` = ? AND `album` = ?",
"SELECT distinct(`resource-id`) AS `rid` FROM `photo` WHERE `uid` = ? AND `album` = ?",
DI::userSession()->getLocalUserId(),
$album
));
@ -337,7 +332,7 @@ function photos_post(App $a)
if (DBA::isResult($photos)) {
$photo = $photos[0];
$ext = $phototypes[$photo['type']];
$ext = Images::getExtensionByMimeType($photo['type']);
Photo::update(
['desc' => $desc, 'album' => $albname, 'allow_cid' => $str_contact_allow, 'allow_gid' => $str_circle_allow, 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_circle_deny],
['resource-id' => $resource_id, 'uid' => $page_owner_uid]
@ -414,7 +409,7 @@ function photos_post(App $a)
if (count($links)) {
foreach ($links as $link) {
if ($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') {
if ($link['@attributes']['rel'] === ActivityNamespace::WEBFINGERPROFILE) {
$profile = $link['@attributes']['href'];
}
@ -561,7 +556,7 @@ function photos_post(App $a)
}
}
function photos_content(App $a)
function photos_content()
{
// URLs:
// photos/name/upload
@ -590,8 +585,6 @@ function photos_content(App $a)
$profile = Profile::getByUID($user['uid']);
$phototypes = Images::supportedTypes();
$_SESSION['photo_return'] = DI::args()->getCommand();
// Parse arguments
@ -622,7 +615,7 @@ function photos_content(App $a)
$owner_uid = $user['uid'];
$community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false);
$community_page = in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN]);
if (DI::userSession()->getLocalUserId() && (DI::userSession()->getLocalUserId() == $owner_uid)) {
$can_post = true;
@ -676,18 +669,14 @@ function photos_content(App $a)
$selname = (!is_null($datum) && Strings::isHex($datum)) ? hex2bin($datum) : '';
$albumselect = '';
$albumselect = ['' => '<current year>'];
$albumselect .= '<option value="" ' . (!$selname ? ' selected="selected" ' : '') . '>&lt;current year&gt;</option>';
$albums = Photo::getAlbums($owner_uid);
if (!empty($albums)) {
foreach ($albums as $album) {
if ($album['album'] === '') {
continue;
}
$selected = (($selname === $album['album']) ? ' selected="selected" ' : '');
$albumselect .= '<option value="' . $album['album'] . '"' . $selected . '>' . $album['album'] . '</option>';
foreach (Photo::getAlbums($owner_uid) as $album) {
if ($album['album'] === '') {
continue;
}
$albumselect[$album['album']] = $album['album'];
}
$uploader = '';
@ -722,7 +711,7 @@ function photos_content(App $a)
$tpl = Renderer::getMarkupTemplate('photos_upload.tpl');
$aclselect_e = ($visitor ? '' : ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId()));
$aclselect_e = ($visitor ? '' : ACL::getFullSelectorHTML(DI::page(), DI::userSession()->getLocalUserId()));
$o .= Renderer::replaceMacros($tpl, [
'$pagename' => DI::l10n()->t('Upload Photos'),
@ -733,9 +722,10 @@ function photos_content(App $a)
'$existalbumtext' => DI::l10n()->t('or select existing album:'),
'$nosharetext' => DI::l10n()->t('Do not show a status post for this upload'),
'$albumselect' => $albumselect,
'$selname' => $selname,
'$permissions' => DI::l10n()->t('Permissions'),
'$aclselect' => $aclselect_e,
'$lockstate' => ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
'$lockstate' => ACL::getLockstateForUserId(DI::userSession()->getLocalUserId()) ? 'lock' : 'unlock',
'$alt_uploader' => $ret['addon_text'],
'$default_upload_box' => ($ret['default_upload'] ? $default_upload_box : ''),
'$default_upload_submit' => ($ret['default_upload'] ? $default_upload_submit : ''),
@ -762,7 +752,7 @@ function photos_content(App $a)
$total = 0;
$r = DBA::toArray(DBA::p(
"SELECT `resource-id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = ? AND `album` = ?
"SELECT `resource-id`, MAX(`scale`) AS `scale` FROM `photo` WHERE `uid` = ? AND `album` = ?
AND `scale` <= 4 $sql_extra GROUP BY `resource-id`",
$owner_uid,
$album
@ -782,9 +772,9 @@ function photos_content(App $a)
}
$r = DBA::toArray(DBA::p(
"SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`,
ANY_VALUE(`type`) AS `type`, max(`scale`) AS `scale`, ANY_VALUE(`desc`) as `desc`,
ANY_VALUE(`created`) as `created`
"SELECT `resource-id`, MIN(`id`) AS `id`, MIN(`filename`) AS `filename`,
MIN(`type`) AS `type`, MAX(`scale`) AS `scale`, MIN(`desc`) AS `desc`,
MIN(`created`) AS `created`
FROM `photo` WHERE `uid` = ? AND `album` = ?
AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` $order LIMIT ? , ?",
intval($owner_uid),
@ -844,7 +834,7 @@ function photos_content(App $a)
foreach ($r as $rr) {
$twist = !$twist;
$ext = $phototypes[$rr['type']];
$ext = Images::getExtensionByMimeType($rr['type']);
$imgalt_e = $rr['filename'];
$desc_e = $rr['desc'];
@ -855,7 +845,7 @@ function photos_content(App $a)
'link' => 'photos/' . $user['nickname'] . '/image/' . $rr['resource-id']
. ($order_field === 'created' ? '?order=created' : ''),
'title' => DI::l10n()->t('View Photo'),
'src' => 'photo/' . $rr['resource-id'] . '-' . $rr['scale'] . '.' . $ext,
'src' => 'photo/' . $rr['resource-id'] . '-' . $rr['scale'] . $ext,
'alt' => $imgalt_e,
'desc' => $desc_e,
'ext' => $ext,
@ -1013,9 +1003,9 @@ function photos_content(App $a)
}
$photo = [
'href' => 'photo/' . $hires['resource-id'] . '-' . $hires['scale'] . '.' . $phototypes[$hires['type']],
'href' => 'photo/' . $hires['resource-id'] . '-' . $hires['scale'] . Images::getExtensionByMimeType($hires['type']),
'title' => DI::l10n()->t('View Full Size'),
'src' => 'photo/' . $lores['resource-id'] . '-' . $lores['scale'] . '.' . $phototypes[$lores['type']] . '?_u=' . DateTimeFormat::utcNow('ymdhis'),
'src' => 'photo/' . $lores['resource-id'] . '-' . $lores['scale'] . Images::getExtensionByMimeType($lores['type']) . '?_u=' . DateTimeFormat::utcNow('ymdhis'),
'height' => $hires['height'],
'width' => $hires['width'],
'album' => $hires['album'],
@ -1043,7 +1033,7 @@ function photos_content(App $a)
$pager = new Pager(DI::l10n(), DI::args()->getQueryString());
$params = ['order' => ['id'], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
$items = Post::toArray(Post::selectForUser($link_item['uid'], Item::ITEM_FIELDLIST, $condition, $params));
$items = Post::toArray(Post::selectForUser($link_item['uid'], array_merge(Item::ITEM_FIELDLIST, ['author-alias']), $condition, $params));
if (DI::userSession()->getLocalUserId() == $link_item['uid']) {
Item::update(['unseen' => false], ['parent' => $link_item['parent']]);
@ -1081,7 +1071,7 @@ function photos_content(App $a)
$album_e = $ph[0]['album'];
$caption_e = $ph[0]['desc'];
$aclselect_e = ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), false, ACL::getDefaultUserPermissions($ph[0]));
$aclselect_e = ACL::getFullSelectorHTML(DI::page(), DI::userSession()->getLocalUserId(), false, ACL::getDefaultUserPermissions($ph[0]));
$edit = Renderer::replaceMacros($edit_tpl, [
'$id' => $ph[0]['id'],
@ -1167,11 +1157,11 @@ function photos_content(App $a)
}
if (!empty($conv_responses['like'][$link_item['uri']])) {
$like = DI::conversation()->formatActivity($conv_responses['like'][$link_item['uri']]['links'], 'like', $link_item['id']);
$like = DI::conversation()->formatActivity($conv_responses['like'][$link_item['uri']]['links'], 'like', $link_item['id'], '', []);
}
if (!empty($conv_responses['dislike'][$link_item['uri']])) {
$dislike = DI::conversation()->formatActivity($conv_responses['dislike'][$link_item['uri']]['links'], 'dislike', $link_item['id']);
$dislike = DI::conversation()->formatActivity($conv_responses['dislike'][$link_item['uri']]['links'], 'dislike', $link_item['id'], '', []);
}
if (($can_post || Security::canWriteToUserWall($owner_uid))) {

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,8 +0,0 @@
fpostit
original author: Devlon Duthied
see his blog posting:
http://blog.duthied.com/2011/09/13/node-agnostic-friendika-bookmarklet/
original published at github https://github.com/duthied/Friendika-Bookmarklet

View file

@ -1,11 +0,0 @@
javascript: (function() {
the_url = 'http://testbubble.com/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + encodeURIComponent('' (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text));
a_funct = function() {
if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) location.href = the_url;
};
if (/Firefox/.test(navigator.userAgent)) {
setTimeout(a_funct, 0)
} else {
a_funct()
}
})()

View file

@ -1,148 +0,0 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, 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/>.
*
*/
if (($_POST["friendica_acct_name"] != '') && ($_POST["friendica_password"] != '')) {
setcookie("username", $_POST["friendica_acct_name"], time()+60*60*24*300);
setcookie("password", $_POST["friendica_password"], time()+60*60*24*300);
}
?>
<html>
<head>
<style>
body {
font-family: arial, Helvetica,sans-serif;
margin: 0px;
}
.wrap1 {
padding: 2px 5px;
background-color: #729FCF;
margin-bottom: 10px;
}
.wrap2 {
margin-left: 10px;
font-size: 12px;
}
.logo {
margin-left: 3px;
margin-right: 5px;
float: left;
}
h2 {
color: #ffffff;
}
.error {
background-color: #FFFF66;
font-size: 12px;
margin-left: 10px;
}
</style>
</head>
<body>
<?php
if (isset($_GET['title'])) {
$title = $_GET['title'];
}
if (isset($_GET['text'])) {
$text = $_GET['text'];
}
if (isset($_GET['url'])) {
$url = $_GET['url'];
}
if ((isset($title)) && (isset($text)) && (isset($url))) {
$content = "$title\nsource:$url\n\n$text";
} else {
$content = $_POST['content'];
}
if (isset($_POST['submit'])) {
if (($_POST["friendica_acct_name"] != '') && ($_POST["friendica_password"] != '')) {
$acctname = $_POST["friendica_acct_name"];
$tmp_account_array = explode("@", $acctname);
if (isset($tmp_account_array[1])) {
$username = $tmp_account_array[0];
$hostname = $tmp_account_array[1];
}
$password = $_POST["friendica_password"];
$content = $_POST["content"];
$url = "http://" . $hostname . '/api/statuses/update';
$data = ['status' => $content];
// echo "posting to: $url<br/>";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_USERPWD, "$username:$password");
curl_setopt($c, CURLOPT_POSTFIELDS, $data);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
$c_result = curl_exec($c);
if(curl_errno($c)){
$error = curl_error($c);
showForm($error, $content);
}
curl_close($c);
if (!isset($error)) {
echo '<script language="javascript" type="text/javascript">window.close();</script>';
}
} else {
$error = "Missing account name and/or password...try again please";
showForm($error, $content);
}
} else {
showForm(null, $content);
}
function showForm($error, $content) {
$username_cookie = $_COOKIE['username'];
$password_cookie = $_COOKIE['password'];
echo <<<EOF
<div class='wrap1'>
<h2><img class='logo' width="32" height="32" src='friendica.svg' align='middle';/>
Friendica Bookmarklet</h2>
</div>
<div class="wrap2">
<form method="post" action="{$_SERVER['PHP_SELF']}">
Enter the email address of the Friendica Account that you want to cross-post to:(example: user@friendica.org)<br /><br />
Account ID: <input type="text" name="friendica_acct_name" value="{$username_cookie}" size="50"/><br />
Password: <input type="password" name="friendica_password" value="{$password_cookie}" size="50"/><br />
<textarea name="content" id="content" rows="6" cols="70">{$content}</textarea><br />
<input type="submit" value="PostIt!" name="submit" />&nbsp;&nbsp;<span class='error'>$error</span>
</form>
<p></p>
</div>
EOF;
}
?>
</body>
</html>

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 1920 1920"><rect width="1800" height="1800" x="60" y="60" fill="#1872a2" 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: 428 B

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
Contact: mailto:info@friendi.ca
Expires: 2024-10-30T23:59:59Z
Expires: 2025-01-30T23:59:59Z
Preferred-Languages: en

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -43,6 +43,7 @@ use Friendica\Model\Contact;
use Friendica\Model\Profile;
use Friendica\Module\Special\HTTPException as ModuleHTTPException;
use Friendica\Network\HTTPException;
use Friendica\Protocol\ATProtocol\DID;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\HTTPInputData;
use Friendica\Util\HTTPSignature;
@ -64,7 +65,7 @@ class App
{
const PLATFORM = 'Friendica';
const CODENAME = 'Yellow Archangel';
const VERSION = '2023.12';
const VERSION = '2024.06-dev';
// Allow themes to control internal parameters
// by changing App values in theme.php
@ -133,42 +134,6 @@ class App
*/
private $session;
/**
* @deprecated 2022.03
* @see IHandleUserSessions::isAuthenticated()
*/
public function isLoggedIn(): bool
{
return $this->session->isAuthenticated();
}
/**
* @deprecated 2022.03
* @see IHandleUserSessions::isSiteAdmin()
*/
public function isSiteAdmin(): bool
{
return $this->session->isSiteAdmin();
}
/**
* @deprecated 2022.03
* @see IHandleUserSessions::getLocalUserId()
*/
public function getLoggedInUserId(): int
{
return $this->session->getLocalUserId();
}
/**
* @deprecated 2022.03
* @see IHandleUserSessions::getLocalUserNickname()
*/
public function getLoggedInUserNickname(): string
{
return $this->session->getLocalUserNickname();
}
/**
* Set the profile owner ID
*
@ -565,8 +530,8 @@ class App
*/
public function runFrontend(App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, Nav $nav, ModuleHTTPException $httpException, HTTPInputData $httpInput, float $start_time, array $server)
{
$requeststring = ($_SERVER['REQUEST_METHOD'] ?? '') . ' ' . ($_SERVER['REQUEST_URI'] ?? '') . ' ' . ($_SERVER['SERVER_PROTOCOL'] ?? '');
$this->logger->debug('Request received', ['address' => $_SERVER['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $_SERVER['HTTP_REFERER'] ?? '', 'user-agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
$requeststring = ($server['REQUEST_METHOD'] ?? '') . ' ' . ($server['REQUEST_URI'] ?? '') . ' ' . ($server['SERVER_PROTOCOL'] ?? '');
$this->logger->debug('Request received', ['address' => $server['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $server['HTTP_REFERER'] ?? '', 'user-agent' => $server['HTTP_USER_AGENT'] ?? '']);
$request_start = microtime(true);
$this->profiler->set($start_time, 'start');
@ -593,8 +558,10 @@ class App
Core\Hook::callAll('init_1');
}
DID::routeRequest($this->args->getCommand(), $server);
if ($this->mode->isNormal() && !$this->mode->isBackend()) {
$requester = HTTPSignature::getSigner('', $_SERVER);
$requester = HTTPSignature::getSigner('', $server);
if (!empty($requester)) {
Profile::addVisitorCookieForHandle($requester);
}
@ -616,7 +583,7 @@ class App
}
}
Model\Profile::zrlInit($this);
Model\Profile::zrlInit();
} else {
// Someone came with an invalid parameter, maybe as a DDoS attempt
// We simply stop processing here
@ -654,6 +621,11 @@ class App
Core\Hook::loadHooks();
}
// Compatibility with Hubzilla
if ($moduleName == 'rpost') {
$this->baseURL->redirect('compose');
}
// Compatibility with the Android Diaspora client
if ($moduleName == 'stream') {
$this->baseURL->redirect('network?order=post');
@ -713,13 +685,13 @@ class App
// Wrapping HTML responses in the theme template
if ($response->getHeaderLine(ICanCreateResponses::X_HEADER) === ICanCreateResponses::TYPE_HTML) {
$response = $page->run($this, $this->baseURL, $this->args, $this->mode, $response, $this->l10n, $this->profiler, $this->config, $pconfig, $nav, $this->session->getLocalUserId());
$response = $page->run($this, $this->session, $this->baseURL, $this->args, $this->mode, $response, $this->l10n, $this->profiler, $this->config, $pconfig, $nav, $this->session->getLocalUserId());
}
$this->logger->debug('Request processed sucessfully', ['response' => $response->getStatusCode(), 'address' => $_SERVER['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $_SERVER['HTTP_REFERER'] ?? '', 'user-agent' => $_SERVER['HTTP_USER_AGENT'] ?? '', 'duration' => number_format(microtime(true) - $request_start, 3)]);
$this->logger->debug('Request processed sucessfully', ['response' => $response->getStatusCode(), 'address' => $server['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $server['HTTP_REFERER'] ?? '', 'user-agent' => $server['HTTP_USER_AGENT'] ?? '', 'duration' => number_format(microtime(true) - $request_start, 3)]);
System::echoResponse($response);
} catch (HTTPException $e) {
$this->logger->debug('Request processed with exception', ['response' => $e->getCode(), 'address' => $_SERVER['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $_SERVER['HTTP_REFERER'] ?? '', 'user-agent' => $_SERVER['HTTP_USER_AGENT'] ?? '', 'duration' => number_format(microtime(true) - $request_start, 3)]);
$this->logger->debug('Request processed with exception', ['response' => $e->getCode(), 'address' => $server['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $server['HTTP_REFERER'] ?? '', 'user-agent' => $server['HTTP_USER_AGENT'] ?? '', 'duration' => number_format(microtime(true) - $request_start, 3)]);
$httpException->rawContent($e);
}
$page->logRuntime($this->config, 'runFrontend');

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -32,6 +32,7 @@ use Friendica\Core\L10n;
use Friendica\Core\Logger;
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
use Friendica\Core\Renderer;
use Friendica\Core\Session\Model\UserSession;
use Friendica\Core\System;
use Friendica\Core\Theme;
use Friendica\Module\Response;
@ -325,13 +326,13 @@ class Page implements ArrayAccess
*
* @throws HTTPException\InternalServerErrorException
*/
private function initFooter(App $app, Mode $mode, L10n $l10n)
private function initFooter(UserSession $session, Mode $mode, L10n $l10n)
{
// If you're just visiting, let javascript take you home
if (!empty($_SESSION['visitor_home'])) {
$homebase = $_SESSION['visitor_home'];
} elseif (!empty($app->getLoggedInUserNickname())) {
$homebase = 'profile/' . $app->getLoggedInUserNickname();
} elseif (!empty($session->getLocalUserNickname())) {
$homebase = 'profile/' . $session->getLocalUserNickname();
}
if (isset($homebase)) {
@ -420,7 +421,7 @@ class Page implements ArrayAccess
* @throws HTTPException\InternalServerErrorException
* @throws HTTPException\ServiceUnavailableException
*/
public function run(App $app, BaseURL $baseURL, Arguments $args, Mode $mode, ResponseInterface $response, L10n $l10n, Profiler $profiler, IManageConfigValues $config, IManagePersonalConfigValues $pconfig, Nav $nav, int $localUID)
public function run(App $app, UserSession $session, BaseURL $baseURL, Arguments $args, Mode $mode, ResponseInterface $response, L10n $l10n, Profiler $profiler, IManageConfigValues $config, IManagePersonalConfigValues $pconfig, Nav $nav, int $localUID)
{
$moduleName = $args->getModuleName();
@ -459,7 +460,7 @@ class Page implements ArrayAccess
/* Build the page ending -- this is stuff that goes right before
* the closing </body> tag
*/
$this->initFooter($app, $mode, $l10n);
$this->initFooter($session, $mode, $l10n);
$profiler->set(microtime(true) - $timestamp, 'aftermath');

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
@ -356,7 +356,7 @@ abstract class BaseModule implements ICanHandleRequests
*/
public static function getFormSecurityToken(string $typename = ''): string
{
$user = User::getById(DI::app()->getLoggedInUserId(), ['guid', 'prvkey']);
$user = User::getById(DI::userSession()->getLocalUserId(), ['guid', 'prvkey']);
$timestamp = time();
$sec_hash = hash('whirlpool', ($user['guid'] ?? '') . ($user['prvkey'] ?? '') . session_id() . $timestamp . $typename);
@ -390,7 +390,7 @@ abstract class BaseModule implements ICanHandleRequests
$max_livetime = 10800; // 3 hours
$user = User::getById(DI::app()->getLoggedInUserId(), ['guid', 'prvkey']);
$user = User::getById(DI::userSession()->getLocalUserId(), ['guid', 'prvkey']);
$x = explode('.', $hash);
if (time() > (intval($x[0]) + $max_livetime)) {
@ -410,7 +410,7 @@ abstract class BaseModule implements ICanHandleRequests
public static function checkFormSecurityTokenRedirectOnError(string $err_redirect, string $typename = '', string $formname = 'form_security_token')
{
if (!self::checkFormSecurityToken($typename, $formname)) {
Logger::notice('checkFormSecurityToken failed: user ' . DI::app()->getLoggedInUserNickname() . ' - form element ' . $typename);
Logger::notice('checkFormSecurityToken failed: user ' . DI::userSession()->getLocalUserNickname() . ' - form element ' . $typename);
Logger::debug('checkFormSecurityToken failed', ['request' => $_REQUEST]);
DI::sysmsg()->addNotice(self::getFormSecurityStandardErrorMessage());
DI::baseUrl()->redirect($err_redirect);
@ -420,7 +420,7 @@ abstract class BaseModule implements ICanHandleRequests
public static function checkFormSecurityTokenForbiddenOnError(string $typename = '', string $formname = 'form_security_token')
{
if (!self::checkFormSecurityToken($typename, $formname)) {
Logger::notice('checkFormSecurityToken failed: user ' . DI::app()->getLoggedInUserNickname() . ' - form element ' . $typename);
Logger::notice('checkFormSecurityToken failed: user ' . DI::userSession()->getLocalUserNickname() . ' - form element ' . $typename);
Logger::debug('checkFormSecurityToken failed', ['request' => $_REQUEST]);
throw new \Friendica\Network\HTTPException\ForbiddenException();

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

View file

@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2023, the Friendica project
* @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*

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