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
|
||||||
|
|
||||||
|
|
60
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]
|
||||||
|
@ -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]
|
||||||
|
@ -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]
|
||||||
|
@ -1796,7 +1796,7 @@ 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]
|
||||||
|
@ -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)
|
||||||
|
@ -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 '',
|
||||||
|
|
|
@ -305,7 +305,7 @@ Returns [Private Messages](help/API-Entities#Private+message) matching the provi
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
* `searchstring`: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored)
|
* `searchstring`: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored)
|
||||||
* `getText` (optional): `plain`|`html` If ommited, the title is prepended to the plaintext body in the `text` attribute of the private message objects.
|
* `getText` (optional): `plain`|`html` If omitted, the title is prepended to the plaintext body in the `text` attribute of the private message objects.
|
||||||
* `getUserObjects` (optional): `true`|`false` If `false`, the `sender` and `recipient` attributes of the private message object are absent.
|
* `getUserObjects` (optional): `true`|`false` If `false`, the `sender` and `recipient` attributes of the private message object are absent.
|
||||||
|
|
||||||
#### Return values
|
#### Return values
|
||||||
|
@ -646,7 +646,7 @@ On error:
|
||||||
|
|
||||||
* 403 FORBIDDEN: if not authenticated
|
* 403 FORBIDDEN: if not authenticated
|
||||||
* 400 BADREQUEST: "no albumname specified", "album not available"
|
* 400 BADREQUEST: "no albumname specified", "album not available"
|
||||||
* 500 INTERNALSERVERERROR: "problem with deleting item occured", "unknown error - deleting from database failed"
|
* 500 INTERNALSERVERERROR: "problem with deleting item occurred", "unknown error - deleting from database failed"
|
||||||
|
|
||||||
### POST api/friendica/photoalbum/update
|
### POST api/friendica/photoalbum/update
|
||||||
|
|
||||||
|
|
|
@ -265,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>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
@ -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' => [
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -231,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.
|
||||||
|
|
||||||
|
@ -353,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
|
||||||
|
|
|
@ -55,7 +55,7 @@ You can also use your Identity Address or other people's Identity Addresses to b
|
||||||
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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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 | |
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]';
|
||||||
|
@ -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)
|
||||||
|
|
|
@ -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" />',
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -214,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 = [];
|
||||||
|
@ -258,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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)) {
|
||||||
|
@ -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) {
|
||||||
|
@ -933,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) {
|
||||||
|
@ -1499,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;
|
||||||
|
@ -2501,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);
|
||||||
|
@ -2615,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
|
||||||
|
|
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -41,7 +41,7 @@ use Friendica\Util\Proxy;
|
||||||
use Friendica\Util\Strings;
|
use Friendica\Util\Strings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to handle photo dabatase table
|
* Class to handle photo database table
|
||||||
*/
|
*/
|
||||||
class Photo
|
class Photo
|
||||||
{
|
{
|
||||||
|
@ -101,7 +101,7 @@ class Photo
|
||||||
* Get photos for user id
|
* Get photos for user id
|
||||||
*
|
*
|
||||||
* @param integer $uid User id
|
* @param integer $uid User id
|
||||||
* @param string $resourceid Rescource ID of the photo
|
* @param string $resourceid Resource ID of the photo
|
||||||
* @param array $conditions Array of fields for conditions
|
* @param array $conditions Array of fields for conditions
|
||||||
* @param array $params Array of several parameters
|
* @param array $params Array of several parameters
|
||||||
*
|
*
|
||||||
|
@ -122,7 +122,7 @@ class Photo
|
||||||
* Get a photo for user id
|
* Get a photo for user id
|
||||||
*
|
*
|
||||||
* @param integer $uid User id
|
* @param integer $uid User id
|
||||||
* @param string $resourceid Rescource ID of the photo
|
* @param string $resourceid Resource ID of the photo
|
||||||
* @param integer $scale Scale of the photo. Defaults to 0
|
* @param integer $scale Scale of the photo. Defaults to 0
|
||||||
* @param array $conditions Array of fields for conditions
|
* @param array $conditions Array of fields for conditions
|
||||||
* @param array $params Array of several parameters
|
* @param array $params Array of several parameters
|
||||||
|
@ -148,7 +148,7 @@ class Photo
|
||||||
* on success, "no sign" image info, if user has no permission,
|
* on success, "no sign" image info, if user has no permission,
|
||||||
* false if photo does not exists
|
* false if photo does not exists
|
||||||
*
|
*
|
||||||
* @param string $resourceid Rescource ID of the photo
|
* @param string $resourceid Resource ID of the photo
|
||||||
* @param integer $scale Scale of the photo. Defaults to 0
|
* @param integer $scale Scale of the photo. Defaults to 0
|
||||||
* @param integer $visitor_uid UID of the visitor
|
* @param integer $visitor_uid UID of the visitor
|
||||||
*
|
*
|
||||||
|
@ -416,7 +416,7 @@ class Photo
|
||||||
* @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 = ""
|
||||||
* @param string $desc Photo caption. optional, default = ""
|
* @param string $desc Photo caption. optional, default = ""
|
||||||
*
|
*
|
||||||
* @return boolean True on success
|
* @return boolean True on success
|
||||||
|
@ -536,7 +536,7 @@ class Photo
|
||||||
* @param Image $image Image to update. Optional, default null.
|
* @param Image $image Image to update. Optional, default null.
|
||||||
* @param array $old_fields Array with the old field values that are about to be replaced (true = update on duplicate)
|
* @param array $old_fields Array with the old field values that are about to be replaced (true = update on duplicate)
|
||||||
*
|
*
|
||||||
* @return boolean Was the update successfull?
|
* @return boolean Was the update successful?
|
||||||
*
|
*
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @see \Friendica\Database\DBA::update
|
* @see \Friendica\Database\DBA::update
|
||||||
|
|
|
@ -58,7 +58,7 @@ class Link
|
||||||
* @param int $uriId
|
* @param int $uriId
|
||||||
* @param string $url
|
* @param string $url
|
||||||
* @param string $size
|
* @param string $size
|
||||||
* @return string Found link URL + id on success, $url on failture
|
* @return string Found link URL + id on success, $url on failure
|
||||||
*/
|
*/
|
||||||
public static function getByLink(int $uriId, string $url, string $size = ''): string
|
public static function getByLink(int $uriId, string $url, string $size = ''): string
|
||||||
{
|
{
|
||||||
|
|
|
@ -529,7 +529,7 @@ class User
|
||||||
// Addons can create users, and since this 'catch' branch should only
|
// Addons can create users, and since this 'catch' branch should only
|
||||||
// execute if getAuthenticationInfo can't find an existing user, that's
|
// execute if getAuthenticationInfo can't find an existing user, that's
|
||||||
// exactly what will happen here. Creating a numeric username would create
|
// exactly what will happen here. Creating a numeric username would create
|
||||||
// abiguity with user IDs, possibly opening up an attack vector.
|
// ambiguity with user IDs, possibly opening up an attack vector.
|
||||||
// So let's be very careful about that.
|
// So let's be very careful about that.
|
||||||
if (empty($username) || is_numeric($username)) {
|
if (empty($username) || is_numeric($username)) {
|
||||||
throw $e;
|
throw $e;
|
||||||
|
@ -684,7 +684,7 @@ class User
|
||||||
|
|
||||||
if ($user['last-activity'] != $current_day) {
|
if ($user['last-activity'] != $current_day) {
|
||||||
User::update(['last-activity' => $current_day], $uid);
|
User::update(['last-activity' => $current_day], $uid);
|
||||||
// Set the last actitivy for all identities of the user
|
// Set the last activity for all identities of the user
|
||||||
DBA::update('user', ['last-activity' => $current_day], ['parent-uid' => $uid, 'account_removed' => false]);
|
DBA::update('user', ['last-activity' => $current_day], ['parent-uid' => $uid, 'account_removed' => false]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -851,7 +851,7 @@ class User
|
||||||
* Checks if a nickname is in the list of the forbidden nicknames
|
* Checks if a nickname is in the list of the forbidden nicknames
|
||||||
*
|
*
|
||||||
* Check if a nickname is forbidden from registration on the node by the
|
* Check if a nickname is forbidden from registration on the node by the
|
||||||
* admin. Forbidden nicknames (e.g. role namess) can be configured in the
|
* admin. Forbidden nicknames (e.g. role names) can be configured in the
|
||||||
* admin panel.
|
* admin panel.
|
||||||
*
|
*
|
||||||
* @param string $nickname The nickname that should be checked
|
* @param string $nickname The nickname that should be checked
|
||||||
|
@ -1232,7 +1232,7 @@ class User
|
||||||
|
|
||||||
$resource_id = Photo::newResource();
|
$resource_id = Photo::newResource();
|
||||||
|
|
||||||
// Not using Photo::PROFILE_PHOTOS here, so that it is discovered as translateble string
|
// Not using Photo::PROFILE_PHOTOS here, so that it is discovered as translatable string
|
||||||
$profile_album = DI::l10n()->t('Profile Photos');
|
$profile_album = DI::l10n()->t('Profile Photos');
|
||||||
|
|
||||||
$r = Photo::store($image, $uid, 0, $resource_id, $filename, $profile_album, 4);
|
$r = Photo::store($image, $uid, 0, $resource_id, $filename, $profile_album, 4);
|
||||||
|
@ -1377,7 +1377,7 @@ class User
|
||||||
* permanently against re-registration, as the person was not yet
|
* permanently against re-registration, as the person was not yet
|
||||||
* allowed to have friends on this system
|
* allowed to have friends on this system
|
||||||
*
|
*
|
||||||
* @return bool True, if the deny was successfull
|
* @return bool True, if the deny was successful
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static function deny(string $hash): bool
|
public static function deny(string $hash): bool
|
||||||
|
@ -1792,7 +1792,7 @@ class User
|
||||||
*
|
*
|
||||||
* @param int $start Start count (Default is 0)
|
* @param int $start Start count (Default is 0)
|
||||||
* @param int $count Count of the items per page (Default is @see Pager::ITEMS_PER_PAGE)
|
* @param int $count Count of the items per page (Default is @see Pager::ITEMS_PER_PAGE)
|
||||||
* @param string $type The type of users, which should get (all, bocked, removed)
|
* @param string $type The type of users, which should get (all, blocked, removed)
|
||||||
* @param string $order Order of the user list (Default is 'contact.name')
|
* @param string $order Order of the user list (Default is 'contact.name')
|
||||||
* @param bool $descending Order direction (Default is ascending)
|
* @param bool $descending Order direction (Default is ascending)
|
||||||
* @return array|bool The list of the users
|
* @return array|bool The list of the users
|
||||||
|
|
|
@ -391,7 +391,7 @@ class Federation extends BaseAdmin
|
||||||
//
|
//
|
||||||
// clean up version numbers
|
// clean up version numbers
|
||||||
//
|
//
|
||||||
// some platforms do not provide version information, add a unkown there
|
// some platforms do not provide version information, add a unknown there
|
||||||
// to the version string for the displayed list.
|
// to the version string for the displayed list.
|
||||||
foreach ($versionCounts as $key => $value) {
|
foreach ($versionCounts as $key => $value) {
|
||||||
if ($versionCounts[$key]['version'] == '') {
|
if ($versionCounts[$key]['version'] == '') {
|
||||||
|
|
|
@ -110,7 +110,7 @@ class Storage extends BaseAdmin
|
||||||
foreach ($storageConfig->getOptions() as $option => $info) {
|
foreach ($storageConfig->getOptions() as $option => $info) {
|
||||||
|
|
||||||
$type = $info[0];
|
$type = $info[0];
|
||||||
// Backward compatibilty with yesno field description
|
// Backward compatibility with yesno field description
|
||||||
if ($type == 'yesno') {
|
if ($type == 'yesno') {
|
||||||
$type = 'checkbox';
|
$type = 'checkbox';
|
||||||
// Remove translated labels Yes No from field info
|
// Remove translated labels Yes No from field info
|
||||||
|
|
|
@ -51,12 +51,12 @@ class Relationships extends BaseApi
|
||||||
$request['id'] = [$request['id']];
|
$request['id'] = [$request['id']];
|
||||||
}
|
}
|
||||||
|
|
||||||
$relationsships = [];
|
$relationships = [];
|
||||||
|
|
||||||
foreach ($request['id'] as $id) {
|
foreach ($request['id'] as $id) {
|
||||||
$relationsships[] = DI::mstdnRelationship()->createFromContactId($id, $uid);
|
$relationships[] = DI::mstdnRelationship()->createFromContactId($id, $uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
System::jsonExit($relationsships);
|
System::jsonExit($relationships);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,7 +181,7 @@ class Statuses extends BaseApi
|
||||||
'sensitive' => false, // Mark status and attached media as sensitive?
|
'sensitive' => false, // Mark status and attached media as sensitive?
|
||||||
'spoiler_text' => '', // Text to be shown as a warning or subject before the actual content. Statuses are generally collapsed behind this field.
|
'spoiler_text' => '', // Text to be shown as a warning or subject before the actual content. Statuses are generally collapsed behind this field.
|
||||||
'visibility' => '', // Visibility of the posted status. One of: "public", "unlisted", "private" or "direct".
|
'visibility' => '', // Visibility of the posted status. One of: "public", "unlisted", "private" or "direct".
|
||||||
'scheduled_at' => '', // ISO 8601 Datetime at which to schedule a status. Providing this paramter will cause ScheduledStatus to be returned instead of Status. Must be at least 5 minutes in the future.
|
'scheduled_at' => '', // ISO 8601 Datetime at which to schedule a status. Providing this parameter will cause ScheduledStatus to be returned instead of Status. Must be at least 5 minutes in the future.
|
||||||
'language' => '', // ISO 639 language code for this status.
|
'language' => '', // ISO 639 language code for this status.
|
||||||
'friendica' => [], // Friendica extensions to the standard Mastodon API spec
|
'friendica' => [], // Friendica extensions to the standard Mastodon API spec
|
||||||
], $request);
|
], $request);
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Attach extends BaseModule
|
||||||
throw new \Friendica\Network\HTTPException\NotFoundException(DI::l10n()->t('Item was not found.'));
|
throw new \Friendica\Network\HTTPException\NotFoundException(DI::l10n()->t('Item was not found.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now we'll fetch the item, if we have enough permisson
|
// Now we'll fetch the item, if we have enough permission
|
||||||
$item = MAttach::getByIdWithPermission($item_id);
|
$item = MAttach::getByIdWithPermission($item_id);
|
||||||
if ($item === false) {
|
if ($item === false) {
|
||||||
throw new \Friendica\Network\HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
|
throw new \Friendica\Network\HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
|
||||||
|
|
|
@ -158,7 +158,7 @@ abstract class BaseNotifications extends BaseModule
|
||||||
/**
|
/**
|
||||||
* List of pages for the Notifications TabBar
|
* List of pages for the Notifications TabBar
|
||||||
*
|
*
|
||||||
* @return array with with notifications TabBar data
|
* @return array with notifications TabBar data
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
private function getTabs()
|
private function getTabs()
|
||||||
|
|
|
@ -302,7 +302,7 @@ class Community extends BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database query for the comunity page
|
* Database query for the community page
|
||||||
*
|
*
|
||||||
* @param $min_id
|
* @param $min_id
|
||||||
* @param $max_id
|
* @param $max_id
|
||||||
|
|
|
@ -120,7 +120,7 @@ class Network extends BaseModule
|
||||||
$content = '';
|
$content = '';
|
||||||
|
|
||||||
if (self::$forumContactId) {
|
if (self::$forumContactId) {
|
||||||
// If self::$forumContactId belongs to a communitity forum or a privat goup,.add a mention to the status editor
|
// If self::$forumContactId belongs to a community forum or a privat goup,.add a mention to the status editor
|
||||||
$condition = ["`id` = ? AND `contact-type` = ?", self::$forumContactId, Contact::TYPE_COMMUNITY];
|
$condition = ["`id` = ? AND `contact-type` = ?", self::$forumContactId, Contact::TYPE_COMMUNITY];
|
||||||
$contact = DBA::selectFirst('contact', ['addr'], $condition);
|
$contact = DBA::selectFirst('contact', ['addr'], $condition);
|
||||||
if (!empty($contact['addr'])) {
|
if (!empty($contact['addr'])) {
|
||||||
|
|
|
@ -120,7 +120,7 @@ class Delegation extends BaseModule
|
||||||
|
|
||||||
$identities = User::identities(DI::userSession()->getSubManagedUserId() ?: DI::userSession()->getLocalUserId());
|
$identities = User::identities(DI::userSession()->getSubManagedUserId() ?: DI::userSession()->getLocalUserId());
|
||||||
|
|
||||||
//getting additinal information for each identity
|
//getting additional information for each identity
|
||||||
foreach ($identities as $key => $identity) {
|
foreach ($identities as $key => $identity) {
|
||||||
$identities[$key]['thumb'] = User::getAvatarUrl($identity, Proxy::SIZE_THUMB);
|
$identities[$key]['thumb'] = User::getAvatarUrl($identity, Proxy::SIZE_THUMB);
|
||||||
|
|
||||||
|
|