Merge remote-tracking branch 'upstream/2023.03-rc' into npf2
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
@ -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',
|
||||||
|
|
|
@ -135,7 +135,7 @@ Alias of [`api/conversation/show`](#GET+api%2Fconversation%2Fshow).
|
||||||
|
|
||||||
### GET api/statusnet/config
|
### GET api/statusnet/config
|
||||||
|
|
||||||
Returns the public Friendica node configuration.
|
Returns the public Friendica node configuration.
|
||||||
|
|
||||||
### GET api/gnusocial/config
|
### GET api/gnusocial/config
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ Add or remove an activity from an item.
|
||||||
* `attendmaybe`
|
* `attendmaybe`
|
||||||
|
|
||||||
To remove an activity, prepend the verb with "un", eg. "unlike" or "undislike"
|
To remove an activity, prepend the verb with "un", eg. "unlike" or "undislike"
|
||||||
Attend verbs disable eachother: that means that if "attendyes" was added to an item, adding "attendno" remove previous "attendyes".
|
Attend verbs disable each other: that means that if "attendyes" was added to an item, adding "attendno" remove previous "attendyes".
|
||||||
Attend verbs should be used only with event-related items (there is no check at the moment).
|
Attend verbs should be used only with event-related items (there is no check at the moment).
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
@ -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
|
||||||
|
@ -604,7 +604,7 @@ Sets item table entries for this photo to deleted = 1.
|
||||||
|
|
||||||
On success:
|
On success:
|
||||||
|
|
||||||
* JSON return
|
* JSON return
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -633,7 +633,7 @@ Deletes all images with the specified album name, is not reversible -> ensure th
|
||||||
|
|
||||||
On success:
|
On success:
|
||||||
|
|
||||||
* JSON return
|
* JSON return
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -682,7 +682,7 @@ Get a list of photo albums for the user
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
None
|
None
|
||||||
#### Return values
|
#### Return values
|
||||||
|
|
||||||
On success a list of photo album objects:
|
On success a list of photo album objects:
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -39,7 +39,7 @@ Extensions to the [Mastodon Instance::V2 Entities](https://docs.joinmastodon.org
|
||||||
* `codename`: The Friendica version code name
|
* `codename`: The Friendica version code name
|
||||||
* `db_version`: The database schema version number
|
* `db_version`: The database schema version number
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"domain": "friendicadevtest1.myportal.social",
|
"domain": "friendicadevtest1.myportal.social",
|
||||||
|
@ -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
|
||||||
|
@ -117,7 +118,7 @@ Example:
|
||||||
"title": "",
|
"title": "",
|
||||||
"delivery_data": {
|
"delivery_data": {
|
||||||
"delivery_queue_count": 10,
|
"delivery_queue_count": 10,
|
||||||
"delivery_queue_done": 3,
|
"delivery_queue_done": 3,
|
||||||
"delivery_queue_failed": 0
|
"delivery_queue_failed": 0
|
||||||
},
|
},
|
||||||
"dislikes_count": 0
|
"dislikes_count": 0
|
||||||
|
@ -213,7 +214,7 @@ Example:
|
||||||
- Additionally to the static values `public`, `unlisted` and `private`, the `visibility` parameter can contain a numeric value with a group id.
|
- Additionally to the static values `public`, `unlisted` and `private`, the `visibility` parameter can contain a numeric value with a group id.
|
||||||
- Additional field `quote_id` for the post that is being quote reshared
|
- Additional field `quote_id` for the post that is being quote reshared
|
||||||
- Additional fields `friendica` for Friendica specific parameters:
|
- Additional fields `friendica` for Friendica specific parameters:
|
||||||
- `title`: Explicitly sets the title for a post status, ignored if used on a comment status. For post statuses the legacy behavior is to use any "spoiler text" as the title if it is provided. If both the title and spoiler text are provided for a post status then they will each be used for their respective roles. If no title is provided then the legacy behavior will persist. If you want to create a post with no title but spoiler text then explicitly set the title but set it to an empty string `""`.
|
- `title`: Explicitly sets the title for a post status, ignored if used on a comment status. For post statuses the legacy behavior is to use any "spoiler text" as the title if it is provided. If both the title and spoiler text are provided for a post status then they will each be used for their respective roles. If no title is provided then the legacy behavior will persist. If you want to create a post with no title but spoiler text then explicitly set the title but set it to an empty string `""`.
|
||||||
- [`GET /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/#get)
|
- [`GET /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/#get)
|
||||||
- [`DELETE /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/#delete)
|
- [`DELETE /api/v1/statuses/:id`](https://docs.joinmastodon.org/methods/statuses/#delete)
|
||||||
- [`GET /api/v1/statuses/:id/context`](https://docs.joinmastodon.org/methods/statuses/#context)
|
- [`GET /api/v1/statuses/:id/context`](https://docs.joinmastodon.org/methods/statuses/#context)
|
||||||
|
@ -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,21 +70,21 @@ 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
|
||||||
) {
|
) {
|
||||||
parent::__construct($logger);
|
parent::__construct($logger);
|
||||||
$this->dba = $dba;
|
$this->dba = $dba;
|
||||||
$this->mstdnAccountFactory = $mstdnAccountFactory;
|
$this->mstdnAccountFactory = $mstdnAccountFactory;
|
||||||
$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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -175,7 +175,15 @@ class Status extends BaseFactory
|
||||||
'origin' => true,
|
'origin' => true,
|
||||||
'gravity' => Item::GRAVITY_ACTIVITY,
|
'gravity' => Item::GRAVITY_ACTIVITY,
|
||||||
'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,
|
||||||
|
@ -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)
|
||||||
|
|