diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 76009424b..4ffdb9197 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,5 @@ # How to Contribute -If you want to contribute to the project, you don’t need to have coding experience. There are a number of tasks listed in the issue tracker with the label “[Junior Jobs](https://github.com/friendica/friendica/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Jobs%22)” we think are good for new contributors. But you are by no means limited to these – if you find a solution to a problem (even a new one) please make a pull request at [github](https://github.com/friendica/friendica) or let us know in the [development forum](https://forum.friendi.ca/profile/developers). +If you want to contribute to the project, you don’t need to have coding experience. There are a number of tasks listed in the issue tracker with the label “[Junior Jobs](https://github.com/friendica/friendica/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Jobs%22)” we think are good for new contributors. But you are by no means limited to these – if you find a solution to a problem (even a new one) please make a pull request at [github](https://github.com/friendica/friendica) or let us know in the [development group](https://forum.friendi.ca/profile/developers). Contribution to Friendica is also not limited to coding. Any contribution to the [documentation](https://github.com/friendica/friendica/tree/develop/doc), the [translation](https://app.transifex.com/Friendica/friendica/dashboard/) or advertisement materials is welcome or reporting a problem. You don’t need to deal with Git(Hub) or Transifex if you don’t like to. Just [get in touch](https://forum.friendi.ca/profile/helpers) with us and we will get the materials to the appropriate places. diff --git a/database.sql b/database.sql index d61a3eda5..2528b0145 100644 --- a/database.sql +++ b/database.sql @@ -190,7 +190,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `confirm` varbinary(383) COMMENT '', `poco` varbinary(383) COMMENT '', `writable` boolean NOT NULL DEFAULT '0' COMMENT '', - `forum` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a forum. Deprecated, use \'contact-type\' = \'community\' and \'manually-approve\' = false instead', + `forum` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a group. Deprecated, use \'contact-type\' = \'community\' and \'manually-approve\' = false instead', `prv` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a private group. Deprecated, use \'contact-type\' = \'community\' and \'manually-approve\' = true instead', `bdyear` varchar(4) NOT NULL DEFAULT '' COMMENT '', `site-pubkey` text COMMENT 'Deprecated', @@ -717,7 +717,7 @@ CREATE TABLE IF NOT EXISTS `group` ( `uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id', `visible` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the member list is not private', `deleted` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the circle has been deleted', - `cid` int unsigned COMMENT 'Contact id of forum. When this field is filled then the members are synced automatically.', + `cid` int unsigned COMMENT 'Contact id of group. When this field is filled then the members are synced automatically.', `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'human readable name of circle', PRIMARY KEY(`id`), INDEX `uid` (`uid`), diff --git a/doc/Bugs-and-Issues.md b/doc/Bugs-and-Issues.md index 405604c75..126f6af58 100644 --- a/doc/Bugs-and-Issues.md +++ b/doc/Bugs-and-Issues.md @@ -6,7 +6,7 @@ Bugs and Issues If your server has a support page, you should report any bugs/issues you encounter there first. Reporting to your support page before reporting to the developers makes their job easier, as they don't have to deal with bug reports that might not have anything to do with them. Reducing the workload in this way helps us get new features faster. -You can also contact the [friendica support forum](https://forum.friendi.ca/profile/helpers) and report your problem there. +You can also contact the [friendica support group](https://forum.friendi.ca/profile/helpers) and report your problem there. Bugs are rarely limited to one person, and the chances are somebody from another node has encountered the problem too, and will be able to help you. If you're a technical user, or your site doesn't have a support page, you'll need to use the [Bug Tracker](https://github.com/friendica/friendica/issues). diff --git a/doc/Developers-Intro.md b/doc/Developers-Intro.md index 329219925..c500b2774 100644 --- a/doc/Developers-Intro.md +++ b/doc/Developers-Intro.md @@ -13,14 +13,14 @@ Whether you feel like an expert or like a newbie - join us with your ideas! ## Contact us -The discussion of Friendica development takes place in the following Friendica forums: +The discussion of Friendica development takes place in the following Friendica groups: -* The main [forum for Friendica development](https://forum.friendi.ca/profile/developers) +* The main [group for Friendica development](https://forum.friendi.ca/profile/developers) ## Help other users Remember the questions you had when you first tried Friendica? -A good place to start can be to help new people find their way around Friendica in the [general support forum](https://forum.friendi.ca/profile/helpers). +A good place to start can be to help new people find their way around Friendica in the [general support group](https://forum.friendi.ca/profile/helpers). Welcome them, answer their questions, point them to documentation or ping other helpers directly if you can't help but think you know who can. ## Translation @@ -33,10 +33,10 @@ If you don't want to translate the UI, or it is already done to your satisfactio Are you good at designing things? If you have seen Friendica you probably have ideas to improve it, haven't you? -* If you would like to work with us on enhancing the user interface, please join the [forum for Friendica development](https://forum.friendi.ca/profile/developers). +* If you would like to work with us on enhancing the user interface, please join the [group for Friendica development](https://forum.friendi.ca/profile/developers). * Make plans for a better Friendica interface design and share them with us. * Tell us if you are able to realize your ideas or what kind of help you need. - We can't promise we have the right skills in the group but we'll try. + We can't promise we have the right skills in the group, but we'll try. * Choose a thing to start with, e.g. work on the icon set of your favorite theme ## Programming @@ -72,7 +72,7 @@ just place it into `.git/hooks/post-merge` and make it executable. ### Coding standards -For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) to the exception of a few rules. +For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) excepted a few rules. Here's a few primers if you are new to Friendica or to the PSR-2 coding standards: * Indentation is tabs, period (not PSR-2). @@ -88,7 +88,7 @@ Here's a few primers if you are new to Friendica or to the PSR-2 coding standard Don't worry, you don't have to know by heart the PSR-2 coding standards to start contributing to Friendica. There are a few tools you can use to check or fix your files before you commit. -For documentation we use the standard of *one sentence per line* for the `md` files in the `/doc` and `/doc/$lng` subdirectories. +For documentation, we use the standard of *one sentence per line* for the `md` files in the `/doc` and `/doc/$lng` subdirectories. #### Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer) @@ -113,7 +113,7 @@ If the command-line tools `diff` and `patch` are unavailable for you, `phpcbf` c ### Code documentation -If you are interested in having the documentation of the Friendica code outside of the code files, you can use [Doxygen](http://doxygen.org) to generate it. +If you are interested in having the documentation of the Friendica code outside the code files, you can use [Doxygen](http://doxygen.org) to generate it. The configuration file for Doxygen is located in the base directory of the project sources. Run @@ -126,7 +126,7 @@ If you find missing documentation, don't hesitate to contact us and write it dow ### Issues -Have a look at our [issue tracker](https://github.com/friendica/friendica) on github! +Have a look at our [issue tracker](https://github.com/friendica/friendica) on GitHub! * Try to reproduce a bug that needs more inquiries and write down what you find out. * If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed. @@ -143,13 +143,13 @@ If you want to get involved here: * Look at the first steps that were made (e.g. the clean theme). Ask us to find out whom to talk to about their experiences. * Talk to design people if you know any. -* Let us know about your plans [in the dev forum](https://forum.friendi.ca/profile/developers) +* Let us know about your plans [in the dev group](https://forum.friendi.ca/profile/developers) Do not worry about cross-posting. ### Client software As Friendica is using a [Twitter/GNU Social compatible API](help/api) any of the clients for those platforms should work with Friendica as well. -Furthermore there are several client projects, especially for use with Friendica. +Furthermore, there are several client projects, especially for use with Friendica. If you are interested in improving those clients, please contact the developers of the clients directly. * Android / LinageOS: **Friendiqa** [src](https://git.friendi.ca/lubuwest/Friendiqa)/[Google Play](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa) developed by [Marco R](https://freunde.ma-nic.de/profile/marco) diff --git a/doc/FAQ-admin.md b/doc/FAQ-admin.md index 94cef1627..e5f4f2a9f 100644 --- a/doc/FAQ-admin.md +++ b/doc/FAQ-admin.md @@ -52,4 +52,4 @@ You can manually execute the structure update from the CLI in the base directory bin/console dbstructure update -if there occur any errors, please contact the [support forum](https://forum.friendi.ca/profile/helpers). +if there occur any errors, please contact the [support group](https://forum.friendi.ca/profile/helpers). diff --git a/doc/FAQ.md b/doc/FAQ.md index 2a2af5688..ebb8c041b 100644 --- a/doc/FAQ.md +++ b/doc/FAQ.md @@ -4,14 +4,14 @@ Frequently Asked Questions - FAQ * [Home](help) * **[Where I can find help?](help/FAQ#help)** -* **[Why do I getting warnings about certificates?](help/FAQ#ssl)** +* **[Why do I get warnings about certificates?](help/FAQ#ssl)** * **[How can I upload images, files, links, videos and sound files to posts?](help/FAQ#upload)** * **[Is it possible to have different avatars per profile?](help/FAQ#avatars)** * **[How can I view Friendica in a certain language?](help/FAQ#language)** * **[How do blocked, ignored, archived and hidden contacts behave?](help/FAQ#contacts)** * **[What happens when an account is removed? Is it truly deleted?](help/FAQ#removed)** * **[Can I subscribe to a hashtag?](help/FAQ#hashtag)** -* **[How to create a RSS feed of the stream?](help/FAQ#rss)** +* **[How to create an RSS feed of the stream?](help/FAQ#rss)** * **[What friendica clients can I use?](help/FAQ#clients)** @@ -21,7 +21,7 @@ Frequently Asked Questions - FAQ If this FAQ does not answer your question you can always reach out to the community via the following options: - * Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers) + * Friendica Support Group: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers) * Community chat rooms (the IRC, Matrix and XMPP rooms are bridged) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/) * XMPP: support(at)forum.friendi.ca * IRC: #friendica at [libera.chat](https://web.libera.chat/?channels=#friendica) @@ -66,7 +66,7 @@ If this doesn't work, try to add the link by typing: [url=http://example.com]*se You can also add video and audio files to posts. However, instead of a direct upload you have to use one of the following methods: -1. Add the video or audio link of a hoster (Youtube, Vimeo, Soundcloud and anyone else with oembed/opengraph-support). Videos will be shown with a preview image you can click on to start. SoundCloud directly inserts a player to your post. +1. Add the video or audio link of a hoster (YouTube, Vimeo, Soundcloud and anyone else with oembed/opengraph-support). Videos will be shown with a preview image you can click on to start. SoundCloud directly inserts a player to your post. 2. If you have your own server, you can upload multimedia files via FTP and insert the URL. @@ -92,7 +92,7 @@ A question mark is required for the separation between url and parameters. Example: - https://social.example.com/profile/example + https://social.example.com/profile/example in German: @@ -107,48 +107,48 @@ When a certain language is forced, the language remains until session is closed. Direct communication will be blocked. Blocked contacts are not included in delivery, and their own posts to you are not imported. -However their conversations with your friends will still be visible in your stream. +However, their conversations with your friends will still be visible in your stream. If you remove a contact completely, they can send you another friend request. Blocked contacts cannot do this. They cannot communicate with you directly, only through friends. ##### Ignored Ignored contacts are included in delivery and will receive your posts and private messages. -However we do not import their posts or private messages to you. -Like blocking you will still see this person's comments to posts made by your friends. +However, we do not import their posts or private messages to you. +Like blocking, you will still see this person's comments to posts made by your friends. An addon called "blockem" can be installed to collapse/hide all posts from a particular person in your stream if you desire complete blocking of an individual, including their conversations with your other friends. ##### Archived Communication is not possible and will not be attempted. -However unlike blocking, existing posts this person made before being archived will be visible in your stream. +However, unlike blocking, existing posts this person made before being archived will be visible in your stream. ##### Hidden Contact not be displayed in your public friend list. -However a hidden contact will appear normally in conversations and this may expose their hidden status to anybody who can see the conversation. +However, a hidden contact will appear normally in conversations and this may expose their hidden status to anybody who can see the conversation. ### What happens when an account is removed? -If you remove your account, it will be scheduled for permanent deletion in *seven days*. -As soon as you activate the deletion process you won't be able to login any more. +If you remove your account, it will be scheduled for permanent deletion in *seven days*. +As soon as you activate the deletion process you won't be able to log in anymore. Only the administrator of your node can halt this process prior to permanent deletion. -After the elapsed time of seven days, all your posts, messages, photos, and personal information stored on your node will be deleted. -Your node will also issue removal requests to all your contacts; this will also remove your profile from the global directory if you are listed. +After the elapsed time of seven days, all your posts, messages, photos, and personal information stored on your node will be deleted. +Your node will also issue removal requests to all your contacts; this will also remove your profile from the global directory if you are listed. Your username cannot be reissued for future sign-ups for security reasons. ### Can I follow a hashtag? -Yes. Simply add the hash tag to your saved searches. +Yes. Simply add the hashtag to your saved searches. The posts will appear on your network page. For technical reasons, your answers to such posts won't appear on the "personal" tab in the network page and the whole thread isn't accessible via the API. -### How to create a RSS feed of the stream? +### How to create an RSS feed of the stream? If you want to share your public page via rss you can use one of the following links: @@ -191,10 +191,10 @@ The available features are client specific and may differ. #### iOS -* [Mastodon](https://joinmastodon.org/apps) ([AppStore](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974)) -* [Stella*](https://www.stella-app.net/) ([AppStore](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048)) -* [Tooot](https://github.com/tooot-app) ([AppStore](https://apps.apple.com/app/id1549772269) -* [TwidereX](https://github.com/TwidereProject/TwidereX-iOS) ([AppStore](https://apps.apple.com/app/twidere-x/id1530314034)) +* [Mastodon](https://joinmastodon.org/apps) ([App Store](https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974)) +* [Stella*](https://www.stella-app.net/) ([App Store](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048)) +* [Tooot](https://github.com/tooot-app) ([App Store](https://apps.apple.com/app/id1549772269) +* [TwidereX](https://github.com/TwidereProject/TwidereX-iOS) ([App Store](https://apps.apple.com/app/twidere-x/id1530314034)) #### Linux @@ -206,7 +206,7 @@ The available features are client specific and may differ. #### macOS * [TheDesk](https://thedesk.top/en/) ([GitHub](https://github.com/cutls/TheDesk)) -* [Whalebird](https://whalebird.social/en/desktop/contents) ([AppStore](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop)) +* [Whalebird](https://whalebird.social/en/desktop/contents) ([App Store](https://apps.apple.com/de/app/whalebird/id1378283354), [GitHub](https://github.com/h3poteto/whalebird-desktop)) #### Windows diff --git a/doc/Forums.md b/doc/Forums.md deleted file mode 100644 index 6e768983e..000000000 --- a/doc/Forums.md +++ /dev/null @@ -1,66 +0,0 @@ -Forums -===== - -* [Home](help) - - -Friendica also lets you create community forums and other types of accounts that can function as discussion forums, celebrity accounts, announcement channels, news reflectors, or organization pages, depending on how you want to interact with others. Management of these pages can be delegated to other accounts, or a parent account can be designated to easily toggle multiple identities. - -Every page in Friendica has a nickname and these must all be unique. This applies to all forums, whether they are normal profiles or forum profiles. - -Managing Accounts ---- - -To create a new linked account that can be used as a forum, log in to your normal account and go to Settings > Manage Accounts. -Here you can register additional accounts with new nicknames that will be linked to your primary account. - -You may appoint a delegate to manage your new account (e.g. forum page). -The Delegates section of Manage Accounts page will provide you with a list of contacts on this instance under "Potential Delegates". -Selecting one or more persons will give them access to manage your forum. -They will be able to edit contacts, profiles, and all content for this account/page. -Please use this facility wisely. -Delegated managers will not be able to alter basic account settings, such as passwords or page types, or remove the account. - -Additionally, this page is also where you can choose to designate an account as a parent user. -If your primary account is designated as the parent user, you will be able to easily toggle identities and manage your forums or other types of accounts. - -Types of Accounts ---- - -On the new account, visit the Settings > Account page. -Towards the end of the page is a section for "Advanced account types". -Typically you would use "Personal Page - Standard" for a normal personal account with manual approval of “friends” and “followers.” -This is the default selection. -On this page you can change the type of account if desired. - -The other subtypes of a Personal Page are “Soapbox” and “Love-all.” -A Soapbox account is an announcement channel that automatically approvals follower requests. -Everything posted by the account will go out to the followers, but there will be no opportunity for interaction. -This setting would typically be used for announcements or corporate communications. -“Love-all” automatically approves contacts as friends. - -In addition to Personal Page, there are options for Organization Page, News Page, and Community Forum. -Organization and New Pages automatically approve contact requests as followers. - -Community Forum provide the ability for people to become friends/fans of the forum without requiring approval. -This creates a forum page where all members can freely interact. - -Posting to Community forums ---- - -If you are a member of a community forum, you may post to the forum by including an @-mention in the post mentioning the forum. -For example @bicycle would send my post to all members of the group "bicycle" in addition to the normal recipients. -If you mention a forum (you are a member of) in a new posting, the posting will be distributed to all members of the forum, regardless of your privacy settings for the posting. -Also, if the forum is a public forum, your posting will be public for the all internet users. -If your post is private you must also explicitly include the group in the post permissions (to allow the forum "contact" to see the post) **and** mention it in a tag (which redistributes the post to the forum members). -Posting privately to a public forum, will result in your posting being displayed on the forum wall, but not on yours. - -Additionally it is possible to address a forum with the exclamation mark. -In the example above this means that you can address the bicycle forum via !bicycle. -The difference to the @ is that the post will only be sent to the addressed forum. -This also means that you shouldn't address multiple forums in a single post in that way since it will only be distributed by one the forums. - -You may also post to a community forum by posting a "wall-to-wall" post using secure cross-site authentication. - -Comments which are relayed to community forums will be relayed back to the original post creator. -Mentioning the forum with an @-mention in a comment does not relay the message, as distribution is controlled entirely by the original post creator. diff --git a/doc/GitHub.md b/doc/GitHub.md index 5fbc3788e..24f2e6aa4 100644 --- a/doc/GitHub.md +++ b/doc/GitHub.md @@ -3,7 +3,7 @@ Friendica on GitHub * [Home](help) -Here is how you can work on the code with us. If you have any questions please write to the Friendica developers' forum. +Here is how you can work on the code with us. If you have any questions please write to the Friendica developers' group. Introduction to the workflow with our GitHub repository ------------------------------------------------------- diff --git a/doc/Groups.md b/doc/Groups.md new file mode 100644 index 000000000..3c2e17929 --- /dev/null +++ b/doc/Groups.md @@ -0,0 +1,68 @@ +Groups +===== + +* [Home](help) + + +Friendica also lets you create accounts that can function as discussion groups, celebrity accounts, announcement channels, news reflectors, or organization pages, depending on how you want to interact with others. +Management of these accounts can be delegated to other accounts, or a parent account can be designated to easily toggle multiple identities. + +Every account in Friendica has a nickname and these must all be unique. +This applies to all accounts, whether they are individual profiles or group profiles. + +Managing Accounts +--- + +To create a new linked account that can be used as a group, log in to your normal account and go to Settings > Manage Accounts. +Here you can register additional accounts with new nicknames that will be linked to your primary account. + +You may appoint a delegate to manage your new account. +The Delegates section of Manage Accounts page will provide you with a list of contacts on this instance under "Potential Delegates". +Selecting one or more persons will give them access to manage your newly created account. +They will be able to edit contacts, profiles, and all content for this account. +Please use this facility wisely. +Delegated managers will not be able to alter basic account settings, such as passwords or account types, or remove the account. + +Additionally, this page is also where you can choose to designate an account as a parent user. +If your primary account is designated as the parent user, you will be able to easily toggle identities and manage your groups or other types of accounts. + +Types of Accounts +--- + +On the new account, visit the Settings > Account page. +Towards the end of the page is a section for "Advanced account types". +Typically, you would use "Personal Page - Standard" for a normal personal account with manual approval of “friends” and “followers.” +This is the default selection. +On this page you can change the type of account if desired. + +The other subtypes of a Personal Page are “Soapbox” and “Love-all.” +A Soapbox account is an announcement channel that automatically approvals follower requests. +Everything posted by the account will go out to the followers, but there will be no opportunity for interaction. +This setting would typically be used for announcements or corporate communications. +“Love-all” automatically approves contacts as friends. + +In addition to Personal Page, there are options for Organization Page, News Page, and Community Group. +Organization and New Pages automatically approve contact requests as followers. + +Community Group provide the ability for people to join the group without requiring approval. +This creates a group where all members can freely interact. + +Posting to Community groups +--- + +If you are a member of a community group, you may post to the group by including an @-mention in the post mentioning the group. +For example @bicycle would send my post to all members of the group "bicycle" in addition to the normal recipients. +If you mention a group (you are a member of) in a new posting, the posting will be distributed to all members of the group, regardless of your privacy settings for the posting. +Also, if the group is public, your posting will be public for the all internet users. +If your post is private you must also explicitly include the group in the post permissions (to allow the group "contact" to see the post) **and** mention it in a tag (which redistributes the post to the group members). +Posting privately to a public group, will result in your posting being displayed on the group wall, but not on yours. + +Additionally, it is possible to address a group with the exclamation mark. +In the example above this means that you can address the bicycle group via !bicycle. +The difference with the @-mention is that the post will only be sent to the addressed group. +This also means that you shouldn't address multiple groups in a single post in that way since it will only be distributed by one the groups. + +You may also post to a community group by posting a "wall-to-wall" post using secure cross-site authentication. + +Comments which are relayed to community groups will be relayed back to the original post creator. +Mentioning the group with an @-mention in a comment does not relay the message, as distribution is controlled entirely by the original post creator. diff --git a/doc/Home.md b/doc/Home.md index 760c8bf56..9578e914a 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -16,7 +16,7 @@ Friendica Documentation and Resources * [Making Friends](help/Making-Friends) * [Circles and Privacy](help/Circles-and-Privacy) * [Tags and Mentions](help/Tags-and-Mentions) - * [Community Forums](help/Forums) + * [Community Groups](help/Groups) * [Chats](help/Chats) * Further information * [Move your account](help/Move-Account) @@ -67,7 +67,7 @@ Friendica Documentation and Resources * [Main Website](https://friendi.ca) * Ways to get Support - * Friendica Support Forum: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers) + * Friendica Support Group: [@helpers@forum.friendi.ca](https://forum.friendi.ca/~helpers) * [Mailing List Archive](http://mailman.friendi.ca/mailman/listinfo/support-friendi.ca) you can subscribe to the list by sending an email to ``support-request(at)friendi.ca?subject=subscribe`` * Community chat rooms (the IRC, Matrix and XMPP rooms are bridged) these public chats are logged [from IRC](https://gnusociarg.nsupdate.info/2021/%23friendica/) and [Matrix](https://view.matrix.org/alias/%23friendi.ca:matrix.org/) * XMPP/Jabber MUC: support(at)forum.friendi.ca diff --git a/doc/Improve-Performance.md b/doc/Improve-Performance.md index 1d0a859f1..727fa104b 100644 --- a/doc/Improve-Performance.md +++ b/doc/Improve-Performance.md @@ -3,7 +3,7 @@ How to improve the performance of a Friendica site * [Home](help) -Feel free to ask in the [Friendica support forum](https://forum.friendi.ca/profile/helpers) if you need some clarification about the following instructions or if you need help in any other way. +Feel free to ask in the [Friendica support group](https://forum.friendi.ca/profile/helpers) if you need some clarification about the following instructions or if you need help in any other way. System configuration -------- @@ -31,7 +31,7 @@ Active the following addons: ### rendertime -This addon doesn't speed up your system. +This addon doesn't speed up your system. It helps to analyze your bottlenecks. When enabled you see some values at the bottom of every page. diff --git a/doc/Install.md b/doc/Install.md index ddffe601c..bf9dffb35 100644 --- a/doc/Install.md +++ b/doc/Install.md @@ -15,7 +15,7 @@ Many will. But **please** review the [requirements](#Requirements) and confirm these with your hosting provider prior to installation. ## Support -If you encounter installation issues, please let us know via the [helper](http://forum.friendi.ca/profile/helpers) or the [developer](https://forum.friendi.ca/profile/developers) forum or [file an issue](https://github.com/friendica/friendica/issues). +If you encounter installation issues, please let us know via the [helper](http://forum.friendi.ca/profile/helpers) or the [developer](https://forum.friendi.ca/profile/developers) group or [file an issue](https://github.com/friendica/friendica/issues). Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future. Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues. @@ -23,7 +23,7 @@ Due to the large variety of operating systems and PHP platforms in existence we ## Prerequisites * Choose a domain name or subdomain name for your server. Put some thought into this. While changing it after installation is supported, things still might break. -* Setup HTTPS on your domain. +* Setup HTTPS on your domain. ### Requirements @@ -42,7 +42,7 @@ Due to the large variety of operating systems and PHP platforms in existence we For alternative server configurations (such as Nginx server and MariaDB database engine), refer to the [Friendica wiki](https://github.com/friendica/friendica/wiki). -### Optional +### Optional * PHP ImageMagick extension (php-imagick) for animated GIF support. @@ -105,11 +105,11 @@ If you encounter a bug, please let us know. ### Create a database -Create an empty database and note the access details (hostname, username, password, database name). +Create an empty database and note the access details (hostname, username, password, database name). Generate a strong password, then enter mysql with: mysql - + Then use the following script using the password you just generated: CREATE DATABASE friendicadb; @@ -148,7 +148,7 @@ You have the following options to automatically install Friendica: - using environment variables (f.e. `MYSQL_HOST`) - using options (f.e. `--dbhost `) -You can combine environment variables and options, but be aware that options are prioritized over environment variables. +You can combine environment variables and options, but be aware that options are prioritized over environment variables. For more information during the installation, you can use this command line option @@ -157,7 +157,7 @@ For more information during the installation, you can use this command line opti If you wish to include all optional checks, use `-a` like this statement: bin/console autoinstall -a - + *If* the automatic installation fails for any reason, check the following: * Does `config/local.config.php` already exist? If yes, the automatic installation won't start @@ -171,7 +171,7 @@ You can use a prepared config file like [local-sample.config.php](/config/local- Navigate to the main Friendica directory and execute the following command: bin/console autoinstall -f - + #### B.2: Environment variables There are two types of environment variables. @@ -194,7 +194,7 @@ if you don't use the option `--savedb` during installation, the DB credentials w **Friendica settings** This variables wont be used at normal Friendica runtime. -Instead, they get saved into `config/local.config.php`. +Instead, they get saved into `config/local.config.php`. - `FRIENDICA_URL_PATH` The URL path of Friendica (f.e. '/friendica') - `FRIENDICA_PHP_PATH` The path of the PHP binary @@ -238,7 +238,7 @@ Example: ### Verify the "host-meta" page is working Friendica should respond automatically to important addresses under the */.well-known/* rewrite path. -One critical URL would look like, for example: https://example.com/.well-known/host-meta +One critical URL would look like, for example: https://example.com/.well-known/host-meta It must be visible to the public and must respond with an XML file that is automatically customized to your site. If that URL is not working, it is possible that some other software is using the /.well-known/ path. @@ -257,7 +257,7 @@ It may be necessary to chmod the /.well-known/.htaccess file if you were not giv At this point visit your website again, and register your personal account with the same email as in the `config.admin_email` config value. Registration errors should all be recoverable automatically. -If you get any *critical* failure at this point, it generally indicates the database was not installed correctly. +If you get any *critical* failure at this point, it generally indicates the database was not installed correctly. You might wish to delete/rename `config/local.config.php` to another name and drop all the database tables so that you can start fresh. ## Post Install Configuration @@ -295,7 +295,7 @@ Once started, you can check the daemon status using the following command: cd /path/to/friendica; php bin/daemon.php status -After a server restart or any other failure, the daemon needs to be restarted. +After a server restart or any other failure, the daemon needs to be restarted. This could be achieved by a cronjob. ### (RECOMMENDED) Logging & Log Rotation @@ -408,7 +408,7 @@ provided by one of our members. > On my server I use the php protection system Suhosin [http://www.hardened-php.net/suhosin/]. > One of the things it does is to block certain functions like proc_open, as > configured in `/etc/php5/conf.d/suhosin.ini`: -> +> > suhosin.executor.func.blacklist = proc_open, ... > > For those sites like Friendica that really need these functions they can be @@ -418,34 +418,34 @@ provided by one of our members. > php_admin_value suhosin.executor.func.blacklist none > php_admin_value suhosin.executor.eval.blacklist none > -> +> > This enables every function for Friendica if accessed via browser, but not for > the cronjob that is called via php command line. I attempted to enable it for > cron by using something like: -> +> > */10 * * * * cd /var/www/friendica/friendica/ && sudo -u www-data /usr/bin/php \ > -d suhosin.executor.func.blacklist=none \ > -d suhosin.executor.eval.blacklist=none -f bin/worker.php -> +> > This worked well for simple test cases, but the friendica-cron still failed > with a fatal error: -> +> > suhosin[22962]: ALERT - function within blacklist called: proc_open() > (attacker 'REMOTE_ADDR not set', file '/var/www/friendica/friendica/boot.php', > line 1341) -> +> > After a while I noticed, that `bin/worker.php` calls further PHP script via `proc_open`. > These scripts themselves also use `proc_open` and fail, because they are NOT > called with `-d suhosin.executor.func.blacklist=none`. -> +> > So the simple solution is to put the correct parameters into `config/local.config.php`: -> +> > 'config' => [ > //Location of PHP command line processor > 'php_path' => '/usr/bin/php -d suhosin.executor.func.blacklist=none \ > -d suhosin.executor.eval.blacklist=none', > ], -> +> > This is obvious as soon as you notice that the friendica-cron uses `proc_open` > to execute PHP scripts that also use `proc_open`, but it took me quite some time to find that out. > I hope this saves some time for other people using suhosin with function blocklists. diff --git a/doc/Making-Friends.md b/doc/Making-Friends.md index 7101df2a8..d92899586 100644 --- a/doc/Making-Friends.md +++ b/doc/Making-Friends.md @@ -20,15 +20,15 @@ You'll also see a link to a **Global Directory**. There are several global directories across the globe that regularly exchange information with each other. The specific global directory that you see usually depends on where your server is located. If you click through to the global directory, you will be presented with a list of everybody who choses to be listed across all instances of Friendica. -You will also see a "Show Community Forums" link, which will direct you to Circles, Forums and Fanpages. -You connect to people, groups and forums in the same way, except groups and forums will automatically accept your introduction request, whereas a human will approve you manually. +You will also see a "Show Community Groups" link, which will direct you to Groups. +You connect to people and groups the same way, public groups will automatically accept your introduction, whereas private groups and some individual users will need to manually approve it. Connect to other Friendica users --- Visit their profile. Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile). -Click that 'Connect' button and it will take you to a 'Connect' form. +Click that 'Connect' button, and it will take you to a 'Connect' form. The form is going to ask you for your Identity Address. This is necessary so that this person's website can find yours. @@ -41,7 +41,7 @@ It's easy for people to remember. You *could* also put in the URL of your "home" page, such as "http://demo.friendica.com/profile/bob" instead of the email-style address. -When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site. +When you've submitted the connection page, it will take you back to your own site where you must then log in (if necessary) and verify the connection request on *your* site. Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request). If you already know somebody's Identity Address, you can enter it in the "connect" box on your "Contacts" page. @@ -55,14 +55,14 @@ 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. 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. -Likewise 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. People on these networks can also initiate contact with you, if they know your contact details. ### Other social media If you server provides this functionality, you can also connect with people one -Twitter or important feeds from Tumblr, Wordpress, and many more. +Twitter or important feeds from Tumblr, WordPress, and many more. To connect, enter their contact details in the "connect" box on your "Contacts" page. diff --git a/doc/Quick-Start-andfinally.md b/doc/Quick-Start-andfinally.md index 6151439ce..7ea3f5dc7 100644 --- a/doc/Quick-Start-andfinally.md +++ b/doc/Quick-Start-andfinally.md @@ -4,7 +4,7 @@ Here are some more things to help get you started: **Groups** -- Friendica Support - problems? This is the place to ask. +- Friendica Support - problems? This is the place to ask. **Documentation** diff --git a/doc/Quick-Start-groupsandpages.md b/doc/Quick-Start-groupsandpages.md index f64f3afcb..c9a27c6f1 100644 --- a/doc/Quick-Start-groupsandpages.md +++ b/doc/Quick-Start-groupsandpages.md @@ -1,9 +1,9 @@ This is the global directory. If you get lost, you can click this link to bring yourself back here. -On this page, you'll find a collection of groups, forums and celebrity pages. +On this page, you'll find a collection of groups. Groups are not real people. -Connecting to them is similar to "liking" something on Facebook, or signing up for a new forum. +Connecting to them is similar to "liking" something on Facebook, or signing up for a new group. You don't have to feel awkward about introducing yourself to a new person, because they're not people! When you connect to a group, all messages to that group will start appearing in your network tab. @@ -15,6 +15,6 @@ Remember the link at the top of this page will bring you back here. Once you've added some groups, move on to the next section. - + diff --git a/doc/Tags-and-Mentions.md b/doc/Tags-and-Mentions.md index 8d5ba9d8d..8424b026c 100644 --- a/doc/Tags-and-Mentions.md +++ b/doc/Tags-and-Mentions.md @@ -23,19 +23,19 @@ You can tag a person on a different network or one that is **not in your social Unless their system blocks unsolicited "mentions", the person tagged will likely receive a "Mention" post/activity or become a direct participant in the conversation in the case of public posts. Friendica blocks incoming “mentions” from people with no relationship to you. -The exception is an ongoing conversation started from a contact of both you and the 3rd person or a conversation in a forum where you are a member of. +The exception is an ongoing conversation started from a contact of both you and the 3rd person or a conversation in a group where you are a member of. This is a spam prevention measure. Remote mentions are delivered using the OStatus protocol. This protocol is used by Friendica and GNU Social and several other systems like Mastodon, but is not currently implemented in Diaspora. As the OStatus protocol allows this Friendica user can be @-mentioned by users from platforms using this protocol in conversations if the "Enable OStatus support" is activated on the Friendica node. -These @-mentions wont be blocked, even if there is no relationship between the sender and the receiver of the message. +These @-mentions won't be blocked, even if there is no relationship between the sender and the receiver of the message. -Friendica makes no distinction between people and forums for the purpose of tagging. -You can use @-mentions for forums like for other accounts to tag the forum. -If you want to post something exclusively to a forum (e.g. the support forum) please use the bang-notation instead of the @tag. -So !helpers will be an exclusive posting to the support forum if you are connected with the forum. -If you select a forum from the ACL a !-mention will be added automatically to your posting. +Friendica makes no distinction between people and groups for the purpose of tagging. +You can use @-mentions for groups like for other accounts to tag the group. +If you want to post something exclusively to a group (e.g. the support group) please use the !-mention instead of the @-mention. +So !helpers will be an exclusive posting to the support group if you are connected with the group. +If you select a group from the ACL a !-mention will be added automatically to your posting. If you sort your contacts into circles, you cannot @-mention these circles. But you can select the circle in the access control when creating a new posting, to allow (or disallow) a certain circle of people to see the posting. @@ -43,7 +43,7 @@ See [Circles and Privacy](help/Circles-and-Privacy) for more details about group **Topical Tags** -Topical tags are indicated by preceding the tag name with the # character. +Topical tags are indicated by preceding the tag name with the # character. This will create a link in the post to a generalised site search for the term provided. For example, #cars will provide a search link for all posts mentioning 'cars' on your site. Topical tags are generally a minimum of three characters in length. diff --git a/doc/database/db_contact.md b/doc/database/db_contact.md index f8999054f..496210067 100644 --- a/doc/database/db_contact.md +++ b/doc/database/db_contact.md @@ -81,7 +81,7 @@ Fields | confirm | | varbinary(383) | YES | | NULL | | | poco | | varbinary(383) | YES | | NULL | | | writable | | boolean | NO | | 0 | | -| forum | contact is a forum. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead | boolean | NO | | 0 | | +| forum | contact is a group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead | boolean | NO | | 0 | | | prv | contact is a private group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = true instead | boolean | NO | | 0 | | | bdyear | | varchar(4) | NO | | | | | site-pubkey | Deprecated | text | YES | | NULL | | diff --git a/doc/database/db_group.md b/doc/database/db_group.md index e94cf53eb..f717247ad 100644 --- a/doc/database/db_group.md +++ b/doc/database/db_group.md @@ -12,7 +12,7 @@ Fields | uid | Owner User id | mediumint unsigned | NO | | 0 | | | visible | 1 indicates the member list is not private | boolean | NO | | 0 | | | deleted | 1 indicates the circle has been deleted | boolean | NO | | 0 | | -| cid | Contact id of forum. When this field is filled then the members are synced automatically. | int unsigned | YES | | NULL | | +| cid | Contact id of group. When this field is filled then the members are synced automatically. | int unsigned | YES | | NULL | | | name | human readable name of circle | varchar(255) | NO | | | | Indexes diff --git a/doc/de/FAQ.md b/doc/de/FAQ.md index 6a4e030b0..57d5569c1 100644 --- a/doc/de/FAQ.md +++ b/doc/de/FAQ.md @@ -108,7 +108,7 @@ Zwischen der URL und dem Parameter muss ein Fragezeichen als Trennzeichen verwen Ein Beispiel: - https://social.example.com/profile/example + https://social.example.com/profile/example auf Deutsch: diff --git a/doc/de/Forums.md b/doc/de/Groups.md similarity index 98% rename from doc/de/Forums.md rename to doc/de/Groups.md index 5da5adb25..52455cfa7 100644 --- a/doc/de/Forums.md +++ b/doc/de/Groups.md @@ -60,4 +60,4 @@ Dies bedeutet auch, dass es nicht sinnvoll ist, mehrere Gruppen per ! in einem B Du kannst außerdem via "Wall zu Wall" einen Beitrag auf der Community-Seite bzw. in der Community-Gruppe erstellen. Kommentare, die Du an eine Community-Gruppe schickst, werden dem Originalbeitrag hinzugefügt. -Eine weitere Gruppe mit dem @-Erwähnung anzusprechen, leitet den Beitrag nicht an dieses weiter, da die Verteilung der Kommentare komplett vom Originalbeitrag bestimmt wird. \ No newline at end of file +Eine weitere Gruppe mit dem @-Erwähnung anzusprechen, leitet den Beitrag nicht an dieses weiter, da die Verteilung der Kommentare komplett vom Originalbeitrag bestimmt wird. diff --git a/doc/de/Home.md b/doc/de/Home.md index 8f6cfd92e..91976bb28 100644 --- a/doc/de/Home.md +++ b/doc/de/Home.md @@ -16,7 +16,7 @@ Friendica - Dokumentation und Ressourcen * [Freunde finden](help/Making-Friends) * [Circles und Privatsphäre](help/Circles-and-Privacy) * [Tags und Erwähnungen](help/Tags-and-Mentions) - * [Community-Gruppen](help/Forums) + * [Community-Gruppen](help/Groups) * [Chats](help/Chats) * Weiterführende Informationen * [Account umziehen](help/Move-Account) diff --git a/doc/de/Install.md b/doc/de/Install.md index b4cade356..304023013 100644 --- a/doc/de/Install.md +++ b/doc/de/Install.md @@ -182,7 +182,7 @@ Sie werden stattdessen direkt in `config/local.config.php` gespeichert. Gehe im Anschluss in den Friendica-Hauptordner und führe den Kommandozeilen Befehl aus: bin/console autoinstall [--savedb] - + #### B.3: Optionen Alle Optionen werden in `config/local.config.php` gespeichert und überschreiben etwaige, zugehörige Umgebungsvariablen. diff --git a/doc/de/Making-Friends.md b/doc/de/Making-Friends.md index e777ac981..041365103 100644 --- a/doc/de/Making-Friends.md +++ b/doc/de/Making-Friends.md @@ -3,21 +3,21 @@ Freunde finden * [Zur Startseite der Hilfe](help) -Freundschaft kann in Friendica viele verschiedene Bedeutungen annehmen. -Aber lasst es uns einfach halten, du willst einfach mit jemandem befreundet sein. +Freundschaft kann in Friendica viele verschiedene Bedeutungen annehmen. +Aber lasst es uns einfach halten, du willst einfach mit jemandem befreundet sein. Wie machst du das? -Schau dir das Verzeichnis an. -Das Verzeichnis ist in zwei Teile aufgeteilt. -Wenn du auf den "Verzeichnis"-Button klickst, wirst du zunächst alle Mitglieder deines Servers sehen, die sich dazu entschlossen haben, angezeigt zu werden. -Außerdem siehst du dort einen Link zum globalen Verzeichnis. -Wenn du dich durch das globale Verzeichnis klickst, siehst du alle Nutzer weltweit auf allen Servern, die sich entschlossen haben, im Verzeichnis zu erscheinen. -Du wirst außerdem den Link "Show Community Groups" sehen, welcher dich zu Gruppen und Fan-Seiten führt. +Schau dir das Verzeichnis an. +Das Verzeichnis ist in zwei Teile aufgeteilt. +Wenn du auf den "Verzeichnis"-Button klickst, wirst du zunächst alle Mitglieder deines Servers sehen, die sich dazu entschlossen haben, angezeigt zu werden. +Außerdem siehst du dort einen Link zum globalen Verzeichnis. +Wenn du dich durch das globale Verzeichnis klickst, siehst du alle Nutzer weltweit auf allen Servern, die sich entschlossen haben, im Verzeichnis zu erscheinen. +Du wirst außerdem den Link "Show Community Groups" sehen, welcher dich zu Gruppen und Fan-Seiten führt. Du verbindest dich mit Personen und Gruppen auf die gleiche Art, wobei Gruppen deine Anfrage automatisch annehmen, wohingegen ein Mensch dich erst manuell bestätigen muss. *Mit anderen Friendica-Nutzern verbinden* -Bes‪uche ihr Profil. +Besuche ihr Profil. Direkt unter dem Profilfoto ist das Wort "Verbinden" (bzw. "Connect" in einem englischsprachigem Profil). Klicke drauf und du gelangst zur "Verbinden"-Seite. Dort wirst du nach deiner Identitätsadresse gefragt. diff --git a/doc/de/Quick-Start-groupsandpages.md b/doc/de/Quick-Start-groupsandpages.md index 8c9d0664c..d4ea55d3d 100644 --- a/doc/de/Quick-Start-groupsandpages.md +++ b/doc/de/Quick-Start-groupsandpages.md @@ -1,4 +1,4 @@ -Gruppen und Seiten +Gruppen und Seiten ========== * [Zur Startseite der Hilfe](help) @@ -21,6 +21,6 @@ Solltest Du beim Stöbern durch die vielen Gruppen nicht wieder hierher zurück Wenn Du einige Gruppen hinzugefügt hast, gehe weiter zum nächsten Schritt. - + diff --git a/doc/de/groupsandpages.md b/doc/de/groupsandpages.md deleted file mode 100644 index a65dab906..000000000 --- a/doc/de/groupsandpages.md +++ /dev/null @@ -1,26 +0,0 @@ -Gruppen und Seiten -========== - -* [Zur Startseite der Hilfe](help) - -Hier siehst du das globale Verzeichnis. -Wenn du dich mal verirrt hast, kannst du diesen Link klicken und wieder hierher kommen. - -Auf dieser Seite findest du eine Zusammenstellung von Gruppen, Foren und bekannten Seiten. -Gruppen sind keine realen Personen. -Sich mit diesen zu verbinden ist, als wenn man jemanden auf Facebook "liked" ("gefällt mir") oder wenn man sich in einem Forum anmeldet. -Habe keine Sorge, falls du dich unbehaglich fühlst, wenn du dich einer neuen Person vorstellen sollst, da es sich nicht um Personen handelt. - -Wenn du dich mit einer Gruppe verbindest, erscheinen alle Nachrichten der Gruppe in deinem "Netzwerk"-Tab. -Du kannst diese Beiträge kommentieren oder selbst in der Gruppe schreiben, ohne eine der Gruppenmitglieder persönlich hinzuzufügen. -Das ist ein großartiger Weg, dynamisch neue Freunde zu gewinnen. -Du findest Personen, die du magst, anstatt Fremde hinzuzufügen. -Suche dir einfach eine Gruppe und füge sie so hinzu, wie du auch normale Freunde hinzufügst. -Es gibt eine Menge Gruppen und möglicherweise findest du nicht wieder zu dieser Seite zurück. -In diesem Fall nutze einfach den Link oben auf dieser Seite. - -Wenn du einige Gruppen hinzugefügt hast, gehe weiter zum nächsten Schritt. - - - - diff --git a/src/Content/Feature.php b/src/Content/Feature.php index f97a03011..b9b9d2e0e 100644 --- a/src/Content/Feature.php +++ b/src/Content/Feature.php @@ -102,7 +102,7 @@ class Feature // Post composition 'composition' => [ DI::l10n()->t('Post Composition Features'), - ['aclautomention', DI::l10n()->t('Auto-mention Forums'), DI::l10n()->t('Add/remove mention when a forum page is selected/deselected in ACL window.'), false, DI::config()->get('feature_lock', 'aclautomention', false)], + ['aclautomention', DI::l10n()->t('Auto-mention Groups'), DI::l10n()->t('Add/remove mention when a group page is selected/deselected in ACL window.'), false, DI::config()->get('feature_lock', 'aclautomention', false)], ['explicit_mentions', DI::l10n()->t('Explicit Mentions'), DI::l10n()->t('Add explicit mentions to comment box for manual control over who gets mentioned in replies.'), false, DI::config()->get('feature_lock', 'explicit_mentions', false)], ['add_abstract', DI::l10n()->t('Add an abstract from ActivityPub content warnings'), DI::l10n()->t('Add an abstract when commenting on ActivityPub posts with a content warning. Abstracts are displayed as content warning on systems like Mastodon or Pleroma.'), false, DI::config()->get('feature_lock', 'add_abstract', false)], ], @@ -116,7 +116,7 @@ class Feature // Advanced Profile Settings 'advanced_profile' => [ DI::l10n()->t('Advanced Profile Settings'), - ['forumlist_profile', DI::l10n()->t('List Forums'), DI::l10n()->t('Show visitors public community forums at the Advanced Profile Page'), false, DI::config()->get('feature_lock', 'forumlist_profile', false)], + ['forumlist_profile', DI::l10n()->t('List Groups'), DI::l10n()->t('Show visitors public groups at the Advanced Profile Page'), false, DI::config()->get('feature_lock', 'forumlist_profile', false)], ['tagadelic', DI::l10n()->t('Tag Cloud'), DI::l10n()->t('Provide a personal tag cloud on your profile page'), false, DI::config()->get('feature_lock', 'tagadelic', false)], ['profile_membersince', DI::l10n()->t('Display Membership Date'), DI::l10n()->t('Display membership date in profile'), false, DI::config()->get('feature_lock', 'profile_membersince', false)], ], diff --git a/src/Content/ForumManager.php b/src/Content/GroupManager.php similarity index 81% rename from src/Content/ForumManager.php rename to src/Content/GroupManager.php index 5decaac14..9377ea32e 100644 --- a/src/Content/ForumManager.php +++ b/src/Content/GroupManager.php @@ -29,21 +29,21 @@ use Friendica\DI; use Friendica\Model\Contact; /** - * This class handles methods related to the forum functionality + * This class handles methods related to the group functionality */ -class ForumManager +class GroupManager { /** - * Function to list all forums a user is connected with + * Function to list all groups a user is connected with * * @param int $uid of the profile owner * @param boolean $lastitem Sort by lastitem - * @param boolean $showhidden Show forums which are not hidden + * @param boolean $showhidden Show groups which are not hidden * @param boolean $showprivate Show private groups * * @return array - * 'url' => forum url - * 'name' => forum name + * 'url' => group url + * 'name' => group name * 'id' => number of the key from the array * 'micro' => contact photo in format micro * 'thumb' => contact photo in format thumb @@ -76,16 +76,16 @@ class ForumManager $condition = DBA::mergeConditions($condition, ['hidden' => false]); } - $forumlist = []; + $groupList = []; $fields = ['id', 'url', 'name', 'micro', 'thumb', 'avatar', 'network', 'uid']; $contacts = DBA::select('account-user-view', $fields, $condition, $params); if (!$contacts) { - return($forumlist); + return $groupList; } while ($contact = DBA::fetch($contacts)) { - $forumlist[] = [ + $groupList[] = [ 'url' => $contact['url'], 'name' => $contact['name'], 'id' => $contact['id'], @@ -95,19 +95,19 @@ class ForumManager } DBA::close($contacts); - return($forumlist); + return($groupList); } /** - * Forumlist widget + * Group list widget * - * Sidebar widget to show subscribed friendica forums. If activated - * in the settings, it appears at the notwork page sidebar + * Sidebar widget to show subscribed Friendica groups. If activated + * in the settings, it appears in the network page sidebar * * @param string $baseurl Base module path * @param int $uid The ID of the User - * @param int $cid The contact id which is used to mark a forum as "selected" + * @param int $cid The contact id which is used to mark a group as "selected" * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException @@ -121,7 +121,7 @@ class ForumManager $contacts = self::getList($uid, $lastitem, true, true); $total = count($contacts); - $visible_forums = 10; + $visibleGroups = 10; if (DBA::isResult($contacts)) { $id = 0; @@ -129,7 +129,7 @@ class ForumManager $entries = []; foreach ($contacts as $contact) { - $selected = (($cid == $contact['id']) ? ' forum-selected' : ''); + $selected = (($cid == $contact['id']) ? ' group-selected' : ''); $entry = [ 'url' => $baseurl . '/' . $contact['id'], @@ -143,16 +143,16 @@ class ForumManager $entries[] = $entry; } - $tpl = Renderer::getMarkupTemplate('widget_forumlist.tpl'); + $tpl = Renderer::getMarkupTemplate('widget/group_list.tpl'); $o .= Renderer::replaceMacros( $tpl, [ - '$title' => DI::l10n()->t('Forums'), - '$forums' => $entries, - '$link_desc' => DI::l10n()->t('External link to forum'), + '$title' => DI::l10n()->t('Groups'), + '$groups' => $entries, + '$link_desc' => DI::l10n()->t('External link to group'), '$total' => $total, - '$visible_forums' => $visible_forums, + '$visible_groups' => $visibleGroups, '$showless' => DI::l10n()->t('show less'), '$showmore' => DI::l10n()->t('show more')] ); @@ -162,9 +162,9 @@ class ForumManager } /** - * Format forumlist as contact block + * Format group list as contact block * - * This function is used to show the forumlist in + * This function is used to show the group list in * the advanced profile. * * @param int $uid The ID of the User @@ -181,7 +181,7 @@ class ForumManager $o = ''; - // place holder in case somebody wants configurability + // placeholder in case somebody wants configurability $show_total = 9999; //don't sort by last updated item @@ -191,7 +191,7 @@ class ForumManager $total_shown = 0; foreach ($contacts as $contact) { - $o .= HTML::micropro($contact, true, 'forumlist-profile-advanced'); + $o .= HTML::micropro($contact, true, 'grouplist-profile-advanced'); $total_shown++; if ($total_shown == $show_total) { break; @@ -202,14 +202,14 @@ class ForumManager } /** - * count unread forum items + * count unread group items * - * Count unread items of connected forums and private groups + * Count unread items of connected groups and private groups * * @return array * 'id' => contact id - * 'name' => contact/forum name - * 'count' => counted unseen forum items + * 'name' => contact/group name + * 'count' => counted unseen group items * @throws \Exception */ public static function countUnseenItems() diff --git a/src/Content/Item.php b/src/Content/Item.php index ede78a217..3981978f4 100644 --- a/src/Content/Item.php +++ b/src/Content/Item.php @@ -484,16 +484,16 @@ class Item { // Look for any tags and linkify them $item['inform'] = ''; - $private_forum = false; + $private_group = false; $private_id = null; - $only_to_forum = false; - $forum_contact = []; + $only_to_group = false; + $group_contact = []; $receivers = []; // Convert mentions in the body to a unified format $item['body'] = BBCode::setMentions($item['body'], $item['uid'], $item['network']); - // Search for forum mentions + // Search for group mentions foreach (Tag::getFromBody($item['body'], Tag::TAG_CHARACTER[Tag::MENTION] . Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) { $contact = Contact::getByURLForUser($tag[2], $item['uid']); if (empty($contact)) { @@ -512,37 +512,37 @@ class Item } if (!empty($contact['prv']) || ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION])) { - $private_forum = $contact['prv']; - $only_to_forum = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]); + $private_group = $contact['prv']; + $only_to_group = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]); $private_id = $contact['id']; - $forum_contact = $contact; - Logger::info('Private forum or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]); + $group_contact = $contact; + Logger::info('Private group or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]); } elseif ($item['allow_cid'] == '<' . $contact['id'] . '>') { - $private_forum = false; - $only_to_forum = true; + $private_group = false; + $only_to_group = true; $private_id = $contact['id']; - $forum_contact = $contact; - Logger::info('Public forum', ['url' => $tag[2], 'mention' => $tag[1]]); + $group_contact = $contact; + Logger::info('Public group', ['url' => $tag[2], 'mention' => $tag[1]]); } else { - Logger::info('Post with forum mention will not be converted to a forum post', ['url' => $tag[2], 'mention' => $tag[1]]); + Logger::info('Post with group mention will not be converted to a group post', ['url' => $tag[2], 'mention' => $tag[1]]); } } Logger::info('Got inform', ['inform' => $item['inform']]); - if (($item['gravity'] == ItemModel::GRAVITY_PARENT) && !empty($forum_contact) && ($private_forum || $only_to_forum)) { - // we tagged a forum in a top level post. Now we change the post - $item['private'] = $private_forum ? ItemModel::PRIVATE : ItemModel::UNLISTED; + if (($item['gravity'] == ItemModel::GRAVITY_PARENT) && !empty($group_contact) && ($private_group || $only_to_group)) { + // we tagged a group in a top level post. Now we change the post + $item['private'] = $private_group ? ItemModel::PRIVATE : ItemModel::UNLISTED; - if ($only_to_forum) { + if ($only_to_group) { $item['postopts'] = ''; } $item['deny_cid'] = ''; $item['deny_gid'] = ''; - if ($private_forum) { + if ($private_group) { $item['allow_cid'] = '<' . $private_id . '>'; - $item['allow_gid'] = '<' . Circle::getIdForForum($forum_contact['id']) . '>'; + $item['allow_gid'] = '<' . Circle::getIdForGroup($group_contact['id']) . '>'; } else { $item['allow_cid'] = ''; $item['allow_gid'] = ''; @@ -1011,7 +1011,7 @@ class Item $post['body'] = $this->bbCodeVideo->transform($post['body']); $post = $this->setObjectType($post); - // Personal notes must never be altered to a forum post. + // Personal notes must never be altered to a group post. if ($post['post-type'] != ItemModel::PT_PERSONAL_NOTE) { // Look for any tags and linkify them $post = $this->expandTags($post); diff --git a/src/Content/Nav.php b/src/Content/Nav.php index 470882b07..c6634a95c 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -123,7 +123,7 @@ class Nav '$apps' => $this->getAppMenu(), '$home' => $this->l10n->t('Go back'), '$clear_notifs' => $this->l10n->t('Clear notifications'), - '$search_hint' => $this->l10n->t('@name, !forum, #tags, content') + '$search_hint' => $this->l10n->t('@name, !group, #tags, content') ]); Hook::callAll('page_header', $nav); @@ -273,7 +273,7 @@ class Nav ]; if ($this->config->get('system', 'poco_local_search')) { - $nav['searchoption'][] = $this->l10n->t('Forums'); + $nav['searchoption'][] = $this->l10n->t('Groups'); } } diff --git a/src/Content/Text/HTML.php b/src/Content/Text/HTML.php index d17f75f75..01151a6a5 100644 --- a/src/Content/Text/HTML.php +++ b/src/Content/Text/HTML.php @@ -861,7 +861,7 @@ class HTML '$id' => $id, '$search_label' => DI::l10n()->t('Search'), '$save_label' => $save_label, - '$search_hint' => DI::l10n()->t('@name, !forum, #tags, content'), + '$search_hint' => DI::l10n()->t('@name, !group, #tags, content'), '$mode' => $mode, '$return_url' => urlencode(Search::getSearchPath($s)), ]; @@ -874,7 +874,7 @@ class HTML ]; if (DI::config()->get('system', 'poco_local_search')) { - $values['$searchoption']['forums'] = DI::l10n()->t('Forums'); + $values['$searchoption']['groups'] = DI::l10n()->t('Groups'); } } diff --git a/src/Content/Widget.php b/src/Content/Widget.php index c74cd3ec3..ae3a95013 100644 --- a/src/Content/Widget.php +++ b/src/Content/Widget.php @@ -530,7 +530,7 @@ class Widget ['ref' => 'person', 'name' => DI::l10n()->t('Persons')], ['ref' => 'organisation', 'name' => DI::l10n()->t('Organisations')], ['ref' => 'news', 'name' => DI::l10n()->t('News')], - ['ref' => 'community', 'name' => DI::l10n()->t('Forums')], + ['ref' => 'community', 'name' => DI::l10n()->t('Groups')], ]; return self::filter('accounttype', DI::l10n()->t('Account Types'), '', diff --git a/src/Core/ACL.php b/src/Core/ACL.php index be32670b7..1bf8ef03e 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -167,12 +167,12 @@ class ACL $acl_contacts[] = $acl_yourself; - $acl_forums = Contact::selectToArray($fields, + $acl_groups = Contact::selectToArray($fields, ['uid' => $user_id, 'self' => false, 'blocked' => false, 'archive' => false, 'deleted' => false, 'network' => Protocol::FEDERATED, 'pending' => false, 'contact-type' => Contact::TYPE_COMMUNITY], $params ); - $acl_contacts = array_merge($acl_forums, $acl_contacts); + $acl_contacts = array_merge($acl_groups, $acl_contacts); array_walk($acl_contacts, function (&$value) { $value['type'] = 'contact'; diff --git a/src/Core/Search.php b/src/Core/Search.php index 4b3bb1c7c..98517361e 100644 --- a/src/Core/Search.php +++ b/src/Core/Search.php @@ -42,7 +42,7 @@ class Search const DEFAULT_DIRECTORY = 'https://dir.friendica.social'; const TYPE_PEOPLE = 0; - const TYPE_FORUM = 1; + const TYPE_GROUP = 1; const TYPE_ALL = 2; /** @@ -55,7 +55,7 @@ class Search * @throws HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function getContactsFromProbe(string $user, $only_forum = false): ResultList + public static function getContactsFromProbe(string $user, $only_group = false): ResultList { $emptyResultList = new ResultList(); @@ -68,7 +68,7 @@ class Search return $emptyResultList; } - if ($only_forum && ($user_data['contact-type'] != Contact::TYPE_COMMUNITY)) { + if ($only_group && ($user_data['contact-type'] != Contact::TYPE_COMMUNITY)) { return $emptyResultList; } @@ -112,8 +112,8 @@ class Search $searchUrl = $server . '/search'; switch ($type) { - case self::TYPE_FORUM: - $searchUrl .= '/forum'; + case self::TYPE_GROUP: + $searchUrl .= '/group'; break; case self::TYPE_PEOPLE: $searchUrl .= '/people'; @@ -174,7 +174,7 @@ class Search { Logger::info('Searching', ['search' => $search, 'type' => $type, 'start' => $start, 'itempage' => $itemPage]); - $contacts = Contact::searchByName($search, $type == self::TYPE_FORUM ? 'community' : '', true); + $contacts = Contact::searchByName($search, $type == self::TYPE_GROUP ? 'community' : '', true); $resultList = new ResultList($start, count($contacts), $itemPage); @@ -240,7 +240,9 @@ class Search $return = array_map(function ($result) { static $contactType = [ 'People' => Contact::TYPE_PERSON, + // Kept for backward compatibility 'Forum' => Contact::TYPE_COMMUNITY, + 'Group' => Contact::TYPE_COMMUNITY, 'Organization' => Contact::TYPE_ORGANISATION, 'News' => Contact::TYPE_NEWS, ]; diff --git a/src/Model/Circle.php b/src/Model/Circle.php index e1ef4ad33..89453a0e8 100644 --- a/src/Model/Circle.php +++ b/src/Model/Circle.php @@ -615,9 +615,9 @@ class Circle * @param integer $id Contact ID * @return integer Circle ID */ - public static function getIdForForum(int $id): int + public static function getIdForGroup(int $id): int { - Logger::info('Get id for forum id', ['id' => $id]); + Logger::info('Get id for group id', ['id' => $id]); $contact = Contact::getById($id, ['uid', 'name', 'contact-type', 'manually-approve']); if (empty($contact) || ($contact['contact-type'] != Contact::TYPE_COMMUNITY) || !$contact['manually-approve']) { return 0; @@ -645,9 +645,9 @@ class Circle * @param integer $id Contact ID * @return void */ - public static function updateMembersForForum(int $id) + public static function updateMembersForGroup(int $id) { - Logger::info('Update forum members', ['id' => $id]); + Logger::info('Update group members', ['id' => $id]); $contact = Contact::getById($id, ['uid', 'url']); if (empty($contact)) { @@ -659,7 +659,7 @@ class Circle return; } - $gid = self::getIdForForum($id); + $gid = self::getIdForGroup($id); if (empty($gid)) { return; } @@ -682,6 +682,6 @@ class Circle } DBA::delete('group_member', ['gid' => $gid, 'contact-id' => $current]); - Logger::info('Updated forum members', ['id' => $id, 'count' => DBA::count('group_member', ['gid' => $gid])]); + Logger::info('Updated group members', ['id' => $id, 'count' => DBA::count('group_member', ['gid' => $gid])]); } } diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 19bb97761..3f830c29a 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -79,7 +79,7 @@ class Contact * TYPE_NEWS - the account is a news reflector * Associated page type: PAGE_SOAPBOX * - * TYPE_COMMUNITY - the account is community forum + * TYPE_COMMUNITY - the account is community group * Associated page types: PAGE_COMMUNITY, PAGE_PRVGROUP * * TYPE_RELAY - the account is a relay @@ -1652,7 +1652,7 @@ class Contact break; case self::TYPE_COMMUNITY: - $account_type = DI::l10n()->t("Forum"); + $account_type = DI::l10n()->t("Group"); break; default: @@ -3472,13 +3472,13 @@ class Contact } /** - * Is the contact a forum? + * Is the contact a group? * * @param integer $contactid ID of the contact * - * @return boolean "true" if it is a forum + * @return boolean "true" if it is a group */ - public static function isForum(int $contactid): bool + public static function isGroup(int $contactid): bool { $fields = ['contact-type']; $condition = ['id' => $contactid]; @@ -3487,7 +3487,7 @@ class Contact return false; } - // Is it a forum? + // Is it a group? return ($contact['contact-type'] == self::TYPE_COMMUNITY); } diff --git a/src/Model/Item.php b/src/Model/Item.php index 60e88757e..fad8ffeff 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1004,7 +1004,7 @@ class Item $item['deleted'] = $toplevel_parent['deleted']; $item['wall'] = $toplevel_parent['wall']; - // Reshares have to keep their permissions to allow forums to work + // Reshares have to keep their permissions to allow groups to work if (!$defined_permissions && (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE))) { $item['allow_cid'] = $toplevel_parent['allow_cid']; $item['allow_gid'] = $toplevel_parent['allow_gid']; @@ -1307,7 +1307,7 @@ class Item Post::update($fields, ['uri-id' => $posted_item['parent-uri-id'], 'uid' => $posted_item['uid']]); - // In that function we check if this is a forum post. Additionally we delete the item under certain circumstances + // In that function we check if this is a group post. Additionally we delete the item under certain circumstances if (self::tagDeliver($posted_item['uid'], $post_user_id)) { // Get the user information for the logging $user = User::getById($uid); @@ -1418,11 +1418,11 @@ class Item } /** - * Change the owner of a parent item if it had been shared by a forum + * Change the owner of a parent item if it had been shared by a group * - * (public) forum posts in the new format consist of the regular post by the author - * followed by an announce message sent from the forum account. - * Changing the owner helps in grouping forum posts. + * (public) group posts in the new format consist of the regular post by the author + * followed by an announce message sent from the group account. + * Changing the owner helps in grouping group posts. * * @param array $item * @return void @@ -1458,7 +1458,7 @@ class Item } if (Contact::isSharing($parent['owner-id'], $item['uid'])) { - Logger::info('The resharer is no forum: quit', ['resharer' => $item['author-id'], 'owner' => $parent['owner-id'], 'author' => $parent['author-id'], 'uid' => $item['uid']]); + Logger::info('The resharer is no group: quit', ['resharer' => $item['author-id'], 'owner' => $parent['owner-id'], 'author' => $parent['author-id'], 'uid' => $item['uid']]); return; } } @@ -1603,7 +1603,7 @@ class Item if (($uid != 0) && ($item['gravity'] == self::GRAVITY_PARENT)) { $owner = User::getOwnerDataById($uid); if (($owner['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY) && !Tag::isMentioned($uri_id, $owner['url'])) { - Logger::info('Target user is a forum but is not mentioned here, thread will not be stored', ['uid' => $uid, 'uri-id' => $uri_id]); + Logger::info('Target user is a group but is not mentioned here, thread will not be stored', ['uid' => $uid, 'uri-id' => $uri_id]); return 0; } } @@ -1709,7 +1709,7 @@ class Item return 0; } - // When the post belongs to a a forum then all forum users are allowed to access it + // When the post belongs to a a group then all group users are allowed to access it foreach (Tag::getByURIId($uriid, [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $tag) { if (DBA::exists('contact', ['uid' => $uid, 'nurl' => Strings::normaliseLink($tag['url']), 'contact-type' => Contact::TYPE_COMMUNITY])) { $target_uid = User::getIdForURL($tag['url']); @@ -2104,7 +2104,7 @@ class Item /// @todo On private posts we could obfuscate the date $update = ($arr['private'] != self::PRIVATE) || in_array($arr['network'], Protocol::FEDERATED); - // Is it a forum? Then we don't care about the rules from above + // Is it a group? Then we don't care about the rules from above if (!$update && in_array($arr["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN]) && ($arr["parent-uri-id"] === $arr["uri-id"])) { if (DBA::exists('contact', ['id' => $arr['contact-id'], 'forum' => true])) { $update = true; @@ -2200,7 +2200,7 @@ class Item } /** - * look for mention tags and setup a second delivery chain for forum/community posts if appropriate + * look for mention tags and setup a second delivery chain for group/community posts if appropriate * * @param int $uid * @param int $item_id @@ -3663,13 +3663,13 @@ class Item } /** - * Does the given uri-id belongs to a post that is sent as starting post to a forum? + * Does the given uri-id belongs to a post that is sent as starting post to a group? * * @param int $uri_id * - * @return boolean "true" when it is a forum post + * @return boolean "true" when it is a group post */ - public static function isForumPost(int $uri_id): bool + public static function isGroupPost(int $uri_id): bool { foreach (Tag::getByURIId($uri_id, [Tag::EXCLUSIVE_MENTION]) as $tag) { if (DBA::exists('contact', ['uid' => 0, 'nurl' => Strings::normaliseLink($tag['url']), 'contact-type' => Contact::TYPE_COMMUNITY])) { diff --git a/src/Model/Notification/Type.php b/src/Model/Notification/Type.php index c823545fb..3476a2ca9 100644 --- a/src/Model/Notification/Type.php +++ b/src/Model/Notification/Type.php @@ -42,7 +42,7 @@ class Type const TAG_SELF = 128; /** @var int Notification about getting poked/prodded/etc. (Obsolete) */ const POKE = 512; - /** @var int Notification about either a contact had posted something directly or the contact is a mentioned forum */ + /** @var int Notification about either a contact had posted something directly or the contact is a mentioned group */ const SHARE = 1024; /** @var int Global System notifications */ diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 44ee6a670..2235137be 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -830,7 +830,7 @@ class Photo * Changes photo permissions that had been embedded in a post * * @todo This function currently does have some flaws: - * - Sharing a post with a forum will create a photo that only the forum can see. + * - Sharing a post with a group will create a photo that only the group can see. * - Sharing a photo again that been shared non public before doesn't alter the permissions. * * @return string @@ -877,7 +877,7 @@ class Photo /** * @todo Existing permissions need to be mixed with the new ones. * Otherwise this creates problems with sharing the same picture multiple times - * Also check if $str_contact_allow does contain a public forum. + * Also check if $str_contact_allow does contain a public group. * Then set the permissions to public. */ diff --git a/src/Model/Tag.php b/src/Model/Tag.php index 215d81713..9f0f8d29a 100644 --- a/src/Model/Tag.php +++ b/src/Model/Tag.php @@ -50,7 +50,7 @@ class Tag */ const IMPLICIT_MENTION = 8; /** - * An exclusive mention transmits the post only to the target account without transmitting it to the followers, usually a forum. + * An exclusive mention transmits the post only to the target account without transmitting it to the followers, usually a group. */ const EXCLUSIVE_MENTION = 9; diff --git a/src/Model/User.php b/src/Model/User.php index ed63d6765..d6a72fbfe 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -88,7 +88,7 @@ class User * ACCOUNT_TYPE_NEWS - the account is a news reflector * Associated page type: PAGE_FLAGS_SOAPBOX * - * ACCOUNT_TYPE_COMMUNITY - the account is community forum + * ACCOUNT_TYPE_COMMUNITY - the account is community group * Associated page types: PAGE_COMMUNITY, PAGE_FLAGS_PRVGROUP * * ACCOUNT_TYPE_RELAY - the account is a relay diff --git a/src/Module/BaseSearch.php b/src/Module/BaseSearch.php index 262ec94a2..4a25b71a5 100644 --- a/src/Module/BaseSearch.php +++ b/src/Module/BaseSearch.php @@ -71,8 +71,8 @@ class BaseSearch extends BaseModule $header = DI::l10n()->t('People Search - %s', $search); } elseif (strpos($search, '!') === 0) { $search = trim(substr($search, 1)); - $type = Search::TYPE_FORUM; - $header = DI::l10n()->t('Forum Search - %s', $search); + $type = Search::TYPE_GROUP; + $header = DI::l10n()->t('Group Search - %s', $search); } $search = Network::convertToIdn($search); @@ -98,7 +98,7 @@ class BaseSearch extends BaseModule } if (!$results->getTotal()) { - $results = Search::getContactsFromProbe(Network::convertToIdn($search), $type == Search::TYPE_FORUM); + $results = Search::getContactsFromProbe(Network::convertToIdn($search), $type == Search::TYPE_GROUP); } return self::printResult($results, $pager, $header); @@ -151,4 +151,4 @@ class BaseSearch extends BaseModule '$paginate' => $pager->renderFull($results->getTotal()), ]); } -} \ No newline at end of file +} diff --git a/src/Module/Conversation/Network.php b/src/Module/Conversation/Network.php index 72e541be4..d4b766ae2 100644 --- a/src/Module/Conversation/Network.php +++ b/src/Module/Conversation/Network.php @@ -24,7 +24,7 @@ namespace Friendica\Module\Conversation; use Friendica\BaseModule; use Friendica\Content\BoundariesPager; use Friendica\Content\Conversation; -use Friendica\Content\ForumManager; +use Friendica\Content\GroupManager; use Friendica\Content\Nav; use Friendica\Content\Widget; use Friendica\Content\Text\HTML; @@ -52,7 +52,7 @@ class Network extends BaseModule /** @var int */ private static $circleId; /** @var int */ - private static $forumContactId; + private static $groupContactId; /** @var string */ private static $selectedTab; /** @var mixed */ @@ -90,9 +90,9 @@ class Network extends BaseModule DI::page()['aside'] .= Widget::accountTypes($module, self::$accountTypeString); DI::page()['aside'] .= Circle::sidebarWidget($module, $module . '/circle', 'standard', self::$circleId); - DI::page()['aside'] .= ForumManager::widget($module . '/forum', DI::userSession()->getLocalUserId(), self::$forumContactId); + DI::page()['aside'] .= GroupManager::widget($module . '/group', DI::userSession()->getLocalUserId(), self::$groupContactId); DI::page()['aside'] .= Widget::postedByYear($module . '/archive', DI::userSession()->getLocalUserId(), false); - DI::page()['aside'] .= Widget::networks($module, !self::$forumContactId ? self::$network : ''); + DI::page()['aside'] .= Widget::networks($module, !self::$groupContactId ? self::$network : ''); DI::page()['aside'] .= Widget\SavedSearches::getHTML(DI::args()->getQueryString()); DI::page()['aside'] .= Widget::fileAs('filed', ''); @@ -119,9 +119,9 @@ class Network extends BaseModule $content = ''; - if (self::$forumContactId) { - // If self::$forumContactId belongs to a community forum or a private group, add a mention to the status editor - $condition = ["`id` = ? AND `contact-type` = ?", self::$forumContactId, Contact::TYPE_COMMUNITY]; + if (self::$groupContactId) { + // If self::$groupContactId belongs to a community group or a private group, add a mention to the status editor + $condition = ["`id` = ? AND `contact-type` = ?", self::$groupContactId, Contact::TYPE_COMMUNITY]; $contact = DBA::selectFirst('contact', ['addr'], $condition); if (!empty($contact['addr'])) { $content = '!' . $contact['addr']; @@ -136,8 +136,8 @@ class Network extends BaseModule } $allowedCids = []; - if (self::$forumContactId) { - $allowedCids[] = (int) self::$forumContactId; + if (self::$groupContactId) { + $allowedCids[] = (int) self::$groupContactId; } elseif (self::$network) { $condition = [ 'uid' => DI::userSession()->getLocalUserId(), @@ -160,9 +160,9 @@ class Network extends BaseModule } $x = [ - 'lockstate' => self::$circleId || self::$forumContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock', + 'lockstate' => self::$circleId || self::$groupContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock', 'acl' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), true, $default_permissions), - 'bang' => ((self::$circleId || self::$forumContactId || self::$network) ? '!' : ''), + 'bang' => ((self::$circleId || self::$groupContactId || self::$network) ? '!' : ''), 'content' => $content, ]; @@ -178,8 +178,8 @@ class Network extends BaseModule $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'), [ '$title' => DI::l10n()->t('Circle: %s', $circle['name']) ]) . $o; - } elseif (self::$forumContactId) { - $contact = Contact::getById(self::$forumContactId); + } elseif (self::$groupContactId) { + $contact = Contact::getById(self::$groupContactId); if (DBA::isResult($contact)) { $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('contact/list.tpl'), [ 'contacts' => [ModuleContact::getContactTemplateVars($contact)], @@ -307,7 +307,7 @@ class Network extends BaseModule { self::$circleId = $this->parameters['circle_id'] ?? 0; - self::$forumContactId = $this->parameters['contact_id'] ?? 0; + self::$groupContactId = $this->parameters['contact_id'] ?? 0; self::$selectedTab = self::getTimelineOrderBySession(DI::userSession(), DI::pConfig()); @@ -413,10 +413,10 @@ class Network extends BaseModule if (self::$circleId) { $conditionStrings = DBA::mergeConditions($conditionStrings, ["`contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `gid` = ?)", self::$circleId]); - } elseif (self::$forumContactId) { + } elseif (self::$groupContactId) { $conditionStrings = DBA::mergeConditions($conditionStrings, ["((`contact-id` = ?) OR `uri-id` IN (SELECT `parent-uri-id` FROM `post-user-view` WHERE (`contact-id` = ? AND `gravity` = ? AND `vid` = ? AND `uid` = ?)))", - self::$forumContactId, self::$forumContactId, Item::GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), DI::userSession()->getLocalUserId()]); + self::$groupContactId, self::$groupContactId, Item::GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), DI::userSession()->getLocalUserId()]); } // Currently only the order modes "received" and "commented" are in use @@ -479,7 +479,7 @@ class Network extends BaseModule // We aren't going to try and figure out at the item, circle, and page // level which items you've seen and which you haven't. If you're looking // at the top level network page just mark everything seen. - if (!self::$circleId && !self::$forumContactId && !self::$star && !self::$mention) { + if (!self::$circleId && !self::$groupContactId && !self::$star && !self::$mention) { $condition = ['unseen' => true, 'uid' => DI::userSession()->getLocalUserId()]; self::setItemsSeenByCondition($condition); } elseif (!empty($parents)) { diff --git a/src/Module/Moderation/BaseUsers.php b/src/Module/Moderation/BaseUsers.php index cbcb625a8..2d352dbdc 100644 --- a/src/Module/Moderation/BaseUsers.php +++ b/src/Module/Moderation/BaseUsers.php @@ -118,15 +118,15 @@ abstract class BaseUsers extends BaseModeration $page_types = [ User::PAGE_FLAGS_NORMAL => $this->t('Normal Account Page'), User::PAGE_FLAGS_SOAPBOX => $this->t('Soapbox Page'), - User::PAGE_FLAGS_COMMUNITY => $this->t('Public Forum'), + User::PAGE_FLAGS_COMMUNITY => $this->t('Public Group'), User::PAGE_FLAGS_FREELOVE => $this->t('Automatic Friend Page'), - User::PAGE_FLAGS_PRVGROUP => $this->t('Private Forum') + User::PAGE_FLAGS_PRVGROUP => $this->t('Private Group') ]; $account_types = [ User::ACCOUNT_TYPE_PERSON => $this->t('Personal Page'), User::ACCOUNT_TYPE_ORGANISATION => $this->t('Organisation Page'), User::ACCOUNT_TYPE_NEWS => $this->t('News Page'), - User::ACCOUNT_TYPE_COMMUNITY => $this->t('Community Forum'), + User::ACCOUNT_TYPE_COMMUNITY => $this->t('Community Group'), User::ACCOUNT_TYPE_RELAY => $this->t('Relay'), ]; diff --git a/src/Module/Moderation/Summary.php b/src/Module/Moderation/Summary.php index 3d7c007a4..849eb284f 100644 --- a/src/Module/Moderation/Summary.php +++ b/src/Module/Moderation/Summary.php @@ -52,10 +52,10 @@ class Summary extends BaseModeration $accounts = [ [$this->t('Normal Account'), 0], [$this->t('Automatic Follower Account'), 0], - [$this->t('Public Forum Account'), 0], + [$this->t('Public Group Account'), 0], [$this->t('Automatic Friend Account'), 0], [$this->t('Blog Account'), 0], - [$this->t('Private Forum Account'), 0] + [$this->t('Private Group Account'), 0] ]; $users = 0; diff --git a/src/Module/Notifications/Ping.php b/src/Module/Notifications/Ping.php index dd9e8cccd..120035d55 100644 --- a/src/Module/Notifications/Ping.php +++ b/src/Module/Notifications/Ping.php @@ -24,7 +24,7 @@ namespace Friendica\Module\Notifications; use Friendica\App; use Friendica\BaseModule; use Friendica\Contact\Introduction\Repository\Introduction; -use Friendica\Content\ForumManager; +use Friendica\Content\GroupManager; use Friendica\Core\Cache\Capability\ICanCache; use Friendica\Core\Cache\Enum\Duration; use Friendica\Core\Config\Capability\IManageConfigValues; @@ -109,14 +109,14 @@ class Ping extends BaseModule $register_count = 0; $sysnotify_count = 0; $circles_unseen = []; - $forums_unseen = []; + $groups_unseen = []; $event_count = 0; $today_event_count = 0; $birthday_count = 0; $today_birthday_count = 0; - // Suppress notification display for forum accounts + // Suppress notification display for group accounts if ($this->session->getLocalUserId() && $this->session->get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) { if ($this->pconfig->get($this->session->getLocalUserId(), 'system', 'detailed_notif')) { $notifications = $this->notificationRepo->selectDetailedForUser($this->session->getLocalUserId()); @@ -160,9 +160,9 @@ class Ping extends BaseModule } } - foreach (ForumManager::countUnseenItems() as $forum_count) { - if ($forum_count['count'] > 0) { - $forums_unseen[] = $forum_count; + foreach (GroupManager::countUnseenItems() as $group_count) { + if ($group_count['count'] > 0) { + $groups_unseen[] = $group_count; } } } @@ -290,7 +290,7 @@ class Ping extends BaseModule $data['birthdays'] = $birthday_count; $data['birthdays-today'] = $today_birthday_count; $data['circles'] = $circles_unseen; - $data['forums'] = $forums_unseen; + $data['groups'] = $groups_unseen; $data['notification'] = ($notification_count < 50) ? $notification_count : '49+'; $data['notifications'] = $navNotifications; diff --git a/src/Module/Profile/Conversations.php b/src/Module/Profile/Conversations.php index edd99e418..9d5fea0a6 100644 --- a/src/Module/Profile/Conversations.php +++ b/src/Module/Profile/Conversations.php @@ -188,7 +188,7 @@ class Conversations extends BaseProfile $condition = DBA::mergeConditions($condition, ["`received` >= ?", DateTimeFormat::convert($datequery2, 'UTC', $this->app->getTimeZone())]); } - // Does the profile page belong to a forum? + // Does the profile page belong to a group? // If not then we can improve the performance with an additional condition if ($profile['account-type'] != User::ACCOUNT_TYPE_COMMUNITY) { $condition = DBA::mergeConditions($condition, ['contact-id' => $profile['id']]); diff --git a/src/Module/Profile/Profile.php b/src/Module/Profile/Profile.php index d753cd762..5e5028cb8 100644 --- a/src/Module/Profile/Profile.php +++ b/src/Module/Profile/Profile.php @@ -23,7 +23,7 @@ namespace Friendica\Module\Profile; use Friendica\App; use Friendica\Content\Feature; -use Friendica\Content\ForumManager; +use Friendica\Content\GroupManager; use Friendica\Content\Nav; use Friendica\Content\Text\BBCode; use Friendica\Core\Config\Capability\IManageConfigValues; @@ -254,12 +254,12 @@ class Profile extends BaseProfile ); } - //show subscribed forum if it is enabled in the usersettings + //show subscribed group if it is enabled in the usersettings if (Feature::isEnabled($profile['uid'], 'forumlist_profile')) { $custom_fields += self::buildField( - 'forumlist', - $this->t('Forums:'), - ForumManager::profileAdvanced($profile['uid']) + 'group_list', + $this->t('Groups:'), + GroupManager::profileAdvanced($profile['uid']) ); } diff --git a/src/Module/Search/Acl.php b/src/Module/Search/Acl.php index 4aa892215..66e371dd1 100644 --- a/src/Module/Search/Acl.php +++ b/src/Module/Search/Acl.php @@ -50,7 +50,7 @@ class Acl extends BaseModule const TYPE_MENTION_CONTACT = 'c'; const TYPE_MENTION_CIRCLE = 'g'; const TYPE_MENTION_CONTACT_CIRCLE = ''; - const TYPE_MENTION_FORUM = 'f'; + const TYPE_MENTION_GROUP = 'f'; const TYPE_PRIVATE_MESSAGE = 'm'; const TYPE_ANY_CONTACT = 'a'; @@ -100,7 +100,7 @@ class Acl extends BaseModule 'nick' => $contact['addr'] ?: $contact['url'], 'network' => $contact['network'], 'link' => $contact['url'], - 'forum' => $contact['contact-type'] == Contact::TYPE_COMMUNITY, + 'group' => $contact['contact-type'] == Contact::TYPE_COMMUNITY, ]; } @@ -161,7 +161,7 @@ class Acl extends BaseModule ]); break; - case self::TYPE_MENTION_FORUM: + case self::TYPE_MENTION_GROUP: $condition = DBA::mergeConditions($condition, ["NOT `self` AND NOT `blocked` AND `notify` != ? AND `contact-type` = ?", '', Contact::TYPE_COMMUNITY ]); @@ -205,7 +205,7 @@ class Acl extends BaseModule 'id' => intval($circle['id']), 'uids' => array_map('intval', explode(',', $circle['uids'])), 'link' => '', - 'forum' => '0' + 'group' => '0' ]; } if ((count($resultCircles) > 0) && ($search == '')) { @@ -218,7 +218,7 @@ class Acl extends BaseModule $contacts = Contact::selectToArray([], $condition, ['order' => ['name']]); } - $forums = []; + $groups = []; foreach ($contacts as $contact) { $entry = [ 'type' => self::TYPE_MENTION_CONTACT, @@ -229,21 +229,21 @@ class Acl extends BaseModule 'link' => $contact['url'], 'nick' => htmlentities(($contact['attag'] ?? '') ?: $contact['nick']), 'addr' => htmlentities(($contact['addr'] ?? '') ?: $contact['url']), - 'forum' => $contact['contact-type'] == Contact::TYPE_COMMUNITY, + 'group' => $contact['contact-type'] == Contact::TYPE_COMMUNITY, ]; - if ($entry['forum']) { - $forums[] = $entry; + if ($entry['group']) { + $groups[] = $entry; } else { $resultContacts[] = $entry; } } - if ($forums) { + if ($groups) { if ($search == '') { - $forums[] = ['separator' => true]; + $groups[] = ['separator' => true]; } - $resultContacts = array_merge($forums, $resultContacts); + $resultContacts = array_merge($groups, $resultContacts); } $resultItems = array_merge($resultCircles, $resultContacts); @@ -285,7 +285,7 @@ class Acl extends BaseModule 'link' => $contact['url'], 'nick' => htmlentities(($contact['nick'] ?? '') ?: $contact['addr']), 'addr' => htmlentities(($contact['addr'] ?? '') ?: $contact['url']), - 'forum' => $contact['forum'] + 'group' => $contact['forum'] ]; } } diff --git a/src/Module/Search/Index.php b/src/Module/Search/Index.php index 167389684..b08857a73 100644 --- a/src/Module/Search/Index.php +++ b/src/Module/Search/Index.php @@ -139,7 +139,7 @@ class Index extends BaseSearch break; case 'contacts': return self::performContactSearch($search, '@'); - case 'forums': + case 'groups': return self::performContactSearch($search, '!'); } } diff --git a/src/Module/Settings/Account.php b/src/Module/Settings/Account.php index c2b227c85..fe8e5e626 100644 --- a/src/Module/Settings/Account.php +++ b/src/Module/Settings/Account.php @@ -452,7 +452,7 @@ class Account extends BaseSettings $pagetype = Renderer::replaceMacros($pageset_tpl, [ '$account_types' => DI::l10n()->t("Account Types"), '$user' => DI::l10n()->t("Personal Page Subtypes"), - '$community' => DI::l10n()->t("Community Forum Subtypes"), + '$community' => DI::l10n()->t("Community Group Subtypes"), '$account_type' => $user['account-type'], '$type_person' => User::ACCOUNT_TYPE_PERSON, '$type_organisation' => User::ACCOUNT_TYPE_ORGANISATION, @@ -481,7 +481,7 @@ class Account extends BaseSettings ], '$account_community' => [ 'account-type', - DI::l10n()->t('Community Forum'), + DI::l10n()->t('Community Group'), User::ACCOUNT_TYPE_COMMUNITY, DI::l10n()->t('Account for community discussions.'), $user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY @@ -502,7 +502,7 @@ class Account extends BaseSettings ], '$page_community' => [ 'page-flags', - DI::l10n()->t('Public Forum'), + DI::l10n()->t('Public Group'), User::PAGE_FLAGS_COMMUNITY, DI::l10n()->t('Automatically approves all contact requests.'), $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY @@ -516,7 +516,7 @@ class Account extends BaseSettings ], '$page_prvgroup' => [ 'page-flags', - DI::l10n()->t('Private Forum [Experimental]'), + DI::l10n()->t('Private Group [Experimental]'), User::PAGE_FLAGS_PRVGROUP, DI::l10n()->t('Requires manual approval of contact requests.'), $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP diff --git a/src/Navigation/Notifications/Repository/Notify.php b/src/Navigation/Notifications/Repository/Notify.php index 6c3868524..2cacaa728 100644 --- a/src/Navigation/Notifications/Repository/Notify.php +++ b/src/Navigation/Notifications/Repository/Notify.php @@ -242,7 +242,7 @@ class Notify extends BaseRepository return false; } - // There is no need to create notifications for forum accounts + // There is no need to create notifications for group accounts if ($user['account-type'] == Model\User::ACCOUNT_TYPE_COMMUNITY) { return false; } diff --git a/src/Object/Post.php b/src/Object/Post.php index 0f5e98aed..1fa7588b4 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -925,7 +925,7 @@ class Post if ($conv) { // This will allow us to comment on wall-to-wall items owned by our friends - // and community forums even if somebody else wrote the post. + // and community groups even if somebody else wrote the post. // bug #517 - this fixes for conversation owner if ($conv->getMode() == 'profile' && $conv->getProfileOwner() == DI::userSession()->getLocalUserId()) { return true; diff --git a/src/Protocol/ActivityPub.php b/src/Protocol/ActivityPub.php index d1177e0b0..eaf34669b 100644 --- a/src/Protocol/ActivityPub.php +++ b/src/Protocol/ActivityPub.php @@ -52,8 +52,8 @@ use Friendica\Util\JsonLD; * - Polling the outboxes for missing content? * * Missing parts from DFRN: - * - Public Forum - * - Private Forum + * - Public Group + * - Private Group * - Relocation */ class ActivityPub diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index b8d4005a6..453525454 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -415,7 +415,7 @@ class Processor $item['post-type'] = Item::PT_NOTE; } - $item['isForum'] = false; + $item['isGroup'] = false; if (!empty($activity['thread-completion'])) { if ($activity['thread-completion'] != $item['owner-id']) { @@ -434,7 +434,7 @@ class Processor $item['owner-id'] = $item['author-id']; } else { $actor = APContact::getByURL($item['owner-link'], false); - $item['isForum'] = ($actor['type'] ?? 'Person') == 'Group'; + $item['isGroup'] = ($actor['type'] ?? 'Person') == 'Group'; } $item['uri'] = $activity['id']; @@ -1059,7 +1059,7 @@ class Processor $item['causer-id'] = ($item['gravity'] == Item::GRAVITY_PARENT) ? $item['owner-id'] : $item['author-id']; } - if ($item['isForum'] ?? false) { + if ($item['isGroup'] ?? false) { $item['contact-id'] = Contact::getIdForURL($activity['actor'], $receiver); } else { $item['contact-id'] = Contact::getIdForURL($activity['author'], $receiver); @@ -1075,7 +1075,7 @@ class Processor } if (($receiver != 0) && ($item['gravity'] == Item::GRAVITY_PARENT) && !in_array($item['post-reason'], [Item::PR_FOLLOWER, Item::PR_TAG, item::PR_TO, Item::PR_CC, Item::PR_AUDIENCE])) { - if (!($item['isForum'] ?? false)) { + if (!($item['isGroup'] ?? false)) { if ($item['post-reason'] == Item::PR_BCC) { Logger::info('Top level post via BCC from a non sharer, ignoring', ['uid' => $receiver, 'contact' => $item['contact-id'], 'url' => $item['uri']]); continue; @@ -1089,16 +1089,16 @@ class Processor } } - $is_forum = false; + $isGroup = false; $user = User::getById($receiver, ['account-type']); if (!empty($user['account-type'])) { - $is_forum = ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY); + $isGroup = ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY); } if ((DI::pConfig()->get($receiver, 'system', 'accept_only_sharer') == Item::COMPLETION_NONE) - && ((!$is_forum && !($item['isForum'] ?? false) && ($activity['type'] != 'as:Announce')) + && ((!$isGroup && !($item['isGroup'] ?? false) && ($activity['type'] != 'as:Announce')) || !Contact::isSharingByURL($activity['actor'], $receiver))) { - Logger::info('Actor is a non sharer, is no forum or it is no announce', ['uid' => $receiver, 'actor' => $activity['actor'], 'url' => $item['uri'], 'type' => $activity['type']]); + Logger::info('Actor is a non sharer, is no group or it is no announce', ['uid' => $receiver, 'actor' => $activity['actor'], 'url' => $item['uri'], 'type' => $activity['type']]); continue; } @@ -1141,7 +1141,7 @@ class Processor // Store send a follow request for every reshare - but only when the item had been stored if ($stored && ($item['private'] != Item::PRIVATE) && ($item['gravity'] == Item::GRAVITY_PARENT) && !empty($item['author-link']) && ($item['author-link'] != $item['owner-link'])) { $author = APContact::getByURL($item['owner-link'], false); - // We send automatic follow requests for reshared messages. (We don't need though for forum posts) + // We send automatic follow requests for reshared messages. (We don't need though for group posts) if ($author['type'] != 'Group') { Logger::info('Send follow request', ['uri' => $item['uri'], 'stored' => $stored, 'to' => $item['author-link']]); ActivityPub\Transmitter::sendFollowObject($item['uri'], $item['author-link']); diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index cf2485186..b272c31dd 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -1098,7 +1098,7 @@ class Receiver if (!empty($actor)) { $profile = APContact::getByURL($actor); $followers = $profile['followers'] ?? ''; - $is_forum = ($profile['type'] ?? '') == 'Group'; + $isGroup = ($profile['type'] ?? '') == 'Group'; if ($push) { Contact::updateByUrlIfNeeded($actor); } @@ -1106,7 +1106,7 @@ class Receiver } else { Logger::info('Empty actor', ['activity' => $activity]); $followers = ''; - $is_forum = false; + $isGroup = false; } // We have to prevent false follower assumptions upon thread completions @@ -1129,7 +1129,7 @@ class Receiver } // Fetch the receivers for the public and the followers collection - if ((($receiver == $followers) || (($receiver == self::PUBLIC_COLLECTION) && !$is_forum)) && !empty($actor)) { + if ((($receiver == $followers) || (($receiver == self::PUBLIC_COLLECTION) && !$isGroup)) && !empty($actor)) { $receivers = self::getReceiverForActor($actor, $tags, $receivers, $follower_target, $profile); continue; } @@ -1148,7 +1148,7 @@ class Receiver $condition = ['nurl' => Strings::normaliseLink($actor), 'rel' => [Contact::SHARING, Contact::FRIEND], 'network' => $networks, 'archive' => false, 'pending' => false, 'uid' => $contact['uid']]; - // Forum posts are only accepted from forum contacts + // Group posts are only accepted from group contacts if ($contact['contact-type'] == Contact::TYPE_COMMUNITY) { $condition['rel'] = [Contact::SHARING, Contact::FRIEND, Contact::FOLLOWER]; } diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 3d945180a..e817198ec 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -492,13 +492,13 @@ class Transmitter * Returns an array with permissions of the thread parent of the given item array * * @param array $item - * @param bool $is_forum_thread + * @param bool $is_group_thread * * @return array with permissions * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function fetchPermissionBlockFromThreadParent(array $item, bool $is_forum_thread): array + private static function fetchPermissionBlockFromThreadParent(array $item, bool $is_group_thread): array { if (empty($item['thr-parent-id'])) { return []; @@ -528,7 +528,7 @@ class Transmitter $type = [Tag::TO => 'to', Tag::CC => 'cc', Tag::BTO => 'bto', Tag::BCC => 'bcc']; foreach (Tag::getByURIId($item['thr-parent-id'], [Tag::TO, Tag::CC, Tag::BTO, Tag::BCC]) as $receiver) { if (!empty($parent_profile['followers']) && $receiver['url'] == $parent_profile['followers'] && !empty($item_profile['followers'])) { - if (!$is_forum_thread) { + if (!$is_group_thread) { $permissions[$type[$receiver['type']]][] = $item_profile['followers']; } } elseif (!in_array($receiver['url'], $exclude)) { @@ -573,7 +573,7 @@ class Transmitter } $always_bcc = false; - $is_forum = false; + $is_group = false; $follower = ''; // Check if we should always deliver our stuff via BCC @@ -581,7 +581,7 @@ class Transmitter $owner = User::getOwnerDataById($item['uid']); if (!empty($owner)) { $always_bcc = $owner['hide-friends']; - $is_forum = ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) && $owner['manually-approve']; + $is_group = ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) && $owner['manually-approve']; $profile = APContact::getByURL($owner['url'], false); $follower = $profile['followers'] ?? ''; @@ -595,9 +595,9 @@ class Transmitter $parent = Post::selectFirst(['causer-link', 'post-reason'], ['id' => $item['parent']]); if (!empty($parent) && ($parent['post-reason'] == Item::PR_ANNOUNCEMENT) && !empty($parent['causer-link'])) { $profile = APContact::getByURL($parent['causer-link'], false); - $is_forum_thread = isset($profile['type']) && $profile['type'] == 'Group'; + $is_group_thread = isset($profile['type']) && $profile['type'] == 'Group'; } else { - $is_forum_thread = false; + $is_group_thread = false; } if (self::isAnnounce($item) || self::isAPPost($last_id)) { @@ -619,7 +619,7 @@ class Transmitter $exclusive = false; $mention = false; - if ($is_forum_thread) { + if ($is_group_thread) { foreach (Tag::getByURIId($item['parent-uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $term) { $profile = APContact::getByURL($term['url'], false); if (!empty($profile) && ($profile['type'] == 'Group')) { @@ -644,7 +644,7 @@ class Transmitter $data['cc'][] = $announce['actor']['url']; } - $data = array_merge($data, self::fetchPermissionBlockFromThreadParent($item, $is_forum_thread)); + $data = array_merge($data, self::fetchPermissionBlockFromThreadParent($item, $is_group_thread)); // Check if the item is completely public or unlisted if ($item['private'] == Item::PUBLIC) { @@ -702,7 +702,7 @@ class Transmitter $exclusive = false; } - if ($is_forum && !$exclusive && !empty($follower)) { + if ($is_group && !$exclusive && !empty($follower)) { $data['cc'][] = $follower; } elseif (!$exclusive) { foreach ($receiver_list as $receiver) { @@ -739,19 +739,19 @@ class Transmitter $profile = APContact::getByURL($parent['owner-link'], false); if (!empty($profile)) { if ($item['gravity'] != Item::GRAVITY_PARENT) { - // Comments to forums are directed to the forum - // But comments to forums aren't directed to the followers collection - // This rule is only valid when the actor isn't the forum. - // The forum needs to transmit their content to their followers. + // Comments to groups are directed to the group + // But comments to groups aren't directed to the followers collection + // This rule is only valid when the actor isn't the group. + // The group needs to transmit their content to their followers. if (($profile['type'] == 'Group') && ($profile['url'] != ($actor_profile['url'] ?? ''))) { $data['to'][] = $profile['url']; } else { $data['cc'][] = $profile['url']; - if (($item['private'] != Item::PRIVATE) && !empty($actor_profile['followers']) && (!$exclusive || !$is_forum_thread)) { + if (($item['private'] != Item::PRIVATE) && !empty($actor_profile['followers']) && (!$exclusive || !$is_group_thread)) { $data['cc'][] = $actor_profile['followers']; } } - } elseif (!$exclusive && !$is_forum_thread) { + } elseif (!$exclusive && !$is_group_thread) { // Public thread parent post always are directed to the followers. if ($item['private'] != Item::PRIVATE) { $data['cc'][] = $actor_profile['followers']; @@ -885,12 +885,11 @@ class Transmitter { $inboxes = []; - $isforum = false; - + $isGroup = false; if (!empty($item['uid'])) { $profile = User::getOwnerDataById($item['uid']); if (!empty($profile)) { - $isforum = $profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY; + $isGroup = $profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY; } } @@ -920,7 +919,7 @@ class Transmitter continue; } - if ($isforum && ($contact['network'] == Protocol::DFRN)) { + if ($isGroup && ($contact['network'] == Protocol::DFRN)) { continue; } diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index b29a3676a..1fcaaba7f 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -2220,8 +2220,8 @@ class DFRN GServer::setProtocol($importer['gsid'], Post\DeliveryData::DFRN); } - // is it a public forum? Private forums aren't exposed with this method - $forum = intval(XML::getFirstNodeValue($xpath, '/atom:feed/dfrn:community/text()')); + // is it a public group? Private groups aren't exposed with this method + $group = intval(XML::getFirstNodeValue($xpath, '/atom:feed/dfrn:community/text()')); // The account type is new since 3.5.1 if ($xpath->query('/atom:feed/dfrn:account_type')->length > 0) { @@ -2235,17 +2235,17 @@ class DFRN // Updating the public contact as well Contact::update(['contact-type' => $accounttype], ['uid' => 0, 'nurl' => $importer['nurl']]); } - // A forum contact can either have set "forum" or "prv" - but not both + // A group contact can either have set "forum" or "prv" - but not both if ($accounttype == User::ACCOUNT_TYPE_COMMUNITY) { - // It's a forum, so either set the public or private forum flag - $condition = ['(`forum` != ? OR `prv` != ?) AND `id` = ?', $forum, !$forum, $importer['id']]; - Contact::update(['forum' => $forum, 'prv' => !$forum], $condition); + // It's a group, so either set the public or private forum flag + $condition = ['(`forum` != ? OR `prv` != ?) AND `id` = ?', $group, !$group, $importer['id']]; + Contact::update(['forum' => $group, 'prv' => !$group], $condition); // Updating the public contact as well - $condition = ['(`forum` != ? OR `prv` != ?) AND `uid` = 0 AND `nurl` = ?', $forum, !$forum, $importer['nurl']]; - Contact::update(['forum' => $forum, 'prv' => !$forum], $condition); + $condition = ['(`forum` != ? OR `prv` != ?) AND `uid` = 0 AND `nurl` = ?', $group, !$group, $importer['nurl']]; + Contact::update(['forum' => $group, 'prv' => !$group], $condition); } else { - // It's not a forum, so remove the flags + // It's not a group, so remove the flags $condition = ['(`forum` OR `prv`) AND `id` = ?', $importer['id']]; Contact::update(['forum' => false, 'prv' => false], $condition); @@ -2253,13 +2253,13 @@ class DFRN $condition = ['(`forum` OR `prv`) AND `uid` = 0 AND `nurl` = ?', $importer['nurl']]; Contact::update(['forum' => false, 'prv' => false], $condition); } - } elseif ($forum != $importer['forum']) { // Deprecated since 3.5.1 - $condition = ['`forum` != ? AND `id` = ?', $forum, $importer['id']]; - Contact::update(['forum' => $forum], $condition); + } elseif ($group != $importer['forum']) { // Deprecated since 3.5.1 + $condition = ['`forum` != ? AND `id` = ?', $group, $importer['id']]; + Contact::update(['forum' => $group], $condition); // Updating the public contact as well - $condition = ['`forum` != ? AND `uid` = 0 AND `nurl` = ?', $forum, $importer['nurl']]; - Contact::update(['forum' => $forum], $condition); + $condition = ['`forum` != ? AND `uid` = 0 AND `nurl` = ?', $group, $importer['nurl']]; + Contact::update(['forum' => $group], $condition); } diff --git a/src/Protocol/Delivery.php b/src/Protocol/Delivery.php index c8039344e..9f8174e2d 100644 --- a/src/Protocol/Delivery.php +++ b/src/Protocol/Delivery.php @@ -404,7 +404,7 @@ class Delivery */ private static function deliverDiaspora(string $cmd, array $contact, array $owner, array $items, array $target_item, bool $public_message, bool $top_level, bool $followup): bool { - // We don't treat Forum posts as "wall-to-wall" to be able to post them via Diaspora + // We don't treat group posts as "wall-to-wall" to be able to post them via Diaspora $walltowall = $top_level && ($owner['id'] != $items[0]['contact-id']) & ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY); if ($public_message) { diff --git a/src/Worker/ExpireAndRemoveUsers.php b/src/Worker/ExpireAndRemoveUsers.php index f29934596..c04741462 100644 --- a/src/Worker/ExpireAndRemoveUsers.php +++ b/src/Worker/ExpireAndRemoveUsers.php @@ -36,7 +36,7 @@ class ExpireAndRemoveUsers { public static function execute() { - // expire any expired regular accounts. Don't expire forums. + // expire any expired regular accounts. Don't expire groups. $condition = ["NOT `account_expired` AND `account_expires_on` > ? AND `account_expires_on` < ? AND `page-flags` = ? AND `uid` != ?", DBA::NULL_DATETIME, DateTimeFormat::utcNow(), User::PAGE_FLAGS_NORMAL, 0]; DBA::update('user', ['account_expired' => true], $condition); diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 6eb653dec..e87a587f5 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -167,8 +167,8 @@ class Notifier // Do a PuSH $push_notify = false; - // Deliver directly to a forum, don't PuSH - $direct_forum_delivery = false; + // Deliver directly to a group, don't PuSH + $direct_group_delivery = false; $only_ap_delivery = false; @@ -249,15 +249,15 @@ class Notifier $relay_to_owner = false; } - // Special treatment for forum posts - if (Item::isForumPost($target_item['uri-id'])) { + // Special treatment for group posts + if (Item::isGroupPost($target_item['uri-id'])) { $relay_to_owner = true; - $direct_forum_delivery = true; + $direct_group_delivery = true; } - // Avoid that comments in a forum thread are sent to OStatus - if (Item::isForumPost($parent['uri-id'])) { - $direct_forum_delivery = true; + // Avoid that comments in a group thread are sent to OStatus + if (Item::isGroupPost($parent['uri-id'])) { + $direct_group_delivery = true; } $exclusive_delivery = false; @@ -303,7 +303,7 @@ class Notifier } } - if ($direct_forum_delivery) { + if ($direct_group_delivery) { $push_notify = false; } @@ -793,11 +793,11 @@ class Notifier $uid = $target_item['contact-uid'] ?: $target_item['uid']; - // Update the locally stored follower list when we deliver to a forum + // Update the locally stored follower list when we deliver to a group foreach (Tag::getByURIId($target_item['uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $tag) { $target_contact = Contact::getByURL(Strings::normaliseLink($tag['url']), null, [], $uid); if ($target_contact && $target_contact['contact-type'] == Contact::TYPE_COMMUNITY && $target_contact['manually-approve']) { - Circle::updateMembersForForum($target_contact['id']); + Circle::updateMembersForGroup($target_contact['id']); } } diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 8ff660412..92ed8c8df 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -250,7 +250,7 @@ return [ "confirm" => ["type" => "varbinary(383)", "comment" => ""], "poco" => ["type" => "varbinary(383)", "comment" => ""], "writable" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], - "forum" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a forum. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead"], + "forum" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = false instead"], "prv" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a private group. Deprecated, use 'contact-type' = 'community' and 'manually-approve' = true instead"], "bdyear" => ["type" => "varchar(4)", "not null" => "1", "default" => "", "comment" => ""], // Deprecated fields that aren't in use anymore @@ -767,7 +767,7 @@ return [ "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "foreign" => ["user" => "uid"], "comment" => "Owner User id"], "visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 indicates the member list is not private"], "deleted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 indicates the circle has been deleted"], - "cid" => ["type" => "int unsigned", "foreign" => ["contact" => "id"], "comment" => "Contact id of forum. When this field is filled then the members are synced automatically."], + "cid" => ["type" => "int unsigned", "foreign" => ["contact" => "id"], "comment" => "Contact id of group. When this field is filled then the members are synced automatically."], "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "human readable name of circle"], ], "indexes" => [ diff --git a/static/defaults.config.php b/static/defaults.config.php index 6a0a619a3..273095315 100644 --- a/static/defaults.config.php +++ b/static/defaults.config.php @@ -633,7 +633,7 @@ return [ 'throttle_limit_month' => 0, // transmit_pending_events (Boolean) - // Transmit pending events upon accepted contact request for forums + // Transmit pending events upon accepted contact request for groups 'transmit_pending_events' => false, // update_active_contacts (Boolean) diff --git a/static/routes.config.php b/static/routes.config.php index 8b4b1a967..7409c408d 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -667,7 +667,7 @@ return [ '/network' => [ '[/]' => [Module\Conversation\Network::class, [R::GET]], '/archive/{from:\d\d\d\d-\d\d-\d\d}[/{to:\d\d\d\d-\d\d-\d\d}]' => [Module\Conversation\Network::class, [R::GET]], - '/forum/{contact_id:\d+}' => [Module\Conversation\Network::class, [R::GET]], + '/group/{contact_id:\d+}' => [Module\Conversation\Network::class, [R::GET]], '/circle/{circle_id:\d+}' => [Module\Conversation\Network::class, [R::GET]], ], @@ -687,7 +687,7 @@ return [ '/update_network' => [ '[/]' => [Module\Update\Network::class, [R::GET]], '/archive/{from:\d\d\d\d-\d\d-\d\d}[/{to:\d\d\d\d-\d\d-\d\d}]' => [Module\Update\Network::class, [R::GET]], - '/forum/{contact_id:\d+}' => [Module\Update\Network::class, [R::GET]], + '/group/{contact_id:\d+}' => [Module\Update\Network::class, [R::GET]], '/circle/{circle_id:\d+}' => [Module\Update\Network::class, [R::GET]], ], diff --git a/view/global.css b/view/global.css index 5b701654a..455174e21 100644 --- a/view/global.css +++ b/view/global.css @@ -452,14 +452,14 @@ td.federation-data { max-height: 80px; } -/* forumlist widget */ -.forumlist-img { +/* group list widget */ +.grouplist-img { height: 20px; width: 20px; vertical-align: middle; } -#forum-widget-collapse { +#group-widget-collapse { opacity: 0.3; } @@ -479,7 +479,7 @@ aside .help-aside-wrapper h1 { color: #ffffff; } -#forum-widget-collapse:hover { +#group-widget-collapse:hover { opacity: 1.0; } diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js index 6d4e88382..dc649084a 100644 --- a/view/js/autocomplete.js +++ b/view/js/autocomplete.js @@ -25,7 +25,7 @@ function contact_search(term, callback, backend_url, type, mode) { if(lterm.indexOf(t) >= 0) { // A more broad search has been performed already, so use those results // Filter old results locally var matching = contact_search.cache[bt][t].filter(function (x) { return (x.name.toLowerCase().indexOf(lterm) >= 0 || (typeof x.nick !== 'undefined' && x.nick.toLowerCase().indexOf(lterm) >= 0)); }); // Need to check that nick exists because circles don't have one - matching.unshift({forum:false, text: term, replace: term}); + matching.unshift({group: false, text: term, replace: term}); setTimeout(function() { callback(matching); } , 1); // Use "pseudo-thread" to avoid some problems return; } @@ -69,10 +69,10 @@ function contact_format(item) { // Show contact information if not explicitly told to show something else if(typeof item.text === 'undefined') { var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick); - var forum = ((item.forum) ? 'forum' : ''); + var group = ((item.group) ? 'group' : ''); if(typeof desc === 'undefined') desc = ''; if(desc) desc = ' ('+desc+')'; - return "
{2}{3}
".format(forum, item.photo, item.name, desc, item.link); + return "
{2}{3}
".format(group, item.photo, item.name, desc, item.link); } else return "
" + item.text + "
"; @@ -258,8 +258,8 @@ function string2bb(element) { template: contact_format, }; - // Autocomplete forums - forums = { + // Autocomplete groups + groups = { match: /(^|\s)(!\!*)([^ \n]+)$/, index: 3, search: function(term, callback) { contact_search(term, callback, backend_url, 'f'); }, @@ -294,7 +294,7 @@ function string2bb(element) { }; this.attr('autocomplete','off'); - this.textcomplete([contacts, forums, smilies, tags], {dropdown: {className:'acpopup'}}); + this.textcomplete([contacts, groups, smilies, tags], {dropdown: {className:'acpopup'}}); this.fixTextcompleteEscape(); return this; @@ -310,7 +310,7 @@ function string2bb(element) { template: contact_format, }; - // Autocomplete forum accounts + // Autocomplete group accounts community = { match: /(^!)([^\n]{2,})$/, index: 2, diff --git a/view/js/main.js b/view/js/main.js index a761f44fc..3e0f8307a 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -296,11 +296,11 @@ $(function() { $(".circle-"+gid+" .notify").addClass("show").text(gcount); }); - $(".forum-widget-entry .notify").removeClass("show"); - $(data.forums).each(function(key, forum) { - var fid = forum.id; - var fcount = forum.count; - $(".forum-"+fid+" .notify").addClass("show").text(fcount); + $(".group-widget-entry .notify").removeClass("show"); + $(data.groups).each(function(key, group) { + var fid = group.id; + var fcount = group.count; + $(".group-"+fid+" .notify").addClass("show").text(fcount); }); if (data.notifications.length == 0) { diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 6aaf40f3a..df736290f 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2023.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 08:56+0000\n" +"POT-Creation-Date: 2023-06-01 19:00-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1513,12 +1513,12 @@ msgid "Post Composition Features" msgstr "" #: src/Content/Feature.php:105 -msgid "Auto-mention Forums" +msgid "Auto-mention Groups" msgstr "" #: src/Content/Feature.php:105 msgid "" -"Add/remove mention when a forum page is selected/deselected in ACL window." +"Add/remove mention when a group page is selected/deselected in ACL window." msgstr "" #: src/Content/Feature.php:106 @@ -1559,11 +1559,11 @@ msgid "Advanced Profile Settings" msgstr "" #: src/Content/Feature.php:119 -msgid "List Forums" +msgid "List Groups" msgstr "" #: src/Content/Feature.php:119 -msgid "Show visitors public community forums at the Advanced Profile Page" +msgid "Show visitors public groups at the Advanced Profile Page" msgstr "" #: src/Content/Feature.php:120 @@ -1596,20 +1596,20 @@ msgid "" "Contact birthday events are private to you." msgstr "" -#: src/Content/ForumManager.php:151 src/Content/Nav.php:276 +#: src/Content/GroupManager.php:151 src/Content/Nav.php:276 #: src/Content/Text/HTML.php:877 src/Content/Widget.php:533 -msgid "Forums" +msgid "Groups" msgstr "" -#: src/Content/ForumManager.php:153 -msgid "External link to forum" +#: src/Content/GroupManager.php:153 +msgid "External link to group" msgstr "" -#: src/Content/ForumManager.php:156 src/Content/Widget.php:512 +#: src/Content/GroupManager.php:156 src/Content/Widget.php:512 msgid "show less" msgstr "" -#: src/Content/ForumManager.php:157 src/Content/Widget.php:414 +#: src/Content/GroupManager.php:157 src/Content/Widget.php:414 #: src/Content/Widget.php:513 msgid "show more" msgstr "" @@ -1712,7 +1712,7 @@ msgid "Clear notifications" msgstr "" #: src/Content/Nav.php:126 src/Content/Text/HTML.php:864 -msgid "@name, !forum, #tags, content" +msgid "@name, !group, #tags, content" msgstr "" #: src/Content/Nav.php:220 src/Module/Security/Login.php:157 @@ -3033,7 +3033,7 @@ msgid "Organisation" msgstr "" #: src/Model/Contact.php:1655 -msgid "Forum" +msgid "Group" msgstr "" #: src/Model/Contact.php:2951 @@ -5555,7 +5555,7 @@ msgstr "" #: src/Module/BaseSearch.php:75 #, php-format -msgid "Forum Search - %s" +msgid "Group Search - %s" msgstr "" #: src/Module/BaseSearch.php:121 src/Module/Contact/MatchInterests.php:139 @@ -7366,7 +7366,7 @@ msgid "Soapbox Page" msgstr "" #: src/Module/Moderation/BaseUsers.php:121 src/Module/Settings/Account.php:505 -msgid "Public Forum" +msgid "Public Group" msgstr "" #: src/Module/Moderation/BaseUsers.php:122 src/Module/Settings/Account.php:512 @@ -7374,7 +7374,7 @@ msgid "Automatic Friend Page" msgstr "" #: src/Module/Moderation/BaseUsers.php:123 -msgid "Private Forum" +msgid "Private Group" msgstr "" #: src/Module/Moderation/BaseUsers.php:126 src/Module/Settings/Account.php:463 @@ -7390,7 +7390,7 @@ msgid "News Page" msgstr "" #: src/Module/Moderation/BaseUsers.php:129 src/Module/Settings/Account.php:484 -msgid "Community Forum" +msgid "Community Group" msgstr "" #: src/Module/Moderation/BaseUsers.php:130 @@ -7812,7 +7812,7 @@ msgid "Automatic Follower Account" msgstr "" #: src/Module/Moderation/Summary.php:55 -msgid "Public Forum Account" +msgid "Public Group Account" msgstr "" #: src/Module/Moderation/Summary.php:56 @@ -7824,7 +7824,7 @@ msgid "Blog Account" msgstr "" #: src/Module/Moderation/Summary.php:58 -msgid "Private Forum Account" +msgid "Private Group Account" msgstr "" #: src/Module/Moderation/Summary.php:78 @@ -8450,7 +8450,7 @@ msgid "Description:" msgstr "" #: src/Module/Profile/Profile.php:261 -msgid "Forums:" +msgid "Groups:" msgstr "" #: src/Module/Profile/Profile.php:273 @@ -9017,7 +9017,7 @@ msgid "Personal Page Subtypes" msgstr "" #: src/Module/Settings/Account.php:455 -msgid "Community Forum Subtypes" +msgid "Community Group Subtypes" msgstr "" #: src/Module/Settings/Account.php:465 @@ -9063,7 +9063,7 @@ msgid "" msgstr "" #: src/Module/Settings/Account.php:519 -msgid "Private Forum [Experimental]" +msgid "Private Group [Experimental]" msgstr "" #: src/Module/Settings/Account.php:521 @@ -11874,7 +11874,7 @@ msgid "Textareas font size" msgstr "" #: view/theme/vier/config.php:91 -msgid "Comma separated list of helper forums" +msgid "Comma separated list of helper groups" msgstr "" #: view/theme/vier/config.php:131 diff --git a/view/templates/widget/group_list.tpl b/view/templates/widget/group_list.tpl new file mode 100644 index 000000000..fd71a8e9d --- /dev/null +++ b/view/templates/widget/group_list.tpl @@ -0,0 +1,53 @@ + + + +

{{$title}}

+
+
+ +

{{$title}}

+
+ +
+
+ diff --git a/view/templates/widget_forumlist.tpl b/view/templates/widget_forumlist.tpl deleted file mode 100644 index 7d250a01a..000000000 --- a/view/templates/widget_forumlist.tpl +++ /dev/null @@ -1,53 +0,0 @@ - - - -

{{$title}}

-
-
- -

{{$title}}

-
- -
-
- diff --git a/view/theme/duepuntozero/deriv/slackr.css b/view/theme/duepuntozero/deriv/slackr.css index 8f6351bcf..179b6259c 100644 --- a/view/theme/duepuntozero/deriv/slackr.css +++ b/view/theme/duepuntozero/deriv/slackr.css @@ -90,7 +90,7 @@ nav #site-location { box-shadow: 4px 4px 3px 0 #444444; } -.forumlist-img { +.group-list-img { border-radius: 3px; -moz-border-radius: 3px; box-shadow: 4px 4px 3px 0 #444444; diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 8b5ffeea6..802aaf16f 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -386,7 +386,7 @@ div.wall-item-content-wrapper.shiny { margin-bottom: 10px; } -.widget .selected, .circle-selected, .forum-selected { +.widget .selected, .circle-selected, .group-selected { padding: 3px; -moz-border-radius: 3px; border-radius: 3px; @@ -1859,7 +1859,7 @@ a.mail-list-link { #sidebar-circle-list ul { list-style-type: none; } -.sidebar-circle-li .notify, .forum-widget-entry .notify { +.sidebar-circle-li .notify, .group-widget-entry .notify { display: none; font-size: 9px; border: 1px solid rgb(221, 221, 221); @@ -1867,7 +1867,7 @@ a.mail-list-link { float: right; background-color: #BABDB6; } -.sidebar-circle-li .notify.show, .forum-widget-entry .notify.show { +.sidebar-circle-li .notify.show, .group-widget-entry .notify.show { display: block; } @@ -1881,7 +1881,7 @@ a.mail-list-link { margin-top: 10px; } -#forumlist-sidebar ul { +#group-list-sidebar ul { list-style: none; } diff --git a/view/theme/frio/README.md b/view/theme/frio/README.md index 4bf530007..db739a0aa 100644 --- a/view/theme/frio/README.md +++ b/view/theme/frio/README.md @@ -20,7 +20,7 @@ This theme should be the start of a discussion in the friendica community (users What frameworks do we want to use? How should default friendica look like? And how do we want to use friendica? What do we need in the core code (At the present time some stuff this is done with ugly javascript hacks and own php code)? Coding a theme is much work but you will get a really good insight of the limitations of friendica and can start a discussion about doing things differently. -So join the discussion at the friendica forums ;-) +So join the discussion at the friendica groups ;-) If anyone wants to contribute to this theme he/she is welcome to do this. diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 82e47331d..f9e0e5ee7 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -367,7 +367,7 @@ btn-eventnav:hover { aside .badge { opacity: 0.7; } -.forum-widget-entry .badge, +.group-widget-entry .badge, .sidebar-circle-li .badge { margin-top: 6px; } @@ -1102,7 +1102,7 @@ aside .widget li a:hover { color: $font_color_darker; } -/* forumlist widget */ +/* group-list widget */ aside > #datebrowse-sidebar li.posted-date-selector-months { margin-bottom: 10px; padding: 0; @@ -1122,7 +1122,7 @@ aside > #datebrowse-sidebar .posted-date-selector-months > ul > li:hover { padding-left: 27px; } -.forumlist-img { +.group-list-img { -webkit-filter: grayscale(100%); filter: grayscale(100%); opacity: 0.5; @@ -1133,7 +1133,7 @@ aside > #datebrowse-sidebar .posted-date-selector-months > ul > li:hover { -ms-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } -#forumlist-sidebar-ul li:hover a > .forumlist-img { +#group-list-sidebar-ul li:hover a > .group-list-img { -webkit-filter: unset; filter: unset; opacity: unset; @@ -2192,7 +2192,7 @@ nav .acpopup { border-left: 3px solid $link_color; padding-left: 17px !important; } -.textcomplete-item a .forum { +.textcomplete-item a .group { color: $link_color; } img.acpopup-img { @@ -2494,7 +2494,7 @@ body.mod-login .navbar #nav-login { margin-top: 20px; margin-bottom: 20px; } -.contact-block-div.forumlist-profile-advanced { +.contact-block-div.group-list-profile-advanced { float: left; } diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 3ad81f5c0..ef71b8c1d 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -41,9 +41,9 @@ $(document).ready(function () { $("#sidebar-circle-ul li a.circle-selected").parent("li").addClass("selected"); } - // add the class "selected" to forums widgets li if li > a does have the class forum-selected - if ($("#forumlist-sidebar-ul li a").hasClass("forum-selected")) { - $("#forumlist-sidebar-ul li a.forum-selected").parent("li").addClass("selected"); + // add the class "selected" to groups widgets li if li > a does have the class group-selected + if ($("#group-list-sidebar-ul li a").hasClass("group-selected")) { + $("#group-list-sidebar-ul li a.group-selected").parent("li").addClass("selected"); } // add the class "active" to tabmenuli if li > a does have the class active @@ -206,7 +206,7 @@ $(document).ready(function () { }); } - // move the forum contact information of the network page into the second navbar + // move the group contact information of the network page into the second navbar if ($(".network-content-wrapper > #viewcontact_wrapper-network").length) { // get the contact-wrapper element and append it to the second nav bar // Note: We need the first() element with this class since at the present time we diff --git a/view/theme/frio/templates/contact/entry.tpl b/view/theme/frio/templates/contact/entry.tpl index a5fc6d773..75f0d6d9e 100644 --- a/view/theme/frio/templates/contact/entry.tpl +++ b/view/theme/frio/templates/contact/entry.tpl @@ -91,7 +91,7 @@

{{$contact.name}} {{if $contact.account_type}} ({{$contact.account_type}}){{/if}} - {{if $contact.account_type == 'Forum'}}{{/if}} + {{if $contact.account_type == 'Group'}}{{/if}} {{* @todo this needs some changing in core because $contact.account_type contains a translated string which may not be the same in every language *}}

diff --git a/view/theme/frio/templates/jot-header.tpl b/view/theme/frio/templates/jot-header.tpl index 643c1d94a..c5c3576c7 100644 --- a/view/theme/frio/templates/jot-header.tpl +++ b/view/theme/frio/templates/jot-header.tpl @@ -50,9 +50,9 @@ $("#profile-jot-text").focus(enableOnUser); $("#profile-jot-text").click(enableOnUser); - // When clicking on a forum in acl we should remove the profile jot textarea - // default value before inserting the forum mention - $("body").on('click', '#jot-modal .acl-list-item.forum', function(){ + // When clicking on a group in acl we should remove the profile jot textarea + // default value before inserting the group mention + $("body").on('click', '#jot-modal .acl-list-item.group', function(){ jotTextOpenUI(document.getElementById("profile-jot-text")); }); diff --git a/view/theme/frio/templates/wall_thread.tpl b/view/theme/frio/templates/wall_thread.tpl index ecf426103..3e9d19e02 100644 --- a/view/theme/frio/templates/wall_thread.tpl +++ b/view/theme/frio/templates/wall_thread.tpl @@ -80,7 +80,7 @@ as the value of $top_child_total (this is done at the end of this file) - {{* The little overlay avatar picture if someone is posting directly to a wall or a forum *}} + {{* The little overlay avatar picture if someone is posting directly to a wall or a group *}} {{if $item.owner_url}}