Merge remote-tracking branch 'upstream/2023.03-rc' into npf2
|
@ -13,7 +13,7 @@ assignees: ''
|
||||||
|
|
||||||
### Describe the feature you'd like
|
### Describe the feature you'd like
|
||||||
|
|
||||||
<!-- A clear and concise description of waht you want to happen. -->
|
<!-- A clear and concise description of what you want to happen. -->
|
||||||
|
|
||||||
### Describe alternatives you've considered
|
### Describe alternatives you've considered
|
||||||
|
|
||||||
|
|
72
CHANGELOG
|
@ -714,13 +714,13 @@ Version 2020.07 (2020-07-12)
|
||||||
blockbot:
|
blockbot:
|
||||||
The list of accepted user agents was enhanced [annando]
|
The list of accepted user agents was enhanced [annando]
|
||||||
Diaspora*:
|
Diaspora*:
|
||||||
Enhanced conntector settings [MrPetovan]
|
Enhanced connector settings [MrPetovan]
|
||||||
PHP Mailer SMTP:
|
PHP Mailer SMTP:
|
||||||
Updated phpmailer version [dependabot]
|
Updated phpmailer version [dependabot]
|
||||||
showmore_dyn:
|
showmore_dyn:
|
||||||
New addon to collapse long post depending on their actual height [wiwie]
|
New addon to collapse long post depending on their actual height [wiwie]
|
||||||
twitter:
|
twitter:
|
||||||
Enhaceed the handling of mobile twitter URLs [annando]
|
Enhanced the handling of mobile twitter URLs [annando]
|
||||||
Enhanced the handling of quoted tweets [MrPetovan]
|
Enhanced the handling of quoted tweets [MrPetovan]
|
||||||
added HTML error code handling [MrPetovan]
|
added HTML error code handling [MrPetovan]
|
||||||
various:
|
various:
|
||||||
|
@ -958,7 +958,7 @@ Version 2019.09 (2019-09-29)
|
||||||
|
|
||||||
Version 2019.06 (2019-06-23)
|
Version 2019.06 (2019-06-23)
|
||||||
Friendica Core:
|
Friendica Core:
|
||||||
Update to the tranlation (CS, DE, EN-GB, EN-US, ET, FR, IT, PL, PT-BR, SV) [translation teams]
|
Update to the translation (CS, DE, EN-GB, EN-US, ET, FR, IT, PL, PT-BR, SV) [translation teams]
|
||||||
Update to the documentation [nupplaphil, realkinetix, MrPetovan]
|
Update to the documentation [nupplaphil, realkinetix, MrPetovan]
|
||||||
Update to the themes (frio, vier) [BinkaDroid, MrPetovan, tobiasd]
|
Update to the themes (frio, vier) [BinkaDroid, MrPetovan, tobiasd]
|
||||||
Enhancements to the API [annando, MrPetovan]
|
Enhancements to the API [annando, MrPetovan]
|
||||||
|
@ -978,7 +978,7 @@ Version 2019.06 (2019-06-23)
|
||||||
Fixed an issue with the File to Folder feature [MrPetovan]
|
Fixed an issue with the File to Folder feature [MrPetovan]
|
||||||
Fixed an issue with the legacy storage engine [fabrixxm]
|
Fixed an issue with the legacy storage engine [fabrixxm]
|
||||||
Fixed an issue with the theme and addon path items [MrPetovan]
|
Fixed an issue with the theme and addon path items [MrPetovan]
|
||||||
Fixed an issue occuring when the BasePath was not set [tobiasd]
|
Fixed an issue occurring when the BasePath was not set [tobiasd]
|
||||||
Fixed an issue with additionally opened Sessions [MrPetovan]
|
Fixed an issue with additionally opened Sessions [MrPetovan]
|
||||||
Fixed an issue with legacy loglevel mapping [nupplaphil]
|
Fixed an issue with legacy loglevel mapping [nupplaphil]
|
||||||
Fixed contact suggestions [annando]
|
Fixed contact suggestions [annando]
|
||||||
|
@ -1004,7 +1004,7 @@ Version 2019.06 (2019-06-23)
|
||||||
Remove support for defunct F-Droid Friendica app [MrPetovan]
|
Remove support for defunct F-Droid Friendica app [MrPetovan]
|
||||||
|
|
||||||
Friendica Addons:
|
Friendica Addons:
|
||||||
Update to the tranlation (ET, SV, ZH_CN) [translation teams]
|
Update to the translation (ET, SV, ZH_CN) [translation teams]
|
||||||
botdetection:
|
botdetection:
|
||||||
Added a new addon for preventing access by bots [nupplaphil, annando]
|
Added a new addon for preventing access by bots [nupplaphil, annando]
|
||||||
buffer:
|
buffer:
|
||||||
|
@ -1042,7 +1042,7 @@ Version 2019.03 (2019-03-22)
|
||||||
Update to the themes (duepuntozero, frio, smoothy, quattro, vier) [lxiter, MrPetovan, nupplaphil, rabuzarus, tobiasd]
|
Update to the themes (duepuntozero, frio, smoothy, quattro, vier) [lxiter, MrPetovan, nupplaphil, rabuzarus, tobiasd]
|
||||||
Enhancements to the API [jasonscheng]
|
Enhancements to the API [jasonscheng]
|
||||||
Enhancements to the Vagrant development VM [JeroenED]
|
Enhancements to the Vagrant development VM [JeroenED]
|
||||||
Enhancements to the storage of gender, sexual preferences and maritial status [JeroenED]
|
Enhancements to the storage of gender, sexual preferences and marital status [JeroenED]
|
||||||
Enhancements to the wording of notifications [MrPetovan]
|
Enhancements to the wording of notifications [MrPetovan]
|
||||||
Enhancements to the display of contacts in the profile [MrPetovan]
|
Enhancements to the display of contacts in the profile [MrPetovan]
|
||||||
Enhancements to the handling of local links [lxiter]
|
Enhancements to the handling of local links [lxiter]
|
||||||
|
@ -1071,7 +1071,7 @@ Version 2019.03 (2019-03-22)
|
||||||
Fixed an issue with sending out notification mails to the admin [nupplaphil]
|
Fixed an issue with sending out notification mails to the admin [nupplaphil]
|
||||||
Fixed an the issue, that the API was ignoring the globalsilence setting [nupplaphil]
|
Fixed an the issue, that the API was ignoring the globalsilence setting [nupplaphil]
|
||||||
Fixed issues with the autolinker of URLs in postings [MrPetovan]
|
Fixed issues with the autolinker of URLs in postings [MrPetovan]
|
||||||
Fixed an issue resulting in multible emails after successful updates of the database [nupplaphil]
|
Fixed an issue resulting in multiple emails after successful updates of the database [nupplaphil]
|
||||||
Fixed a timeout issue during detection process of the remote profile [annando]
|
Fixed a timeout issue during detection process of the remote profile [annando]
|
||||||
Fixed an issue with postings from blocked servers [annando, MrPetovan]
|
Fixed an issue with postings from blocked servers [annando, MrPetovan]
|
||||||
Fixed an issue with the paging of stored folders [MrPetovan]
|
Fixed an issue with the paging of stored folders [MrPetovan]
|
||||||
|
@ -1103,7 +1103,7 @@ Version 2019.03 (2019-03-22)
|
||||||
forumdirectory:
|
forumdirectory:
|
||||||
Fixed a theming issue with frio [rabuzarus]
|
Fixed a theming issue with frio [rabuzarus]
|
||||||
js_upload:
|
js_upload:
|
||||||
Fixed a missing extionsion index [nupplaphil]
|
Fixed a missing extension index [nupplaphil]
|
||||||
mailstream:
|
mailstream:
|
||||||
Fixed a curl issue [MrPetovan]
|
Fixed a curl issue [MrPetovan]
|
||||||
piwik:
|
piwik:
|
||||||
|
@ -1323,7 +1323,7 @@ Version 2018.09 (2018-09-23)
|
||||||
added addons:
|
added addons:
|
||||||
mastodoncustomemojis [MrPetovan]
|
mastodoncustomemojis [MrPetovan]
|
||||||
deprecated addons:
|
deprecated addons:
|
||||||
notimeline, retriver, remote_permissions, widgets
|
notimeline, retriever, remote_permissions, widgets
|
||||||
|
|
||||||
Directory:
|
Directory:
|
||||||
Enhancements of the health summary [andyhee]
|
Enhancements of the health summary [andyhee]
|
||||||
|
@ -1349,7 +1349,7 @@ Version 2018.05 (2018-06-01)
|
||||||
Enhancements to the relay system [annando]
|
Enhancements to the relay system [annando]
|
||||||
Enhancements to the handling of URL that contain unicode characters [annando]
|
Enhancements to the handling of URL that contain unicode characters [annando]
|
||||||
Enhancements to the Vagrant VM configuration [fabrixxm, tobiasd]
|
Enhancements to the Vagrant VM configuration [fabrixxm, tobiasd]
|
||||||
Enhancementa to the Babel module [MrPetovan]
|
Enhancements to the Babel module [MrPetovan]
|
||||||
Enhancements to the display of the [code] elements [MrPetovan]
|
Enhancements to the display of the [code] elements [MrPetovan]
|
||||||
Enhancements to the federation (OStatus, diaspora) [annando]
|
Enhancements to the federation (OStatus, diaspora) [annando]
|
||||||
Enhancements to the PHP7.2 compatibility [Alkarex, MrPetovan, Quix0r]
|
Enhancements to the PHP7.2 compatibility [Alkarex, MrPetovan, Quix0r]
|
||||||
|
@ -1378,7 +1378,7 @@ Version 2018.05 (2018-06-01)
|
||||||
Fixed a bug that made edited mentions and hashtags plaintext [annando]
|
Fixed a bug that made edited mentions and hashtags plaintext [annando]
|
||||||
Fixed a bug that caused the /display page to receive constandly new updates [annando]
|
Fixed a bug that caused the /display page to receive constandly new updates [annando]
|
||||||
Fixed wrong version of a dependency preventing the usage of PHP 5.6 [MrPetovan]
|
Fixed wrong version of a dependency preventing the usage of PHP 5.6 [MrPetovan]
|
||||||
Fixed a bug in OpenID authentification [Quix0r]
|
Fixed a bug in OpenID authentication [Quix0r]
|
||||||
Fixed a bug in the item deletion [annando]
|
Fixed a bug in the item deletion [annando]
|
||||||
Fixed a bug that prevented public comments from being distributed [annando]
|
Fixed a bug that prevented public comments from being distributed [annando]
|
||||||
Fixed a bug that caused empty profile pictures for public contacts [annando]
|
Fixed a bug that caused empty profile pictures for public contacts [annando]
|
||||||
|
@ -1477,7 +1477,7 @@ Version 3.6 (2018-03-23)
|
||||||
Enhancements to the probing of pump.io profiles [annando]
|
Enhancements to the probing of pump.io profiles [annando]
|
||||||
Enhancements to the handling of BBCode tags [MrPetovan]
|
Enhancements to the handling of BBCode tags [MrPetovan]
|
||||||
Enhancements to the OEmbed handling [MrPetovan]
|
Enhancements to the OEmbed handling [MrPetovan]
|
||||||
Fixed a bug that triggered the display of activities on the cummunity page [annando]
|
Fixed a bug that triggered the display of activities on the community page [annando]
|
||||||
Fixed a bug with personal notes [annando]
|
Fixed a bug with personal notes [annando]
|
||||||
Fixed a display issue of long postings when using the showmore option [annando]
|
Fixed a display issue of long postings when using the showmore option [annando]
|
||||||
Fixed a bug that caused Twidere to crash on reload [annando]
|
Fixed a bug that caused Twidere to crash on reload [annando]
|
||||||
|
@ -1485,7 +1485,7 @@ Version 3.6 (2018-03-23)
|
||||||
Fixed a bug in URL completion for feed fragments [annando]
|
Fixed a bug in URL completion for feed fragments [annando]
|
||||||
Fixed a bug in the notification system about new registrations [annando]
|
Fixed a bug in the notification system about new registrations [annando]
|
||||||
Fixed the display of dislikes [annando]
|
Fixed the display of dislikes [annando]
|
||||||
Fixed the display of orphans childs in threads [MrPetovan]
|
Fixed the display of orphan children in threads [MrPetovan]
|
||||||
Fixed some SQL problems [annando]
|
Fixed some SQL problems [annando]
|
||||||
Fixed the CLI config script [tobiasd]
|
Fixed the CLI config script [tobiasd]
|
||||||
Fixed the forum selection on the network display [annando]
|
Fixed the forum selection on the network display [annando]
|
||||||
|
@ -1539,7 +1539,7 @@ Version 3.6 (2018-03-23)
|
||||||
all bridges don't relay postings anymore that are posted to a public forum [annando]
|
all bridges don't relay postings anymore that are posted to a public forum [annando]
|
||||||
DAV addon marked unsupported [tobiasd]
|
DAV addon marked unsupported [tobiasd]
|
||||||
communityhome addon marked unsupported [MrPetovan]
|
communityhome addon marked unsupported [MrPetovan]
|
||||||
yourls addon makrked unsupported [MrPetovan]
|
yourls addon marked unsupported [MrPetovan]
|
||||||
Current Weather: fixing a problem with the weathermap link [zeroadam]
|
Current Weather: fixing a problem with the weathermap link [zeroadam]
|
||||||
NSFW added config examples, reworked the description, now ignores the CW from Mastodon [andyhee, annando, rebeka-catalina]
|
NSFW added config examples, reworked the description, now ignores the CW from Mastodon [andyhee, annando, rebeka-catalina]
|
||||||
Twitter support 280 chars limit [annando]
|
Twitter support 280 chars limit [annando]
|
||||||
|
@ -1734,7 +1734,7 @@ Version 3.5.1 (2017-03-12)
|
||||||
Improvements to the documentation [Hypolite, tobiasd, rabuzarus, beardyunixer, eelcomaljaars]
|
Improvements to the documentation [Hypolite, tobiasd, rabuzarus, beardyunixer, eelcomaljaars]
|
||||||
Improvements to the BBCode / Markdown conversation [Hypolite]
|
Improvements to the BBCode / Markdown conversation [Hypolite]
|
||||||
Improvements to the OStatus protocol implementation [annando]
|
Improvements to the OStatus protocol implementation [annando]
|
||||||
Improvements to the installation wizzard [tobiasd]
|
Improvements to the installation wizard [tobiasd]
|
||||||
Improvements to the Diaspora connectivity [annando, Hypolite]
|
Improvements to the Diaspora connectivity [annando, Hypolite]
|
||||||
Work on PHP7 compatibility [ddorian1]
|
Work on PHP7 compatibility [ddorian1]
|
||||||
Code cleanup [Hypolite, Quix0r]
|
Code cleanup [Hypolite, Quix0r]
|
||||||
|
@ -1796,11 +1796,11 @@ Version 3.5 (2016-09-13)
|
||||||
Improvements on the themes (quattro, vier, frost) [rabuzarus, fabrixxm, stieben, annando, Quix0r, tobiasd]
|
Improvements on the themes (quattro, vier, frost) [rabuzarus, fabrixxm, stieben, annando, Quix0r, tobiasd]
|
||||||
Improvements to the ACL dialog [fabrixxm, rabuzarus]
|
Improvements to the ACL dialog [fabrixxm, rabuzarus]
|
||||||
Improvements to the database structure and optimization of queries [annando]
|
Improvements to the database structure and optimization of queries [annando]
|
||||||
Improvements to the UI (contacts, hotkeys, remember me, ARIA, code hightlighting) [rabuzarus, annando, tobiasd]
|
Improvements to the UI (contacts, hotkeys, remember me, ARIA, code highlighting) [rabuzarus, annando, tobiasd]
|
||||||
Improvements to the background process (poller, worker) [annando]
|
Improvements to the background process (poller, worker) [annando]
|
||||||
Improvements to the admin panel [tobiasd, annando, fabrixxm]
|
Improvements to the admin panel [tobiasd, annando, fabrixxm]
|
||||||
Improvements to the performance [annando]
|
Improvements to the performance [annando]
|
||||||
Improvements to the installation wizzard (language selection, RINO version, check required PHP modules, default theme is now vier) [tobiasd]
|
Improvements to the installation wizard (language selection, RINO version, check required PHP modules, default theme is now vier) [tobiasd]
|
||||||
Improvements to the relocation of nodes and accounts [annando]
|
Improvements to the relocation of nodes and accounts [annando]
|
||||||
Improvements to the DDoS detection [annando]
|
Improvements to the DDoS detection [annando]
|
||||||
Improvements to the calendar/events module [annando, rabuzarus]
|
Improvements to the calendar/events module [annando, rabuzarus]
|
||||||
|
@ -1825,7 +1825,7 @@ Version 3.5 (2016-09-13)
|
||||||
GNU Social Connector [annando]
|
GNU Social Connector [annando]
|
||||||
LDAP [Olivier Mehani]
|
LDAP [Olivier Mehani]
|
||||||
smileybutton [rabuzarus]
|
smileybutton [rabuzarus]
|
||||||
retriver [mexon]
|
retriever [mexon]
|
||||||
mailstream [mexon]
|
mailstream [mexon]
|
||||||
forumdirectory [tobiasd]
|
forumdirectory [tobiasd]
|
||||||
NEW notifyall (port from Hubzilla) [rabuzarus, tobiasd]
|
NEW notifyall (port from Hubzilla) [rabuzarus, tobiasd]
|
||||||
|
@ -1880,7 +1880,7 @@ Version 3.4.3 (2015-12-22)
|
||||||
'Reload active themes' in theme admin page (fabrixxm)
|
'Reload active themes' in theme admin page (fabrixxm)
|
||||||
Install routine checks for ImageMagick and GIF support (fabrixxm)
|
Install routine checks for ImageMagick and GIF support (fabrixxm)
|
||||||
Install routine checks for availability of "mcrypt_create_iv()" function, needed for RINO2 (fabrixxm)
|
Install routine checks for availability of "mcrypt_create_iv()" function, needed for RINO2 (fabrixxm)
|
||||||
Only suported themes are shown in admin page (annando)
|
Only supported themes are shown in admin page (annando)
|
||||||
Optimized SQL queries (annando)
|
Optimized SQL queries (annando)
|
||||||
System perform an optimize pass on tables in cron, with maximum table size and minimum fragmentation level settings (annando)
|
System perform an optimize pass on tables in cron, with maximum table size and minimum fragmentation level settings (annando)
|
||||||
New access keys in profile and contact pages (rabuzarus, annando)
|
New access keys in profile and contact pages (rabuzarus, annando)
|
||||||
|
@ -1895,9 +1895,9 @@ Version 3.4.3 (2015-12-22)
|
||||||
New hook 'template_vars' (fabrixxm)
|
New hook 'template_vars' (fabrixxm)
|
||||||
$baseurl variable is passed to all templates by default (fabrixxm)
|
$baseurl variable is passed to all templates by default (fabrixxm)
|
||||||
OStatus delivery code is moved in new function (annando)
|
OStatus delivery code is moved in new function (annando)
|
||||||
Doxygen config file and initial documetation of code (rabuzarus)
|
Doxygen config file and initial documentation of code (rabuzarus)
|
||||||
Full rewrite of util/php2po.php (fabrixxm)
|
Full rewrite of util/php2po.php (fabrixxm)
|
||||||
Bugfixs:
|
Bugfixes:
|
||||||
Remote self works again (annando)
|
Remote self works again (annando)
|
||||||
Fix feeds mistakenly recognized as OStatus (issue #1914) (annando)
|
Fix feeds mistakenly recognized as OStatus (issue #1914) (annando)
|
||||||
Report invalid feeds to user (issue #1913) (annando)
|
Report invalid feeds to user (issue #1913) (annando)
|
||||||
|
@ -1912,8 +1912,8 @@ Version 3.4.3 (2015-12-22)
|
||||||
Fix rapid repeated requests to GNUSocial instance (issue #2038) (annando)
|
Fix rapid repeated requests to GNUSocial instance (issue #2038) (annando)
|
||||||
Fix install routine css when mod_rewrite doesn't works (issue #2071) (fabrixxm)
|
Fix install routine css when mod_rewrite doesn't works (issue #2071) (fabrixxm)
|
||||||
Fix code to be compliant with minimum required PHP version (issue #2066) (fabrixxm, rabuzarus)
|
Fix code to be compliant with minimum required PHP version (issue #2066) (fabrixxm, rabuzarus)
|
||||||
Fix feedback after succesfull registration (issue #2060) (annando)
|
Fix feedback after successful registration (issue #2060) (annando)
|
||||||
Fix mention completition popup with TinyMCE (issue #1920) (fabrixxm)
|
Fix mention completion popup with TinyMCE (issue #1920) (fabrixxm)
|
||||||
Fix photo cache and proxy when installed in subfolder (ddorian1)
|
Fix photo cache and proxy when installed in subfolder (ddorian1)
|
||||||
Fix bbcode conversion of the about text for the profile (issue #1607) (annando)
|
Fix bbcode conversion of the about text for the profile (issue #1607) (annando)
|
||||||
|
|
||||||
|
@ -1923,7 +1923,7 @@ Version 3.4.2 (2015-09-29)
|
||||||
Updates to the documentation (tobiasd, silke, annando)
|
Updates to the documentation (tobiasd, silke, annando)
|
||||||
Updates to the translations (tobiasd & translation teams)
|
Updates to the translations (tobiasd & translation teams)
|
||||||
Updates to themes frost-mobile, vier, duepuntozero, quattro (annando, tobiasd)
|
Updates to themes frost-mobile, vier, duepuntozero, quattro (annando, tobiasd)
|
||||||
Enancements of the communications via OStatus and Diaspora protocols (annando)
|
Enhancements of the communications via OStatus and Diaspora protocols (annando)
|
||||||
Option to automatically follow OStatus contacts was moved from addon to the core (annando)
|
Option to automatically follow OStatus contacts was moved from addon to the core (annando)
|
||||||
Add tool to import OStatus contacts from an old account (annando)
|
Add tool to import OStatus contacts from an old account (annando)
|
||||||
SALMON slaps with OStatus were reworked (annando)
|
SALMON slaps with OStatus were reworked (annando)
|
||||||
|
@ -1940,7 +1940,7 @@ Version 3.4.2 (2015-09-29)
|
||||||
The global directory is queried in the background to update local DB and improve similar searches in the future. (annando)
|
The global directory is queried in the background to update local DB and improve similar searches in the future. (annando)
|
||||||
By communication over the Diaspora protocol, red#matrix sources are now correctly identified, hubzilla is detected (annando)
|
By communication over the Diaspora protocol, red#matrix sources are now correctly identified, hubzilla is detected (annando)
|
||||||
Adopt limitation of usage of "-" in username to avoid conflicts with GNU Social and Diaspora (annando)
|
Adopt limitation of usage of "-" in username to avoid conflicts with GNU Social and Diaspora (annando)
|
||||||
The [url] tag now also suppots ftp, mailto, gopher links (annando)
|
The [url] tag now also supports ftp, mailto, gopher links (annando)
|
||||||
An "inspect queue" module was added to the admin panel (tobiasd)
|
An "inspect queue" module was added to the admin panel (tobiasd)
|
||||||
Fix some missing SQL data escapes (fabrixxm)
|
Fix some missing SQL data escapes (fabrixxm)
|
||||||
Improved the accessibility of the web UI for better screen reader compatibility (annando)
|
Improved the accessibility of the web UI for better screen reader compatibility (annando)
|
||||||
|
@ -1968,7 +1968,7 @@ Version 3.4.1 (2015-07-06)
|
||||||
Implement server-to-server encryption (RINO) using php-encryption library as "RINO 2", deprecate "RINO 1" (issue #1655) (fabrixxm)
|
Implement server-to-server encryption (RINO) using php-encryption library as "RINO 2", deprecate "RINO 1" (issue #1655) (fabrixxm)
|
||||||
Fix connection with Diaspora "freelove" account (issue #1572) (annando)
|
Fix connection with Diaspora "freelove" account (issue #1572) (annando)
|
||||||
Various SQL speedups (annando)
|
Various SQL speedups (annando)
|
||||||
Port of Javascript DatePicker input from RedMatrix (rabuzarus)
|
Port of JavaScript DatePicker input from RedMatrix (rabuzarus)
|
||||||
Port of RedMatrix archive widget (rabuzarus)
|
Port of RedMatrix archive widget (rabuzarus)
|
||||||
Load profile owner settings for theme on profile page (rabuzarus)
|
Load profile owner settings for theme on profile page (rabuzarus)
|
||||||
Move HTML code from php into templates (rabuzarus)
|
Move HTML code from php into templates (rabuzarus)
|
||||||
|
@ -1981,7 +1981,7 @@ Version 3.4.1 (2015-07-06)
|
||||||
use correct contact when automatically add @-replies
|
use correct contact when automatically add @-replies
|
||||||
add attachment links as enclosures
|
add attachment links as enclosures
|
||||||
send salmon notifications to every mentioned person
|
send salmon notifications to every mentioned person
|
||||||
better thread completition
|
better thread completion
|
||||||
support for bookmarks
|
support for bookmarks
|
||||||
support for events and questions
|
support for events and questions
|
||||||
link to items using GUID
|
link to items using GUID
|
||||||
|
@ -1992,7 +1992,7 @@ Version 3.4.1 (2015-07-06)
|
||||||
Add fake fields to API response for better Twitter API compatibility (annando)
|
Add fake fields to API response for better Twitter API compatibility (annando)
|
||||||
Fix search in local directory (issue #1657) (annando)
|
Fix search in local directory (issue #1657) (annando)
|
||||||
Improve OEmbed (issue #1640) (annando)
|
Improve OEmbed (issue #1640) (annando)
|
||||||
Fix double html encodig in site administration page for sitename and register text (issue #1628) (annando)
|
Fix double html encoding in site administration page for sitename and register text (issue #1628) (annando)
|
||||||
Fix remote subscription from GNU Social (annando)
|
Fix remote subscription from GNU Social (annando)
|
||||||
Fix "{0}" in notifications (issue #1642) (annando)
|
Fix "{0}" in notifications (issue #1642) (annando)
|
||||||
Fix desktop notification (fabrixxm)
|
Fix desktop notification (fabrixxm)
|
||||||
|
@ -2001,7 +2001,7 @@ Version 3.4.1 (2015-07-06)
|
||||||
Fix emoticons alt text (tobias)
|
Fix emoticons alt text (tobias)
|
||||||
Improve threaded display in Vier theme (annando)
|
Improve threaded display in Vier theme (annando)
|
||||||
Use field templates in photo edit form (fabrixxm)
|
Use field templates in photo edit form (fabrixxm)
|
||||||
Alllow deletion of any user but yourself (issue #1625) (fabrixxm)
|
Allow deletion of any user but yourself (issue #1625) (fabrixxm)
|
||||||
Install wizard load htconfig template from template/ folder, remove localized htconfig templates (fabrixxm)
|
Install wizard load htconfig template from template/ folder, remove localized htconfig templates (fabrixxm)
|
||||||
Add contact detail to non-js contact drop confirm dialog (issue #1629) (fabrixxm)
|
Add contact detail to non-js contact drop confirm dialog (issue #1629) (fabrixxm)
|
||||||
Return geo coord in API (annando)
|
Return geo coord in API (annando)
|
||||||
|
@ -2020,7 +2020,7 @@ Version 3.4 (2015-04-05)
|
||||||
Optionally, "like" and "dislike" activities don't update thread timestamp (annando)
|
Optionally, "like" and "dislike" activities don't update thread timestamp (annando)
|
||||||
Updated markdown libraries (annando)
|
Updated markdown libraries (annando)
|
||||||
Updated jQuery (StefOfficiel)
|
Updated jQuery (StefOfficiel)
|
||||||
Cache zrl verification requests to prevent DSoS (issue #1453) (annando)
|
Cache zrl verification requests to prevent DDoS (issue #1453) (annando)
|
||||||
"Verify SSL" options affects also VERIFYHOST (annando)
|
"Verify SSL" options affects also VERIFYHOST (annando)
|
||||||
Better handling of hashtags (annando)
|
Better handling of hashtags (annando)
|
||||||
Updated translations (translation teams, tobias)
|
Updated translations (translation teams, tobias)
|
||||||
|
@ -2058,7 +2058,7 @@ Version 3.3.3 (2015-02-24)
|
||||||
Share-it button support (annando)
|
Share-it button support (annando)
|
||||||
More reliable reshare from Diaspora (annando)
|
More reliable reshare from Diaspora (annando)
|
||||||
Load more images via proxy (annando)
|
Load more images via proxy (annando)
|
||||||
util/typo.php uses "php -l" insead of "eval()" to validate code (fabrixxm)
|
util/typo.php uses "php -l" instead of "eval()" to validate code (fabrixxm)
|
||||||
Use $_SERVER array in cli script instead of $argv/$argc (issue #1218) (annando)
|
Use $_SERVER array in cli script instead of $argv/$argc (issue #1218) (annando)
|
||||||
Updated vagrant setup script (silke)
|
Updated vagrant setup script (silke)
|
||||||
API: support to star/unstar items (fabrixxm)
|
API: support to star/unstar items (fabrixxm)
|
||||||
|
@ -2079,7 +2079,7 @@ Version 3.3.3 (2015-02-24)
|
||||||
|
|
||||||
Version 3.3.2 (2014-12-26)
|
Version 3.3.2 (2014-12-26)
|
||||||
|
|
||||||
Set default value for all not-null fields (fixes SQL warinigs) (annando)
|
Set default value for all not-null fields (fixes SQL warnings) (annando)
|
||||||
Fix item filters in network page (issue #1222) (fabrixxm)
|
Fix item filters in network page (issue #1222) (fabrixxm)
|
||||||
Remove reference to an ex Friendica hub from documentation (beardyunixer, tobiasd)
|
Remove reference to an ex Friendica hub from documentation (beardyunixer, tobiasd)
|
||||||
API throttling (annando)
|
API throttling (annando)
|
||||||
|
@ -2125,7 +2125,7 @@ Version 3.3 (2014-10-06)
|
||||||
|
|
||||||
Interaction
|
Interaction
|
||||||
ignoring of threads
|
ignoring of threads
|
||||||
for selected contects one can now get notifications when they post something, useful e.g. for forums
|
for selected contacts one can now get notifications when they post something, useful e.g. for forums
|
||||||
After a new friendica contact is added, the user is directed to the contact page of the new contact. (Instead of the remote profile)
|
After a new friendica contact is added, the user is directed to the contact page of the new contact. (Instead of the remote profile)
|
||||||
many improvement on all connectors, new app.net connector
|
many improvement on all connectors, new app.net connector
|
||||||
the algorithm for shortening postings when posting to limited platforms was improved
|
the algorithm for shortening postings when posting to limited platforms was improved
|
||||||
|
@ -2137,7 +2137,7 @@ Version 3.3 (2014-10-06)
|
||||||
updated the following libraries: smarty 3.1.19, fullcalendar 1.6.4, jquery 1.11, jgrowl 1.3.0
|
updated the following libraries: smarty 3.1.19, fullcalendar 1.6.4, jquery 1.11, jgrowl 1.3.0
|
||||||
added modernizer 2.8.3, better browser support
|
added modernizer 2.8.3, better browser support
|
||||||
updates to the DB structure for better performance
|
updates to the DB structure for better performance
|
||||||
preperations to use PDO in a later release
|
preparations to use PDO in a later release
|
||||||
new notification system
|
new notification system
|
||||||
web interface translations updated, addon translations now also possible separately from the main UI and done for CS, IT, RO, DE
|
web interface translations updated, addon translations now also possible separately from the main UI and done for CS, IT, RO, DE
|
||||||
vagrant support added for developers
|
vagrant support added for developers
|
||||||
|
@ -2175,7 +2175,7 @@ Version 3.2
|
||||||
small fixed
|
small fixed
|
||||||
edit profile photo link
|
edit profile photo link
|
||||||
better caching of pictures
|
better caching of pictures
|
||||||
threadening for outgoing emails
|
threading for outgoing emails
|
||||||
mail import
|
mail import
|
||||||
oembed thumbnails
|
oembed thumbnails
|
||||||
SN subscriptions & more SN like behaviour if snautofollow addon is used
|
SN subscriptions & more SN like behaviour if snautofollow addon is used
|
||||||
|
@ -2195,7 +2195,7 @@ Version 3.2
|
||||||
improving the install.php script
|
improving the install.php script
|
||||||
addons now can be members only
|
addons now can be members only
|
||||||
item object now contains the "edited" information left for the theme designers to show this info in a pretty way
|
item object now contains the "edited" information left for the theme designers to show this info in a pretty way
|
||||||
improvments to the user-import from exported account files
|
improvements to the user-import from exported account files
|
||||||
It's now possible to authenticate an ejabberd server against friendica.
|
It's now possible to authenticate an ejabberd server against friendica.
|
||||||
bugtracker moved to github
|
bugtracker moved to github
|
||||||
improvements to MySQL queries
|
improvements to MySQL queries
|
||||||
|
|
12
README.md
|
@ -17,18 +17,18 @@ Have a look at the [installation documentation](doc/Install.md) for further info
|
||||||
|
|
||||||
### Friendica Screenshots
|
### Friendica Screenshots
|
||||||
|
|
||||||
| ![Frio theme in mobile browser](images/screenshots/friendica-frio-mobile-profle-1.png?raw=true "Frio theme in mobile browser") ![Frio theme in mobile browser](images/screenshots/friendica-frio-mobile-profle-2.png?raw=true "Frio theme in mobile browser")
|
| ![Frio theme in mobile browser](images/screenshots/friendica-frio-mobile-profile-1.png?raw=true "Frio theme in mobile browser") ![Frio theme in mobile browser](images/screenshots/friendica-frio-mobile-profile-2.png?raw=true "Frio theme in mobile browser")
|
||||||
|:--:|
|
|:--:|
|
||||||
|*Frio theme, mobile browser. Timeline and composer view.*|
|
|*Frio theme, mobile browser. Timeline and composer view.*|
|
||||||
|![Frio theme in desktop browser](images/screenshots/friendica-frio-green-profle-1.png?raw=true "Frio theme in desktop browser")
|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-green-profile-1.png?raw=true "Frio theme in desktop browser")
|
||||||
|*Frio theme, desktop browser. Timeline view, contact info popped up, control menu open.*|
|
|*Frio theme, desktop browser. Timeline view, contact info popped up, control menu open.*|
|
||||||
|![Frio theme in desktop browser](images/screenshots/friendica-frio-green-profle-2.png?raw=true "Frio theme in desktop browser")
|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-green-profile-2.png?raw=true "Frio theme in desktop browser")
|
||||||
|*Frio theme, desktop browser. Menu open for controlling individual posts.*|
|
|*Frio theme, desktop browser. Menu open for controlling individual posts.*|
|
||||||
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profle-3.png?raw=true "Frio theme in desktop browser")
|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profile-3.png?raw=true "Frio theme in desktop browser")
|
||||||
|*Frio theme, desktop browser. Profile view, notification menu open.*|
|
|*Frio theme, desktop browser. Profile view, notification menu open.*|
|
||||||
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profle-2.png?raw=true "Frio theme in desktop browser")
|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profile-2.png?raw=true "Frio theme in desktop browser")
|
||||||
|*Number of new posts, in total and by group.*|
|
|*Number of new posts, in total and by group.*|
|
||||||
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profle-1.png?raw=true "Frio theme in desktop browser")
|
|![Frio theme in desktop browser](images/screenshots/friendica-frio-red-profile-1.png?raw=true "Frio theme in desktop browser")
|
||||||
|*Calender with popup of event.*|
|
|*Calender with popup of event.*|
|
||||||
|![Frio theme default colour in standard browser on tablet](images/screenshots/friendica-frio-default-profile-1.png?raw=true "Frio theme default colour in standard browser on tablet")
|
|![Frio theme default colour in standard browser on tablet](images/screenshots/friendica-frio-default-profile-1.png?raw=true "Frio theme default colour in standard browser on tablet")
|
||||||
|*Notifications menu and private messages counter, standard browser on tablet.*|
|
|*Notifications menu and private messages counter, standard browser on tablet.*|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
dir=$(cd "${0%[/\\]*}" > /dev/null; pwd)
|
dir=$(cd "${0%[/\\]*}" > /dev/null; pwd)
|
||||||
|
|
||||||
if [[ -d /proc/cygdrive && $(which php) == $(readlink -n /proc/cygdrive)/* ]]; then
|
if [[ -d /proc/cygdrive && $(which php) == $(readlink -n /proc/cygdrive)/* ]]; then
|
||||||
# We are in Cgywin using Windows php, so the path must be translated
|
# We are in Cygwin using Windows php, so the path must be translated
|
||||||
dir=$(cygpath -m "$dir");
|
dir=$(cygpath -m "$dir");
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ function show_syntax() {
|
||||||
echo -e "\t\"testfile\" is the name of a test file, for example lib/template.php" >&2
|
echo -e "\t\"testfile\" is the name of a test file, for example lib/template.php" >&2
|
||||||
echo -e "\nDatabase environment variables:\n" >&2
|
echo -e "\nDatabase environment variables:\n" >&2
|
||||||
echo -e "\t\"MYSQL_HOST\" Mysql Hostname (Default: localhost)" >&2
|
echo -e "\t\"MYSQL_HOST\" Mysql Hostname (Default: localhost)" >&2
|
||||||
echo -e "\t\"MYSQL_USDRNAME\" Mysql Username (Default: friendica)" >&2
|
echo -e "\t\"MYSQL_USERNAME\" Mysql Username (Default: friendica)" >&2
|
||||||
echo -e "\t\"MYSQL_DATABASE\" Mysql Database (Default: test)" >&2
|
echo -e "\t\"MYSQL_DATABASE\" Mysql Database (Default: test)" >&2
|
||||||
echo -e "\nOther environment variables:\n" >&2
|
echo -e "\nOther environment variables:\n" >&2
|
||||||
echo -e "\t\"TEST_SELECTION\" test a specific group of tests, can be one of: $TESTS" >&2
|
echo -e "\t\"TEST_SELECTION\" test a specific group of tests, can be one of: $TESTS" >&2
|
||||||
|
@ -65,7 +65,7 @@ else
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing depdendencies"
|
echo "Installing dependencies"
|
||||||
${PHP} "$COMPOSER" install
|
${PHP} "$COMPOSER" install
|
||||||
|
|
||||||
PHPUNIT="${BASEDIR}/vendor/bin/phpunit"
|
PHPUNIT="${BASEDIR}/vendor/bin/phpunit"
|
||||||
|
|
|
@ -71,7 +71,7 @@ CREATE TABLE IF NOT EXISTS `user` (
|
||||||
`verified` boolean NOT NULL DEFAULT '0' COMMENT 'user is verified through email',
|
`verified` boolean NOT NULL DEFAULT '0' COMMENT 'user is verified through email',
|
||||||
`blocked` boolean NOT NULL DEFAULT '0' COMMENT '1 for user is blocked',
|
`blocked` boolean NOT NULL DEFAULT '0' COMMENT '1 for user is blocked',
|
||||||
`blockwall` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to post to the profile page of the 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 unkown viewers',
|
`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',
|
`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',
|
`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 '',
|
`cntunkmail` int unsigned NOT NULL DEFAULT 10 COMMENT '',
|
||||||
|
@ -608,7 +608,7 @@ CREATE TABLE IF NOT EXISTS `diaspora-contact` (
|
||||||
`gsid` int unsigned COMMENT 'Global Server ID',
|
`gsid` int unsigned COMMENT 'Global Server ID',
|
||||||
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
|
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
|
||||||
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
|
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
|
||||||
`interacting_count` int unsigned DEFAULT 0 COMMENT 'Number of contacts this contact interactes with',
|
`interacting_count` int unsigned DEFAULT 0 COMMENT 'Number of contacts this contact interacts with',
|
||||||
`interacted_count` int unsigned DEFAULT 0 COMMENT 'Number of contacts that interacted with this contact',
|
`interacted_count` int unsigned DEFAULT 0 COMMENT 'Number of contacts that interacted with this contact',
|
||||||
`post_count` int unsigned DEFAULT 0 COMMENT 'Number of posts and comments',
|
`post_count` int unsigned DEFAULT 0 COMMENT 'Number of posts and comments',
|
||||||
PRIMARY KEY(`uri-id`),
|
PRIMARY KEY(`uri-id`),
|
||||||
|
@ -880,7 +880,7 @@ CREATE TABLE IF NOT EXISTS `mail` (
|
||||||
`guid` varbinary(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this private message',
|
`guid` varbinary(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this private message',
|
||||||
`from-name` varchar(255) NOT NULL DEFAULT '' COMMENT 'name of the sender',
|
`from-name` varchar(255) NOT NULL DEFAULT '' COMMENT 'name of the sender',
|
||||||
`from-photo` varbinary(383) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender',
|
`from-photo` varbinary(383) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender',
|
||||||
`from-url` varbinary(383) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender',
|
`from-url` varbinary(383) NOT NULL DEFAULT '' COMMENT 'profile link of the sender',
|
||||||
`contact-id` varbinary(255) COMMENT 'contact.id',
|
`contact-id` varbinary(255) COMMENT 'contact.id',
|
||||||
`author-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the author of the mail',
|
`author-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the author of the mail',
|
||||||
`convid` int unsigned COMMENT 'conv.id',
|
`convid` int unsigned COMMENT 'conv.id',
|
||||||
|
|
|
@ -305,7 +305,7 @@ Returns [Private Messages](help/API-Entities#Private+message) matching the provi
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
* `searchstring`: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored)
|
* `searchstring`: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored)
|
||||||
* `getText` (optional): `plain`|`html` If ommited, the title is prepended to the plaintext body in the `text` attribute of the private message objects.
|
* `getText` (optional): `plain`|`html` If omitted, the title is prepended to the plaintext body in the `text` attribute of the private message objects.
|
||||||
* `getUserObjects` (optional): `true`|`false` If `false`, the `sender` and `recipient` attributes of the private message object are absent.
|
* `getUserObjects` (optional): `true`|`false` If `false`, the `sender` and `recipient` attributes of the private message object are absent.
|
||||||
|
|
||||||
#### Return values
|
#### Return values
|
||||||
|
@ -646,7 +646,7 @@ On error:
|
||||||
|
|
||||||
* 403 FORBIDDEN: if not authenticated
|
* 403 FORBIDDEN: if not authenticated
|
||||||
* 400 BADREQUEST: "no albumname specified", "album not available"
|
* 400 BADREQUEST: "no albumname specified", "album not available"
|
||||||
* 500 INTERNALSERVERERROR: "problem with deleting item occured", "unknown error - deleting from database failed"
|
* 500 INTERNALSERVERERROR: "problem with deleting item occurred", "unknown error - deleting from database failed"
|
||||||
|
|
||||||
### POST api/friendica/photoalbum/update
|
### POST api/friendica/photoalbum/update
|
||||||
|
|
||||||
|
@ -839,7 +839,8 @@ A Mastodon [Status Entity](https://docs.joinmastodon.org/entities/Status/)
|
||||||
"poll": null,
|
"poll": null,
|
||||||
"friendica": {
|
"friendica": {
|
||||||
"title": "",
|
"title": "",
|
||||||
"dislikes_count": 1
|
"dislikes_count": 1,
|
||||||
|
"disliked": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -886,7 +887,7 @@ Removes the dislike mark (if it exists) on this status for this user
|
||||||
A Mastodon [Status Entity](https://docs.joinmastodon.org/entities/Status/)
|
A Mastodon [Status Entity](https://docs.joinmastodon.org/entities/Status/)
|
||||||
|
|
||||||
#### Example:
|
#### Example:
|
||||||
`https://<server_name>/api/friendica/statuses/341/dislike`
|
`https://<server_name>/api/friendica/statuses/341/undislike`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -913,7 +914,8 @@ A Mastodon [Status Entity](https://docs.joinmastodon.org/entities/Status/)
|
||||||
"poll": null,
|
"poll": null,
|
||||||
"friendica": {
|
"friendica": {
|
||||||
"title": "",
|
"title": "",
|
||||||
"dislikes_count": 0
|
"dislikes_count": 0,
|
||||||
|
"disliked": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -68,6 +68,7 @@ Extensions to the [Mastodon Status Entities](https://docs.joinmastodon.org/entit
|
||||||
* `delivery_queue_done`: Total number of remote servers that have successfully been federated to so far.
|
* `delivery_queue_done`: Total number of remote servers that have successfully been federated to so far.
|
||||||
* `delivery_queue_failed`: Total number of remote servers that have we failed to federate to so far.
|
* `delivery_queue_failed`: Total number of remote servers that have we failed to federate to so far.
|
||||||
* `dislikes_count`: The number of dislikes that a status has accumulated according to the server.
|
* `dislikes_count`: The number of dislikes that a status has accumulated according to the server.
|
||||||
|
* `disliked`: Whether the API user disliked the status.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
```json
|
```json
|
||||||
|
@ -264,7 +265,7 @@ Example:
|
||||||
|
|
||||||
## Currently unimplemented endpoints
|
## Currently unimplemented endpoints
|
||||||
|
|
||||||
These emdpoints are planned to be implemented somewhere in the future.
|
These endpoints are planned to be implemented somewhere in the future.
|
||||||
|
|
||||||
- [`POST /api/v1/accounts/:id/remove_from_followers`](https://github.com/mastodon/mastodon/pull/16864)
|
- [`POST /api/v1/accounts/:id/remove_from_followers`](https://github.com/mastodon/mastodon/pull/16864)
|
||||||
- [`GET /api/v1/accounts/familiar_followers`](https://github.com/mastodon/mastodon/pull/17700)
|
- [`GET /api/v1/accounts/familiar_followers`](https://github.com/mastodon/mastodon/pull/17700)
|
||||||
|
|
|
@ -10,7 +10,7 @@ Not all Friendica sites allow open registration.
|
||||||
If registration is allowed, you will see a "Register" link immediately below the login prompt on the site's home page.
|
If registration is allowed, you will see a "Register" link immediately below the login prompt on the site's home page.
|
||||||
Following this link will take you to the site registration page.
|
Following this link will take you to the site registration page.
|
||||||
The strength of our network is that lots of different sites are all completely compatible with each other.
|
The strength of our network is that lots of different sites are all completely compatible with each other.
|
||||||
If the site you're visting doesn't allow registration, or you think you might prefer another one, there is a [list of public servers here](https://dir.friendica.social/servers) and hopefully you will find one that meets your needs.
|
If the site you're visiting doesn't allow registration, or you think you might prefer another one, there is a [list of public servers here](https://dir.friendica.social/servers) and hopefully you will find one that meets your needs.
|
||||||
|
|
||||||
If you'd like to have your own server, you can do that too.
|
If you'd like to have your own server, you can do that too.
|
||||||
Visit [the Friendica website](http://friendi.ca/) to download the code with setup instructions.
|
Visit [the Friendica website](http://friendi.ca/) to download the code with setup instructions.
|
||||||
|
|
|
@ -100,7 +100,7 @@ See doxygen documentation of `IWritableStorage` interface for details about each
|
||||||
|
|
||||||
## Register a storage backend class
|
## Register a storage backend class
|
||||||
|
|
||||||
Each backend must be registered in the system when the plugin is installed, to be aviable.
|
Each backend must be registered in the system when the plugin is installed, to be available.
|
||||||
|
|
||||||
`DI::facStorage()->register(string $class)` is used to register the backend class.
|
`DI::facStorage()->register(string $class)` is used to register the backend class.
|
||||||
|
|
||||||
|
@ -140,18 +140,18 @@ abstract class StorageTest
|
||||||
|
|
||||||
There are two intended types of exceptions for storages
|
There are two intended types of exceptions for storages
|
||||||
|
|
||||||
### `ReferenceStorageExecption`
|
### `ReferenceStorageException`
|
||||||
|
|
||||||
This storage exception should be used in case the caller tries to use an invalid references.
|
This storage exception should be used in case the caller tries to use an invalid references.
|
||||||
This could happen in case the caller tries to delete or update an unknown reference.
|
This could happen in case the caller tries to delete or update an unknown reference.
|
||||||
The implementation of the storage backend must not ignore invalid references.
|
The implementation of the storage backend must not ignore invalid references.
|
||||||
|
|
||||||
Avoid throwing the common `StorageExecption` instead of the `ReferenceStorageException` at this particular situation!
|
Avoid throwing the common `StorageException` instead of the `ReferenceStorageException` at this particular situation!
|
||||||
|
|
||||||
### `StorageException`
|
### `StorageException`
|
||||||
|
|
||||||
This is the common exception in case unexpected errors happen using the storage backend.
|
This is the common exception in case unexpected errors happen using the storage backend.
|
||||||
If there's a predecessor to this exception (e.g. you caught an exception and are throwing this execption), you should add the predecessor for transparency reasons.
|
If there's a predecessor to this exception (e.g. you caught an exception and are throwing this exception), you should add the predecessor for transparency reasons.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ The file is `addon/samplestorage/samplestorage.php`
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Name: Sample Storage Addon
|
* Name: Sample Storage Addon
|
||||||
* Description: A sample addon which implements an unusefull storage backend
|
* Description: A sample addon which implements a very limited storage backend
|
||||||
* Version: 1.0.0
|
* Version: 1.0.0
|
||||||
* Author: Alice <https://alice.social/~alice>
|
* Author: Alice <https://alice.social/~alice>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -44,7 +44,7 @@ Uninstalling an addon automatically unregisters any hook it registered, but if y
|
||||||
|
|
||||||
The install and uninstall functions will be called (i.e. re-installed) if the addon changes after installation.
|
The install and uninstall functions will be called (i.e. re-installed) if the addon changes after installation.
|
||||||
Therefore your uninstall should not destroy data and install should consider that data may already exist.
|
Therefore your uninstall should not destroy data and install should consider that data may already exist.
|
||||||
Future extensions may provide for "setup" amd "remove".
|
Future extensions may provide for "setup" and "remove".
|
||||||
|
|
||||||
## PHP addon hooks
|
## PHP addon hooks
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ function <addon>_footer()
|
||||||
### JavaScript hooks
|
### JavaScript hooks
|
||||||
|
|
||||||
The main Friendica script provides hooks via events dispatched on the `document` property.
|
The main Friendica script provides hooks via events dispatched on the `document` property.
|
||||||
In your Javascript file included as described above, add your event listener like this:
|
In your JavaScript file included as described above, add your event listener like this:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
document.addEventListener(name, callback);
|
document.addEventListener(name, callback);
|
||||||
|
@ -133,7 +133,7 @@ document.addEventListener(name, callback);
|
||||||
- *name* is the name of the hook and corresponds to a known Friendica JavaScript hook.
|
- *name* is the name of the hook and corresponds to a known Friendica JavaScript hook.
|
||||||
- *callback* is a JavaScript anonymous function to execute.
|
- *callback* is a JavaScript anonymous function to execute.
|
||||||
|
|
||||||
More info about Javascript event listeners: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
|
More info about JavaScript event listeners: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
|
||||||
|
|
||||||
#### Current JavaScript hooks
|
#### Current JavaScript hooks
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ $data = [
|
||||||
##### With multiple submit buttons
|
##### With multiple submit buttons
|
||||||
```php
|
```php
|
||||||
$data = [
|
$data = [
|
||||||
'addon' => 'catavar',
|
'addon' => 'catavatar',
|
||||||
'title' => DI::l10n()->t('Cat Avatar Settings'),
|
'title' => DI::l10n()->t('Cat Avatar Settings'),
|
||||||
'html' => $html,
|
'html' => $html,
|
||||||
'submit' => [
|
'submit' => [
|
||||||
|
@ -402,7 +402,7 @@ Called prior to output of personal XRD file.
|
||||||
|
|
||||||
### home_content
|
### home_content
|
||||||
Called prior to output home page content, shown to unlogged users.
|
Called prior to output home page content, shown to unlogged users.
|
||||||
`$b` is the HTML sring of section region.
|
`$b` is the HTML string of section region.
|
||||||
|
|
||||||
### contact_edit
|
### contact_edit
|
||||||
Called when editing contact details on an individual from the Contacts page.
|
Called when editing contact details on an individual from the Contacts page.
|
||||||
|
@ -425,7 +425,7 @@ Called after HTML content functions have completed.
|
||||||
|
|
||||||
### footer
|
### footer
|
||||||
Called after HTML content functions have completed.
|
Called after HTML content functions have completed.
|
||||||
Deferred Javascript files should be registered using this hook.
|
Deferred JavaScript files should be registered using this hook.
|
||||||
`$b` is (string) HTML of footer div/element.
|
`$b` is (string) HTML of footer div/element.
|
||||||
|
|
||||||
### avatar_lookup
|
### avatar_lookup
|
||||||
|
|
|
@ -39,7 +39,7 @@ You can use several servers to create an account:
|
||||||
|
|
||||||
### 1. Basics
|
### 1. Basics
|
||||||
|
|
||||||
At first you have to get the current version. You can either pull it from [Github](https://github.com) like so:
|
At first you have to get the current version. You can either pull it from [GitHub](https://github.com) like so:
|
||||||
|
|
||||||
$> cd /var/www/virtual/YOURSPACE/html/addon; git pull
|
$> cd /var/www/virtual/YOURSPACE/html/addon; git pull
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ Composer requires PHP CLI and the following examples assume it's available syste
|
||||||
|
|
||||||
#### From Archive
|
#### From Archive
|
||||||
|
|
||||||
If you just unpacked a Friendica release archive, you don't have to use Commposer at all, all the required libraries are already bundled in the archive.
|
If you just unpacked a Friendica release archive, you don't have to use Composer at all, all the required libraries are already bundled in the archive.
|
||||||
|
|
||||||
#### Installing with Git
|
#### Installing with Git
|
||||||
|
|
||||||
|
|
|
@ -250,7 +250,7 @@ key = value
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>
|
<td><pre>
|
||||||
[config]
|
[config]
|
||||||
register_policty = REGISTER_CLOSED
|
register_policy = REGISTER_CLOSED
|
||||||
</pre></td>
|
</pre></td>
|
||||||
<td><pre>
|
<td><pre>
|
||||||
'config' => [
|
'config' => [
|
||||||
|
|
|
@ -47,7 +47,7 @@ function doSomething(\Friendica\Contact\Introductions\Collection\Introductions $
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var $intros \Friendica\Contact\Introductions\Collection\Introductions */
|
/** @var $intros \Friendica\Contact\Introductions\Collection\Introductions */
|
||||||
$intros = \Friendica\DI::intro()->selecForUser(Session::getLocalUser());
|
$intros = \Friendica\DI::intro()->selectForUser(Session::getLocalUser());
|
||||||
|
|
||||||
doSomething($intros);
|
doSomething($intros);
|
||||||
```
|
```
|
||||||
|
|
|
@ -95,7 +95,7 @@ Please remove all the `require_once` mentions of the former file, as they will p
|
||||||
## Miscellaneous tips
|
## Miscellaneous tips
|
||||||
|
|
||||||
When you are done with moving the class, please run `php bin/console.php typo` from the Friendica base directory to check for obvious mistakes.
|
When you are done with moving the class, please run `php bin/console.php typo` from the Friendica base directory to check for obvious mistakes.
|
||||||
Howevever, this tool isn't bullet-proof, and a staging install of Friendica is recommended to test your class move without impairing your production server if you host one.
|
However, this tool isn't bullet-proof, and a staging install of Friendica is recommended to test your class move without impairing your production server if you host one.
|
||||||
|
|
||||||
Most of Friendica processes are run in the background, so make sure to turn on your debug log to check for errors that wouldn't show up while simply browsing Friendica.
|
Most of Friendica processes are run in the background, so make sure to turn on your debug log to check for errors that wouldn't show up while simply browsing Friendica.
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ For documentation we use the standard of *one sentence per line* for the `md` fi
|
||||||
|
|
||||||
#### Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer)
|
#### Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer)
|
||||||
|
|
||||||
This tool checks your files against a variety of coding standards, including PSR-2, and ouputs a report of all the standard violations.
|
This tool checks your files against a variety of coding standards, including PSR-2, and outputs a report of all the standard violations.
|
||||||
You can simply install it through PEAR: `pear install PHP_CodeSniffer`
|
You can simply install it through PEAR: `pear install PHP_CodeSniffer`
|
||||||
Once it is installed and available in your PATH, here's the command to run before committing your work:
|
Once it is installed and available in your PATH, here's the command to run before committing your work:
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ Here's the command to automatically fix the files you created/modified:
|
||||||
|
|
||||||
$> phpcbf --standard=ruleset.xml <file or directory>
|
$> phpcbf --standard=ruleset.xml <file or directory>
|
||||||
|
|
||||||
If the command-line tools `diff` and `patch` are unavailabe for you, `phpcbf` can use slightly slower PHP equivalents by using the `--no-patch` argument.
|
If the command-line tools `diff` and `patch` are unavailable for you, `phpcbf` can use slightly slower PHP equivalents by using the `--no-patch` argument.
|
||||||
|
|
||||||
### Code documentation
|
### Code documentation
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ Friendica Documentation and Resources
|
||||||
|
|
||||||
* [Get started](help/Developers-Intro)
|
* [Get started](help/Developers-Intro)
|
||||||
* Set up development environment
|
* Set up development environment
|
||||||
* [Help on Github](help/Github)
|
* [Help on GitHub](help/GitHub)
|
||||||
* [Help on Vagrant](help/Vagrant)
|
* [Help on Vagrant](help/Vagrant)
|
||||||
* [Bugs and Issues](help/Bugs-and-Issues)
|
* [Bugs and Issues](help/Bugs-and-Issues)
|
||||||
* Code structure
|
* Code structure
|
||||||
|
@ -69,7 +69,7 @@ Friendica Documentation and Resources
|
||||||
* Ways to get Support
|
* Ways to get Support
|
||||||
* Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
|
* Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers)
|
||||||
* [Mailing List Archive](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) you can subscribe to the list by sending an email to ``support-request(at)friendi.ca?subject=subscribe``
|
* [Mailing List Archive](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) you can subscribe to the list by sending an email to ``support-request(at)friendi.ca?subject=subscribe``
|
||||||
* Community chat rooms (the IRC, Matrix and XMPP rooms are bridget) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/)
|
* Community chat rooms (the IRC, Matrix and XMPP rooms are bridged) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/)
|
||||||
* XMPP/Jabber MUC: support(at)forum.friendi.ca
|
* XMPP/Jabber MUC: support(at)forum.friendi.ca
|
||||||
* IRC: #friendica at [libera.chat](https://web.libera.chat/?channels=#friendica)
|
* IRC: #friendica at [libera.chat](https://web.libera.chat/?channels=#friendica)
|
||||||
* Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) or [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) at matrix.org
|
* Matrix: [#friendi.ca](https://matrix.to/#/#friendi.ca:matrix.org) or [#friendica-en](https://matrix.to/#/#friendica-en:matrix.org) at matrix.org
|
||||||
|
|
|
@ -81,6 +81,6 @@ Please refer to external documentation for a more detailed explanation how to se
|
||||||
|
|
||||||
### Database
|
### Database
|
||||||
|
|
||||||
There are scripts like [tuning-primer.sh](http://www.day32.com/MySQL/) and [mysqltuner.pl](http://mysqltuner.pl) that analyze your database server and give hints on values that could be changed.
|
There are scripts like [tuning-primer.sh](https://github.com/BMDan/tuning-primer.sh) and [mysqltuner.pl](https://github.com/major/MySQLTuner-perl/blob/master/mysqltuner.pl) that analyze your database server and give hints on values that could be changed.
|
||||||
|
|
||||||
Please enable the slow query log. This helps to find performance problems.
|
Please enable the slow query log. This helps to find performance problems.
|
||||||
|
|
|
@ -51,10 +51,13 @@ For alternative server configurations (such as Nginx server and MariaDB database
|
||||||
### Alternative Installation Methods
|
### Alternative Installation Methods
|
||||||
|
|
||||||
This guide will walk you through the manual installation process of Friendica.
|
This guide will walk you through the manual installation process of Friendica.
|
||||||
If this is nothing for you, you might be interested in
|
If this is nothing for you, you might be interested in the following:
|
||||||
|
|
||||||
* the [Friendica Docker image](https://github.com/friendica/docker) or
|
* the [Friendica Docker image](https://github.com/friendica/docker)
|
||||||
* how to [install Friendica with YunoHost](https://github.com/YunoHost-Apps/friendica_ynh).
|
* how to [install Friendica with YunoHost](https://github.com/YunoHost-Apps/friendica_ynh)
|
||||||
|
* [Tutorial: Creating a Friendica Server with Ubuntu 22.04](https://nequalsonelifestyle.com/2022/07/30/creating-friendica-server-ubuntu/)
|
||||||
|
* [Setting Up Friendica Daemon as a Systemd Service Tutorial](https://nequalsonelifestyle.com/2022/08/04/setting-up-friendica-daemon-systemd-service/)
|
||||||
|
* [Setting up Friendica on Unraid](https://www.jenovarain.com/2023/03/setting-up-friendica-on-unraid/) (NAS)
|
||||||
|
|
||||||
### Get Friendica
|
### Get Friendica
|
||||||
|
|
||||||
|
@ -228,7 +231,7 @@ Copy `.htaccess-dist` to `.htaccess` (be careful under Windows) to have working
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
cp .htacces-dist .htaccess
|
cp .htaccess-dist .htaccess
|
||||||
|
|
||||||
*Note*: Do **not** rename the `.htaccess-dist` file as it is tracked by GIT and renaming will cause a dirty working directory.
|
*Note*: Do **not** rename the `.htaccess-dist` file as it is tracked by GIT and renaming will cause a dirty working directory.
|
||||||
|
|
||||||
|
@ -350,7 +353,7 @@ Often this will need to be resolved with your hosting provider or (if self-hoste
|
||||||
First check your file permissions.
|
First check your file permissions.
|
||||||
Your website and all contents must generally be world-readable.
|
Your website and all contents must generally be world-readable.
|
||||||
|
|
||||||
Ensure that mod-rewite is installed and working, and that your `.htaccess` file
|
Ensure that mod-rewrite is installed and working, and that your `.htaccess` file
|
||||||
is being used. To verify the latter, create a file `test.out` containing the
|
is being used. To verify the latter, create a file `test.out` containing the
|
||||||
word "test" in the top directory of Friendica, make it world readable and point
|
word "test" in the top directory of Friendica, make it world readable and point
|
||||||
your web browser to
|
your web browser to
|
||||||
|
@ -463,9 +466,11 @@ After that, restart mysql and try again.
|
||||||
|
|
||||||
### Your worker never or rarely runs
|
### Your worker never or rarely runs
|
||||||
|
|
||||||
Friendica is coded to always play nice. It checks whether the host machine is idle enough and if it _seems_ to be overloaded, it intermittently refuses to process the worker queue.
|
Friendica is coded to always play nice.
|
||||||
|
It checks whether the host machine is idle enough and if it _seems_ to be overloaded, it intermittently refuses to process the worker queue.
|
||||||
|
|
||||||
Such checks originate from the days of single-user single-core machines and involves thresholds that you should adjust based on the number of exclusive CPU cores you have. See this issue for more information:
|
Such checks originate from the days of single-user single-core machines and involves thresholds that you should adjust based on the number of exclusive CPU cores you have.
|
||||||
|
See this issue for more information:
|
||||||
|
|
||||||
* https://github.com/friendica/friendica/issues/10131
|
* https://github.com/friendica/friendica/issues/10131
|
||||||
|
|
||||||
|
@ -482,28 +487,40 @@ You tried to upload an image up to 100kB and it failed.
|
||||||
|
|
||||||
You may not have the ownership or file mode set correctly if you are using the file system storage backend.
|
You may not have the ownership or file mode set correctly if you are using the file system storage backend.
|
||||||
|
|
||||||
Change the backend to database. If this solves it, that is what needs to be fixed.
|
Change the backend to database.
|
||||||
|
If this solves it, that is what needs to be fixed.
|
||||||
|
|
||||||
|
Verify in your PHP ini:
|
||||||
|
|
||||||
|
* `file_uploads`: should be `1`
|
||||||
|
* `upload_tmp_dir`: should be writable (falls back to system default temp) and not blocked by `open_basedir`
|
||||||
|
|
||||||
### Error uploading large files
|
### Error uploading large files
|
||||||
|
|
||||||
You may find `413 Request Entity Too Large` or `500 Internal Error` in the network inspector of the browser if the file is too large, for example if it is a video.
|
You may find `413 Request Entity Too Large` or `500 Internal Error` in the network inspector of the browser if the file is too large, for example if it is a video.
|
||||||
|
|
||||||
First try to upload a very small file, up to 100kB. If that succeeds, you will need to increase limits at multiple places, including on any web proxy that you are using.
|
First try to upload a very small file, up to 100kB.
|
||||||
|
If that succeeds, you will need to increase limits at multiple places, including on any web proxy that you are using.
|
||||||
|
Which one applies to you depends on your installation.
|
||||||
|
|
||||||
In your PHP ini:
|
In your PHP ini:
|
||||||
|
|
||||||
* `upload_max_filesize`: defaults to 2MB
|
* `upload_max_filesize`: defaults to 2MB
|
||||||
* `post_max_size`: defaults to 8MB, must be greater than `upload_max_filesize`
|
* `post_max_size`: defaults to 8MB, must be greater than `upload_max_filesize`
|
||||||
* `memory_limit`: defaults to 128MB, must be greater than `post_max_size`
|
* `memory_limit`: defaults to 128MB, must be greater than `post_max_size`
|
||||||
|
* `max_input_time`: time limit of an upload, defaults to -1, meaning it uses `max_execution_time` instead
|
||||||
|
* `max_execution_time`: defaults to 30 seconds, should be enough if you also set `max_input_time`
|
||||||
|
|
||||||
You should verify whether you changed them in the _right file_ by checking the web interface at the end of the overview on the `Admin` panel.
|
You should verify whether you changed them in the _right file_ by checking the web interface at the end of the overview on the `Admin` panel.
|
||||||
|
|
||||||
For Apache2:
|
In your Apache2 config:
|
||||||
|
|
||||||
* `LimitRequestBody`: defaults to unlimited
|
* `LimitRequestBody`: defaults to unlimited
|
||||||
|
* `FcgidMaxRequestLen`: defaults to 128kB
|
||||||
* `SSLRenegBufferSize`: defaults to 128kB, only if your site uses TLS and perhaps only when using `SSLVerifyClient` or `SSLVerifyDepth`
|
* `SSLRenegBufferSize`: defaults to 128kB, only if your site uses TLS and perhaps only when using `SSLVerifyClient` or `SSLVerifyDepth`
|
||||||
|
* Remove `LoadModule reqtimeout_module modules / mod_reqtimeout.so` or adjust `RequestReadTimeout`: defaults to 20 seconds and >= 500 byte/second
|
||||||
|
|
||||||
For nginx:
|
In your nginx config:
|
||||||
|
|
||||||
* `client_max_body_size`: defaults to 1MB
|
* `client_max_body_size`: defaults to 1MB
|
||||||
|
|
||||||
|
@ -511,7 +528,28 @@ If you are using the database backend for storage, increase this in your SQL con
|
||||||
|
|
||||||
* `max_allowed_packet`: defaults to 32MB
|
* `max_allowed_packet`: defaults to 32MB
|
||||||
|
|
||||||
If you use the ModSecurity WAF:
|
In your ModSecurity WAF config:
|
||||||
|
|
||||||
* `SecRequestBodyLimit`: defaults to 12MB
|
* `SecRequestBodyLimit`: defaults to 12MB
|
||||||
* `SecRequestBodyNoFilesLimit`: defaults to 128kB, should not apply to Friendica
|
* `SecRequestBodyNoFilesLimit`: defaults to 128kB, should not apply to Friendica
|
||||||
|
|
||||||
|
In the end, you will need to restart all services that you have changed configuration for.
|
||||||
|
If you don't know which ones these are, just reboot.
|
||||||
|
|
||||||
|
### Diaspora support is not activated
|
||||||
|
|
||||||
|
You get this error when you try to add a Diaspora contact.
|
||||||
|
|
||||||
|
You can enable it from the web interface in `Admin -> Site -> Policies -> Enable diaspora* support`.
|
||||||
|
You may also set it manually in the config file or in the database within the `diaspora_enabled` key of the `system` category.
|
||||||
|
|
||||||
|
### Upgrade failed due to DB migration timeout
|
||||||
|
|
||||||
|
Altering of a table may fail if it contains a large number of rows.
|
||||||
|
First verify the existing timeout (50s by default):
|
||||||
|
|
||||||
|
`show global variables like "innodb_lock_wait_timeout";`
|
||||||
|
|
||||||
|
Then increase it:
|
||||||
|
|
||||||
|
`set global innodb_lock_wait_timeout=600;`
|
||||||
|
|
|
@ -50,12 +50,12 @@ This will take you through a similar process.
|
||||||
|
|
||||||
Connect to users of alternate networks
|
Connect to users of alternate networks
|
||||||
---
|
---
|
||||||
### Across the Federation and Fedivese
|
### Across the Federation and Fediverse
|
||||||
You can also use your Identity Address or other people's Identity Addresses to become friends across the so-called Federation/Fedivese of open source social media.
|
You can also use your Identity Address or other people's Identity Addresses to become friends across the so-called Federation/Fediverse of open source social media.
|
||||||
Currently, Friendica supports connections with people on diaspora*, Red, Hubzilla, GNU Social, StatusNet, Mastodon, Pleroma, socialhome, and ganggo platforms.
|
Currently, Friendica supports connections with people on diaspora*, Red, Hubzilla, GNU Social, StatusNet, Mastodon, Pleroma, socialhome, and ganggo platforms.
|
||||||
|
|
||||||
If you know (for instance) "alice" on gnusocial.net (a GNU Social site) you could put alice@gnusocial.net into your Contact page and become friends across networks.
|
If you know (for instance) "alice" on gnusocial.net (a GNU Social site) you could put alice@gnusocial.net into your Contact page and become friends across networks.
|
||||||
Likwise you can put in the URL to Alice's gnusocial.net page, if you wish.
|
Likewise you can put in the URL to Alice's gnusocial.net page, if you wish.
|
||||||
Note: Some versions of GNU Social software may require the full URL to your profile and may not work with the identity address.
|
Note: Some versions of GNU Social software may require the full URL to your profile and may not work with the identity address.
|
||||||
|
|
||||||
People on these networks can also initiate contact with you, if they know your contact details.
|
People on these networks can also initiate contact with you, if they know your contact details.
|
||||||
|
@ -74,7 +74,7 @@ Create an email contact with for example Alice on Gmail, enter her email in foll
|
||||||
In order to avoid abuse or spam, you must have an email from Alice with the correct email address in your email inbox.
|
In order to avoid abuse or spam, you must have an email from Alice with the correct email address in your email inbox.
|
||||||
|
|
||||||
Subscribing to mailing lists is done in the same way, but without the use of the "mailto:" prefix.
|
Subscribing to mailing lists is done in the same way, but without the use of the "mailto:" prefix.
|
||||||
To subscribe to a mailing list, enter the email in following example format "mailling-list@list-server.net".
|
To subscribe to a mailing list, enter the email in following example format "mailing-list@list-server.net".
|
||||||
|
|
||||||
### Syndication feeds
|
### Syndication feeds
|
||||||
You can "follow" almost anybody or any website that produces a syndication feed (RSS/Atom,etc.).
|
You can "follow" almost anybody or any website that produces a syndication feed (RSS/Atom,etc.).
|
||||||
|
|
|
@ -19,7 +19,7 @@ Friendica contacts
|
||||||
---
|
---
|
||||||
Friendica will recreate your account on the new server, with your contacts and groups.
|
Friendica will recreate your account on the new server, with your contacts and groups.
|
||||||
A message is sent to Friendica contacts, to inform them about your move:
|
A message is sent to Friendica contacts, to inform them about your move:
|
||||||
If your contacts are runnning on an updated server, your details on their side will be automatically updated.
|
If your contacts are running on an updated server, your details on their side will be automatically updated.
|
||||||
|
|
||||||
GNU Social contacts
|
GNU Social contacts
|
||||||
---
|
---
|
||||||
|
|
|
@ -4,7 +4,7 @@ If you're not already logged in, do so in the frame below.
|
||||||
Once you've logged in (or if you are already logged in), you'll now be looking at your profile page.
|
Once you've logged in (or if you are already logged in), you'll now be looking at your profile page.
|
||||||
|
|
||||||
This is a bit like a Facebook wall.
|
This is a bit like a Facebook wall.
|
||||||
It's where all your status messgages are kept, and where your friends come to post on your wall.
|
It's where all your status messages are kept, and where your friends come to post on your wall.
|
||||||
|
|
||||||
To write your status, simply click on the Pencil & Paper icon in the top right (in the Frio theme), or click in the box that says "share" (other themes).
|
To write your status, simply click on the Pencil & Paper icon in the top right (in the Frio theme), or click in the box that says "share" (other themes).
|
||||||
When you do this, the posting dialog box will appear or the share box will expand.
|
When you do this, the posting dialog box will appear or the share box will expand.
|
||||||
|
|
|
@ -104,12 +104,12 @@ Default is false.
|
||||||
#### File storage backend
|
#### File storage backend
|
||||||
|
|
||||||
Set the backend used by Friendica to store uploaded file data.
|
Set the backend used by Friendica to store uploaded file data.
|
||||||
Two storage backends are avaiable with Friendica:
|
Two storage backends are available with Friendica:
|
||||||
|
|
||||||
- **Database** : Data is stored in a dedicated table in database (`storage`)
|
- **Database** : Data is stored in a dedicated table in database (`storage`)
|
||||||
- **Filesystem** : Data is stored as file on the filesystem.
|
- **Filesystem** : Data is stored as file on the filesystem.
|
||||||
|
|
||||||
More storage backends can be avaiable from third-party addons.
|
More storage backends can be available from third-party addons.
|
||||||
If you use those, please refer to the documentation of those addons for further information.
|
If you use those, please refer to the documentation of those addons for further information.
|
||||||
|
|
||||||
Default value is 'Database (legacy)': it's the legacy way used to store data directly in database.
|
Default value is 'Database (legacy)': it's the legacy way used to store data directly in database.
|
||||||
|
|
|
@ -52,5 +52,5 @@ The same rules apply as with names that spaces within tags are represented by th
|
||||||
It is therefore not possible to create a tag whose target contains an underscore.
|
It is therefore not possible to create a tag whose target contains an underscore.
|
||||||
|
|
||||||
Topical tags are also not linked if they are purely numeric, e.g. #1.
|
Topical tags are also not linked if they are purely numeric, e.g. #1.
|
||||||
If you wish to use a numerica hashtag, please add some descriptive text such as #2012-elections.
|
If you wish to use a numeric hashtag, please add some descriptive text such as #2012-elections.
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ If 2FA is already enabled and you want to add another device, you must re-config
|
||||||
### 1. Download an authenticator app
|
### 1. Download an authenticator app
|
||||||
|
|
||||||
Any authenticator app should work with Friendica.
|
Any authenticator app should work with Friendica.
|
||||||
Notheless, we recommend:
|
Nonetheless, we recommend:
|
||||||
|
|
||||||
- For iOS, [Matt Rubin's MIT-licensed Authenticator app](https://mattrubin.me/authenticator).
|
- For iOS, [Matt Rubin's MIT-licensed Authenticator app](https://mattrubin.me/authenticator).
|
||||||
- For Android, [andOTP](https://github.com/andOTP/andOTP).
|
- For Android, [andOTP](https://github.com/andOTP/andOTP).
|
||||||
|
@ -68,7 +68,7 @@ Instead, if you enabled two-factor authentication, you have to generate app-spec
|
||||||
|
|
||||||
You can generate as many app-specific passwords as you want, they will be shown once to you just after you generated it.
|
You can generate as many app-specific passwords as you want, they will be shown once to you just after you generated it.
|
||||||
Just copy and paste it in your third-party app in the Friendica account password input field at this point.
|
Just copy and paste it in your third-party app in the Friendica account password input field at this point.
|
||||||
We recommend generating a single app-specific password for each separate third-party app you are using, using a meaningul description of the target app (like "Frienqa on my Fairphone 2").
|
We recommend generating a single app-specific password for each separate third-party app you are using, using a meaningful description of the target app (like "Frienqa on my Fairphone 2").
|
||||||
|
|
||||||
You can also revoke any and all app-specific password you generated this way.
|
You can also revoke any and all app-specific password you generated this way.
|
||||||
This may log you out of the third-party application(s) you used the revoked app-specific password to log in with.
|
This may log you out of the third-party application(s) you used the revoked app-specific password to log in with.
|
||||||
|
|
|
@ -31,7 +31,7 @@ The mysql database is called "friendica", the mysql user and password both are "
|
||||||
Your local working directory is set up as a shared directory with the VM (/vagrant).
|
Your local working directory is set up as a shared directory with the VM (/vagrant).
|
||||||
7. Check the changes in your browser in the VM.
|
7. Check the changes in your browser in the VM.
|
||||||
Find the Friendica log file `/vagrant/logfile.out` on the VM or in the `logfile.out` in you local Friendica directory.
|
Find the Friendica log file `/vagrant/logfile.out` on the VM or in the `logfile.out` in you local Friendica directory.
|
||||||
8. Commit and push your changes directly back to Github.
|
8. Commit and push your changes directly back to GitHub.
|
||||||
|
|
||||||
If you want to stop vagrant after finishing your work, run the following command
|
If you want to stop vagrant after finishing your work, run the following command
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ Fields
|
||||||
| gsid | Global Server ID | int unsigned | YES | | NULL | |
|
| gsid | Global Server ID | int unsigned | YES | | NULL | |
|
||||||
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| created | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
|
| updated | | datetime | NO | | 0001-01-01 00:00:00 | |
|
||||||
| interacting_count | Number of contacts this contact interactes with | int unsigned | YES | | 0 | |
|
| interacting_count | Number of contacts this contact interacts with | int unsigned | YES | | 0 | |
|
||||||
| interacted_count | Number of contacts that interacted with this contact | int unsigned | YES | | 0 | |
|
| interacted_count | Number of contacts that interacted with this contact | int unsigned | YES | | 0 | |
|
||||||
| post_count | Number of posts and comments | int unsigned | YES | | 0 | |
|
| post_count | Number of posts and comments | int unsigned | YES | | 0 | |
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Fields
|
||||||
| guid | A unique identifier for this private message | varbinary(255) | NO | | | |
|
| guid | A unique identifier for this private message | varbinary(255) | NO | | | |
|
||||||
| from-name | name of the sender | varchar(255) | NO | | | |
|
| from-name | name of the sender | varchar(255) | NO | | | |
|
||||||
| from-photo | contact photo link of the sender | varbinary(383) | NO | | | |
|
| from-photo | contact photo link of the sender | varbinary(383) | NO | | | |
|
||||||
| from-url | profile linke of the sender | varbinary(383) | NO | | | |
|
| from-url | profile link of the sender | varbinary(383) | NO | | | |
|
||||||
| contact-id | contact.id | varbinary(255) | YES | | NULL | |
|
| contact-id | contact.id | varbinary(255) | YES | | NULL | |
|
||||||
| author-id | Link to the contact table with uid=0 of the author of the mail | int unsigned | YES | | NULL | |
|
| author-id | Link to the contact table with uid=0 of the author of the mail | int unsigned | YES | | NULL | |
|
||||||
| convid | conv.id | int unsigned | YES | | NULL | |
|
| convid | conv.id | int unsigned | YES | | NULL | |
|
||||||
|
|
|
@ -32,7 +32,7 @@ Fields
|
||||||
| verified | user is verified through email | boolean | NO | | 0 | |
|
| verified | user is verified through email | boolean | NO | | 0 | |
|
||||||
| blocked | 1 for user is blocked | boolean | NO | | 0 | |
|
| blocked | 1 for user is blocked | boolean | NO | | 0 | |
|
||||||
| blockwall | Prohibit contacts to post to the profile page of the user | boolean | NO | | 0 | |
|
| blockwall | Prohibit contacts to post to the profile page of the user | boolean | NO | | 0 | |
|
||||||
| hidewall | Hide profile details from unkown viewers | 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 | |
|
| 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 | |
|
| unkmail | Permit unknown people to send private mails to this user | boolean | NO | | 0 | |
|
||||||
| cntunkmail | | int unsigned | NO | | 10 | |
|
| cntunkmail | | int unsigned | NO | | 10 | |
|
||||||
|
|
|
@ -27,7 +27,7 @@ Der Quellcode von Friendica Red ist [hier](https://github.com/friendica/red) zu
|
||||||
|
|
||||||
Addons findest Du auf [dieser Seite](https://github.com/friendica/friendica-addons).
|
Addons findest Du auf [dieser Seite](https://github.com/friendica/friendica-addons).
|
||||||
|
|
||||||
Wenn Du neue Themen suchst, findest Du sie auf [Friendica-Themes.com](http://friendica-themes.com/).
|
Wenn Du neue Themen suchst, findest Du sie auf [github.com/bkil/friendica-themes](https://github.com/bkil/friendica-themes).
|
||||||
|
|
||||||
<a name="adminaccount1"></a>
|
<a name="adminaccount1"></a>
|
||||||
### Ich habe meine E-Mail Adresse geändern und jetzt ist das Admin Panel verschwunden?
|
### Ich habe meine E-Mail Adresse geändern und jetzt ist das Admin Panel verschwunden?
|
||||||
|
|
|
@ -95,6 +95,6 @@ Nutze externe Dokumente, um eine detailiertere Erklärung für die Einrichtung e
|
||||||
|
|
||||||
### Database
|
### Database
|
||||||
|
|
||||||
Es gibt Skripte wie [tuning-primer.sh](http://www.day32.com/MySQL/) und [mysqltuner.pl](http://mysqltuner.pl), die den Datenbankserver analysieren und Hinweise darauf geben, welche Werte verändert werden könnten.
|
Es gibt Skripte wie [tuning-primer.sh](https://github.com/BMDan/tuning-primer.sh) und [mysqltuner.pl](https://github.com/major/MySQLTuner-perl/blob/master/mysqltuner.pl), die den Datenbankserver analysieren und Hinweise darauf geben, welche Werte verändert werden könnten.
|
||||||
|
|
||||||
Aktivere hierfür die "Slow query" Log-Datei, um Performanceprobleme zu erkennen.
|
Aktivere hierfür die "Slow query" Log-Datei, um Performanceprobleme zu erkennen.
|
||||||
|
|
|
@ -9,7 +9,7 @@ Depending on the theme you are using, there might be an additional link from the
|
||||||
|
|
||||||
## Event Overview
|
## Event Overview
|
||||||
|
|
||||||
The overview page shows the calendar of the current month, plus a few days days at the beginning and the end.
|
The overview page shows the calendar of the current month, plus a few days at the beginning and the end.
|
||||||
Listed are all events for this month, created by you, or shared with you by your contacts,
|
Listed are all events for this month, created by you, or shared with you by your contacts,
|
||||||
This includes birthday reminders for contacts who share their birthday with you.
|
This includes birthday reminders for contacts who share their birthday with you.
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ Form Templates
|
||||||
To guarantee a consistent look and feel for input forms, i.e. in the settings sections, there are templates for the basic form fields.
|
To guarantee a consistent look and feel for input forms, i.e. in the settings sections, there are templates for the basic form fields.
|
||||||
They are initialized with an array of data, depending on the tyle of the field.
|
They are initialized with an array of data, depending on the tyle of the field.
|
||||||
|
|
||||||
All of these take an array holding the values, e.g. for a one line text input field, which is required and should be used to type email addesses use something along the lines of:
|
All of these take an array holding the values, e.g. for a one line text input field, which is required and should be used to type email addresses use something along the lines of:
|
||||||
|
|
||||||
'$adminmail' => array('adminmail', DI::l10n()->t('Site administrator email address'), $adminmail, DI::l10n()->t('Your account email address must match this in order to use the web admin panel.'), 'required', '', 'email'),
|
'$adminmail' => array('adminmail', DI::l10n()->t('Site administrator email address'), $adminmail, DI::l10n()->t('Your account email address must match this in order to use the web admin panel.'), 'required', '', 'email'),
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ Field parameter:
|
||||||
|
|
||||||
### field_custom.tpl
|
### field_custom.tpl
|
||||||
|
|
||||||
A customizeable template to include a custom element in the form with the usual surroundings,
|
A customizable template to include a custom element in the form with the usual surroundings,
|
||||||
Field parameter:
|
Field parameter:
|
||||||
|
|
||||||
0. Name of the field,
|
0. Name of the field,
|
||||||
|
@ -88,7 +88,7 @@ Field parameter:
|
||||||
2. Current value of the variable,
|
2. Current value of the variable,
|
||||||
3. Help text for the input box,
|
3. Help text for the input box,
|
||||||
4. Should be set to the translation of "Required" to mark this field as required,
|
4. Should be set to the translation of "Required" to mark this field as required,
|
||||||
5. if set to "autofocus" modern browser will put the cursur into this box once the page is loaded,
|
5. if set to "autofocus" modern browser will put the cursor into this box once the page is loaded,
|
||||||
6. if set, it will be used for the input type, default is `text` (possible types: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#%3Cinput%3E_types).
|
6. if set, it will be used for the input type, default is `text` (possible types: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#%3Cinput%3E_types).
|
||||||
|
|
||||||
### field_intcheckbox.tpl
|
### field_intcheckbox.tpl
|
||||||
|
|
|
@ -12,7 +12,7 @@ So, how to work on the UI of friendica.
|
||||||
You can either directly edit an existing theme.
|
You can either directly edit an existing theme.
|
||||||
But you might loose your changes when the theme is updated by the friendica team.
|
But you might loose your changes when the theme is updated by the friendica team.
|
||||||
|
|
||||||
If you are almost happy with an existing theme, the easiest way to cover your needs is to create a new theme, inheritating most of the properties of the parent theme and change just minor stuff.
|
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.
|
The below for a more detailed description of theme heritage.
|
||||||
|
|
||||||
Some themes also allow users to select *variants* of the theme.
|
Some themes also allow users to select *variants* of the theme.
|
||||||
|
@ -33,7 +33,7 @@ In most cases, you can found these in
|
||||||
/view/theme/**your-theme-name**/style.css
|
/view/theme/**your-theme-name**/style.css
|
||||||
|
|
||||||
sometimes, there is also a file called style.php in the theme directory.
|
sometimes, there is also a file called style.php in the theme directory.
|
||||||
This is only needed if the theme allowes the user to change certain things of the theme dynamically.
|
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.
|
Say the font size or set a background image.
|
||||||
|
|
||||||
### Templates
|
### Templates
|
||||||
|
@ -50,7 +50,7 @@ if you want to override any template within your theme create your version of th
|
||||||
|
|
||||||
any template that exists there will be used instead of the default one.
|
any template that exists there will be used instead of the default one.
|
||||||
|
|
||||||
### Javascript
|
### JavaScript
|
||||||
|
|
||||||
The same rule applies to the JavaScript files found in
|
The same rule applies to the JavaScript files found in
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Friendica translations
|
||||||
|
|
||||||
The Friendica translation process is based on `gettext` PO files.
|
The Friendica translation process is based on `gettext` PO files.
|
||||||
|
|
||||||
Basic worflow:
|
Basic workflow:
|
||||||
1. `xgettext` is used to collect translation strings across the project in the authoritative PO file located in `view/lang/C/messages.po`.
|
1. `xgettext` is used to collect translation strings across the project in the authoritative PO file located in `view/lang/C/messages.po`.
|
||||||
2. This file makes translations strings available at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/).
|
2. This file makes translations strings available at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/).
|
||||||
3. The translation itself is done at Transifex by volunteers.
|
3. The translation itself is done at Transifex by volunteers.
|
||||||
|
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 408 KiB After Width: | Height: | Size: 408 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
Before Width: | Height: | Size: 498 KiB After Width: | Height: | Size: 498 KiB |
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 300 B |
|
@ -19,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* This is the POST destination for most all locally posted
|
* This is the POST destination for most all locally posted
|
||||||
* text stuff. This function handles status, wall-to-wall status,
|
* text stuff. This function handles status, wall-to-wall status,
|
||||||
* local comments, and remote coments that are posted on this site
|
* local comments, and remote comments that are posted on this site
|
||||||
* (as opposed to being delivered in a feed).
|
* (as opposed to being delivered in a feed).
|
||||||
* Also processed here are posts and comments coming through the
|
* Also processed here are posts and comments coming through the
|
||||||
* statusnet/twitter API.
|
* statusnet/twitter API.
|
||||||
|
|
|
@ -436,7 +436,7 @@ function render_messages(array $msg, string $t): string
|
||||||
$to_name_e = $rr['name'];
|
$to_name_e = $rr['name'];
|
||||||
|
|
||||||
if (is_null($rr['url'])) {
|
if (is_null($rr['url'])) {
|
||||||
// contact-id is pointing to a non existing contact
|
// contact-id is pointing to a nonexistent contact
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -714,7 +714,7 @@ function photos_content(App $a)
|
||||||
// When PHP is configured with upload_max_filesize less than maximagesize provide this lower limit.
|
// When PHP is configured with upload_max_filesize less than maximagesize provide this lower limit.
|
||||||
$maximagesize_bytes = (is_numeric($mis_bytes) && ($mis_bytes < $umf_bytes) ? $mis_bytes : $umf_bytes);
|
$maximagesize_bytes = (is_numeric($mis_bytes) && ($mis_bytes < $umf_bytes) ? $mis_bytes : $umf_bytes);
|
||||||
|
|
||||||
// @todo We may be want to use appropriate binary prefixed dynamicly
|
// @todo We may be want to use appropriate binary prefixed dynamically
|
||||||
$usage_message = DI::l10n()->t('The maximum accepted image size is %s', Strings::formatBytes($maximagesize_bytes));
|
$usage_message = DI::l10n()->t('The maximum accepted image size is %s', Strings::formatBytes($maximagesize_bytes));
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('photos_upload.tpl');
|
$tpl = Renderer::getMarkupTemplate('photos_upload.tpl');
|
||||||
|
|
|
@ -32,7 +32,7 @@ Please check software documentation to know how modify these examples to make th
|
||||||
Sample systemd unit files to start worker.php periodically.
|
Sample systemd unit files to start worker.php periodically.
|
||||||
|
|
||||||
Please place them in the correct location for your system, typically this is `/etc/systemd/system/friendicaworker.timer` and `/etc/systemd/system/friendicaworker.service`.
|
Please place them in the correct location for your system, typically this is `/etc/systemd/system/friendicaworker.timer` and `/etc/systemd/system/friendicaworker.service`.
|
||||||
Please report problems and improvements to `!helpers@forum.friendi.ca` and `@utzer@social.yl.ms` or open an issue in [the Github Friendica page](https://github.com/friendica/friendica/issues).
|
Please report problems and improvements to `!helpers@forum.friendi.ca` and `@utzer@social.yl.ms` or open an issue in [the GitHub Friendica page](https://github.com/friendica/friendica/issues).
|
||||||
This is for usage of systemd instead of cron to start the worker periodically, the solution is a work-in-progress and can surely be improved.
|
This is for usage of systemd instead of cron to start the worker periodically, the solution is a work-in-progress and can surely be improved.
|
||||||
|
|
||||||
## `phpstorm-code-style.xml`
|
## `phpstorm-code-style.xml`
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
# Bookmarklet-share2friendica
|
# Bookmarklet-share2friendica
|
||||||
|
|
||||||
Javascript bookmarklet to share websites with your friendica account
|
JavaScript bookmarklet to share websites with your friendica account
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
### Installing
|
### Installing
|
||||||
|
|
||||||
Open the file bookmarklet-share2friendica.js and change 'YourFriendicaDoomain.tld" with your friendica domain
|
Open the file bookmarklet-share2friendica.js and change 'YourFriendicaDomain.tld" with your friendica domain
|
||||||
|
|
||||||
If you friendica is at https://myfriend.myfami.ly/ , the original ...
|
If you friendica is at https://myfriend.myfami.ly/ , the original ...
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -20,7 +20,7 @@ javascript:(function(){f='https://myfriend.myfami.ly/bookmarklet/?url='+encodeUR
|
||||||
|
|
||||||
*Please copy the whole script, not only the part mentioned here!*
|
*Please copy the whole script, not only the part mentioned here!*
|
||||||
|
|
||||||
Then create a new bookmark, give it a name like "share2Friendica" and paste the script in the address field. Save it. Now you can click on that bookmarklet every time you want to share a website, you are currently reading. A new small window will open where title is prefilled and the website you want to share is put as attachement in the body of the new post.
|
Then create a new bookmark, give it a name like "share2Friendica" and paste the script in the address field. Save it. Now you can click on that bookmarklet every time you want to share a website, you are currently reading. A new small window will open where title is prefilled and the website you want to share is put as attachment in the body of the new post.
|
||||||
|
|
||||||
## Additional notes if it doesn't work
|
## Additional notes if it doesn't work
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- styling for this page is done in the home.css file //-->
|
<!-- styling for this page is done in the home.css file //-->
|
||||||
|
|
||||||
<!-- Some node specifiv welcome message //-->
|
<!-- Some node specific welcome message //-->
|
||||||
<p>Welcome to this <a href="https://friendi.ca">Friendica</a> node!</p>
|
<p>Welcome to this <a href="https://friendi.ca">Friendica</a> node!</p>
|
||||||
|
|
||||||
<!-- Some general notes about Friendica, the other networks and difficulty to run //-->
|
<!-- Some general notes about Friendica, the other networks and difficulty to run //-->
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="c3" class="homeinfobox">
|
<div id="c3" class="homeinfobox">
|
||||||
<h4>Is it hard to run Friendica?</h4>
|
<h4>Is it hard to run Friendica?</h4>
|
||||||
<p>No, not at all! You need a LAMP server, most shared hosting services that offer MySQL, PHP and the ability to run cron jobs will do just fine. If you have your own (virtual) server, for a small Friendica server something like a Raspberry2B is sufficenent from the specs.</p>
|
<p>No, not at all! You need a LAMP server, most shared hosting services that offer MySQL, PHP and the ability to run cron jobs will do just fine. If you have your own (virtual) server, for a small Friendica server something like a Raspberry2B is sufficient from the specs.</p>
|
||||||
<p><a href="https://github.com/friendica/friendica">Get the source</a></p>
|
<p><a href="https://github.com/friendica/friendica">Get the source</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -22,7 +22,7 @@ the requested URL.
|
||||||
Enjoy!
|
Enjoy!
|
||||||
|
|
||||||
On Debian Jessie with lighttpd 1.4.35-4 there was a problem encountered
|
On Debian Jessie with lighttpd 1.4.35-4 there was a problem encountered
|
||||||
between curl (which is used by Friendica in the background) and lighttp.
|
between curl (which is used by Friendica in the background) and lighttpd.
|
||||||
This problem caused requests being served with an error code of 417 in
|
This problem caused requests being served with an error code of 417 in
|
||||||
the logs and no delivery of postings from the contacts.
|
the logs and no delivery of postings from the contacts.
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ One can solve the issue by adding
|
||||||
|
|
||||||
server.reject-expect-100-with-417 = "disable"
|
server.reject-expect-100-with-417 = "disable"
|
||||||
|
|
||||||
to the lighttpd configuratiion file (e.g. in the beginning with the
|
to the lighttpd configuration file (e.g. in the beginning with the
|
||||||
other 'server.xxx' settings.
|
other 'server.xxx' settings.
|
||||||
|
|
||||||
---------------( config starts )-----------------
|
---------------( config starts )-----------------
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
##
|
##
|
||||||
# This configuration assumes your domain is example.net
|
# This configuration assumes your domain is example.net
|
||||||
# You have a separate subdomain friendica.example.net
|
# You have a separate subdomain friendica.example.net
|
||||||
# You want all Friendica traffic to be https using letsencrypt with cerbot
|
# You want all Friendica traffic to be https using letsencrypt with certbot
|
||||||
# You have an SSL certificate and key for your subdomain
|
# You have an SSL certificate and key for your subdomain
|
||||||
# You have PHP FastCGI Process Manager (php7.4-fpm) running on localhost
|
# You have PHP FastCGI Process Manager (php7.4-fpm) running on localhost
|
||||||
# You have Friendica installed in /var/www/friendica
|
# You have Friendica installed in /var/www/friendica
|
||||||
|
|
14
spec/zot.txt
|
@ -45,7 +45,7 @@ is a superset of salmon).
|
||||||
zot:key
|
zot:key
|
||||||
*******
|
*******
|
||||||
|
|
||||||
A suitable randomly generated encyption key of length 32 octets for encrypting
|
A suitable randomly generated encryption key of length 32 octets for encrypting
|
||||||
the salmon packet. This is then encrypted with the sender's private key and
|
the salmon packet. This is then encrypted with the sender's private key and
|
||||||
base64url encoded.
|
base64url encoded.
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ key and base64url encoded.
|
||||||
zot:env_key
|
zot:env_key
|
||||||
***********
|
***********
|
||||||
|
|
||||||
A suitable randomly generated encyption key of length 32 octets for encrypting
|
A suitable randomly generated encryption key of length 32 octets for encrypting
|
||||||
the envelope. This is then encrypted with the recipient's public key and
|
the envelope. This is then encrypted with the recipient's public key and
|
||||||
base64url encoded. For bulk deliveries, it is encrypted with the site bulk
|
base64url encoded. For bulk deliveries, it is encrypted with the site bulk
|
||||||
delivery public key.
|
delivery public key.
|
||||||
|
@ -127,7 +127,7 @@ MUST be present.
|
||||||
Z-To: zot:bob@example.com, zot:alice@example.com, mailto:dave@example.com
|
Z-To: zot:bob@example.com, zot:alice@example.com, mailto:dave@example.com
|
||||||
Z-Bcc: zot:https://example.com/profile/richard
|
Z-Bcc: zot:https://example.com/profile/richard
|
||||||
|
|
||||||
are valid entries. Adresses are comma separated and individual entries MUST NOT
|
are valid entries. Addresses are comma separated and individual entries MUST NOT
|
||||||
contain commas. There MAY be any number of ASCII space characters between
|
contain commas. There MAY be any number of ASCII space characters between
|
||||||
entries for legibility. Header lines are terminated with a linefeed character
|
entries for legibility. Header lines are terminated with a linefeed character
|
||||||
(ASCII 0x0A).
|
(ASCII 0x0A).
|
||||||
|
@ -136,8 +136,8 @@ This specification provides the following protocol address prefixes
|
||||||
for use in Z-To: or Z-Bcc: elements:
|
for use in Z-To: or Z-Bcc: elements:
|
||||||
|
|
||||||
zot: - normal zot delivery using webfinger or LRDD resolvable address
|
zot: - normal zot delivery using webfinger or LRDD resolvable address
|
||||||
dfrn: - legacy DFRN mode delivery using webfinger or LRDD resovable address
|
dfrn: - legacy DFRN mode delivery using webfinger or LRDD resolvable address
|
||||||
ostatus: - normal OStatus delivery using webfinger or LRDD resovable address
|
ostatus: - normal OStatus delivery using webfinger or LRDD resolvable address
|
||||||
diaspora: - Diaspora network delivery using webfinger address
|
diaspora: - Diaspora network delivery using webfinger address
|
||||||
facebook: - Facebook profile page URL
|
facebook: - Facebook profile page URL
|
||||||
twitter: - Twitter personal page URL without AJAX '#!' fragment
|
twitter: - Twitter personal page URL without AJAX '#!' fragment
|
||||||
|
@ -289,7 +289,7 @@ systems MAY reject foreign messages.
|
||||||
*******************************
|
*******************************
|
||||||
|
|
||||||
This section of the document is considered separate from the delivery
|
This section of the document is considered separate from the delivery
|
||||||
specification precding it and represents a different protocol, which is
|
specification preceding it and represents a different protocol, which is
|
||||||
currently incomplete. This will be split off into another document in the
|
currently incomplete. This will be split off into another document in the
|
||||||
future, but is presented here as a synergistic component of the Zot network
|
future, but is presented here as a synergistic component of the Zot network
|
||||||
model.
|
model.
|
||||||
|
@ -353,7 +353,7 @@ Salmon Magic Envelope
|
||||||
Atom Activity Stream Draft
|
Atom Activity Stream Draft
|
||||||
http://activitystrea.ms/specs/atom/1.0/
|
http://activitystrea.ms/specs/atom/1.0/
|
||||||
|
|
||||||
Activty Stream Base Schema
|
Activity Stream Base Schema
|
||||||
http://activitystrea.ms/head/activity-schema.html
|
http://activitystrea.ms/head/activity-schema.html
|
||||||
|
|
||||||
WebFinger Protocol
|
WebFinger Protocol
|
||||||
|
|
|
@ -391,7 +391,7 @@ class App
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current theme name. May be overriden by the mobile theme name.
|
* Returns the current theme name. May be overridden by the mobile theme name.
|
||||||
*
|
*
|
||||||
* @return string Current theme name or empty string in installation phase
|
* @return string Current theme name or empty string in installation phase
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
|
@ -532,7 +532,7 @@ class App
|
||||||
/**
|
/**
|
||||||
* Provide a sane default if nothing is chosen or the specified theme does not exist.
|
* Provide a sane default if nothing is chosen or the specified theme does not exist.
|
||||||
*
|
*
|
||||||
* @return string Current theme's stylsheet path
|
* @return string Current theme's stylesheet path
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function getCurrentThemeStylesheetPath(): string
|
public function getCurrentThemeStylesheetPath(): string
|
||||||
|
|
|
@ -253,9 +253,9 @@ class Page implements ArrayAccess
|
||||||
'$touch_icon' => $touch_icon,
|
'$touch_icon' => $touch_icon,
|
||||||
'$block_public' => intval($config->get('system', 'block_public')),
|
'$block_public' => intval($config->get('system', 'block_public')),
|
||||||
'$stylesheets' => $this->stylesheets,
|
'$stylesheets' => $this->stylesheets,
|
||||||
'$likeError' => $l10n->t('Like not successfull'),
|
'$likeError' => $l10n->t('Like not successful'),
|
||||||
'$dislikeError' => $l10n->t('Dislike not successfull'),
|
'$dislikeError' => $l10n->t('Dislike not successful'),
|
||||||
'$announceError' => $l10n->t('Sharing not successfull'),
|
'$announceError' => $l10n->t('Sharing not successful'),
|
||||||
'$attendError' => $l10n->t('Attendance unsuccessful'),
|
'$attendError' => $l10n->t('Attendance unsuccessful'),
|
||||||
'$srvError' => $l10n->t('Backend error'),
|
'$srvError' => $l10n->t('Backend error'),
|
||||||
'$netError' => $l10n->t('Network error'),
|
'$netError' => $l10n->t('Network error'),
|
||||||
|
@ -291,7 +291,7 @@ class Page implements ArrayAccess
|
||||||
* Initializes Page->page['footer'].
|
* Initializes Page->page['footer'].
|
||||||
*
|
*
|
||||||
* Includes:
|
* Includes:
|
||||||
* - Javascript homebase
|
* - JavaScript homebase
|
||||||
* - Mobile toggle link
|
* - Mobile toggle link
|
||||||
* - Registered footer scripts (through App->registerFooterScript())
|
* - Registered footer scripts (through App->registerFooterScript())
|
||||||
* - footer.tpl template
|
* - footer.tpl template
|
||||||
|
@ -503,7 +503,7 @@ class Page implements ArrayAccess
|
||||||
|
|
||||||
$content = mb_convert_encoding($this->page["content"], 'HTML-ENTITIES', "UTF-8");
|
$content = mb_convert_encoding($this->page["content"], 'HTML-ENTITIES', "UTF-8");
|
||||||
|
|
||||||
/// @TODO one day, kill those error-surpressing @ stuff, or PHP should ban it
|
/// @TODO one day, kill those error-suppressing @ stuff, or PHP should ban it
|
||||||
@$doc->loadHTML($content);
|
@$doc->loadHTML($content);
|
||||||
|
|
||||||
$xpath = new DOMXPath($doc);
|
$xpath = new DOMXPath($doc);
|
||||||
|
|
|
@ -412,7 +412,7 @@ class Router
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$this->lock->acquire('getCachedDispatchData', 0)) {
|
if (!$this->lock->acquire('getCachedDispatchData', 0)) {
|
||||||
// Immediately return uncached data when we can't aquire a lock
|
// Immediately return uncached data when we can't acquire a lock
|
||||||
return $this->getDispatchData();
|
return $this->getDispatchData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace Friendica;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factories act as an intermediary to avoid direct Entitiy instanciation.
|
* Factories act as an intermediary to avoid direct Entity instantiation.
|
||||||
*
|
*
|
||||||
* @see BaseModel
|
* @see BaseModel
|
||||||
* @see BaseCollection
|
* @see BaseCollection
|
||||||
|
|
|
@ -94,7 +94,7 @@ abstract class BaseModel extends BaseDataTransferObject
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Magic isset method. Returns true if the field exists, either in the data prperty array or in any of the local properties.
|
* Magic isset method. Returns true if the field exists, either in the data property array or in any of the local properties.
|
||||||
* Used by array_column() on an array of objects.
|
* Used by array_column() on an array of objects.
|
||||||
*
|
*
|
||||||
* @param $name
|
* @param $name
|
||||||
|
|
|
@ -90,9 +90,9 @@ abstract class BaseModule implements ICanHandleRequests
|
||||||
*
|
*
|
||||||
* @see L10n::tt()
|
* @see L10n::tt()
|
||||||
*/
|
*/
|
||||||
protected function tt(string $singular, string $plurarl, int $count): string
|
protected function tt(string $singular, string $plural, int $count): string
|
||||||
{
|
{
|
||||||
return $this->l10n->tt($singular, $plurarl, $count);
|
return $this->l10n->tt($singular, $plural, $count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -95,7 +95,7 @@ Examples
|
||||||
bin/console autoinstall --savedb
|
bin/console autoinstall --savedb
|
||||||
Installs Friendica with environment variables and saves them to the 'config/local.config.php' file
|
Installs Friendica with environment variables and saves them to the 'config/local.config.php' file
|
||||||
|
|
||||||
bin/console autoinstall -H localhost -p 3365 -u user -P passwort1234 -d friendica -U https://friendica.fqdn
|
bin/console autoinstall -H localhost -p 3365 -u user -P password1234 -d friendica -U https://friendica.fqdn
|
||||||
Installs Friendica with a local mysql database with credentials
|
Installs Friendica with a local mysql database with credentials
|
||||||
HELP;
|
HELP;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ use Friendica\App;
|
||||||
*
|
*
|
||||||
* Basically, docblox takes a list of files to build documentation from. This script assumes there is a file or set of files
|
* Basically, docblox takes a list of files to build documentation from. This script assumes there is a file or set of files
|
||||||
* breaking the build when it is included in that list. It tries to calculate the smallest list containing these files.
|
* breaking the build when it is included in that list. It tries to calculate the smallest list containing these files.
|
||||||
* Unfortunatly, the original problem is NP-complete, so what the script does is a best guess only.
|
* Unfortunately, the original problem is NP-complete, so what the script does is a best guess only.
|
||||||
*
|
*
|
||||||
* So it starts with a list of all files in the project.
|
* So it starts with a list of all files in the project.
|
||||||
* If that list can't be build, it cuts it in two parts and tries both parts independently. If only one of them breaks,
|
* If that list can't be build, it cuts it in two parts and tries both parts independently. If only one of them breaks,
|
||||||
|
|
|
@ -129,7 +129,7 @@ HELP;
|
||||||
if (!$parameters) {
|
if (!$parameters) {
|
||||||
$this->errored++;
|
$this->errored++;
|
||||||
if ($this->getOption('v')) {
|
if ($this->getOption('v')) {
|
||||||
$this->out('Unabled to parse parameter JSON of the row with id ' . $workerqueueItem['id']);
|
$this->out('Unable to parse parameter JSON of the row with id ' . $workerqueueItem['id']);
|
||||||
$this->out('JSON: ' . var_export($workerqueueItem['parameter'], true));
|
$this->out('JSON: ' . var_export($workerqueueItem['parameter'], true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ HELP;
|
||||||
} else {
|
} else {
|
||||||
$this->errored++;
|
$this->errored++;
|
||||||
if ($this->getOption('v')) {
|
if ($this->getOption('v')) {
|
||||||
$this->out('Unabled to update the row with id ' . $workerqueueItem['id']);
|
$this->out('Unable to update the row with id ' . $workerqueueItem['id']);
|
||||||
$this->out('Fields: ' . var_export($fields, true));
|
$this->out('Fields: ' . var_export($fields, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,7 +231,7 @@ HELP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a string and retun a message.po ready text
|
* Get a string and return a message.po ready text
|
||||||
* - replace " with \"
|
* - replace " with \"
|
||||||
* - replace tab char with \t
|
* - replace tab char with \t
|
||||||
* - manage multiline strings
|
* - manage multiline strings
|
||||||
|
|
|
@ -270,7 +270,7 @@ HELP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows or denys a user based on it's nickname
|
* Allows or denies a user based on it's nickname
|
||||||
*
|
*
|
||||||
* @param bool $allow True, if the pending user is allowed, false if denies
|
* @param bool $allow True, if the pending user is allowed, false if denies
|
||||||
*
|
*
|
||||||
|
|
|
@ -94,7 +94,7 @@ class BoundariesPager extends Pager
|
||||||
* $params = ['order' => ['sort_field' => true], 'limit' => $itemsPerPage];
|
* $params = ['order' => ['sort_field' => true], 'limit' => $itemsPerPage];
|
||||||
* $items = DBA::toArray(DBA::select($table, $fields, $condition, $params));
|
* $items = DBA::toArray(DBA::select($table, $fields, $condition, $params));
|
||||||
*
|
*
|
||||||
* $pager = new BoundariesPager($a->query_string, $items[0]['sort_field'], $items[coutn($items) - 1]['sort_field'], $itemsPerPage);
|
* $pager = new BoundariesPager($a->query_string, $items[0]['sort_field'], $items[count($items) - 1]['sort_field'], $itemsPerPage);
|
||||||
*
|
*
|
||||||
* $html = $pager->renderMinimal(count($items));
|
* $html = $pager->renderMinimal(count($items));
|
||||||
*
|
*
|
||||||
|
|
|
@ -1362,7 +1362,7 @@ class Conversation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @TODO: Stop recusrsively adding all children back to the top level (!!!)
|
/// @TODO: Stop recursively adding all children back to the top level (!!!)
|
||||||
/// However, this apparently ensures responses (likes, attendance) display (?!)
|
/// However, this apparently ensures responses (likes, attendance) display (?!)
|
||||||
foreach ($parents as $parent) {
|
foreach ($parents as $parent) {
|
||||||
if (count($parent['children'])) {
|
if (count($parent['children'])) {
|
||||||
|
|
|
@ -79,7 +79,7 @@ class Feature
|
||||||
* Get a list of all available features
|
* Get a list of all available features
|
||||||
*
|
*
|
||||||
* The array includes the setting group, the setting name,
|
* The array includes the setting group, the setting name,
|
||||||
* explainations for the setting and if it's enabled or disabled
|
* explanations for the setting and if it's enabled or disabled
|
||||||
* by default
|
* by default
|
||||||
*
|
*
|
||||||
* @param bool $filtered True removes any locked features
|
* @param bool $filtered True removes any locked features
|
||||||
|
|
|
@ -38,7 +38,7 @@ class ForumManager
|
||||||
*
|
*
|
||||||
* @param int $uid of the profile owner
|
* @param int $uid of the profile owner
|
||||||
* @param boolean $lastitem Sort by lastitem
|
* @param boolean $lastitem Sort by lastitem
|
||||||
* @param boolean $showhidden Show frorums which are not hidden
|
* @param boolean $showhidden Show forums which are not hidden
|
||||||
* @param boolean $showprivate Show private groups
|
* @param boolean $showprivate Show private groups
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
|
@ -102,7 +102,7 @@ class ForumManager
|
||||||
/**
|
/**
|
||||||
* Forumlist widget
|
* Forumlist widget
|
||||||
*
|
*
|
||||||
* Sidebar widget to show subcribed friendica forums. If activated
|
* Sidebar widget to show subscribed friendica forums. If activated
|
||||||
* in the settings, it appears at the notwork page sidebar
|
* in the settings, it appears at the notwork page sidebar
|
||||||
*
|
*
|
||||||
* @param string $baseurl Base module path
|
* @param string $baseurl Base module path
|
||||||
|
|
|
@ -338,7 +338,7 @@ class Item
|
||||||
} else {
|
} else {
|
||||||
$post_type = $this->l10n->t('status');
|
$post_type = $this->l10n->t('status');
|
||||||
}
|
}
|
||||||
// Let's break everthing ... ;-)
|
// Let's break everything ... ;-)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
|
$plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
|
||||||
|
@ -548,7 +548,7 @@ class Item
|
||||||
$item['allow_cid'] = '';
|
$item['allow_cid'] = '';
|
||||||
$item['allow_gid'] = '';
|
$item['allow_gid'] = '';
|
||||||
}
|
}
|
||||||
} elseif ($setPermissions && ($item['gravity'] == ItemModel::GRAVITY_PARENT)) {
|
} elseif ($setPermissions) {
|
||||||
if (empty($receivers)) {
|
if (empty($receivers)) {
|
||||||
// For security reasons direct posts without any receiver will be posts to yourself
|
// For security reasons direct posts without any receiver will be posts to yourself
|
||||||
$self = Contact::selectFirst(['id'], ['uid' => $item['uid'], 'self' => true]);
|
$self = Contact::selectFirst(['id'], ['uid' => $item['uid'], 'self' => true]);
|
||||||
|
@ -685,11 +685,11 @@ class Item
|
||||||
|
|
||||||
// If it is a reshared post then reformat it to avoid display problems with two share elements
|
// If it is a reshared post then reformat it to avoid display problems with two share elements
|
||||||
if (!empty($shared)) {
|
if (!empty($shared)) {
|
||||||
if (!empty($shared['guid']) && ($encaspulated_share = $this->createSharedPostByGuid($shared['guid'], true))) {
|
if (!empty($shared['guid']) && ($encapsulated_share = $this->createSharedPostByGuid($shared['guid'], true))) {
|
||||||
if (!empty(BBCode::fetchShareAttributes($item['body']))) {
|
if (!empty(BBCode::fetchShareAttributes($item['body']))) {
|
||||||
$item['body'] = preg_replace("/\[share.*?\](.*)\[\/share\]/ism", $encaspulated_share, $item['body']);
|
$item['body'] = preg_replace("/\[share.*?\](.*)\[\/share\]/ism", $encapsulated_share, $item['body']);
|
||||||
} else {
|
} else {
|
||||||
$item['body'] .= $encaspulated_share;
|
$item['body'] .= $encapsulated_share;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$item['body'] = HTML::toBBCode(BBCode::convertForUriId($item['uri-id'], $item['body'], BBCode::ACTIVITYPUB));
|
$item['body'] = HTML::toBBCode(BBCode::convertForUriId($item['uri-id'], $item['body'], BBCode::ACTIVITYPUB));
|
||||||
|
|
|
@ -385,7 +385,7 @@ class OEmbed
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a formmated HTML code from given URL and sets optional title
|
* Returns a formatted HTML code from given URL and sets optional title
|
||||||
*
|
*
|
||||||
* @param string $url URL to fetch
|
* @param string $url URL to fetch
|
||||||
* @param string $title Optional title (default: what comes from OEmbed object)
|
* @param string $title Optional title (default: what comes from OEmbed object)
|
||||||
|
@ -447,7 +447,7 @@ class OEmbed
|
||||||
* Generates an XPath query to select elements whose provided attribute contains
|
* Generates an XPath query to select elements whose provided attribute contains
|
||||||
* the provided value in a space-separated list.
|
* the provided value in a space-separated list.
|
||||||
*
|
*
|
||||||
* @param string $attr Name of the attribute to seach
|
* @param string $attr Name of the attribute to search
|
||||||
* @param string $value Value to search in a space-separated list
|
* @param string $value Value to search in a space-separated list
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -141,7 +141,7 @@ class PageInfo
|
||||||
$data['text'] = '';
|
$data['text'] = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only embedd a picture link when it seems to be a valid picture ("width" is set)
|
// Only embed a picture link when it seems to be a valid picture ("width" is set)
|
||||||
if (!empty($data['images']) && !empty($data['images'][0]['width'])) {
|
if (!empty($data['images']) && !empty($data['images'][0]['width'])) {
|
||||||
$preview = str_replace(['[', ']'], ['[', ']'], htmlentities($data['images'][0]['src'], ENT_QUOTES, 'UTF-8', false));
|
$preview = str_replace(['[', ']'], ['[', ']'], htmlentities($data['images'][0]['src'], ENT_QUOTES, 'UTF-8', false));
|
||||||
// if the preview picture is larger than 500 pixels then show it in a larger mode
|
// if the preview picture is larger than 500 pixels then show it in a larger mode
|
||||||
|
|
|
@ -133,7 +133,7 @@ class Smilies
|
||||||
'<img class="smiley" src="' . $baseUrl . '/images/smiley-cry.gif" alt=":\'(" title=":\'("/>',
|
'<img class="smiley" src="' . $baseUrl . '/images/smiley-cry.gif" alt=":\'(" title=":\'("/>',
|
||||||
'<img class="smiley" src="' . $baseUrl . '/images/smiley-foot-in-mouth.gif" alt=":-!" title=":-!" />',
|
'<img class="smiley" src="' . $baseUrl . '/images/smiley-foot-in-mouth.gif" alt=":-!" title=":-!" />',
|
||||||
'<img class="smiley" src="' . $baseUrl . '/images/smiley-undecided.gif" alt=":-/" title=":-/" />',
|
'<img class="smiley" src="' . $baseUrl . '/images/smiley-undecided.gif" alt=":-/" title=":-/" />',
|
||||||
'<img class="smiley" src="' . $baseUrl . '/images/smiley-embarassed.gif" alt=":-[" title=":-[" />',
|
'<img class="smiley" src="' . $baseUrl . '/images/smiley-embarrassed.gif" alt=":-[" title=":-[" />',
|
||||||
'<img class="smiley" src="' . $baseUrl . '/images/smiley-cool.gif" alt="8-)" title="8-)" />',
|
'<img class="smiley" src="' . $baseUrl . '/images/smiley-cool.gif" alt="8-)" title="8-)" />',
|
||||||
'<img class="smiley" src="' . $baseUrl . '/images/beer_mug.gif" alt=":beer" title=":beer" />',
|
'<img class="smiley" src="' . $baseUrl . '/images/beer_mug.gif" alt=":beer" title=":beer" />',
|
||||||
'<img class="smiley" src="' . $baseUrl . '/images/beer_mug.gif" alt=":homebrew" title=":homebrew" />',
|
'<img class="smiley" src="' . $baseUrl . '/images/beer_mug.gif" alt=":homebrew" title=":homebrew" />',
|
||||||
|
|
|
@ -548,7 +548,7 @@ class BBCode
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The previously spacefied [noparse][ i ]italic[ /i ][/noparse],
|
* The previously spacefied [noparse][ i ]italic[ /i ][/noparse],
|
||||||
* now turns back and the [noparse] tags are trimed
|
* now turns back and the [noparse] tags are trimmed
|
||||||
* returning [i]italic[/i]
|
* returning [i]italic[/i]
|
||||||
*
|
*
|
||||||
* @param array $match
|
* @param array $match
|
||||||
|
@ -1373,7 +1373,7 @@ class BBCode
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// leave open the posibility of [map=something]
|
// leave open the possibility of [map=something]
|
||||||
// this is replaced in Item::prepareBody() which has knowledge of the item location
|
// this is replaced in Item::prepareBody() which has knowledge of the item location
|
||||||
if (strpos($text, '[/map]') !== false) {
|
if (strpos($text, '[/map]') !== false) {
|
||||||
$text = preg_replace_callback(
|
$text = preg_replace_callback(
|
||||||
|
|
|
@ -842,7 +842,7 @@ class HTML
|
||||||
*
|
*
|
||||||
* @param string $s Search query.
|
* @param string $s Search query.
|
||||||
* @param string $id HTML id
|
* @param string $id HTML id
|
||||||
* @param bool $aside Display the search widgit aside.
|
* @param bool $aside Display the search widget aside.
|
||||||
*
|
*
|
||||||
* @return string Formatted HTML.
|
* @return string Formatted HTML.
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
|
|
|
@ -180,7 +180,7 @@ class Plaintext
|
||||||
$msg = trim($post['description']);
|
$msg = trim($post['description']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the link is already contained in the post, then it neeedn't to be added again
|
// If the link is already contained in the post, then it needn't to be added again
|
||||||
// But: if the link is beyond the limit, then it has to be added.
|
// But: if the link is beyond the limit, then it has to be added.
|
||||||
if (($link != '') && strstr($msg, $link)) {
|
if (($link != '') && strstr($msg, $link)) {
|
||||||
$pos = strpos($msg, $link);
|
$pos = strpos($msg, $link);
|
||||||
|
|
|
@ -59,7 +59,7 @@ class Widget
|
||||||
/**
|
/**
|
||||||
* Return Find People widget
|
* Return Find People widget
|
||||||
*
|
*
|
||||||
* @return string HTML code respresenting "People Widget"
|
* @return string HTML code representing "People Widget"
|
||||||
*/
|
*/
|
||||||
public static function findPeople(): string
|
public static function findPeople(): string
|
||||||
{
|
{
|
||||||
|
|
|
@ -47,7 +47,7 @@ class ACL
|
||||||
/**
|
/**
|
||||||
* Returns a select input tag for private message recipient
|
* Returns a select input tag for private message recipient
|
||||||
*
|
*
|
||||||
* @param int $selected Existing recipien contact ID
|
* @param int $selected Existing recipient contact ID
|
||||||
* @return string
|
* @return string
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -98,17 +98,17 @@ class Installer
|
||||||
* Checks the current installation environment. There are optional and mandatory checks.
|
* Checks the current installation environment. There are optional and mandatory checks.
|
||||||
*
|
*
|
||||||
* @param string $baseurl The baseurl of Friendica
|
* @param string $baseurl The baseurl of Friendica
|
||||||
* @param string $phpath Optional path to the PHP binary
|
* @param string $phppath Optional path to the PHP binary
|
||||||
*
|
*
|
||||||
* @return bool if the check succeed
|
* @return bool if the check succeed
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public function checkEnvironment($baseurl, $phpath = null)
|
public function checkEnvironment($baseurl, $phppath = null)
|
||||||
{
|
{
|
||||||
$returnVal = true;
|
$returnVal = true;
|
||||||
|
|
||||||
if (isset($phpath)) {
|
if (isset($phppath)) {
|
||||||
if (!$this->checkPHP($phpath)) {
|
if (!$this->checkPHP($phppath)) {
|
||||||
$returnVal = false;
|
$returnVal = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ class Installer
|
||||||
'$dbpass' => $configCache->get('database', 'password'),
|
'$dbpass' => $configCache->get('database', 'password'),
|
||||||
'$dbdata' => $configCache->get('database', 'database'),
|
'$dbdata' => $configCache->get('database', 'database'),
|
||||||
|
|
||||||
'$phpath' => $configCache->get('config', 'php_path'),
|
'$phppath' => $configCache->get('config', 'php_path'),
|
||||||
'$adminmail' => $configCache->get('config', 'admin_email'),
|
'$adminmail' => $configCache->get('config', 'admin_email'),
|
||||||
|
|
||||||
'$system_url' => $configCache->get('system', 'url'),
|
'$system_url' => $configCache->get('system', 'url'),
|
||||||
|
@ -590,8 +590,8 @@ class Installer
|
||||||
* TLS Check
|
* TLS Check
|
||||||
*
|
*
|
||||||
* Tries to determine whether the connection to the server is secured
|
* Tries to determine whether the connection to the server is secured
|
||||||
* by TLS or not. If not the user will be warned that it is higly
|
* by TLS or not. If not the user will be warned that it is highly
|
||||||
* encuraged to use TLS.
|
* encouraged to use TLS.
|
||||||
*
|
*
|
||||||
* @return bool (true) as TLS is not mandatory
|
* @return bool (true) as TLS is not mandatory
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -334,7 +334,7 @@ class L10n
|
||||||
// for some languages there is only a single array item
|
// for some languages there is only a single array item
|
||||||
$s = $t[0];
|
$s = $t[0];
|
||||||
}
|
}
|
||||||
// if $t is empty, skip it, because empty strings array are indended
|
// if $t is empty, skip it, because empty strings array are intended
|
||||||
// to make string file smaller when there's no translation
|
// to make string file smaller when there's no translation
|
||||||
} else {
|
} else {
|
||||||
$s = $t;
|
$s = $t;
|
||||||
|
|
|
@ -36,7 +36,7 @@ class Logger
|
||||||
*/
|
*/
|
||||||
const TYPE_LOGGER = LoggerInterface::class;
|
const TYPE_LOGGER = LoggerInterface::class;
|
||||||
/**
|
/**
|
||||||
* @var WorkerLogger A specific worker logger type, which can be anabled
|
* @var WorkerLogger A specific worker logger type, which can be enabled
|
||||||
*/
|
*/
|
||||||
const TYPE_WORKER = WorkerLogger::class;
|
const TYPE_WORKER = WorkerLogger::class;
|
||||||
/**
|
/**
|
||||||
|
@ -206,7 +206,7 @@ class Logger
|
||||||
* An alternative logger for development.
|
* An alternative logger for development.
|
||||||
*
|
*
|
||||||
* Works largely as log() but allows developers
|
* Works largely as log() but allows developers
|
||||||
* to isolate particular elements they are targetting
|
* to isolate particular elements they are targeting
|
||||||
* personally without background noise
|
* personally without background noise
|
||||||
*
|
*
|
||||||
* @param string $message Message to log
|
* @param string $message Message to log
|
||||||
|
|
|
@ -27,7 +27,7 @@ use Friendica\Core\Storage\Exception\StorageException;
|
||||||
/**
|
/**
|
||||||
* Interface for writable storage backends
|
* Interface for writable storage backends
|
||||||
*
|
*
|
||||||
* Used for storages with CRUD functionality, mainly used for user data (e.g. photos, attachements).
|
* Used for storages with CRUD functionality, mainly used for user data (e.g. photos, attachments).
|
||||||
* There's only one active writable storage possible. This type of storage is selectable by the current administrator.
|
* There's only one active writable storage possible. This type of storage is selectable by the current administrator.
|
||||||
*/
|
*/
|
||||||
interface ICanWriteToStorage extends ICanReadFromStorage
|
interface ICanWriteToStorage extends ICanReadFromStorage
|
||||||
|
|
|
@ -35,7 +35,7 @@ use Friendica\Util\Strings;
|
||||||
* Best would be for storage folder to be outside webserver folder, we are using a
|
* Best would be for storage folder to be outside webserver folder, we are using a
|
||||||
* folder relative to code tree root as default to ease things for users in shared hostings.
|
* folder relative to code tree root as default to ease things for users in shared hostings.
|
||||||
* Each new resource gets a value as reference and is saved in a
|
* Each new resource gets a value as reference and is saved in a
|
||||||
* folder tree stucture created from that value.
|
* folder tree structure created from that value.
|
||||||
*/
|
*/
|
||||||
class Filesystem implements ICanWriteToStorage
|
class Filesystem implements ICanWriteToStorage
|
||||||
{
|
{
|
||||||
|
|
|
@ -321,7 +321,7 @@ class System
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function adds the content and a content-teype HTTP header to the output.
|
* This function adds the content and a content-type HTTP header to the output.
|
||||||
* After finishing the process is getting killed.
|
* After finishing the process is getting killed.
|
||||||
*
|
*
|
||||||
* @param string $content
|
* @param string $content
|
||||||
|
|
|
@ -362,7 +362,7 @@ class Worker
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for existance and validity of the include file
|
// Check for existence and validity of the include file
|
||||||
$include = $argv[0];
|
$include = $argv[0];
|
||||||
|
|
||||||
if (method_exists(sprintf('Friendica\Worker\%s', $include), 'execute')) {
|
if (method_exists(sprintf('Friendica\Worker\%s', $include), 'execute')) {
|
||||||
|
@ -590,7 +590,7 @@ class Worker
|
||||||
/* With these values we can analyze how effective the worker is.
|
/* With these values we can analyze how effective the worker is.
|
||||||
* The database and rest time should be low since this is the unproductive time.
|
* The database and rest time should be low since this is the unproductive time.
|
||||||
* The execution time is the productive time.
|
* The execution time is the productive time.
|
||||||
* By changing parameters like the maximum number of workers we can check the effectivness.
|
* By changing parameters like the maximum number of workers we can check the effectiveness.
|
||||||
*/
|
*/
|
||||||
$dbtotal = round(self::$db_duration, 2);
|
$dbtotal = round(self::$db_duration, 2);
|
||||||
$dbread = round(self::$db_duration - (self::$db_duration_count + self::$db_duration_write + self::$db_duration_stat), 2);
|
$dbread = round(self::$db_duration - (self::$db_duration_count + self::$db_duration_write + self::$db_duration_stat), 2);
|
||||||
|
@ -885,7 +885,7 @@ class Worker
|
||||||
/**
|
/**
|
||||||
* Returns waiting jobs for the current process id
|
* Returns waiting jobs for the current process id
|
||||||
*
|
*
|
||||||
* @return array|bool waiting workerqueue jobs or FALSE on failture
|
* @return array|bool waiting workerqueue jobs or FALSE on failure
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function getWaitingJobForPID()
|
private static function getWaitingJobForPID()
|
||||||
|
@ -1422,7 +1422,7 @@ class Worker
|
||||||
*/
|
*/
|
||||||
public static function isInMaintenanceWindow(bool $check_last_execution = false): bool
|
public static function isInMaintenanceWindow(bool $check_last_execution = false): bool
|
||||||
{
|
{
|
||||||
// Calculate the seconds of the start end end of the maintenance window
|
// Calculate the seconds of the start and end of the maintenance window
|
||||||
$start = strtotime(DI::config()->get('system', 'maintenance_start')) % 86400;
|
$start = strtotime(DI::config()->get('system', 'maintenance_start')) % 86400;
|
||||||
$end = strtotime(DI::config()->get('system', 'maintenance_end')) % 86400;
|
$end = strtotime(DI::config()->get('system', 'maintenance_end')) % 86400;
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ abstract class DI
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a clone of the current dice instance
|
* Returns a clone of the current dice instance
|
||||||
* This usefull for overloading the current instance with mocked methods during tests
|
* This useful for overloading the current instance with mocked methods during tests
|
||||||
*
|
*
|
||||||
* @return Dice
|
* @return Dice
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -205,7 +205,7 @@ class DBA
|
||||||
* Please use DBA::delete, DBA::insert, DBA::update, ... instead
|
* Please use DBA::delete, DBA::insert, DBA::update, ... instead
|
||||||
*
|
*
|
||||||
* @param string $sql SQL statement
|
* @param string $sql SQL statement
|
||||||
* @return boolean Was the query successfull? False is returned only if an error occurred
|
* @return boolean Was the query successful? False is returned only if an error occurred
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function e(string $sql): bool
|
public static function e(string $sql): bool
|
||||||
|
@ -420,7 +420,7 @@ class DBA
|
||||||
* @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
|
* @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
|
||||||
* @param array $params Parameters: "ignore" If set to "true" then the update is done with the ignore parameter
|
* @param array $params Parameters: "ignore" If set to "true" then the update is done with the ignore parameter
|
||||||
*
|
*
|
||||||
* @return boolean was the update successfull?
|
* @return boolean was the update successful?
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function update(string $table, array $fields, array $condition, $old_fields = [], array $params = []): bool
|
public static function update(string $table, array $fields, array $condition, $old_fields = [], array $params = []): bool
|
||||||
|
|
|
@ -102,7 +102,7 @@ class Database
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*
|
*
|
||||||
* @todo Make this method obsolet - use a clean pattern instead ...
|
* @todo Make this method obsolete - use a clean pattern instead ...
|
||||||
*/
|
*/
|
||||||
public function setDependency(IManageConfigValues $config, Profiler $profiler, LoggerInterface $logger)
|
public function setDependency(IManageConfigValues $config, Profiler $profiler, LoggerInterface $logger)
|
||||||
{
|
{
|
||||||
|
@ -767,7 +767,7 @@ class Database
|
||||||
*
|
*
|
||||||
* @param string $sql SQL statement
|
* @param string $sql SQL statement
|
||||||
*
|
*
|
||||||
* @return boolean Was the query successfull? False is returned only if an error occurred
|
* @return boolean Was the query successful? False is returned only if an error occurred
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function e(string $sql): bool
|
public function e(string $sql): bool
|
||||||
|
@ -1321,7 +1321,7 @@ class Database
|
||||||
* @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
|
* @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
|
||||||
* @param array $params Parameters: "ignore" If set to "true" then the update is done with the ignore parameter
|
* @param array $params Parameters: "ignore" If set to "true" then the update is done with the ignore parameter
|
||||||
*
|
*
|
||||||
* @return boolean was the update successfull?
|
* @return boolean was the update successful?
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
* @todo Implement "bool $update_on_duplicate" to avoid mixed type for $old_fields
|
* @todo Implement "bool $update_on_duplicate" to avoid mixed type for $old_fields
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -82,7 +82,7 @@ class DbaDefinition
|
||||||
// Assign all field that are present in the table
|
// Assign all field that are present in the table
|
||||||
foreach ($fieldNames as $field) {
|
foreach ($fieldNames as $field) {
|
||||||
if (isset($data[$field])) {
|
if (isset($data[$field])) {
|
||||||
// Limit the length of varchar, varbinary, char and binrary fields
|
// Limit the length of varchar, varbinary, char and binary fields
|
||||||
if (is_string($data[$field]) && preg_match("/char\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) {
|
if (is_string($data[$field]) && preg_match("/char\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) {
|
||||||
$data[$field] = mb_substr($data[$field], 0, $result[1]);
|
$data[$field] = mb_substr($data[$field], 0, $result[1]);
|
||||||
} elseif (is_string($data[$field]) && preg_match("/binary\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) {
|
} elseif (is_string($data[$field]) && preg_match("/binary\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) {
|
||||||
|
|
|
@ -55,7 +55,7 @@ class Status extends BaseFactory
|
||||||
/** @var Card */
|
/** @var Card */
|
||||||
private $mstdnCardFactory;
|
private $mstdnCardFactory;
|
||||||
/** @var Attachment */
|
/** @var Attachment */
|
||||||
private $mstdnAttachementFactory;
|
private $mstdnAttachmentFactory;
|
||||||
/** @var Error */
|
/** @var Error */
|
||||||
private $mstdnErrorFactory;
|
private $mstdnErrorFactory;
|
||||||
/** @var Poll */
|
/** @var Poll */
|
||||||
|
@ -70,7 +70,7 @@ class Status extends BaseFactory
|
||||||
Mention $mstdnMentionFactory,
|
Mention $mstdnMentionFactory,
|
||||||
Tag $mstdnTagFactory,
|
Tag $mstdnTagFactory,
|
||||||
Card $mstdnCardFactory,
|
Card $mstdnCardFactory,
|
||||||
Attachment $mstdnAttachementFactory,
|
Attachment $mstdnAttachmentFactory,
|
||||||
Error $mstdnErrorFactory,
|
Error $mstdnErrorFactory,
|
||||||
Poll $mstdnPollFactory,
|
Poll $mstdnPollFactory,
|
||||||
ContentItem $contentItem
|
ContentItem $contentItem
|
||||||
|
@ -81,7 +81,7 @@ class Status extends BaseFactory
|
||||||
$this->mstdnMentionFactory = $mstdnMentionFactory;
|
$this->mstdnMentionFactory = $mstdnMentionFactory;
|
||||||
$this->mstdnTagFactory = $mstdnTagFactory;
|
$this->mstdnTagFactory = $mstdnTagFactory;
|
||||||
$this->mstdnCardFactory = $mstdnCardFactory;
|
$this->mstdnCardFactory = $mstdnCardFactory;
|
||||||
$this->mstdnAttachementFactory = $mstdnAttachementFactory;
|
$this->mstdnAttachmentFactory = $mstdnAttachmentFactory;
|
||||||
$this->mstdnErrorFactory = $mstdnErrorFactory;
|
$this->mstdnErrorFactory = $mstdnErrorFactory;
|
||||||
$this->mstdnPollFactory = $mstdnPollFactory;
|
$this->mstdnPollFactory = $mstdnPollFactory;
|
||||||
$this->contentItem = $contentItem;
|
$this->contentItem = $contentItem;
|
||||||
|
@ -177,6 +177,14 @@ class Status extends BaseFactory
|
||||||
'vid' => Verb::getID(Activity::LIKE),
|
'vid' => Verb::getID(Activity::LIKE),
|
||||||
'deleted' => false
|
'deleted' => false
|
||||||
]);
|
]);
|
||||||
|
$origin_dislike = ($count_dislike == 0) ? false : Post::exists([
|
||||||
|
'thr-parent-id' => $uriId,
|
||||||
|
'uid' => $uid,
|
||||||
|
'origin' => true,
|
||||||
|
'gravity' => Item::GRAVITY_ACTIVITY,
|
||||||
|
'vid' => Verb::getID(Activity::DISLIKE),
|
||||||
|
'deleted' => false
|
||||||
|
]);
|
||||||
$origin_announce = ($count_announce == 0) ? false : Post::exists([
|
$origin_announce = ($count_announce == 0) ? false : Post::exists([
|
||||||
'thr-parent-id' => $uriId,
|
'thr-parent-id' => $uriId,
|
||||||
'uid' => $uid,
|
'uid' => $uid,
|
||||||
|
@ -206,7 +214,7 @@ class Status extends BaseFactory
|
||||||
$tags = $this->mstdnTagFactory->createFromUriId($uriId);
|
$tags = $this->mstdnTagFactory->createFromUriId($uriId);
|
||||||
if ($item['has-media']) {
|
if ($item['has-media']) {
|
||||||
$card = $this->mstdnCardFactory->createFromUriId($uriId);
|
$card = $this->mstdnCardFactory->createFromUriId($uriId);
|
||||||
$attachments = $this->mstdnAttachementFactory->createFromUriId($uriId);
|
$attachments = $this->mstdnAttachmentFactory->createFromUriId($uriId);
|
||||||
} else {
|
} else {
|
||||||
$card = new \Friendica\Object\Api\Mastodon\Card([]);
|
$card = new \Friendica\Object\Api\Mastodon\Card([]);
|
||||||
$attachments = [];
|
$attachments = [];
|
||||||
|
@ -250,7 +258,7 @@ class Status extends BaseFactory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->mstdnAttachementFactory->createFromUriId($shared_uri_id) as $attachment) {
|
foreach ($this->mstdnAttachmentFactory->createFromUriId($shared_uri_id) as $attachment) {
|
||||||
if (!in_array($attachment, $attachments)) {
|
if (!in_array($attachment, $attachments)) {
|
||||||
$attachments[] = $attachment;
|
$attachments[] = $attachment;
|
||||||
}
|
}
|
||||||
|
@ -295,7 +303,7 @@ class Status extends BaseFactory
|
||||||
$aclFormatter = DI::aclFormatter();
|
$aclFormatter = DI::aclFormatter();
|
||||||
$delivery_data = $uid != $item['uid'] ? null : new FriendicaDeliveryData($item['delivery_queue_count'], $item['delivery_queue_done'], $item['delivery_queue_failed']);
|
$delivery_data = $uid != $item['uid'] ? null : new FriendicaDeliveryData($item['delivery_queue_count'], $item['delivery_queue_done'], $item['delivery_queue_failed']);
|
||||||
$visibility_data = $uid != $item['uid'] ? null : new FriendicaVisibility($aclFormatter->expand($item['allow_cid']), $aclFormatter->expand($item['deny_cid']), $aclFormatter->expand($item['allow_gid']), $aclFormatter->expand($item['deny_gid']));
|
$visibility_data = $uid != $item['uid'] ? null : new FriendicaVisibility($aclFormatter->expand($item['allow_cid']), $aclFormatter->expand($item['deny_cid']), $aclFormatter->expand($item['allow_gid']), $aclFormatter->expand($item['deny_gid']));
|
||||||
$friendica = new FriendicaExtension($item['title'], $item['changed'], $item['commented'], $item['received'], $counts->dislikes, $delivery_data, $visibility_data);
|
$friendica = new FriendicaExtension($item['title'], $item['changed'], $item['commented'], $item['received'], $counts->dislikes, $origin_dislike, $delivery_data, $visibility_data);
|
||||||
|
|
||||||
return new \Friendica\Object\Api\Mastodon\Status($item, $account, $counts, $userAttributes, $sensitive, $application, $mentions, $tags, $card, $attachments, $in_reply, $reshare, $friendica, $quote, $poll);
|
return new \Friendica\Object\Api\Mastodon\Status($item, $account, $counts, $userAttributes, $sensitive, $application, $mentions, $tags, $card, $attachments, $in_reply, $reshare, $friendica, $quote, $poll);
|
||||||
}
|
}
|
||||||
|
@ -361,7 +369,7 @@ class Status extends BaseFactory
|
||||||
$attachments = [];
|
$attachments = [];
|
||||||
$in_reply = [];
|
$in_reply = [];
|
||||||
$reshare = [];
|
$reshare = [];
|
||||||
$friendica = new FriendicaExtension('', null, null, null, 0, null, null);
|
$friendica = new FriendicaExtension('', null, null, null, 0, false, null, null);
|
||||||
|
|
||||||
return new \Friendica\Object\Api\Mastodon\Status($item, $account, $counts, $userAttributes, $sensitive, $application, $mentions, $tags, $card, $attachments, $in_reply, $reshare, $friendica);
|
return new \Friendica\Object\Api\Mastodon\Status($item, $account, $counts, $userAttributes, $sensitive, $application, $mentions, $tags, $card, $attachments, $in_reply, $reshare, $friendica);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ use Friendica\Util\Mimetype;
|
||||||
use Friendica\Security\Security;
|
use Friendica\Security\Security;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to handle attach dabatase table
|
* Class to handle attach database table
|
||||||
*/
|
*/
|
||||||
class Attach
|
class Attach
|
||||||
{
|
{
|
||||||
|
@ -107,7 +107,7 @@ class Attach
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrive a single record given the ID
|
* Retrieve a single record given the ID
|
||||||
*
|
*
|
||||||
* @param int $id Row id of the record
|
* @param int $id Row id of the record
|
||||||
*
|
*
|
||||||
|
@ -122,7 +122,7 @@ class Attach
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrive a single record given the ID
|
* Retrieve a single record given the ID
|
||||||
*
|
*
|
||||||
* @param int $id Row id of the record
|
* @param int $id Row id of the record
|
||||||
*
|
*
|
||||||
|
@ -192,7 +192,7 @@ class Attach
|
||||||
* @param string $allow_cid Permissions, allowed contacts. optional, default = ''
|
* @param string $allow_cid Permissions, allowed contacts. optional, default = ''
|
||||||
* @param string $allow_gid Permissions, allowed groups. optional, default = ''
|
* @param string $allow_gid Permissions, allowed groups. optional, default = ''
|
||||||
* @param string $deny_cid Permissions, denied contacts.optional, default = ''
|
* @param string $deny_cid Permissions, denied contacts.optional, default = ''
|
||||||
* @param string $deny_gid Permissions, denied greoup.optional, default = ''
|
* @param string $deny_gid Permissions, denied group.optional, default = ''
|
||||||
*
|
*
|
||||||
* @return boolean|integer Row id on success, False on errors
|
* @return boolean|integer Row id on success, False on errors
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
|
|
|
@ -239,7 +239,7 @@ class Contact
|
||||||
* @param array $condition condition array with the key values
|
* @param array $condition condition array with the key values
|
||||||
* @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
|
* @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
|
||||||
*
|
*
|
||||||
* @return boolean was the update successfull?
|
* @return boolean was the update successful?
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
* @todo Let's get rid of boolean type of $old_fields
|
* @todo Let's get rid of boolean type of $old_fields
|
||||||
*/
|
*/
|
||||||
|
@ -1686,7 +1686,7 @@ class Contact
|
||||||
* Unblocks a contact
|
* Unblocks a contact
|
||||||
*
|
*
|
||||||
* @param int $cid Contact id to unblock
|
* @param int $cid Contact id to unblock
|
||||||
* @return bool Whether it was successfull
|
* @return bool Whether it was successful
|
||||||
*/
|
*/
|
||||||
public static function unblock(int $cid): bool
|
public static function unblock(int $cid): bool
|
||||||
{
|
{
|
||||||
|
@ -1733,7 +1733,7 @@ class Contact
|
||||||
*
|
*
|
||||||
* @param array $contact contact array
|
* @param array $contact contact array
|
||||||
* @param string $size Size of the avatar picture
|
* @param string $size Size of the avatar picture
|
||||||
* @param bool $no_update Don't perfom an update if no cached avatar was found
|
* @param bool $no_update Don't perform an update if no cached avatar was found
|
||||||
* @return string photo path
|
* @return string photo path
|
||||||
*/
|
*/
|
||||||
private static function getAvatarPath(array $contact, string $size, bool $no_update = false): string
|
private static function getAvatarPath(array $contact, string $size, bool $no_update = false): string
|
||||||
|
@ -1767,7 +1767,7 @@ class Contact
|
||||||
* Return the photo path for a given contact array
|
* Return the photo path for a given contact array
|
||||||
*
|
*
|
||||||
* @param array $contact Contact array
|
* @param array $contact Contact array
|
||||||
* @param bool $no_update Don't perfom an update if no cached avatar was found
|
* @param bool $no_update Don't perform an update if no cached avatar was found
|
||||||
* @return string photo path
|
* @return string photo path
|
||||||
*/
|
*/
|
||||||
public static function getPhoto(array $contact, bool $no_update = false): string
|
public static function getPhoto(array $contact, bool $no_update = false): string
|
||||||
|
@ -1779,7 +1779,7 @@ class Contact
|
||||||
* Return the photo path (thumb size) for a given contact array
|
* Return the photo path (thumb size) for a given contact array
|
||||||
*
|
*
|
||||||
* @param array $contact Contact array
|
* @param array $contact Contact array
|
||||||
* @param bool $no_update Don't perfom an update if no cached avatar was found
|
* @param bool $no_update Don't perform an update if no cached avatar was found
|
||||||
* @return string photo path
|
* @return string photo path
|
||||||
*/
|
*/
|
||||||
public static function getThumb(array $contact, bool $no_update = false): string
|
public static function getThumb(array $contact, bool $no_update = false): string
|
||||||
|
@ -1791,7 +1791,7 @@ class Contact
|
||||||
* Return the photo path (micro size) for a given contact array
|
* Return the photo path (micro size) for a given contact array
|
||||||
*
|
*
|
||||||
* @param array $contact Contact array
|
* @param array $contact Contact array
|
||||||
* @param bool $no_update Don't perfom an update if no cached avatar was found
|
* @param bool $no_update Don't perform an update if no cached avatar was found
|
||||||
* @return string photo path
|
* @return string photo path
|
||||||
*/
|
*/
|
||||||
public static function getMicro(array $contact, bool $no_update = false): string
|
public static function getMicro(array $contact, bool $no_update = false): string
|
||||||
|
@ -1803,7 +1803,7 @@ class Contact
|
||||||
* Check the given contact array for avatar cache fields
|
* Check the given contact array for avatar cache fields
|
||||||
*
|
*
|
||||||
* @param array $contact
|
* @param array $contact
|
||||||
* @param bool $no_update Don't perfom an update if no cached avatar was found
|
* @param bool $no_update Don't perform an update if no cached avatar was found
|
||||||
* @return array contact array with avatar cache fields
|
* @return array contact array with avatar cache fields
|
||||||
*/
|
*/
|
||||||
private static function checkAvatarCacheByArray(array $contact, bool $no_update = false): array
|
private static function checkAvatarCacheByArray(array $contact, bool $no_update = false): array
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Conversation
|
||||||
*/
|
*/
|
||||||
const UNKNOWN = 0;
|
const UNKNOWN = 0;
|
||||||
/**
|
/**
|
||||||
* The message had been pushed to this sytem
|
* The message had been pushed to this system
|
||||||
*/
|
*/
|
||||||
const PUSH = 1;
|
const PUSH = 1;
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -656,7 +656,7 @@ class Event
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show edit and drop actions only if the user is the owner of the event and the event
|
// Show edit and drop actions only if the user is the owner of the event and the event
|
||||||
// is a real event (no bithdays).
|
// is a real event (no birthdays).
|
||||||
$edit = null;
|
$edit = null;
|
||||||
$copy = null;
|
$copy = null;
|
||||||
$drop = null;
|
$drop = null;
|
||||||
|
|
|
@ -92,7 +92,7 @@ class GServer
|
||||||
const DETECT_NODEINFO_210 = 103;
|
const DETECT_NODEINFO_210 = 103;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for the existance of a server and adds it in the background if not existant
|
* Check for the existence of a server and adds it in the background if not existant
|
||||||
*
|
*
|
||||||
* @param string $url
|
* @param string $url
|
||||||
* @param boolean $only_nodeinfo
|
* @param boolean $only_nodeinfo
|
||||||
|
@ -327,7 +327,7 @@ class GServer
|
||||||
return DateTimeFormat::utc('now +1 month');
|
return DateTimeFormat::utc('now +1 month');
|
||||||
}
|
}
|
||||||
|
|
||||||
// The system hadn't been successul contacted for more than a month, so try again in three months
|
// The system hadn't been successful contacted for more than a month, so try again in three months
|
||||||
return DateTimeFormat::utc('now +3 month');
|
return DateTimeFormat::utc('now +3 month');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,7 +557,7 @@ class GServer
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the URL missmatches, then we mark the old entry as failure
|
// If the URL mismatches, then we mark the old entry as failure
|
||||||
if (!Strings::compareLink($url, $original_url)) {
|
if (!Strings::compareLink($url, $original_url)) {
|
||||||
self::setFailureByUrl($original_url);
|
self::setFailureByUrl($original_url);
|
||||||
if (!self::getID($url, true) && !Network::isUrlBlocked($url)) {
|
if (!self::getID($url, true) && !Network::isUrlBlocked($url)) {
|
||||||
|
@ -675,7 +675,7 @@ class GServer
|
||||||
}
|
}
|
||||||
|
|
||||||
// All following checks are done for systems that always have got a "host-meta" endpoint.
|
// All following checks are done for systems that always have got a "host-meta" endpoint.
|
||||||
// With this check we don't have to waste time and ressources for dead systems.
|
// With this check we don't have to waste time and resources for dead systems.
|
||||||
// Also this hopefully prevents us from receiving abuse messages.
|
// Also this hopefully prevents us from receiving abuse messages.
|
||||||
if (($serverdata['network'] == Protocol::PHANTOM) || in_array($serverdata['detection-method'], self::DETECT_UNSPECIFIC)) {
|
if (($serverdata['network'] == Protocol::PHANTOM) || in_array($serverdata['detection-method'], self::DETECT_UNSPECIFIC)) {
|
||||||
$validHostMeta = self::validHostMeta($url);
|
$validHostMeta = self::validHostMeta($url);
|
||||||
|
@ -2437,7 +2437,7 @@ class GServer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disvover Mastodon servers
|
// Discover Mastodon servers
|
||||||
$accesstoken = DI::config()->get('system', 'instances_social_key');
|
$accesstoken = DI::config()->get('system', 'instances_social_key');
|
||||||
|
|
||||||
if (!empty($accesstoken)) {
|
if (!empty($accesstoken)) {
|
||||||
|
|
|
@ -60,7 +60,7 @@ class Group
|
||||||
/**
|
/**
|
||||||
* Checks whether given group id is found in database
|
* Checks whether given group id is found in database
|
||||||
*
|
*
|
||||||
* @param int $group_id Groupd it
|
* @param int $group_id Group id
|
||||||
* @param int $uid Optional user id
|
* @param int $uid Optional user id
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
|
|
|
@ -233,7 +233,7 @@ class Item
|
||||||
Post\Media::insertFromAttachment($item['uri-id'], $fields['attach']);
|
Post\Media::insertFromAttachment($item['uri-id'], $fields['attach']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// We only need to notfiy others when it is an original entry from us.
|
// We only need to notify others when it is an original entry from us.
|
||||||
// Only call the notifier when the item had been edited and records had been changed.
|
// Only call the notifier when the item had been edited and records had been changed.
|
||||||
if ($item['origin'] && !empty($fields['edited']) && ($previous['edited'] != $fields['edited'])) {
|
if ($item['origin'] && !empty($fields['edited']) && ($previous['edited'] != $fields['edited'])) {
|
||||||
$notify_items[] = $item['id'];
|
$notify_items[] = $item['id'];
|
||||||
|
@ -875,7 +875,7 @@ class Item
|
||||||
/*
|
/*
|
||||||
* Do we already have this item?
|
* Do we already have this item?
|
||||||
* We have to check several networks since Friendica posts could be repeated
|
* We have to check several networks since Friendica posts could be repeated
|
||||||
* via OStatus (maybe Diasporsa as well)
|
* via OStatus (maybe Diaspora as well)
|
||||||
*/
|
*/
|
||||||
$duplicate = self::getDuplicateID($item);
|
$duplicate = self::getDuplicateID($item);
|
||||||
if ($duplicate) {
|
if ($duplicate) {
|
||||||
|
@ -892,6 +892,8 @@ class Item
|
||||||
$item['post-type'] = empty($item['title']) ? self::PT_NOTE : self::PT_ARTICLE;
|
$item['post-type'] = empty($item['title']) ? self::PT_NOTE : self::PT_ARTICLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$defined_permissions = isset($item['allow_cid']) && isset($item['allow_gid']) && isset($item['deny_cid']) && isset($item['deny_gid']) && isset($item['private']);
|
||||||
|
|
||||||
$item['wall'] = intval($item['wall'] ?? 0);
|
$item['wall'] = intval($item['wall'] ?? 0);
|
||||||
$item['extid'] = trim($item['extid'] ?? '');
|
$item['extid'] = trim($item['extid'] ?? '');
|
||||||
$item['author-name'] = trim($item['author-name'] ?? '');
|
$item['author-name'] = trim($item['author-name'] ?? '');
|
||||||
|
@ -931,7 +933,7 @@ class Item
|
||||||
$item['inform'] = trim($item['inform'] ?? '');
|
$item['inform'] = trim($item['inform'] ?? '');
|
||||||
$item['file'] = trim($item['file'] ?? '');
|
$item['file'] = trim($item['file'] ?? '');
|
||||||
|
|
||||||
// Communities aren't working with the Diaspora protoccol
|
// Communities aren't working with the Diaspora protocol
|
||||||
if (($uid != 0) && ($item['network'] == Protocol::DIASPORA)) {
|
if (($uid != 0) && ($item['network'] == Protocol::DIASPORA)) {
|
||||||
$user = User::getById($uid, ['account-type']);
|
$user = User::getById($uid, ['account-type']);
|
||||||
if ($user['account-type'] == Contact::TYPE_COMMUNITY) {
|
if ($user['account-type'] == Contact::TYPE_COMMUNITY) {
|
||||||
|
@ -993,7 +995,7 @@ class Item
|
||||||
$item['wall'] = $toplevel_parent['wall'];
|
$item['wall'] = $toplevel_parent['wall'];
|
||||||
|
|
||||||
// Reshares have to keep their permissions to allow forums to work
|
// Reshares have to keep their permissions to allow forums to work
|
||||||
if (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE)) {
|
if (!$defined_permissions && (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE))) {
|
||||||
$item['allow_cid'] = $toplevel_parent['allow_cid'];
|
$item['allow_cid'] = $toplevel_parent['allow_cid'];
|
||||||
$item['allow_gid'] = $toplevel_parent['allow_gid'];
|
$item['allow_gid'] = $toplevel_parent['allow_gid'];
|
||||||
$item['deny_cid'] = $toplevel_parent['deny_cid'];
|
$item['deny_cid'] = $toplevel_parent['deny_cid'];
|
||||||
|
@ -1016,7 +1018,7 @@ class Item
|
||||||
* This differs from the above settings as it subtly allows comments from
|
* This differs from the above settings as it subtly allows comments from
|
||||||
* email correspondents to be private even if the overall thread is not.
|
* email correspondents to be private even if the overall thread is not.
|
||||||
*/
|
*/
|
||||||
if ($toplevel_parent['private']) {
|
if (!$defined_permissions && $toplevel_parent['private']) {
|
||||||
$item['private'] = $toplevel_parent['private'];
|
$item['private'] = $toplevel_parent['private'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1063,7 +1065,7 @@ class Item
|
||||||
}
|
}
|
||||||
|
|
||||||
// ACL settings
|
// ACL settings
|
||||||
if (!empty($item['allow_cid'] . $item['allow_gid'] . $item['deny_cid'] . $item['deny_gid'])) {
|
if (!$defined_permissions && !empty($item['allow_cid'] . $item['allow_gid'] . $item['deny_cid'] . $item['deny_gid'])) {
|
||||||
$item['private'] = self::PRIVATE;
|
$item['private'] = self::PRIVATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1497,7 +1499,7 @@ class Item
|
||||||
|
|
||||||
$users = [];
|
$users = [];
|
||||||
|
|
||||||
/// @todo add a field "pcid" in the contact table that referrs to the public contact id.
|
/// @todo add a field "pcid" in the contact table that refers to the public contact id.
|
||||||
$owner = DBA::selectFirst('contact', ['url', 'nurl', 'alias'], ['id' => $parent['owner-id']]);
|
$owner = DBA::selectFirst('contact', ['url', 'nurl', 'alias'], ['id' => $parent['owner-id']]);
|
||||||
if (!DBA::isResult($owner)) {
|
if (!DBA::isResult($owner)) {
|
||||||
return;
|
return;
|
||||||
|
@ -2499,12 +2501,12 @@ class Item
|
||||||
*/
|
*/
|
||||||
public static function enumeratePermissions(array $obj, bool $check_dead = false): array
|
public static function enumeratePermissions(array $obj, bool $check_dead = false): array
|
||||||
{
|
{
|
||||||
$aclFormater = DI::aclFormatter();
|
$aclFormatter = DI::aclFormatter();
|
||||||
|
|
||||||
$allow_people = $aclFormater->expand($obj['allow_cid']);
|
$allow_people = $aclFormatter->expand($obj['allow_cid']);
|
||||||
$allow_groups = Group::expand($obj['uid'], $aclFormater->expand($obj['allow_gid']), $check_dead);
|
$allow_groups = Group::expand($obj['uid'], $aclFormatter->expand($obj['allow_gid']), $check_dead);
|
||||||
$deny_people = $aclFormater->expand($obj['deny_cid']);
|
$deny_people = $aclFormatter->expand($obj['deny_cid']);
|
||||||
$deny_groups = Group::expand($obj['uid'], $aclFormater->expand($obj['deny_gid']), $check_dead);
|
$deny_groups = Group::expand($obj['uid'], $aclFormatter->expand($obj['deny_gid']), $check_dead);
|
||||||
$recipients = array_unique(array_merge($allow_people, $allow_groups));
|
$recipients = array_unique(array_merge($allow_people, $allow_groups));
|
||||||
$deny = array_unique(array_merge($deny_people, $deny_groups));
|
$deny = array_unique(array_merge($deny_people, $deny_groups));
|
||||||
$recipients = array_diff($recipients, $deny);
|
$recipients = array_diff($recipients, $deny);
|
||||||
|
@ -2613,7 +2615,7 @@ class Item
|
||||||
* Activity verb. One of
|
* Activity verb. One of
|
||||||
* like, unlike, dislike, undislike, attendyes, unattendyes,
|
* like, unlike, dislike, undislike, attendyes, unattendyes,
|
||||||
* attendno, unattendno, attendmaybe, unattendmaybe,
|
* attendno, unattendno, attendmaybe, unattendmaybe,
|
||||||
* announce, unannouce
|
* announce, unannounce
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
* @param string $allow_cid
|
* @param string $allow_cid
|
||||||
* @param string $allow_gid
|
* @param string $allow_gid
|
||||||
|
|
|
@ -25,7 +25,7 @@ use Friendica\Util\ReversedFileReader;
|
||||||
use Friendica\Object\Log\ParsedLogLine;
|
use Friendica\Object\Log\ParsedLogLine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An iterator which returns `\Friendica\Objec\Log\ParsedLogLine` instances
|
* An iterator which returns `\Friendica\Object\Log\ParsedLogLine` instances
|
||||||
*
|
*
|
||||||
* Uses `\Friendica\Util\ReversedFileReader` to fetch log lines
|
* Uses `\Friendica\Util\ReversedFileReader` to fetch log lines
|
||||||
* from newest to oldest.
|
* from newest to oldest.
|
||||||
|
|
|
@ -67,7 +67,7 @@ class Nodeinfo
|
||||||
DI::keyValue()->set('nodeinfo_local_posts', $posts);
|
DI::keyValue()->set('nodeinfo_local_posts', $posts);
|
||||||
DI::keyValue()->set('nodeinfo_local_comments', $comments);
|
DI::keyValue()->set('nodeinfo_local_comments', $comments);
|
||||||
|
|
||||||
$logger->info('User actitivy', ['posts' => $posts, 'comments' => $comments]);
|
$logger->info('User activity', ['posts' => $posts, 'comments' => $comments]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -58,7 +58,7 @@ class OpenWebAuthToken
|
||||||
* @param int $uid The user ID.
|
* @param int $uid The user ID.
|
||||||
* @param string $token
|
* @param string $token
|
||||||
*
|
*
|
||||||
* @return string|boolean The meta enry or false if not found.
|
* @return string|boolean The meta entry or false if not found.
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public static function getMeta(string $type, int $uid, string $token)
|
public static function getMeta(string $type, int $uid, string $token)
|
||||||
|
|