Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ea647d80ee | ||
|
e2e3c1cdcd |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,4 +16,3 @@ TODO.rym
|
|||||||
config-*.php
|
config-*.php
|
||||||
good-config.php
|
good-config.php
|
||||||
*.mo
|
*.mo
|
||||||
/vendor/
|
|
||||||
|
109
CHANGELOG.md
109
CHANGELOG.md
@@ -1,109 +0,0 @@
|
|||||||
# GNU social - Log of Changes
|
|
||||||
|
|
||||||
## 2.0.0 - THIS. IS. GNU SOCIAL!!! [WIP]
|
|
||||||
|
|
||||||
Release name chosen after 300 by Frank Miller where the main protagonist Leonidas, King of Sparta, declines peace with the
|
|
||||||
Persians, after being disrespected, by shouting at the Persian Messenger "This is Sparta!" and kicking him into a large well
|
|
||||||
proceeded by the killing of the other Persian messengers.
|
|
||||||
|
|
||||||
### Major changes from previous release:
|
|
||||||
|
|
||||||
Load and Storage:
|
|
||||||
- New media handling system
|
|
||||||
- GS is now structurely divided in includes and public
|
|
||||||
- OEmbed upgraded to Embed plugin (Now we provide Open Graph information too)
|
|
||||||
- Added Redis based caching and queues
|
|
||||||
- Improved memcached support
|
|
||||||
|
|
||||||
Federation:
|
|
||||||
- Added ActivityPub support
|
|
||||||
- RemoteFollow: Remote follow ActivityPub and OStatus remote actors via the click of a button
|
|
||||||
- ActorLists: Allow to create collections of Actors and to interact with them - supports both OStatus and ActivityPub
|
|
||||||
- The Free Network: Automagically migrate internal remote profiles between Free Network protocols
|
|
||||||
- Enabled the search box to import remote notices and profiles
|
|
||||||
- Improvements on Nodeinfo (and new route)
|
|
||||||
|
|
||||||
General:
|
|
||||||
- Composer was integrated
|
|
||||||
|
|
||||||
Modules:
|
|
||||||
- Restored built-in plugins
|
|
||||||
- New modules system: core plugins and plugins physically separated
|
|
||||||
- Bug fixes of core modules logic
|
|
||||||
- Improved plugin management tool (now all available plugins are shown and third party can be uploaded and deleted)
|
|
||||||
|
|
||||||
## v1.20.9release - The Invicta Crusade
|
|
||||||
|
|
||||||
Dropped Support for PHP5.6.x. Minimum PHP version now is 7.0.0.
|
|
||||||
|
|
||||||
Release name chosen after Porto city. Porto is one of the oldest cities in Europe and thanks to its fierce resistance during
|
|
||||||
two battles and sieges in history, it has earned the epithet of ‘Cidade Invicta’ (Invincible City). The dev team behind this
|
|
||||||
release studies in Porto, Portugal.
|
|
||||||
|
|
||||||
Major changes from previous release:
|
|
||||||
|
|
||||||
- Various patches on PEAR related components
|
|
||||||
- Various database related improvements
|
|
||||||
- Improved XMPP support
|
|
||||||
- Added Nodeinfo support
|
|
||||||
- Various i18n and l10n bug fixes
|
|
||||||
- Improvements on Internal Session Handler
|
|
||||||
- Improvements on OpenID support
|
|
||||||
- Improved Media handling and safer upload
|
|
||||||
- Redirect to previous page after login
|
|
||||||
- Initial work on full conversion to PHP7
|
|
||||||
- Initial work on a better documentation
|
|
||||||
- Allow login with email
|
|
||||||
- Various bug fixes
|
|
||||||
|
|
||||||
## v1.2.0beta4 - The good reign of PHP5
|
|
||||||
|
|
||||||
Dropped support for PHP5.4.
|
|
||||||
|
|
||||||
New this version
|
|
||||||
|
|
||||||
This is the development branch for the 1.2.x version of GNU social. All daring 1.1.x admins should upgrade to this version.
|
|
||||||
|
|
||||||
So far it includes the following changes:
|
|
||||||
|
|
||||||
- Backing up a user's account is more and more complete.
|
|
||||||
- Emojis 😸 (utf8mb4 support)
|
|
||||||
|
|
||||||
The last release, 1.1.3, gave us these improvements:
|
|
||||||
|
|
||||||
- XSS security fix (thanks Simon Waters, https://www.surevine.com/)
|
|
||||||
- Many improvements to ease adoption of the Qvitter front-end https://github.com/hannesmannerheim/qvitter
|
|
||||||
- Protocol adaptions for improved performance and stability
|
|
||||||
|
|
||||||
Upgrades from StatusNet 1.1.1 will also experience these improvements:
|
|
||||||
|
|
||||||
- Fixes for SQL injection errors in profile lists.
|
|
||||||
- Improved ActivityStreams JSON representation of activities and objects.
|
|
||||||
- Upgrade to the Twitter 1.1 API.
|
|
||||||
- More robust handling of errors in distribution.
|
|
||||||
- Fix error in OStatus subscription for remote groups.
|
|
||||||
- Fix error in XMPP distribution.
|
|
||||||
- Tracking of conversation URI metadata (more coherent convos)
|
|
||||||
|
|
||||||
## v1.1.3release - The Spanish Invasion
|
|
||||||
|
|
||||||
New this version
|
|
||||||
|
|
||||||
This is a security fix and bug fix release since 1.1.3-beta2. All 1.1.x sites should upgrade to this version.
|
|
||||||
|
|
||||||
So far it includes the following changes:
|
|
||||||
|
|
||||||
- XSS security fix (thanks Simon Waters, https://www.surevine.com/)
|
|
||||||
- Many improvements to ease adoption of the Qvitter front-end https://github.com/hannesmannerheim/qvitter
|
|
||||||
- Protocol adaptions for improved performance and stability
|
|
||||||
- Backing up a user's account now appears to work as it should
|
|
||||||
|
|
||||||
Upgrades from StatusNet 1.1.1 will also experience these improvements:
|
|
||||||
|
|
||||||
- Fixes for SQL injection errors in profile lists.
|
|
||||||
- Improved ActivityStreams JSON representation of activities and objects.
|
|
||||||
- Upgrade to the Twitter 1.1 API.
|
|
||||||
- More robust handling of errors in distribution.
|
|
||||||
- Fix error in OStatus subscription for remote groups.
|
|
||||||
- Fix error in XMPP distribution.
|
|
||||||
- Tracking of conversation URI metadata (more coherent convos)
|
|
113
CONTRIBUTING.md
113
CONTRIBUTING.md
@@ -1 +1,112 @@
|
|||||||
GNU social's contributing resources and instructions are made available at [DOCUMENTATION/DEVELOPERS](https://notabug.org/diogo/gnu-social/src/nightly/DOCUMENTATION/DEVELOPERS).
|
# Contributing to GNU social
|
||||||
|
|
||||||
|
First of all, if you're reading this intending to contribute to GNU social,
|
||||||
|
thanks! Free software development only happens when people like you take an
|
||||||
|
interest in giving back to the software they themselves use, and their
|
||||||
|
community.
|
||||||
|
|
||||||
|
When contributing to this repository, please first discuss the change you wish to
|
||||||
|
make via issue, email, or any other method with the owners of this repository before
|
||||||
|
making a change.
|
||||||
|
|
||||||
|
There's a few files you should read before going forward with a merge request
|
||||||
|
or a patch submission. They detail what this file touches on in brief. They
|
||||||
|
are:
|
||||||
|
|
||||||
|
* `DOCUMENTATION/DEVELOPERS/CONTRIBUTING/coding_standards.md`: How your code should be structured and formatted to be
|
||||||
|
accepted into the GNU social codebase.
|
||||||
|
* `/DOCUMENTATION/DEVELOPERS/CONTRIBUTING/merge_request_checklist.md`: A quick checklist to review before submission.
|
||||||
|
|
||||||
|
|
||||||
|
## Merge Request Process
|
||||||
|
|
||||||
|
1. Ensure you strip any trailing spaces off and checked the file with php-cs-fixer
|
||||||
|
2. Increase the version numbers in any examples files and the README.md to the new version that this
|
||||||
|
Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).
|
||||||
|
3. You may merge the Pull Request in once you have the sign-off of two other developers, or if you
|
||||||
|
do not have permission to do that, you may request the second reviewer to merge it for you.
|
||||||
|
|
||||||
|
|
||||||
|
## Coding Standards
|
||||||
|
|
||||||
|
Since we will be expected to maintain your code once it's submitted, we ask you
|
||||||
|
to adhere to certain coding standards that make it easier for us to do so. If
|
||||||
|
code doesn't follow them, it will be rejected, so please read up on these.
|
||||||
|
|
||||||
|
|
||||||
|
## Bug Reports
|
||||||
|
|
||||||
|
Please report bugs to the issue tracker at
|
||||||
|
<https://notabug.org/diogo/gnu-social/issues> Avoid assigning the labels
|
||||||
|
yourself, as these are for the development team to assign priority and area of
|
||||||
|
coverage to a subject. Please only submit something here if you are certain it
|
||||||
|
is a bug or represents a feature enhancement that we do not presently have. If
|
||||||
|
you are uncertain whether it's a bug, please feel free to ask
|
||||||
|
at #social IRC channel on freenode.net https://www.freenode.net/.
|
||||||
|
|
||||||
|
When reporting a bug, please try to include as much information as possible,
|
||||||
|
including the environment being run on (if it's a common LAMP stack just give
|
||||||
|
us version numbers of the main stack components, that's fine), and the specific
|
||||||
|
error you get. If you do not get a client-facing error, please check the PHP
|
||||||
|
error_log and ensure there isn't something silently reported there, as well as
|
||||||
|
the GNU social log. Try to include steps to reproduce the error as well, as if
|
||||||
|
we cannot reproduce the error, we can't fix it!
|
||||||
|
|
||||||
|
It is perfectly acceptable to reference the archive page of a discussion on the
|
||||||
|
mailing list for the bug report, by the way, as long as it includes all the
|
||||||
|
information we need for a bug report.
|
||||||
|
|
||||||
|
|
||||||
|
## Submitting Feature Requests / Enhancement Requests
|
||||||
|
|
||||||
|
Social media is constantly evolving, and we welcome ideas about how we can
|
||||||
|
change and evolve GNU social to keep it the excellent piece of software that it
|
||||||
|
is. However, there are a few things we ask you do when submitting feature
|
||||||
|
requests:
|
||||||
|
|
||||||
|
1. Understand that since we have a limited amount of developers and these people
|
||||||
|
contribute in their free time, we may prioritize things differently than you
|
||||||
|
value them. Oftentimes this is because certain requests involve less changes
|
||||||
|
to the existing codebase than others, and therefore this makes them easier
|
||||||
|
to add.
|
||||||
|
2. Please search the existing feature requests and enhancements to see if a
|
||||||
|
similar request exists. If one does but you have different ideas about how
|
||||||
|
to do it or what it should entail, please add a comment to the existing idea
|
||||||
|
rather than create a new one for your "version" of it. Duplicate submissions
|
||||||
|
mean we spend more time maintaining the tracker and less time actually
|
||||||
|
working on the codebase!
|
||||||
|
3. When outlining the way that you see something working, don't be afraid to be
|
||||||
|
as detailed as possible! We may not implement it exactly as you describe for
|
||||||
|
any variety of reasons, but the more concrete and fleshed out an idea is, the
|
||||||
|
easier it is for us to know what you want and be able to implement it in a
|
||||||
|
sane and secure fashion.
|
||||||
|
4. When describing a possible new idea and its mechanisms of operation, the key
|
||||||
|
words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
|
||||||
|
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the issue submission
|
||||||
|
are to be interpreted as described in RFC 2119.
|
||||||
|
<https://tools.ietf.org/html/rfc2119>
|
||||||
|
|
||||||
|
Finally, and just as a call back to the first point, realize just because we
|
||||||
|
might not rush to implement something, doesn't mean that we don't want to
|
||||||
|
implement it! We would rather take the time to do something right the first
|
||||||
|
time, then hurriedly apply a new idea, or a fix, only to have to patch it later.
|
||||||
|
|
||||||
|
|
||||||
|
## Branch of Code Submissions
|
||||||
|
|
||||||
|
Unless you've been specifically directed otherwise, all submissions of code
|
||||||
|
should be against the `nightly` branch, so make sure any modifications are based
|
||||||
|
on Nightly.
|
||||||
|
|
||||||
|
|
||||||
|
## Copyright / Licensing
|
||||||
|
|
||||||
|
You acknowledge that by submitting code to GNU social, you are licensing it under
|
||||||
|
the GNU AGPLv3 unless there is an extenuating circumstance where it would be
|
||||||
|
licensed differently (such as modifications to an external library we include
|
||||||
|
such as Stomp).
|
||||||
|
|
||||||
|
You also acknowledge that unless you assign a copyright explicitly, it will be
|
||||||
|
assumed to be assigned to GNU social.
|
||||||
|
|
||||||
|
Thanks for considering submission, and happy hacking!
|
||||||
|
25
CREDITS.md
25
CREDITS.md
@@ -3,22 +3,20 @@ Credits for GNU social
|
|||||||
The following is an incomplete list of developers
|
The following is an incomplete list of developers
|
||||||
who've worked on GNU social, or its predecessors
|
who've worked on GNU social, or its predecessors
|
||||||
StatusNet and Free Social. Apologies for any
|
StatusNet and Free Social. Apologies for any
|
||||||
oversight; please let mail@diogo.site know if
|
oversight; please let mattl@gnu.org know if
|
||||||
anyone's been overlooked in error.
|
anyone's been overlooked in error.
|
||||||
|
|
||||||
V2 team
|
Current team
|
||||||
-------
|
------------
|
||||||
* Diogo Cordeiro
|
|
||||||
* Alexei Sorokin
|
|
||||||
* Bruno Casteleiro
|
|
||||||
|
|
||||||
Credits for GNU social v1
|
|
||||||
------------------------
|
|
||||||
Leads
|
|
||||||
* Mikael Nordfeldth
|
|
||||||
* Matt Lee
|
* Matt Lee
|
||||||
|
* Mikael Nordfeldth
|
||||||
|
* Diogo Cordeiro
|
||||||
|
* Bruno Casteleiro
|
||||||
|
* Miguel Dantas
|
||||||
|
* Alexei Sorokin
|
||||||
|
|
||||||
Additional Contributors
|
Additional Contributors
|
||||||
|
-----------------------
|
||||||
* Ciaran Gultnieks
|
* Ciaran Gultnieks
|
||||||
* Michael Landers
|
* Michael Landers
|
||||||
* Ori Avtalion
|
* Ori Avtalion
|
||||||
@@ -48,7 +46,7 @@ Additional Contributors
|
|||||||
* Blaine Cook
|
* Blaine Cook
|
||||||
* Henry Story
|
* Henry Story
|
||||||
* Melvin Carvalho
|
* Melvin Carvalho
|
||||||
* Stéphane Bérubé (chimo)
|
* chimo
|
||||||
* Akio
|
* Akio
|
||||||
* Maiyannah Bishop
|
* Maiyannah Bishop
|
||||||
* Bob Mottram
|
* Bob Mottram
|
||||||
@@ -57,9 +55,8 @@ Additional Contributors
|
|||||||
* Moonman
|
* Moonman
|
||||||
* Normandy
|
* Normandy
|
||||||
* Verius
|
* Verius
|
||||||
* Diogo Peralta Cordeiro
|
* Alexei Sorokin
|
||||||
* Daniel Supernault
|
* Daniel Supernault
|
||||||
* Miguel Dantas
|
|
||||||
|
|
||||||
Credits for StatusNet
|
Credits for StatusNet
|
||||||
--------------
|
--------------
|
||||||
|
@@ -27,7 +27,7 @@ namespace samples;
|
|||||||
|
|
||||||
defined('GNUSOCIAL') || die();
|
defined('GNUSOCIAL') || die();
|
||||||
|
|
||||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'SampleHandler.php';
|
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'SampleHandler.php');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of this class.
|
* Description of this class.
|
||||||
@@ -43,7 +43,7 @@ class MySampleClass
|
|||||||
* @param string $dummy_word just because.
|
* @param string $dummy_word just because.
|
||||||
* @param int $result another just because.
|
* @param int $result another just because.
|
||||||
*/
|
*/
|
||||||
public function __construct(string $dummy_word = '', ?int $result = null)
|
public function __construct(string $dummy_word = '', int $result = null)
|
||||||
{
|
{
|
||||||
global $demo;
|
global $demo;
|
||||||
$this->niceWorld();
|
$this->niceWorld();
|
||||||
@@ -54,7 +54,7 @@ class MySampleClass
|
|||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function niceWorld(): string
|
public function niceWorld() : string
|
||||||
{
|
{
|
||||||
return 'hello, world.';
|
return 'hello, world.';
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
GNU social Coding Style
|
GNU social Coding Style
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
Please comply with [PSR-12](https://www.php-fig.org/psr/psr-12/) and the following standard when working on GNU social
|
Please comply with [PSR-2](https://www.php-fig.org/psr/psr-2/) and the following standard when working on GNU social
|
||||||
if you want your patches accepted and modules included in supported releases.
|
if you want your patches accepted and modules included in supported releases.
|
||||||
|
|
||||||
If you see code which doesn't comply with the below, please fix it :)
|
If you see code which doesn't comply with the below, please fix it :)
|
||||||
@@ -118,7 +118,7 @@ Some short hands are evil:
|
|||||||
|
|
||||||
Naming conventions
|
Naming conventions
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Respect PSR-12 first.
|
Respect PSR2 first.
|
||||||
|
|
||||||
- Classes use PascalCase (e.g. MyClass).
|
- Classes use PascalCase (e.g. MyClass).
|
||||||
- Functions/Methods use camelCase (e.g. myFunction).
|
- Functions/Methods use camelCase (e.g. myFunction).
|
||||||
@@ -145,29 +145,11 @@ Also, whereever possible, avoid ambiguous terms. For example, don't use text
|
|||||||
as a term for a variable. Call back to "contents" above.
|
as a term for a variable. Call back to "contents" above.
|
||||||
|
|
||||||
|
|
||||||
Arrays
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
Even though PSR-12 doesn't specifically specify rules for array formatting, it
|
|
||||||
is in the spirit of it to have every array element on a new line like is done
|
|
||||||
for function and class method arguments and condition expressions, if there is
|
|
||||||
more than one element.
|
|
||||||
In this case, even the last element should end on a comma, to ease later
|
|
||||||
element addition.
|
|
||||||
|
|
||||||
$foo = ['first' => 'unu'];
|
|
||||||
$bar = [
|
|
||||||
'first' => 'once',
|
|
||||||
'second' => 'twice',
|
|
||||||
'third' => 'thrice',
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
Comparisons
|
Comparisons
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Always use symbol based comparison operators (&&, ||) instead of text based
|
Always use symbol based comparison operators (&&, ||) instead of text based
|
||||||
operators (and, or) in an "if" clause as they are evaluated in different order
|
operators (AND, OR) as they are evaluated in different orders and at different
|
||||||
and at different speeds.
|
speeds. This is will prevent any confusion or strange results.
|
||||||
This is will prevent any confusion or strange results.
|
|
||||||
|
|
||||||
|
|
||||||
Use English
|
Use English
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
Submission Checklist
|
Submission Checklist
|
||||||
================================================================================
|
================================================================================
|
||||||
This document serves as a handy checklist for submitted merges and patches to
|
This document serves as a handy checklist for submitted merges and patches to
|
||||||
the GNU social project. Following it isn't a gaurantee a patch will be accepted,
|
the postActiv project. Following it isn't a gaurantee a patch will be accepted,
|
||||||
but it will help you avoid common problems.
|
but it will help you avoid common problems.
|
||||||
|
|
||||||
1. Ensure all code control paths in all functions return a value.
|
1. Ensure all code control paths in all functions return a value.
|
||||||
|
@@ -229,6 +229,12 @@ StartPersonalGroupNav: beginning of personal group nav menu
|
|||||||
EndPersonalGroupNav: end of personal group nav menu (good place to add a menu item)
|
EndPersonalGroupNav: end of personal group nav menu (good place to add a menu item)
|
||||||
- $action: action object being shown
|
- $action: action object being shown
|
||||||
|
|
||||||
|
StartGroupGroupNav: Showing the group nav menu
|
||||||
|
- $action: the current action
|
||||||
|
|
||||||
|
EndGroupGroupNav: At the end of the group nav menu
|
||||||
|
- $action: the current action
|
||||||
|
|
||||||
StartEndHTML: just before the </html> tag
|
StartEndHTML: just before the </html> tag
|
||||||
- $action: action object being shown
|
- $action: action object being shown
|
||||||
|
|
||||||
@@ -349,12 +355,6 @@ EndAvatarSaveForm: after saving the avatar
|
|||||||
StartNewQueueManager: before trying to start a new queue manager; good for plugins implementing new queue manager classes
|
StartNewQueueManager: before trying to start a new queue manager; good for plugins implementing new queue manager classes
|
||||||
- $qm: empty queue manager to set
|
- $qm: empty queue manager to set
|
||||||
|
|
||||||
StartInitializeQueueManager: about to register queue handlers in the queue manager; good for plugins to register own handlers
|
|
||||||
- $qm: queue manager
|
|
||||||
|
|
||||||
EndInitializeQueueManager: after registering queue handlers in the queue manager; good for plugins to register own handlers
|
|
||||||
- $qm: queue manager
|
|
||||||
|
|
||||||
RedirectToLogin: event when we force a redirect to login (like when going to a settings page on a remembered login)
|
RedirectToLogin: event when we force a redirect to login (like when going to a settings page on a remembered login)
|
||||||
- $action: action object being shown
|
- $action: action object being shown
|
||||||
- $user: current user
|
- $user: current user
|
||||||
@@ -1496,16 +1496,3 @@ StartDocNav: Before outputting the docs Nav
|
|||||||
|
|
||||||
EndDocNav: After outputting the docs Nav
|
EndDocNav: After outputting the docs Nav
|
||||||
- $nav: The DoclNav widget
|
- $nav: The DoclNav widget
|
||||||
|
|
||||||
StartNoticeSearch: Before finding notices that match the given query
|
|
||||||
- string $query: The text query
|
|
||||||
|
|
||||||
StartNoticeSearchShowResults: Before displaying notices matching the query
|
|
||||||
- $out: HTMLOutputter used to output
|
|
||||||
- $query: The text query
|
|
||||||
- $notices: Array of DB notice objects
|
|
||||||
|
|
||||||
EndNoticeSearchShowResults: After displaying notices matching the query
|
|
||||||
- $out: HTMLOutputter used to output
|
|
||||||
- $query: The text query
|
|
||||||
- $notices: Array of DB notice objects
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
Plugin Development
|
Plugin Development
|
||||||
==================
|
=======================
|
||||||
|
|
||||||
SamplePlugin.php
|
SamplePlugin.php
|
||||||
----------------
|
-----------------------
|
||||||
|
|
||||||
Each plugin requires a main class to interact with the GNU social system.
|
Each plugin requires a main class to interact with the GNU social system.
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ have pre-defined arguments, based on which event they're handling. A typical
|
|||||||
event handler:
|
event handler:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function onSomeEvent($paramA, &$paramB): bool
|
function onSomeEvent($paramA, &$paramB)
|
||||||
{
|
{
|
||||||
if ($paramA == 'jed') {
|
if ($paramA == 'jed') {
|
||||||
throw new Exception(sprintf(_m("Invalid parameter %s"), $paramA));
|
throw new Exception(sprintf(_m("Invalid parameter %s"), $paramA));
|
||||||
@@ -26,7 +26,7 @@ public function onSomeEvent($paramA, &$paramB): bool
|
|||||||
```
|
```
|
||||||
|
|
||||||
Event Handlers
|
Event Handlers
|
||||||
--------------
|
-----------------------
|
||||||
|
|
||||||
Event handlers must return a Boolean value.
|
Event handlers must return a Boolean value.
|
||||||
|
|
||||||
@@ -41,43 +41,50 @@ If the handler throws an exception, processing will stop, and the exception's
|
|||||||
error will be shown to the user.
|
error will be shown to the user.
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------------
|
||||||
|
|
||||||
To enable a plugin (like the SamplePlugin), site admins add the following code to their
|
To install a plugin (like this one), site admins add the following code to their
|
||||||
config.php file:
|
config.php file:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
addPlugin('Sample');
|
addPlugin('Sample');
|
||||||
```
|
```
|
||||||
|
|
||||||
Third Party Plugins must be installed in `local/plugins/{$name}/{$pluginclass}.php`
|
Plugins must be installed in one of the following directories:
|
||||||
|
|
||||||
|
* local/plugins/{$pluginclass}.php
|
||||||
|
* local/plugins/{$name}/{$pluginclass}.php
|
||||||
|
* local/{$pluginclass}.php
|
||||||
|
* local/{$name}/{$pluginclass}.php
|
||||||
|
* plugins/{$pluginclass}.php
|
||||||
|
* plugins/{$name}/{$pluginclass}.php
|
||||||
|
|
||||||
Here, `{$name}` is the name of the plugin, like 'Sample', and `{$pluginclass}`
|
Here, `{$name}` is the name of the plugin, like 'Sample', and `{$pluginclass}`
|
||||||
is the name of the main class, like 'SamplePlugin'. Plugins that are part of
|
is the name of the main class, like 'SamplePlugin'. Plugins that are part of
|
||||||
the main GNU social distribution go in 'plugins' and third-party or local ones
|
the main GNU social distribution go in 'plugins' and third-party or local ones
|
||||||
go in 'local'.
|
go in 'local'.
|
||||||
|
|
||||||
Simple plugins can be implemented as a single plugin. Others are more complex
|
Simple plugins can be implemented as a single module. Others are more complex
|
||||||
and require additional plugins; these should use their own directory, like
|
and require additional modules; these should use their own directory, like
|
||||||
'local/plugins/{$name}/'. All files related to the plugin, including images,
|
'local/plugins/{$name}/'. All files related to the plugin, including images,
|
||||||
JavaScript, CSS, external libraries or PHP plugins should go in the plugin
|
JavaScript, CSS, external libraries or PHP modules should go in the plugin
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
Plugin Configuration
|
Plugin Configuration
|
||||||
--------------------
|
------------------
|
||||||
|
|
||||||
Plugins are configured using public instance attributes. To set their values,
|
Plugins are configured using public instance attributes. To set their values,
|
||||||
site administrators use this syntax:
|
site administrators use this syntax:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
addPlugin('Sample', ['attr1' => 'foo', 'attr2' => 'bar']);
|
addPlugin('Sample', ('attr1' => 'foo', 'attr2' => 'bar'));
|
||||||
```
|
```
|
||||||
|
|
||||||
The same plugin class can be initialized multiple times with different arguments:
|
The same plugin class can be initialized multiple times with different arguments:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
addPlugin('EmailNotify', ['sendTo' => 'evan@status.net']);
|
addPlugin('EmailNotify', array('sendTo' => 'evan@status.net'));
|
||||||
addPlugin('EmailNotify', ['sendTo' => 'brionv@status.net']);
|
addPlugin('EmailNotify', array('sendTo' => 'brionv@status.net'));
|
||||||
```
|
```
|
||||||
|
|
||||||
```php
|
```php
|
||||||
@@ -89,34 +96,34 @@ class SamplePlugin extends Plugin
|
|||||||
```
|
```
|
||||||
|
|
||||||
Initialization
|
Initialization
|
||||||
--------------
|
------------------
|
||||||
|
|
||||||
Plugins overload this method to do any initialization they need, like connecting
|
Plugins overload this method to do any initialization they need, like connecting
|
||||||
to remote servers or creating paths or so on. @return bool hook value; true
|
to remote servers or creating paths or so on. @return boolean hook value; true
|
||||||
means continue processing, false means stop.
|
means continue processing, false means stop.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function initialize(): bool
|
function initialize()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Clean Up
|
Clean Up
|
||||||
--------
|
------------------
|
||||||
|
|
||||||
Plugins overload this method to do any cleanup they need, like disconnecting from
|
Plugins overload this method to do any cleanup they need, like disconnecting from
|
||||||
remote servers or deleting temp files or so on.
|
remote servers or deleting temp files or so on.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function cleanup(): bool
|
function cleanup()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Database schema setup
|
Database schema setup
|
||||||
---------------------
|
------------------
|
||||||
|
|
||||||
Plugins can add their own tables to the GNU social database. Plugins should use
|
Plugins can add their own tables to the GNU social database. Plugins should use
|
||||||
GNU social's schema interface to add or delete tables. The ensureTable() method
|
GNU social's schema interface to add or delete tables. The ensureTable() method
|
||||||
@@ -128,26 +135,25 @@ the checkschema.php script is run, greatly improving performance. However, they
|
|||||||
need to remember to run that script after installing or upgrading a plugin!
|
need to remember to run that script after installing or upgrading a plugin!
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function onCheckSchema(): bool
|
function onCheckSchema()
|
||||||
{
|
{
|
||||||
$schema = Schema::get();
|
$schema = Schema::get();
|
||||||
|
|
||||||
// '''For storing user-submitted flags on profiles'''
|
// '''For storing user-submitted flags on profiles'''
|
||||||
|
|
||||||
$schema->ensureTable('user_greeting_count',[
|
$schema->ensureTable('user_greeting_count',
|
||||||
new ColumnDef('user_id', 'integer', null, true, 'PRI'),
|
array(new ColumnDef('user_id', 'integer', null,
|
||||||
new ColumnDef('greeting_count', 'integer')
|
true, 'PRI'),
|
||||||
]
|
new ColumnDef('greeting_count', 'integer')));
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Load related plugins when needed
|
Load related modules when needed
|
||||||
--------------------------------
|
------------------
|
||||||
|
|
||||||
Most non-trivial plugins will require extra plugins to do their work. Typically
|
Most non-trivial plugins will require extra modules to do their work. Typically
|
||||||
these include data classes, action classes, widget classes, or external libraries.
|
these include data classes, action classes, widget classes, or external libraries.
|
||||||
|
|
||||||
This method receives a class name and loads the PHP file related to that class.
|
This method receives a class name and loads the PHP file related to that class.
|
||||||
@@ -160,9 +166,9 @@ in this plugin! So, make sure to return true by default to let other plugins,
|
|||||||
and the core code, get a chance.
|
and the core code, get a chance.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function onAutoload($cls): bool
|
function onAutoload($cls)
|
||||||
{
|
{
|
||||||
$dir = __DIR__;
|
$dir = dirname(__FILE__);
|
||||||
|
|
||||||
switch ($cls)
|
switch ($cls)
|
||||||
{
|
{
|
||||||
@@ -179,7 +185,7 @@ public function onAutoload($cls): bool
|
|||||||
```
|
```
|
||||||
|
|
||||||
Map URLs to actions
|
Map URLs to actions
|
||||||
-------------------
|
------------------
|
||||||
|
|
||||||
This event handler lets the plugin map URLs on the site to actions (and thus an
|
This event handler lets the plugin map URLs on the site to actions (and thus an
|
||||||
action handler class). Note that the action handler class for an action will be
|
action handler class). Note that the action handler class for an action will be
|
||||||
@@ -187,28 +193,28 @@ named 'FoobarAction', where action = 'foobar'. The class must be loaded in the
|
|||||||
onAutoload() method.
|
onAutoload() method.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function onRouterInitialized($m): bool
|
function onRouterInitialized($m)
|
||||||
{
|
{
|
||||||
$m->connect('main/hello',
|
$m->connect('main/hello',
|
||||||
['action' => 'hello']);
|
array('action' => 'hello'));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Modify the default menu to link to our custom action
|
Modify the default menu to link to our custom action
|
||||||
-----------------------------------------------------
|
------------------
|
||||||
|
|
||||||
Using event handlers, it's possible to modify the default UI for pages almost
|
Using event handlers, it's possible to modify the default UI for pages almost
|
||||||
without limit. In this method, we add a menu item to the default primary menu
|
without limit. In this method, we add a menu item to the default primary menu
|
||||||
for the interface to link to our action.
|
for the interface to link to our action.
|
||||||
|
|
||||||
Action Class
|
Action Class
|
||||||
------------
|
------------------
|
||||||
|
|
||||||
The Action class provides a rich set of events to hook, as well as output methods.
|
The Action class provides a rich set of events to hook, as well as output methods.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function onEndPrimaryNav($action): bool
|
function onEndPrimaryNav($action)
|
||||||
{
|
{
|
||||||
// '''common_local_url()''' gets the correct URL for the action name we provide
|
// '''common_local_url()''' gets the correct URL for the action name we provide
|
||||||
|
|
||||||
@@ -217,22 +223,20 @@ public function onEndPrimaryNav($action): bool
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPluginVersion(&$versions): bool
|
function onPluginVersion(&$versions)
|
||||||
{
|
{
|
||||||
$versions[] = [
|
$versions[] = array('name' => 'Sample',
|
||||||
'name' => 'Sample',
|
'version' => STATUSNET_VERSION,
|
||||||
'version' => GNUSOCIAL_VERSION,
|
|
||||||
'author' => 'Brion Vibber, Evan Prodromou',
|
'author' => 'Brion Vibber, Evan Prodromou',
|
||||||
'homepage' => 'http://example.org/plugin',
|
'homepage' => 'http://example.org/plugin',
|
||||||
'rawdescription' =>
|
'rawdescription' =>
|
||||||
_m('A sample plugin to show basics of development for new hackers.')
|
_m('A sample plugin to show basics of development for new hackers.'));
|
||||||
];
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
hello.php
|
hello.php
|
||||||
---------
|
------------------
|
||||||
|
|
||||||
This section is taken directly from the 'hello.php'. ( plugins/Sample/hello.php )
|
This section is taken directly from the 'hello.php'. ( plugins/Sample/hello.php )
|
||||||
|
|
||||||
@@ -251,7 +255,7 @@ class HelloAction extends Action
|
|||||||
```
|
```
|
||||||
|
|
||||||
Take arguments for running
|
Take arguments for running
|
||||||
--------------------------
|
------------------
|
||||||
|
|
||||||
This method is called first, and it lets the action class get all its arguments
|
This method is called first, and it lets the action class get all its arguments
|
||||||
and validate them. It's also the time to fetch any relevant data from the database.
|
and validate them. It's also the time to fetch any relevant data from the database.
|
||||||
@@ -260,7 +264,7 @@ Action classes should run parent::prepare(array $args = []) as the first line
|
|||||||
of this method to make sure the default argument-processing happens.
|
of this method to make sure the default argument-processing happens.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function prepare(array $args = []): bool
|
function prepare(array $args = [])
|
||||||
{
|
{
|
||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
@@ -275,14 +279,14 @@ public function prepare(array $args = []): bool
|
|||||||
```
|
```
|
||||||
|
|
||||||
Handle request
|
Handle request
|
||||||
--------------
|
------------------
|
||||||
|
|
||||||
This is the main method for handling a request. Note that most preparation
|
This is the main method for handling a request. Note that most preparation
|
||||||
should be done in the prepare() method; by the time handle() is called the
|
should be done in the prepare() method; by the time handle() is called the
|
||||||
action should be more or less ready to go.
|
action should be more or less ready to go.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function handle(): void
|
function handle()
|
||||||
{
|
{
|
||||||
parent::handle();
|
parent::handle();
|
||||||
|
|
||||||
@@ -296,7 +300,7 @@ Title of this page
|
|||||||
Override this method to show a custom title.
|
Override this method to show a custom title.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function title(): string
|
function title()
|
||||||
{
|
{
|
||||||
if (empty($this->user)) {
|
if (empty($this->user)) {
|
||||||
return _m('Hello');
|
return _m('Hello');
|
||||||
@@ -307,7 +311,7 @@ public function title(): string
|
|||||||
```
|
```
|
||||||
|
|
||||||
Show content in the content area
|
Show content in the content area
|
||||||
--------------------------------
|
------------------
|
||||||
|
|
||||||
The default GNU social page has a lot of decorations: menus, logos, tabs, all
|
The default GNU social page has a lot of decorations: menus, logos, tabs, all
|
||||||
that jazz. This method is used to show content in the content area of the
|
that jazz. This method is used to show content in the content area of the
|
||||||
@@ -315,15 +319,15 @@ page; it's the main thing you want to overload. This method also demonstrates
|
|||||||
use of a plural localized string.
|
use of a plural localized string.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function showContent(): void
|
function showContent()
|
||||||
{
|
{
|
||||||
if (empty($this->user)) {
|
if (empty($this->user)) {
|
||||||
$this->element('p', ['class' => 'greeting'],
|
$this->element('p', array('class' => 'greeting'),
|
||||||
_m('Hello, stranger!'));
|
_m('Hello, stranger!'));
|
||||||
} else {
|
} else {
|
||||||
$this->element('p', ['class' => 'greeting'],
|
$this->element('p', array('class' => 'greeting'),
|
||||||
sprintf(_m('Hello, %s'), $this->user->nickname));
|
sprintf(_m('Hello, %s'), $this->user->nickname));
|
||||||
$this->element('p', ['class' => 'greeting_count'],
|
$this->element('p', array('class' => 'greeting_count'),
|
||||||
sprintf(_m('I have greeted you %d time.',
|
sprintf(_m('I have greeted you %d time.',
|
||||||
'I have greeted you %d times.',
|
'I have greeted you %d times.',
|
||||||
$this->gc->greeting_count),
|
$this->gc->greeting_count),
|
||||||
@@ -333,7 +337,7 @@ public function showContent(): void
|
|||||||
```
|
```
|
||||||
|
|
||||||
Return true if read only.
|
Return true if read only.
|
||||||
-------------------------
|
------------------
|
||||||
|
|
||||||
Some actions only read from the database; others read and write. The simple
|
Some actions only read from the database; others read and write. The simple
|
||||||
database load-balancer built into GNU social will direct read-only actions to
|
database load-balancer built into GNU social will direct read-only actions to
|
||||||
@@ -343,8 +347,9 @@ This defaults to false to avoid data integrity issues, but you should make sure
|
|||||||
to overload it for performance gains.
|
to overload it for performance gains.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function isReadOnly($args): bool
|
function isReadOnly($args)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -1,90 +0,0 @@
|
|||||||
<?php
|
|
||||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
|
||||||
//
|
|
||||||
// GNU social is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// GNU social is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
defined('GNUSOCIAL') || die();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fun sample plugin: tweaks input data and adds a 'Cornify' widget to sidebar.
|
|
||||||
*
|
|
||||||
* @category Plugin
|
|
||||||
* @package GNUsocial
|
|
||||||
* @author Jeroen De Dauw <jeroendedauw@gmail.com>
|
|
||||||
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
|
||||||
*/
|
|
||||||
|
|
||||||
class AwesomenessPlugin extends Plugin
|
|
||||||
{
|
|
||||||
const PLUGIN_VERSION = '13.37.42';
|
|
||||||
|
|
||||||
public function onPluginVersion(array &$versions): bool
|
|
||||||
{
|
|
||||||
$versions[] = [
|
|
||||||
'name' => 'Awesomeness',
|
|
||||||
'version' => self::PLUGIN_VERSION,
|
|
||||||
'author' => 'Jeroen De Dauw',
|
|
||||||
'homepage' => GNUSOCIAL_ENGINE_REPO_URL . 'tree/master/plugins/Awesomeness',
|
|
||||||
// TRANS: Plugin description for a sample plugin.
|
|
||||||
'rawdescription' => _m('The Awesomeness plugin adds additional awesomeness ' .
|
|
||||||
'to a GNU social installation.')
|
|
||||||
];
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add the conrnify button
|
|
||||||
*
|
|
||||||
* @param Action $action the current action
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function onEndShowSections(Action $action)
|
|
||||||
{
|
|
||||||
$action->elementStart('div', ['id' => 'cornify_section',
|
|
||||||
'class' => 'section']);
|
|
||||||
|
|
||||||
$action->raw(
|
|
||||||
<<<EOT
|
|
||||||
<a href="https://www.cornify.com" onclick="cornify_add();return false;">
|
|
||||||
<img src="https://www.cornify.com/assets/cornify.gif" width="61" height="16" border="0" alt="Cornify" />
|
|
||||||
</a>
|
|
||||||
EOT
|
|
||||||
);
|
|
||||||
|
|
||||||
$action->elementEnd('div');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onEndShowScripts(Action $action)
|
|
||||||
{
|
|
||||||
$action->script($this->path('js/cornify.js'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hook for new-notice form processing to take our HTML goodies;
|
|
||||||
* won't affect API posting etc.
|
|
||||||
*
|
|
||||||
* @param NewNoticeAction $action
|
|
||||||
* @param User $user
|
|
||||||
* @param string $content
|
|
||||||
* @param array $options
|
|
||||||
* @return bool hook return
|
|
||||||
*/
|
|
||||||
public function onStartSaveNewNoticeWeb($action, $user, &$content, &$options)
|
|
||||||
{
|
|
||||||
$content = htmlspecialchars($content);
|
|
||||||
$options['rendered'] = preg_replace("/(^|\s|-)((?:awesome|awesomeness)[\?!\.\,]?)(\s|$)/i", " <b>$2</b> ", $content);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,25 +0,0 @@
|
|||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2019-08-14 14:51+0100\n"
|
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
||||||
"Language: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#. TRANS: Module description for a sample plugin.
|
|
||||||
#: AwesomenessModule.php:67
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Afrikaans (http://www.transifex.com/gnu-social/gnu-social/language/af/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: af\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Arabic (http://www.transifex.com/gnu-social/gnu-social/language/ar/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ar\n"
|
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Arabic (Egypt) (http://www.transifex.com/gnu-social/gnu-social/language/ar_EG/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ar_EG\n"
|
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Asturian (http://www.transifex.com/gnu-social/gnu-social/language/ast/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ast\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Belarusian (Tarask) (http://www.transifex.com/gnu-social/gnu-social/language/be@tarask/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: be@tarask\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Дапаўненьне Awesomeness дадае незвычайныя магчымасьці ў усталяваньне GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Bulgarian (http://www.transifex.com/gnu-social/gnu-social/language/bg/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: bg\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Bengali (India) (http://www.transifex.com/gnu-social/gnu-social/language/bn_IN/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: bn_IN\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Breton (http://www.transifex.com/gnu-social/gnu-social/language/br/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: br\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Catalan (http://www.transifex.com/gnu-social/gnu-social/language/ca/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ca\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Czech (http://www.transifex.com/gnu-social/gnu-social/language/cs/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: cs\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Danish (http://www.transifex.com/gnu-social/gnu-social/language/da/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: da\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2019-08-21 14:01+0100\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: German (http://www.transifex.com/gnu-social/gnu-social/language/de/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: de\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Das Awesomeness-Plugin fügt zusätzliche Großartigkeit zu einer GNU social-Installation hinzu."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Greek (http://www.transifex.com/gnu-social/gnu-social/language/el/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: el\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,26 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
# Luke Hollins <luke@farcry.ca>, 2015
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-03-07 12:44+0000\n"
|
|
||||||
"Last-Translator: Luke Hollins <luke@farcry.ca>\n"
|
|
||||||
"Language-Team: English (United Kingdom) (http://www.transifex.com/gnu-social/gnu-social/language/en_GB/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: en_GB\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "The Awesomeness plugin adds additional awesomeness to a GNU social installation."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Esperanto (http://www.transifex.com/gnu-social/gnu-social/language/eo/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: eo\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,26 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
# Juan Riquelme González <soulchainer@gmail.com>, 2015
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-26 08:53+0000\n"
|
|
||||||
"Last-Translator: Juan Riquelme González <soulchainer@gmail.com>\n"
|
|
||||||
"Language-Team: Spanish (http://www.transifex.com/gnu-social/gnu-social/language/es/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: es\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "El complemento Awesomeness ('Molonosidad') incrementa en +20 la molonosidad de un sitio GNU social. (Este es un complemento de ejemplo, con un toque de humor)."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2012 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Basque (http://www.transifex.com/gnu-social/gnu-social/language/eu/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: eu\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Awesomeness pluginak informazio osagarria gehitzen dio GNU social instalatzioari."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Persian (http://www.transifex.com/gnu-social/gnu-social/language/fa/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: fa\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Finnish (http://www.transifex.com/gnu-social/gnu-social/language/fi/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: fi\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Awesomeness-liitännäinen lisää ylimääräistä upeutta (awesomeness) GNU social-asennukseesi."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: French (http://www.transifex.com/gnu-social/gnu-social/language/fr/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: fr\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Le plugin Awesomeness ajoute des suppléments impressionnants à une installation de GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Friulian (http://www.transifex.com/gnu-social/gnu-social/language/fur/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: fur\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Galician (http://www.transifex.com/gnu-social/gnu-social/language/gl/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: gl\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "O complemento impresionante engade suplementos impresionantes á instalación do GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Hebrew (http://www.transifex.com/gnu-social/gnu-social/language/he/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: he\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "תוסף מגניבות מוסיף עוד מגניבות להתקנה של סטטוסנט."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Upper Sorbian (http://www.transifex.com/gnu-social/gnu-social/language/hsb/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: hsb\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Hungarian (http://www.transifex.com/gnu-social/gnu-social/language/hu/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: hu\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Armenian (Armenia) (http://www.transifex.com/gnu-social/gnu-social/language/hy_AM/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: hy_AM\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Interlingua (http://www.transifex.com/gnu-social/gnu-social/language/ia/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ia\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Le plug-in Awesomeness rende un installation de GNU social plus impressionante."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Indonesian (http://www.transifex.com/gnu-social/gnu-social/language/id/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: id\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,26 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
# Ciencisto Dementa <maliktunga@users.noreply.github.com>, 2015
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-06-15 01:03+0000\n"
|
|
||||||
"Last-Translator: Ciencisto Dementa <maliktunga@users.noreply.github.com>\n"
|
|
||||||
"Language-Team: Ido (http://www.transifex.com/gnu-social/gnu-social/language/io/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: io\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "L'extensilo Awesomeness adjuntas impresanta suplemento a GNU social-instaluro."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Icelandic (http://www.transifex.com/gnu-social/gnu-social/language/is/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: is\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2012 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Italian (http://www.transifex.com/gnu-social/gnu-social/language/it/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: it\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Il plugin Awesomeness aggiunge ulteriore imponenza all'installazione di GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Japanese (http://www.transifex.com/gnu-social/gnu-social/language/ja/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ja\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Georgian (http://www.transifex.com/gnu-social/gnu-social/language/ka/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ka\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Korean (http://www.transifex.com/gnu-social/gnu-social/language/ko/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ko\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Colognian (http://www.transifex.com/gnu-social/gnu-social/language/ksh/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ksh\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n==0) ? 0 : (n==1) ? 1 : 2;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Luxembourgish (http://www.transifex.com/gnu-social/gnu-social/language/lb/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: lb\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Lithuanian (http://www.transifex.com/gnu-social/gnu-social/language/lt/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: lt\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-07 09:39+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Latvian (http://www.transifex.com/gnu-social/gnu-social/language/lv/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: lv\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 16:19+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Malagasy (http://www.transifex.com/gnu-social/gnu-social/language/mg/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: mg\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Macedonian (http://www.transifex.com/gnu-social/gnu-social/language/mk/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: mk\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Приклучокот „Феноменалност“ ѝ дава дополнителна феноменалност на инсталацијата на GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Malayalam (http://www.transifex.com/gnu-social/gnu-social/language/ml/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ml\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Malay (http://www.transifex.com/gnu-social/gnu-social/language/ms/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ms\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Burmese (http://www.transifex.com/gnu-social/gnu-social/language/my/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: my\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Norwegian Bokmål (http://www.transifex.com/gnu-social/gnu-social/language/nb/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: nb\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-07 09:30+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Nepali (http://www.transifex.com/gnu-social/gnu-social/language/ne/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ne\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Dutch (http://www.transifex.com/gnu-social/gnu-social/language/nl/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: nl\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "De Awesomenessplug-in voegt extra awesomeness toe aan een GNU socialinstallatie."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Norwegian Nynorsk (http://www.transifex.com/gnu-social/gnu-social/language/nn/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: nn\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2012 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Polish (http://www.transifex.com/gnu-social/gnu-social/language/pl/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: pl\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Wtyczka Awesomeness dodaje dodatkowe niesamowitości do instalacji GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Portuguese (http://www.transifex.com/gnu-social/gnu-social/language/pt/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: pt\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "O plugin de Espectacularidade adiciona espectacularidade adicional a uma instalação de GNU social."
|
|
@@ -1,26 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
# Matheus Henrique Silva <hennsilvam@gmail.com>, 2015
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-25 08:09+0000\n"
|
|
||||||
"Last-Translator: Matheus Henrique Silva <hennsilvam@gmail.com>\n"
|
|
||||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/gnu-social/gnu-social/language/pt_BR/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: pt_BR\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "O plugin Awesomeness adiciona incríveis bonus à instalação de GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Romanian (Romania) (http://www.transifex.com/gnu-social/gnu-social/language/ro_RO/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ro_RO\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Russian (http://www.transifex.com/gnu-social/gnu-social/language/ru/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ru\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Потрясающий плагин добавляет потрясающие вещи в GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Slovenian (http://www.transifex.com/gnu-social/gnu-social/language/sl/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: sl\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Serbian (http://www.transifex.com/gnu-social/gnu-social/language/sr/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: sr\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,26 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
# Kristoffer Grundström <kristoffer.grundstrom1983@gmail.com>, 2015
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-09-15 18:38+0000\n"
|
|
||||||
"Last-Translator: Kristoffer Grundström <kristoffer.grundstrom1983@gmail.com>\n"
|
|
||||||
"Language-Team: Swedish (http://www.transifex.com/gnu-social/gnu-social/language/sv/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: sv\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Insticksprogrammet Awesomeness lägger till ytterligare ypperlighet till en GNU social-installation."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-07 08:48+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Tamil (http://www.transifex.com/gnu-social/gnu-social/language/ta/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ta\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Telugu (http://www.transifex.com/gnu-social/gnu-social/language/te/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: te\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Tagalog (http://www.transifex.com/gnu-social/gnu-social/language/tl/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: tl\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Ang pampasak ng Pagiging Kahanga-hanga ay nagdaragdag ng karagdagang pagiging kahanga-hanga sa isang pagtatalaga ng GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Turkish (http://www.transifex.com/gnu-social/gnu-social/language/tr/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: tr\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 15:02+0000\n"
|
|
||||||
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
|
|
||||||
"Language-Team: Ukrainian (http://www.transifex.com/gnu-social/gnu-social/language/uk/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: uk\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr "Напрочуд дивовижний додаток додає додаткову напрочуд дивовижну функціональність до вашої інсталяції GNU social."
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Urdu (Pakistan) (http://www.transifex.com/gnu-social/gnu-social/language/ur_PK/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: ur_PK\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Vietnamese (http://www.transifex.com/gnu-social/gnu-social/language/vi/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: vi\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Chinese (http://www.transifex.com/gnu-social/gnu-social/language/zh/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: zh\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Chinese (China) (http://www.transifex.com/gnu-social/gnu-social/language/zh_CN/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: zh_CN\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,25 +0,0 @@
|
|||||||
# Translation file for GNU social - the free software social networking platform
|
|
||||||
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
# This file is under https://www.gnu.org/licenses/agpl v3 or later
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: GNU social\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
|
|
||||||
"PO-Revision-Date: 2015-02-06 14:56+0000\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/gnu-social/gnu-social/language/zh_TW/)\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: zh_TW\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#. TRANS: Plugin description for a sample plugin.
|
|
||||||
#: AwesomenessPlugin.php:55
|
|
||||||
msgid ""
|
|
||||||
"The Awesomeness plugin adds additional awesomeness to a GNU social "
|
|
||||||
"installation."
|
|
||||||
msgstr ""
|
|
@@ -1,241 +0,0 @@
|
|||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
_______ ,-----. .-------. ,---. .--..-./`) ________ ____ __
|
|
||||||
/ __ \ .' .-, '. | _ _ \ | \ | |\ .-.')| | \ \ / /
|
|
||||||
| ,_/ \__) / ,-.| \ _ \ | ( ' ) | | , \ | |/ `-' \| .----' \ _. / '
|
|
||||||
,-./ ) ; \ '_ / | :|(_ o _) / | |\_ \| | `-'`"`| _|____ _( )_ .'
|
|
||||||
\ '_ '`) | _`,/ \ _/ || (_,_).' __ | _( )_\ | .---. |_( )_ | ___(_ o _)'
|
|
||||||
> (_) ) __: ( '\_/ \ ;| |\ \ | || (_ o _) | | | (_ o._)__|| |(_,_)'
|
|
||||||
( . .-'_/ )\ `"/ \ ) / | | \ `' /| (_,_)\ | | | |(_,_) | `-' /
|
|
||||||
`-'`-' / '. \_/``".' | | \ / | | | | | | | | \ /
|
|
||||||
`._____.' '-----' ''-' `'-' '--' '--' '---' '---' `-..-'
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
var cornify_count = 0;
|
|
||||||
var cornify_add = function(options) {
|
|
||||||
// Track how often we cornified.
|
|
||||||
cornify_count += 1;
|
|
||||||
|
|
||||||
var cornify_url = 'https://www.cornify.com/';
|
|
||||||
|
|
||||||
// Create a container DIV for our 'corn or 'bow.
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.style.position = 'fixed';
|
|
||||||
|
|
||||||
// Prepare our lovely variables.
|
|
||||||
var numType = 'px';
|
|
||||||
var heightRandom = Math.random() * 0.75;
|
|
||||||
var windowHeight = 768;
|
|
||||||
var windowWidth = 1024;
|
|
||||||
var height = 0;
|
|
||||||
var width = 0;
|
|
||||||
var de = document.documentElement;
|
|
||||||
|
|
||||||
// Get the window width and height - requires some cross browser checking.
|
|
||||||
if(typeof(window.innerHeight) == 'number') {
|
|
||||||
windowHeight = window.innerHeight;
|
|
||||||
windowWidth = window.innerWidth;
|
|
||||||
} else if(de && de.clientHeight) {
|
|
||||||
windowHeight = de.clientHeight;
|
|
||||||
windowWidth = de.clientWidth;
|
|
||||||
} else {
|
|
||||||
numType = '%';
|
|
||||||
height = Math.round(height*100) + '%';
|
|
||||||
}
|
|
||||||
|
|
||||||
div.onclick = cornify_add; // Click for more magic.
|
|
||||||
div.style.zIndex = 10;
|
|
||||||
div.style.outline = 0;
|
|
||||||
|
|
||||||
if(cornify_count == 15) {
|
|
||||||
// Clicking 15 times summons the grand unicorn - which is centered on the screen.
|
|
||||||
div.style.top = Math.max( 0, Math.round((windowHeight-530)/2)) + 'px';
|
|
||||||
div.style.left = Math.round((windowWidth-530)/2) + 'px';
|
|
||||||
div.style.zIndex = 1000;
|
|
||||||
} else {
|
|
||||||
// Otherwise we randomize the position.
|
|
||||||
if(numType == 'px') {
|
|
||||||
div.style.top = Math.round( windowHeight*heightRandom ) + numType;
|
|
||||||
} else {
|
|
||||||
div.style.top = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.style.left = Math.round(Math.random()*90) + '%';
|
|
||||||
}
|
|
||||||
|
|
||||||
var img = document.createElement('img');
|
|
||||||
var currentTime = new Date();
|
|
||||||
|
|
||||||
// Used as a cache buster so the browser makes a new request every time instead of usign the previous, cached one.
|
|
||||||
var submitTime = currentTime.getTime();
|
|
||||||
|
|
||||||
if( cornify_count==15 ) submitTime = 0;
|
|
||||||
|
|
||||||
// Construct our unicorn & rainbow request.
|
|
||||||
var url = cornify_url+'getacorn.php?r='+submitTime+'&url='+document.location.href;
|
|
||||||
|
|
||||||
// Add younicorns if requested.
|
|
||||||
if(options && (options.y || options.younicorns)) {
|
|
||||||
url += '&y='+(options.y ? options.y : options.younicorns);
|
|
||||||
|
|
||||||
if(Math.random() > 0.5) {
|
|
||||||
// Flip horizontally at random.
|
|
||||||
div.style.transform = 'scaleX(-1)';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
img.setAttribute('src', url);
|
|
||||||
|
|
||||||
// Add a nice hover transition.
|
|
||||||
var ease = "all .1s linear";
|
|
||||||
div.style.WebkitTransition = ease;
|
|
||||||
div.style.WebkitTransform = "rotate(1deg) scale(1.01,1.01)";
|
|
||||||
div.style.transition = "all .1s linear";
|
|
||||||
|
|
||||||
div.onmouseover = function() {
|
|
||||||
var size = 1 + Math.round(Math.random()*10)/100;
|
|
||||||
var angle = Math.round(Math.random()*20-10);
|
|
||||||
var result = "rotate("+angle+"deg) scale("+size+","+size+")";
|
|
||||||
this.style.transform = result;
|
|
||||||
this.style.WebkitTransform = result;
|
|
||||||
};
|
|
||||||
|
|
||||||
div.onmouseout = function() {
|
|
||||||
var size = .9+Math.round(Math.random()*10)/100;
|
|
||||||
var angle = Math.round(Math.random()*6-3);
|
|
||||||
var result = "rotate("+angle+"deg) scale("+size+","+size+")";
|
|
||||||
this.style.transform = result;
|
|
||||||
this.style.WebkitTransform = result;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Append our container DIV to the page.
|
|
||||||
var body = document.getElementsByTagName('body')[0];
|
|
||||||
body.appendChild(div);
|
|
||||||
div.appendChild(img);
|
|
||||||
|
|
||||||
// Hooray - now we have a sparkly unicorn (or rainbow) on the page. Another cornification well done. Congrats!
|
|
||||||
|
|
||||||
// When clicking 5 times, add a custom stylesheet to make the page look awesome.
|
|
||||||
if(cornify_count == 5) {
|
|
||||||
var cssExisting = document.getElementById('__cornify_css');
|
|
||||||
|
|
||||||
if(!cssExisting) {
|
|
||||||
var head = document.getElementsByTagName("head")[0];
|
|
||||||
var css = document.createElement('link');
|
|
||||||
css.id = '__cornify_css';
|
|
||||||
css.type = 'text/css';
|
|
||||||
css.rel = 'stylesheet';
|
|
||||||
css.href = 'https://www.cornify.com/css/cornify.css';
|
|
||||||
css.media = 'screen';
|
|
||||||
head.appendChild(css);
|
|
||||||
}
|
|
||||||
cornify_replace();
|
|
||||||
}
|
|
||||||
|
|
||||||
cornify_updatecount();
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tracks how often we cornified.
|
|
||||||
var cornify_updatecount = function() {
|
|
||||||
var p = document.getElementById('cornifycount');
|
|
||||||
if(p == null) {
|
|
||||||
var p = document.createElement('p');
|
|
||||||
p.id = 'cornifycount';
|
|
||||||
p.style.position = 'fixed';
|
|
||||||
p.style.bottom = '5px';
|
|
||||||
p.style.left = '0px';
|
|
||||||
p.style.right = '0px';
|
|
||||||
p.style.zIndex = '1000000000';
|
|
||||||
p.style.color = '#ff00ff';
|
|
||||||
p.style.textAlign = 'center';
|
|
||||||
p.style.fontSize = '24px';
|
|
||||||
p.style.fontFamily = "'Comic Sans MS', 'Comic Sans', 'Marker Felt', serif"; // Only the best!
|
|
||||||
var body = document.getElementsByTagName('body')[0];
|
|
||||||
body.appendChild(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cornify_count == 1) {
|
|
||||||
p.innerHTML = cornify_count+' UNICORN OR RAINBOW CREATED';
|
|
||||||
} else {
|
|
||||||
p.innerHTML = cornify_count+' UNICORNS & RAINBOWS CREATED';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stores our count in a cookie for our next session.
|
|
||||||
cornify_setcookie('cornify', cornify_count+'', 1000);
|
|
||||||
};
|
|
||||||
|
|
||||||
var cornify_setcookie = function(name, value, days) {
|
|
||||||
var d = new Date();
|
|
||||||
d.setTime(d.getTime()+(days*24*60*60*1000));
|
|
||||||
var expires = "expires="+d.toGMTString();
|
|
||||||
document.cookie = name + "=" + value + "; " + expires;
|
|
||||||
};
|
|
||||||
|
|
||||||
var cornify_getcookie = function(cname) {
|
|
||||||
var name = cname + "=";
|
|
||||||
var ca = document.cookie.split(';');
|
|
||||||
for(var i=0; i<ca.length; i++) {
|
|
||||||
var c = ca[i].trim();
|
|
||||||
if(c.indexOf(name)==0) {
|
|
||||||
return c.substring(name.length,c.length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
// Retrieve our click count from the cookie when we start up.
|
|
||||||
cornify_count = parseInt(cornify_getcookie('cornify'));
|
|
||||||
if(isNaN(cornify_count)) {
|
|
||||||
cornify_count = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Adds happy words at the beginning of all headers on the page.
|
|
||||||
var cornify_replace = function() {
|
|
||||||
// Replace text.
|
|
||||||
var hc = 6;
|
|
||||||
var hs;
|
|
||||||
var h;
|
|
||||||
var k;
|
|
||||||
var words = ['Happy','Sparkly','Glittery','Fun','Magical','Lovely','Cute','Charming','Amazing','Wonderful'];
|
|
||||||
while(hc >= 1) {
|
|
||||||
hs = document.getElementsByTagName('h' + hc);
|
|
||||||
for (k = 0; k < hs.length; k++) {
|
|
||||||
h = hs[k];
|
|
||||||
h.innerHTML = words[Math.floor(Math.random()*words.length)] + ' ' + h.innerHTML;
|
|
||||||
}
|
|
||||||
hc-=1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Adapted from http://www.snaptortoise.com/konami-js/
|
|
||||||
*/
|
|
||||||
var cornami = {
|
|
||||||
input:"",
|
|
||||||
pattern:"38384040373937396665",
|
|
||||||
clear:setTimeout('cornami.clear_input()', 5000),
|
|
||||||
load: function() {
|
|
||||||
window.document.onkeydown = function(e) {
|
|
||||||
if (cornami.input == cornami.pattern) {
|
|
||||||
cornify_add();
|
|
||||||
clearTimeout(cornami.clear);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cornami.input += e ? e.keyCode : event.keyCode;
|
|
||||||
if (cornami.input == cornami.pattern) cornify_add();
|
|
||||||
clearTimeout(cornami.clear);
|
|
||||||
cornami.clear = setTimeout("cornami.clear_input()", 5000);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
clear_input: function() {
|
|
||||||
cornami.input="";
|
|
||||||
clearTimeout(cornami.clear);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
cornami.load();
|
|
@@ -1,246 +0,0 @@
|
|||||||
<?php
|
|
||||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
|
||||||
//
|
|
||||||
// GNU social is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// GNU social is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A sample plugin to show best practices for GNU social plugins
|
|
||||||
*
|
|
||||||
* @package GNU social
|
|
||||||
* @author Brion Vibber <brionv@status.net>
|
|
||||||
* @author Evan Prodromou <evan@status.net>
|
|
||||||
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
|
||||||
*/
|
|
||||||
|
|
||||||
// This check helps protect against security problems;
|
|
||||||
// your code file can't be executed directly from the web.
|
|
||||||
defined('GNUSOCIAL') || die();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sample plugin main class
|
|
||||||
*
|
|
||||||
* Each plugin requires a main class to interact with the StatusNet system.
|
|
||||||
*
|
|
||||||
* The main class usually extends the Plugin class that comes with StatusNet.
|
|
||||||
*
|
|
||||||
* The class has standard-named methods that will be called when certain events
|
|
||||||
* happen in the code base. These methods have names like 'onX' where X is an
|
|
||||||
* event name (see EVENTS.txt for the list of available events). Event handlers
|
|
||||||
* have pre-defined arguments, based on which event they're handling. A typical
|
|
||||||
* event handler:
|
|
||||||
*
|
|
||||||
* function onSomeEvent($paramA, &$paramB)
|
|
||||||
* {
|
|
||||||
* if ($paramA == 'jed') {
|
|
||||||
* throw new Exception(sprintf(_m("Invalid parameter %s"), $paramA));
|
|
||||||
* }
|
|
||||||
* $paramB = 'spock';
|
|
||||||
* return true;
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* Event handlers must return a boolean value. If they return false, all other
|
|
||||||
* event handlers for this event (in other plugins) will be skipped, and in some
|
|
||||||
* cases the default processing for that event would be skipped. This is great for
|
|
||||||
* replacing the default action of an event.
|
|
||||||
*
|
|
||||||
* If the handler returns true, processing of other event handlers and the default
|
|
||||||
* processing will continue. This is great for extending existing functionality.
|
|
||||||
*
|
|
||||||
* If the handler throws an exception, processing will stop, and the exception's
|
|
||||||
* error will be shown to the user.
|
|
||||||
*
|
|
||||||
* To install a plugin (like this one), site admins add the following code to
|
|
||||||
* their config.php file:
|
|
||||||
*
|
|
||||||
* addPlugin('Sample');
|
|
||||||
*
|
|
||||||
* Plugins must be installed in one of the following directories:
|
|
||||||
*
|
|
||||||
* local/plugins/{$pluginclass}.php
|
|
||||||
* local/plugins/{$name}/{$pluginclass}.php
|
|
||||||
* local/{$pluginclass}.php
|
|
||||||
* local/{$name}/{$pluginclass}.php
|
|
||||||
* plugins/{$pluginclass}.php
|
|
||||||
* plugins/{$name}/{$pluginclass}.php
|
|
||||||
*
|
|
||||||
* Here, {$name} is the name of the plugin, like 'Sample', and {$pluginclass} is
|
|
||||||
* the name of the main class, like 'SamplePlugin'. Plugins that are part of the
|
|
||||||
* main StatusNet distribution go in 'plugins' and third-party or local ones go
|
|
||||||
* in 'local'.
|
|
||||||
*
|
|
||||||
* Simple plugins can be implemented as a single plugin. Others are more complex
|
|
||||||
* and require additional plugins; these should use their own directory, like
|
|
||||||
* 'local/plugins/{$name}/'. All files related to the plugin, including images,
|
|
||||||
* JavaScript, CSS, external libraries or PHP plugins should go in the plugin
|
|
||||||
* directory.
|
|
||||||
*
|
|
||||||
* @category Sample
|
|
||||||
* @package GNU social
|
|
||||||
* @author Brion Vibber <brionv@status.net>
|
|
||||||
* @author Evan Prodromou <evan@status.net>
|
|
||||||
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
|
||||||
*/
|
|
||||||
class SamplePlugin extends Plugin
|
|
||||||
{
|
|
||||||
// Versions start at 0.1.0 in Semver
|
|
||||||
const PLUGIN_VERSION = '0.1.0';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugins are configured using public instance attributes. To set
|
|
||||||
* their values, site administrators use this syntax:
|
|
||||||
*
|
|
||||||
* addPlugin('Sample', ['attr1' => 'foo', 'attr2' => 'bar']);
|
|
||||||
*
|
|
||||||
* The same plugin class can be initialized multiple times with different
|
|
||||||
* arguments:
|
|
||||||
*
|
|
||||||
* addPlugin('EmailNotify', ['sendTo' => 'evan@status.net']);
|
|
||||||
* addPlugin('EmailNotify', ['sendTo' => 'brionv@status.net']);
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public $attr1 = null;
|
|
||||||
public $attr2 = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializer for this plugin
|
|
||||||
*
|
|
||||||
* Plugins overload this method to do any initialization they need,
|
|
||||||
* like connecting to remote servers or creating paths or so on.
|
|
||||||
*
|
|
||||||
* @return bool hook value; true means continue processing, false means stop.
|
|
||||||
*/
|
|
||||||
public function initialize(): bool
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cleanup for this plugin
|
|
||||||
*
|
|
||||||
* Plugins overload this method to do any cleanup they need,
|
|
||||||
* like disconnecting from remote servers or deleting temp files or so on.
|
|
||||||
*
|
|
||||||
* @return bool hook value; true means continue processing, false means stop.
|
|
||||||
*/
|
|
||||||
public function cleanup(): bool
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Database schema setup
|
|
||||||
*
|
|
||||||
* Plugins can add their own tables to the StatusNet database. Plugins
|
|
||||||
* should use StatusNet's schema interface to add or delete tables. The
|
|
||||||
* ensureTable() method provides an easy way to ensure a table's structure
|
|
||||||
* and availability.
|
|
||||||
*
|
|
||||||
* By default, the schema is checked every time StatusNet is run (say, when
|
|
||||||
* a Web page is hit). Admins can configure their systems to only check the
|
|
||||||
* schema when the checkschema.php script is run, greatly improving performance.
|
|
||||||
* However, they need to remember to run that script after installing or
|
|
||||||
* upgrading a plugin!
|
|
||||||
*
|
|
||||||
* @return bool hook value; true means continue processing, false means stop.
|
|
||||||
* @see Schema
|
|
||||||
* @see ColumnDef
|
|
||||||
*/
|
|
||||||
public function onCheckSchema(): bool
|
|
||||||
{
|
|
||||||
$schema = Schema::get();
|
|
||||||
|
|
||||||
// For storing user-submitted flags on profiles
|
|
||||||
$schema->ensureTable('user_greeting_count', User_greeting_count::schemaDef());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Map URLs to actions
|
|
||||||
*
|
|
||||||
* This event handler lets the plugin map URLs on the site to actions (and
|
|
||||||
* thus an action handler class). Note that the action handler class for an
|
|
||||||
* action will be named 'FoobarAction', where action = 'foobar'. The class
|
|
||||||
* must be loaded in the onAutoload() method.
|
|
||||||
*
|
|
||||||
* @param URLMapper $m path-to-action mapper
|
|
||||||
*
|
|
||||||
* @return bool hook value; true means continue processing, false means stop.
|
|
||||||
* @throws Exception If it can't connect our required routes
|
|
||||||
*/
|
|
||||||
public function onRouterInitialized(URLMapper $m): bool
|
|
||||||
{
|
|
||||||
$m->connect(
|
|
||||||
'main/hello',
|
|
||||||
['action' => 'hello']
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Modify the default menu to link to our custom action
|
|
||||||
*
|
|
||||||
* Using event handlers, it's possible to modify the default UI for pages
|
|
||||||
* almost without limit. In this method, we add a menu item to the default
|
|
||||||
* primary menu for the interface to link to our action.
|
|
||||||
*
|
|
||||||
* The Action class provides a rich set of events to hook, as well as output
|
|
||||||
* methods.
|
|
||||||
*
|
|
||||||
* @param Action $action The current action handler. Use this to
|
|
||||||
* do any output.
|
|
||||||
*
|
|
||||||
* @return bool hook value; true means continue processing, false means stop.
|
|
||||||
*
|
|
||||||
* @throws Exception
|
|
||||||
* @see Action
|
|
||||||
*/
|
|
||||||
public function onEndPrimaryNav(Action $action): bool
|
|
||||||
{
|
|
||||||
// common_local_url() gets the correct URL for the action name
|
|
||||||
// we provide
|
|
||||||
$action->menuItem(
|
|
||||||
common_local_url('hello'),
|
|
||||||
// TRANS: Menu item in sample plugin.
|
|
||||||
_m('Hello'),
|
|
||||||
// TRANS: Menu item title in sample plugin.
|
|
||||||
_m('A warm greeting'),
|
|
||||||
false,
|
|
||||||
'nav_hello'
|
|
||||||
);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugin version information/meta-data
|
|
||||||
*
|
|
||||||
* @param array $versions
|
|
||||||
* @return bool hook true
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function onPluginVersion(array &$versions): bool
|
|
||||||
{
|
|
||||||
$versions[] = [
|
|
||||||
'name' => 'Sample',
|
|
||||||
'version' => self::PLUGIN_VERSION,
|
|
||||||
'author' => 'Brion Vibber, Evan Prodromou',
|
|
||||||
'homepage' => GNUSOCIAL_ENGINE_REPO_URL . 'tree/master/plugins/Sample',
|
|
||||||
'rawdescription' =>
|
|
||||||
// TRANS: Plugin description.
|
|
||||||
_m('A sample plugin to show basics of development for new hackers.')
|
|
||||||
];
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,180 +0,0 @@
|
|||||||
<?php
|
|
||||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
|
||||||
//
|
|
||||||
// GNU social is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// GNU social is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Give a warm greeting to our friendly user
|
|
||||||
*
|
|
||||||
* @package GNU social
|
|
||||||
* @author Brion Vibber <brionv@status.net>
|
|
||||||
* @author Evan Prodromou <evan@status.net>
|
|
||||||
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
|
||||||
*/
|
|
||||||
|
|
||||||
defined('GNUSOCIAL') || die();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This sample action shows some basic ways of doing output in an action
|
|
||||||
* class.
|
|
||||||
*
|
|
||||||
* Action classes have several output methods that they override from
|
|
||||||
* the parent class.
|
|
||||||
*
|
|
||||||
* @category Sample
|
|
||||||
* @package GNU social
|
|
||||||
* @author Evan Prodromou <evan@status.net>
|
|
||||||
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
|
||||||
*/
|
|
||||||
class HelloAction extends Action
|
|
||||||
{
|
|
||||||
public $user = null;
|
|
||||||
public $gc = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Take arguments for running
|
|
||||||
*
|
|
||||||
* This method is called first, and it lets the action class get
|
|
||||||
* all its arguments and validate them. It's also the time
|
|
||||||
* to fetch any relevant data from the database.
|
|
||||||
*
|
|
||||||
* Action classes should run parent::prepare($args) as the first
|
|
||||||
* line of this method to make sure the default argument-processing
|
|
||||||
* happens.
|
|
||||||
*
|
|
||||||
* @param array $args $_REQUEST args
|
|
||||||
*
|
|
||||||
* @return bool success flag
|
|
||||||
* @throws ClientException
|
|
||||||
*/
|
|
||||||
public function prepare(array $args = [])
|
|
||||||
{
|
|
||||||
parent::prepare($args);
|
|
||||||
|
|
||||||
$this->user = common_current_user();
|
|
||||||
|
|
||||||
if (!empty($this->user)) {
|
|
||||||
$this->gc = User_greeting_count::inc($this->user->getID());
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle request
|
|
||||||
*
|
|
||||||
* This is the main method for handling a request. Note that
|
|
||||||
* most preparation should be done in the prepare() method;
|
|
||||||
* by the time handle() is called the action should be
|
|
||||||
* more or less ready to go.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @throws ClientException
|
|
||||||
* @throws ReflectionException
|
|
||||||
* @throws ServerException
|
|
||||||
*/
|
|
||||||
public function handle()
|
|
||||||
{
|
|
||||||
parent::handle();
|
|
||||||
|
|
||||||
$this->showPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Title of this page
|
|
||||||
*
|
|
||||||
* Override this method to show a custom title.
|
|
||||||
*
|
|
||||||
* @return string Title of the page
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function title()
|
|
||||||
{
|
|
||||||
if (empty($this->user)) {
|
|
||||||
// TRANS: Page title for sample plugin.
|
|
||||||
return _m('Hello');
|
|
||||||
} else {
|
|
||||||
// TRANS: Page title for sample plugin. %s is a user nickname.
|
|
||||||
return sprintf(_m('Hello, %s!'), $this->user->getNickname());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show content in the content area
|
|
||||||
*
|
|
||||||
* The default StatusNet page has a lot of decorations: menus,
|
|
||||||
* logos, tabs, all that jazz. This method is used to show
|
|
||||||
* content in the content area of the page; it's the main
|
|
||||||
* thing you want to overload.
|
|
||||||
*
|
|
||||||
* This method also demonstrates use of a plural localized string.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function showContent()
|
|
||||||
{
|
|
||||||
if (empty($this->user)) {
|
|
||||||
$this->element(
|
|
||||||
'p',
|
|
||||||
['class' => 'greeting'],
|
|
||||||
// TRANS: Message in sample plugin.
|
|
||||||
_m('Hello, stranger!')
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
$this->element(
|
|
||||||
'p',
|
|
||||||
['class' => 'greeting'],
|
|
||||||
// TRANS: Message in sample plugin. %s is a user nickname.
|
|
||||||
sprintf(_m('Hello, %s'), $this->user->getNickname())
|
|
||||||
);
|
|
||||||
$this->element(
|
|
||||||
'p',
|
|
||||||
['class' => 'greeting_count'],
|
|
||||||
// TRANS: Message in sample plugin.
|
|
||||||
// TRANS: %d is the number of times a user is greeted.
|
|
||||||
sprintf(
|
|
||||||
_m(
|
|
||||||
'I have greeted you %d time.',
|
|
||||||
'I have greeted you %d times.',
|
|
||||||
$this->gc->greeting_count
|
|
||||||
),
|
|
||||||
$this->gc->greeting_count
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return true if read only.
|
|
||||||
*
|
|
||||||
* Some actions only read from the database; others read and write.
|
|
||||||
* The simple database load-balancer built into StatusNet will
|
|
||||||
* direct read-only actions to database mirrors (if they are configured),
|
|
||||||
* and read-write actions to the master database.
|
|
||||||
*
|
|
||||||
* This defaults to false to avoid data integrity issues, but you
|
|
||||||
* should make sure to overload it for performance gains.
|
|
||||||
*
|
|
||||||
* @param array $args other arguments, if RO/RW status depends on them.
|
|
||||||
*
|
|
||||||
* @return bool is read only action?
|
|
||||||
*/
|
|
||||||
public function isReadOnly($args)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,120 +0,0 @@
|
|||||||
<?php
|
|
||||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
|
||||||
//
|
|
||||||
// GNU social is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// GNU social is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Data class for counting greetings
|
|
||||||
*
|
|
||||||
* @package GNUsocial
|
|
||||||
* @author Brion Vibber <brionv@status.net>
|
|
||||||
* @author Evan Prodromou <evan@status.net>
|
|
||||||
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
|
||||||
*/
|
|
||||||
|
|
||||||
defined('GNUSOCIAL') || die();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* We use the DB_DataObject framework for data classes in GNU social. Each
|
|
||||||
* table maps to a particular data class, making it easier to manipulate
|
|
||||||
* data.
|
|
||||||
*
|
|
||||||
* Data classes should extend Memcached_DataObject, the (slightly misnamed)
|
|
||||||
* extension of DB_DataObject that provides caching, internationalization,
|
|
||||||
* and other bits of good functionality to StatusNet-specific data classes.
|
|
||||||
*
|
|
||||||
* @category Action
|
|
||||||
* @package GNUsocial
|
|
||||||
* @author Evan Prodromou <evan@status.net>
|
|
||||||
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
|
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
|
||||||
*
|
|
||||||
* @see DB_DataObject
|
|
||||||
*/
|
|
||||||
class User_greeting_count extends Managed_DataObject
|
|
||||||
{
|
|
||||||
public $__table = 'user_greeting_count'; // table name
|
|
||||||
public $user_id; // int(4) primary_key not_null
|
|
||||||
public $greeting_count; // int(4)
|
|
||||||
public $created; // datetime()
|
|
||||||
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
|
|
||||||
|
|
||||||
public static function schemaDef()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'fields' => [
|
|
||||||
'user_id' => ['type' => 'int', 'not null' => true, 'description' => 'user id'],
|
|
||||||
'greeting_count' => ['type' => 'int', 'not null' => true, 'description' => 'the greeting count'],
|
|
||||||
'created' => ['type' => 'datetime', 'description' => 'date this record was created'],
|
|
||||||
'modified' => ['type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'],
|
|
||||||
],
|
|
||||||
'primary key' => ['user_id'],
|
|
||||||
'foreign keys' => [
|
|
||||||
'user_greeting_count_user_id_fkey' => ['user', ['user_id' => 'id']],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Increment a user's greeting count and return instance
|
|
||||||
*
|
|
||||||
* This method handles the ins and outs of creating a new greeting_count for a
|
|
||||||
* user or fetching the existing greeting count and incrementing its value.
|
|
||||||
*
|
|
||||||
* @param integer $user_id ID of the user to get a count for
|
|
||||||
*
|
|
||||||
* @return User_greeting_count instance for this user, with count already incremented.
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static function inc($user_id)
|
|
||||||
{
|
|
||||||
$gc = User_greeting_count::getKV('user_id', $user_id);
|
|
||||||
|
|
||||||
if (empty($gc)) {
|
|
||||||
$gc = new User_greeting_count();
|
|
||||||
|
|
||||||
$gc->user_id = $user_id;
|
|
||||||
$gc->greeting_count = 1;
|
|
||||||
|
|
||||||
$result = $gc->insert();
|
|
||||||
|
|
||||||
if (!$result) {
|
|
||||||
// TRANS: Exception thrown when the user greeting count could not be saved in the database.
|
|
||||||
// TRANS: %d is a user ID (number).
|
|
||||||
throw new Exception(sprintf(
|
|
||||||
_m('Could not save new greeting count for %d.'),
|
|
||||||
$user_id
|
|
||||||
));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$orig = clone($gc);
|
|
||||||
|
|
||||||
++$gc->greeting_count;
|
|
||||||
|
|
||||||
$result = $gc->update($orig);
|
|
||||||
|
|
||||||
if (!$result) {
|
|
||||||
// TRANS: Exception thrown when the user greeting count could not be saved in the database.
|
|
||||||
// TRANS: %d is a user ID (number).
|
|
||||||
throw new Exception(sprintf(
|
|
||||||
_m('Could not increment greeting count for %d.'),
|
|
||||||
$user_id
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $gc;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,112 +0,0 @@
|
|||||||
# Contributing to GNU social
|
|
||||||
|
|
||||||
First of all, if you're reading this intending to contribute to GNU social,
|
|
||||||
thanks! Free software development only happens when people like you take an
|
|
||||||
interest in giving back to the software they themselves use, and their
|
|
||||||
community.
|
|
||||||
|
|
||||||
When contributing to this repository, please first discuss the change you wish to
|
|
||||||
make via issue, email, or any other method with the owners of this repository before
|
|
||||||
making a change.
|
|
||||||
|
|
||||||
There's a few files you should read before going forward with a merge request
|
|
||||||
or a patch submission. They detail what this file touches on in brief. They
|
|
||||||
are:
|
|
||||||
|
|
||||||
* `DOCUMENTATION/DEVELOPERS/CONTRIBUTING/coding_standards.md`: How your code should be structured and formatted to be
|
|
||||||
accepted into the GNU social codebase.
|
|
||||||
* `/DOCUMENTATION/DEVELOPERS/CONTRIBUTING/merge_request_checklist.md`: A quick checklist to review before submission.
|
|
||||||
|
|
||||||
|
|
||||||
## Merge Request Process
|
|
||||||
|
|
||||||
1. Run php-cs-fixer. We also recommend you to use tools like phpstan, phpactor, phpcs and phpmd
|
|
||||||
2. Run our unit tests (`./vendor/bin/phpunit --testsuite Core`)
|
|
||||||
3. Respect our [VERSIONING](https://notabug.org/diogo/gnu-social/src/nightly/DOCUMENTATION/VERSIONING.md) system
|
|
||||||
4. You may merge the Merge Request in once you have the sign-off of two other developers, or if you
|
|
||||||
do not have permission to do that, you may request the second reviewer to merge it for you
|
|
||||||
|
|
||||||
|
|
||||||
## Coding Standards
|
|
||||||
|
|
||||||
Since we will be expected to maintain your code once it's submitted, we ask you
|
|
||||||
to adhere to certain coding standards that make it easier for us to do so. If
|
|
||||||
code doesn't follow them, it will be rejected, so please read up on these.
|
|
||||||
|
|
||||||
|
|
||||||
## Bug Reports
|
|
||||||
|
|
||||||
Please report bugs to the issue tracker at
|
|
||||||
<https://notabug.org/diogo/gnu-social/issues> Avoid assigning the labels
|
|
||||||
yourself, as these are for the development team to assign priority and area of
|
|
||||||
coverage to a subject. Please only submit something here if you are certain it
|
|
||||||
is a bug or represents a feature enhancement that we do not presently have. If
|
|
||||||
you are uncertain whether it's a bug, please feel free to ask
|
|
||||||
at #social IRC channel at irc.libera.chat https://libera.chat/.
|
|
||||||
|
|
||||||
When reporting a bug, please try to include as much information as possible,
|
|
||||||
including the environment being run on (if it's a common LAMP stack just give
|
|
||||||
us version numbers of the main stack components, that's fine), and the specific
|
|
||||||
error you get. If you do not get a client-facing error, please check the PHP
|
|
||||||
error_log and ensure there isn't something silently reported there, as well as
|
|
||||||
the GNU social log. Try to include steps to reproduce the error as well, as if
|
|
||||||
we cannot reproduce the error, we can't fix it!
|
|
||||||
|
|
||||||
It is perfectly acceptable to reference the archive page of a discussion on the
|
|
||||||
mailing list for the bug report, by the way, as long as it includes all the
|
|
||||||
information we need for a bug report.
|
|
||||||
|
|
||||||
|
|
||||||
## Submitting Feature Requests / Enhancement Requests
|
|
||||||
|
|
||||||
Social media is constantly evolving, and we welcome ideas about how we can
|
|
||||||
change and evolve GNU social to keep it the excellent piece of software that it
|
|
||||||
is. However, there are a few things we ask you do when submitting feature
|
|
||||||
requests:
|
|
||||||
|
|
||||||
1. Understand that since we have a limited amount of developers and these people
|
|
||||||
contribute in their free time, we may prioritize things differently than you
|
|
||||||
value them. Oftentimes this is because certain requests involve less changes
|
|
||||||
to the existing codebase than others, and therefore this makes them easier
|
|
||||||
to add.
|
|
||||||
2. Please search the existing feature requests and enhancements to see if a
|
|
||||||
similar request exists. If one does but you have different ideas about how
|
|
||||||
to do it or what it should entail, please add a comment to the existing idea
|
|
||||||
rather than create a new one for your "version" of it. Duplicate submissions
|
|
||||||
mean we spend more time maintaining the tracker and less time actually
|
|
||||||
working on the codebase!
|
|
||||||
3. When outlining the way that you see something working, don't be afraid to be
|
|
||||||
as detailed as possible! We may not implement it exactly as you describe for
|
|
||||||
any variety of reasons, but the more concrete and fleshed out an idea is, the
|
|
||||||
easier it is for us to know what you want and be able to implement it in a
|
|
||||||
sane and secure fashion.
|
|
||||||
4. When describing a possible new idea and its mechanisms of operation, the key
|
|
||||||
words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
|
|
||||||
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the issue submission
|
|
||||||
are to be interpreted as described in RFC 2119.
|
|
||||||
<https://tools.ietf.org/html/rfc2119>
|
|
||||||
|
|
||||||
Finally, and just as a call back to the first point, realize just because we
|
|
||||||
might not rush to implement something, doesn't mean that we don't want to
|
|
||||||
implement it! We would rather take the time to do something right the first
|
|
||||||
time, then hurriedly apply a new idea, or a fix, only to have to patch it later.
|
|
||||||
|
|
||||||
|
|
||||||
## Branch of Code Submissions
|
|
||||||
|
|
||||||
Unless you've been specifically directed otherwise, all submissions of code
|
|
||||||
should be against the `nightly` branch, so make sure any modifications are based
|
|
||||||
on Nightly.
|
|
||||||
|
|
||||||
|
|
||||||
## Copyright / Licensing
|
|
||||||
|
|
||||||
You acknowledge that by submitting code to GNU social, you are licensing it under
|
|
||||||
the GNU AGPLv3 unless there is an extenuating circumstance where it would be
|
|
||||||
licensed differently (such as modifications to an external library we include
|
|
||||||
such as Stomp).
|
|
||||||
|
|
||||||
You also acknowledge that unless you assign a copyright explicitly, it will be
|
|
||||||
assumed to be assigned to GNU social.
|
|
||||||
|
|
||||||
Thanks for considering submission, and happy hacking!
|
|
@@ -146,13 +146,6 @@ This section is a catch-all for site-wide variables.
|
|||||||
be fine-tuned for notices, messages, profile bios and group descriptions.
|
be fine-tuned for notices, messages, profile bios and group descriptions.
|
||||||
Zero indicates no limit.
|
Zero indicates no limit.
|
||||||
|
|
||||||
* favicon: the path to a custom favicon, eg: favicon.png
|
|
||||||
|
|
||||||
* `x-static-delivery` (string, default null): when a string, use this
|
|
||||||
as the header with wich to serve static files. Possible values are
|
|
||||||
'X-Sendfile' (for Apache and others) and 'X-Accel-Redirect' (for
|
|
||||||
nginx).
|
|
||||||
|
|
||||||
|
|
||||||
db
|
db
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -164,18 +157,26 @@ The ones that you may want to set are listed below for clarity.
|
|||||||
|
|
||||||
* `database` (string, required, default null): a DSN (Data Source Name) for your
|
* `database` (string, required, default null): a DSN (Data Source Name) for your
|
||||||
GNU social database. This is in the format
|
GNU social database. This is in the format
|
||||||
'protocol://username:password@hostname/databasename', where 'protocol' is
|
'protocol://username:password@hostname/databasename', where 'protocol' is '
|
||||||
'mysqli' or 'pgsql' or 'mysql', 'username' is the username, 'password' is
|
mysql' or 'mysqli' (or possibly 'postgresql', if you really know what
|
||||||
the password, and etc.
|
you're doing), 'username' is the username, 'password' is the password,
|
||||||
|
and etc.
|
||||||
|
|
||||||
* `ini_yourdbname` (string, default null): if your database is not named 'statusnet',
|
* `ini_yourdbname` (string, default null): if your database is not named 'statusnet',
|
||||||
you'll need to set this to point to the location of the statusnet.ini file.
|
you'll need to set this to point to the location of the statusnet.ini file.
|
||||||
Note that the real name of your database should go in there, not literally
|
Note that the real name of your database should go in there, not literally
|
||||||
'yourdbname'.
|
'yourdbname'.
|
||||||
|
|
||||||
* `type` (enum["mysql", "pgsql"], default 'mysql'): Used for certain
|
* `db_driver`(enum['DB','MDB2'], default null): You can try changing this to
|
||||||
database-specific optimization code. Assumes mysql if not set. "mysql"
|
'MDB2' to use the other driver type for DB_DataObject, but note that it
|
||||||
covers MariaDB, Oracle MySQL, mysqli or otherwise.
|
breaks the OpenID libraries, which only support PEAR::DB.
|
||||||
|
|
||||||
|
* `quote_identifiers`(boolean, default false): Set this to true if you're using
|
||||||
|
postgresql.
|
||||||
|
|
||||||
|
* `type` (enum["mysql", "postgresql"], default 'mysql'): Used for certain
|
||||||
|
database-specific optimization code. Assumes mysql if not set. MySQL also
|
||||||
|
covers MySQLi and MariaDB.
|
||||||
|
|
||||||
* `mirror` (array, default null): you can set this to an array of DSNs, in the
|
* `mirror` (array, default null): you can set this to an array of DSNs, in the
|
||||||
format of the above 'database' value. If it's set, certain read-only
|
format of the above 'database' value. If it's set, certain read-only
|
||||||
@@ -190,14 +191,13 @@ The ones that you may want to set are listed below for clarity.
|
|||||||
until they get their databases fixed up. See "UTF-8 database" above for
|
until they get their databases fixed up. See "UTF-8 database" above for
|
||||||
details.
|
details.
|
||||||
|
|
||||||
* `schemacheck` (enum["runtime", "script"], default "runtime"): when
|
* `schemacheck` (enum["runtime", "script"], default "runtime"): when to let
|
||||||
to let plugins check the database schema to add tables or update
|
plugins check the database schema to add tables or update them. 'runtime'
|
||||||
them. 'runtime' can be costly (plugins check the schema on every
|
can be costly (plugins check the schema on every hit, adding potentially
|
||||||
hit, adding potentially several db queries, some quite long), but
|
several db queries, some quite long), but not everyone knows how to run a
|
||||||
not everyone knows how to run a script or has the access in their
|
script or has the access in their hosting environment to do so. If you can,
|
||||||
hosting environment to do so. If you can, set this to 'script' and
|
set this to 'script' and run scripts/checkschema.php whenever you install
|
||||||
run scripts/checkschema.php whenever you install or upgrade a
|
or upgrade a plugin.
|
||||||
plugin.
|
|
||||||
|
|
||||||
|
|
||||||
syslog
|
syslog
|
||||||
@@ -224,7 +224,7 @@ sending out SMS email or XMPP messages, for off-line processing. See
|
|||||||
|
|
||||||
* `enabled` (boolean, default false): Whether to uses queues.
|
* `enabled` (boolean, default false): Whether to uses queues.
|
||||||
|
|
||||||
* `daemon` (boolean, default false): Whether to use queuedaemon. False means
|
* `daemon` (boolean, default false): Wather to use queuedaemon. False means
|
||||||
you'll use OpportunisticQM plugin.
|
you'll use OpportunisticQM plugin.
|
||||||
|
|
||||||
* `subsystem` (enum["db", "stomp"], default 'db'): Which kind of queueserver to
|
* `subsystem` (enum["db", "stomp"], default 'db'): Which kind of queueserver to
|
||||||
@@ -606,10 +606,10 @@ Profile management.
|
|||||||
* `biolimit`: max character length of bio; 0 means no limit; null means to use
|
* `biolimit`: max character length of bio; 0 means no limit; null means to use
|
||||||
the site text limit default.
|
the site text limit default.
|
||||||
|
|
||||||
* `backup`: whether users can backup their own profiles. Defaults to false.
|
* `backup`: whether users can backup their own profiles. Defaults to true.
|
||||||
|
|
||||||
* `restore`: whether users can restore their profiles from backup files. Defaults
|
* `restore`: whether users can restore their profiles from backup files. Defaults
|
||||||
to false.
|
to true.
|
||||||
|
|
||||||
* `delete`: whether users can delete their own accounts. Defaults to false.
|
* `delete`: whether users can delete their own accounts. Defaults to false.
|
||||||
|
|
||||||
@@ -667,19 +667,12 @@ in php.ini to be large enough to handle your upload. In httpd.conf
|
|||||||
(if you're using apache), check that the LimitRequestBody directive isn't
|
(if you're using apache), check that the LimitRequestBody directive isn't
|
||||||
set too low (it's optional, so it may not be there at all).
|
set too low (it's optional, so it may not be there at all).
|
||||||
|
|
||||||
* `extblacklist`: associative array to either deny certain extensions or
|
|
||||||
change them to a different one. For example:
|
|
||||||
|
|
||||||
$config['attachments']['extblacklist']['php'] = 'phps'; // this turns .php into .phps
|
|
||||||
$config['attachments']['extblacklist']['exe'] = false; // this would deny any uploads
|
|
||||||
// of files with the "exe" extension
|
|
||||||
|
|
||||||
* `process_links`: follow redirects and save all available file information
|
* `process_links`: follow redirects and save all available file information
|
||||||
(mimetype, date, size, oembed, etc.). Defaults to true.
|
(mimetype, date, size, oembed, etc.). Defaults to true.
|
||||||
|
|
||||||
* `file_quota`: maximum size for a single file upload in bytes. A user can send
|
* `file_quota`: maximum size for a single file upload in bytes. A user can send
|
||||||
any amount of notices with attachments as long as each attachment
|
any amount of notices with attachments as long as each attachment
|
||||||
is smaller than file_quota. Defaults to PHP's configured upload limit.
|
is smaller than file_quota.
|
||||||
|
|
||||||
* `user_quota`: total size in bytes a user can store on this server. Each user
|
* `user_quota`: total size in bytes a user can store on this server. Each user
|
||||||
can store any number of files as long as their total size does
|
can store any number of files as long as their total size does
|
||||||
@@ -717,28 +710,6 @@ set too low (it's optional, so it may not be there at all).
|
|||||||
|
|
||||||
* `filename_base`: for new files, choose one: 'upload', 'hash'. Defaults to hash.
|
* `filename_base`: for new files, choose one: 'upload', 'hash'. Defaults to hash.
|
||||||
|
|
||||||
* `memory_limit`: PHP's memory limit to use temporarily when handling images. Defaults to `1024M`.
|
|
||||||
|
|
||||||
* `prefer_remote`: when a user uploads a file, if the first time this file was
|
|
||||||
retrieved was from an URL, prefer redirect to the attachment with the first known URL.
|
|
||||||
|
|
||||||
|
|
||||||
thumbnail
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
The software lets users upload media with their notes. You can configure
|
|
||||||
the way thumbnails are generated for them.
|
|
||||||
|
|
||||||
* `dir`: Where to store, defaults to `File::path('thumb')` (equivalent to `['attachments']['dir']/thumb/`).
|
|
||||||
* `path`: URL path, relative to the server, to find thumbnails. Defaults to `File::url('thumb/$filename')` (equivalent to `['attachments']['path']/thumb/`).
|
|
||||||
* `server`: Only used if `['thumbnail']['path']` is NOT empty. In which case it defaults to `['site']['server']`, schema is decided from `GNUsocial::useHTTPS()`
|
|
||||||
* `crop`: Crop to the size (not preserving aspect ratio). Defaults to false.
|
|
||||||
* `maxsize`: Thumbs with an edge larger than this will not be generated. Defaults to 1000.
|
|
||||||
* `width`: Max width for the thumbnail. Defaults to 450.
|
|
||||||
* `height`: Max height for the thumbnail. Defaults to 600.
|
|
||||||
* `upscale`: Whether or not to scale smaller images up to larger thumbnail sizes. Defaults to false.
|
|
||||||
* `animated`: `null` means use file as thumbnail. `false` means that a still frame can be used. `true` requires `ImageMagickPlugin`. Defaults to false.
|
|
||||||
|
|
||||||
|
|
||||||
group
|
group
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -762,9 +733,11 @@ search
|
|||||||
Some stuff for search.
|
Some stuff for search.
|
||||||
|
|
||||||
* `type`: type of search. Ignored if PostgreSQL or Sphinx are enabled. Can either
|
* `type`: type of search. Ignored if PostgreSQL or Sphinx are enabled. Can either
|
||||||
be 'like' or 'fulltext' (default). The latter is faster and more efficient
|
be 'fulltext' or 'like' (default). The former is faster and more efficient
|
||||||
but if your storage engine of choice does not support it, then feel free to
|
but requires the lame old MyISAM engine for MySQL. The latter
|
||||||
choose 'like', but it could be miserably slow on large databases.
|
will work with InnoDB but could be miserably slow on large
|
||||||
|
systems. We'll probably add another type sometime in the future,
|
||||||
|
with our own indexing system (maybe like MediaWiki's).
|
||||||
|
|
||||||
|
|
||||||
sessions
|
sessions
|
||||||
|
@@ -1,15 +0,0 @@
|
|||||||
#Simple way to Webfinger enable your domain -- needs PHP
|
|
||||||
|
|
||||||
##Step 1
|
|
||||||
|
|
||||||
Put the 'dot-well-known' on your website, so it loads at:
|
|
||||||
|
|
||||||
https://another_cool.org/.well-known/
|
|
||||||
|
|
||||||
(Remember the . at the beginning of this one, which is common practice
|
|
||||||
for "hidden" files and why we have renamed it "dot-")
|
|
||||||
|
|
||||||
## Step 2
|
|
||||||
|
|
||||||
Edit the .well-known/webfinger/index.php file and replace "https://www.example.org/gnusocial/index.php" with the domain name
|
|
||||||
you're hosting the .well-known handler on.
|
|
@@ -0,0 +1,56 @@
|
|||||||
|
Initial simple way to Webfinger enable your domain -- needs PHP.
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
This guide needs some updating, since it will only guide you to present
|
||||||
|
XML data (while the curl command likely gives you JSON). The workaround
|
||||||
|
is to simply make curl get 'webfinger.xml' instead, and/or have another
|
||||||
|
file that contains JSON, but that requires editing the PHP file as well.
|
||||||
|
|
||||||
|
Step 1
|
||||||
|
======
|
||||||
|
|
||||||
|
Put the 'dot-well-known' on your website, so it loads at:
|
||||||
|
|
||||||
|
https://example.com/.well-known/
|
||||||
|
|
||||||
|
(Remember the . at the beginning of this one, which is common practice
|
||||||
|
for "hidden" files and why we have renamed it "dot-")
|
||||||
|
|
||||||
|
Step 2
|
||||||
|
======
|
||||||
|
|
||||||
|
Edit the .well-known/host-meta file and replace "example.com" with the
|
||||||
|
domain name you're hosting the .well-known directory on.
|
||||||
|
|
||||||
|
Using vim you can do this as a quick method:
|
||||||
|
$ vim .well-known/host-meta [ENTER]
|
||||||
|
:%s/example.com/domain.com/ [ENTER]
|
||||||
|
:wq [ENTER]
|
||||||
|
|
||||||
|
Step 3
|
||||||
|
======
|
||||||
|
|
||||||
|
For each user on your site, and this might only be you...
|
||||||
|
|
||||||
|
In the webfinger directory, make a copy of the example@example.com.xml file
|
||||||
|
so that it's called (replace username and example.com with appropriate
|
||||||
|
values, the domain name should be the same as you're "socialifying"):
|
||||||
|
|
||||||
|
username@example.com.xml
|
||||||
|
|
||||||
|
Then edit the file contents, replacing "social.example.com" with your
|
||||||
|
GNU social instance's base path, and change the user ID number (and
|
||||||
|
nickname for the FOAF link) to that of your account on your social
|
||||||
|
site. If you don't know your user ID number, you can see this on your
|
||||||
|
GNU social profile page by looking at the destination URLs in the
|
||||||
|
Feeds links.
|
||||||
|
|
||||||
|
PROTIP: You can get the bulk of the contents (note the <Subject> element though)
|
||||||
|
from curling down your real webfinger data:
|
||||||
|
$ curl https://social.example.com/.well-known/webfinger?resource=acct:username@social.example.com
|
||||||
|
|
||||||
|
Finally
|
||||||
|
=======
|
||||||
|
|
||||||
|
Using this method, though fiddly, you can now be @user@domain without
|
||||||
|
the need for any prefixes for subdomains, etc.
|
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0" xmlns:hm="http://host-meta.net/xrd/1.0">
|
||||||
|
<Link rel="lrdd" type="application/xrd+xml"
|
||||||
|
template="https://example.com/.well-known/webfinger?resource={uri}"/>
|
||||||
|
</XRD>
|
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
|
||||||
|
<Subject>acct:username@example.com</Subject>
|
||||||
|
<Alias>acct:username@social.example.com</Alias>
|
||||||
|
<Alias>https://social.example.com/user/1</Alias>
|
||||||
|
<Link rel="http://webfinger.net/rel/profile-page"
|
||||||
|
type="text/html"
|
||||||
|
href="https://social.example.com/user/1"/>
|
||||||
|
|
||||||
|
<Link rel="http://schemas.google.com/g/2010#updates-from"
|
||||||
|
type="application/atom+xml"
|
||||||
|
href="https://social.example.com/api/statuses/user_timeline/1.atom"/>
|
||||||
|
|
||||||
|
<!-- Is this/was this ever supported?
|
||||||
|
<Link rel="http://microformats.org/profile/hcard"
|
||||||
|
type="text/html"
|
||||||
|
href="https://social.example.com/hcard"/> -->
|
||||||
|
|
||||||
|
<Link rel="http://gmpg.org/xfn/11"
|
||||||
|
type="text/html"
|
||||||
|
href="https://social.example.com/user/1"/>
|
||||||
|
|
||||||
|
<Link rel="describedby"
|
||||||
|
type="application/rdf+xml"
|
||||||
|
href="https://social.example.com/username/foaf"/>
|
||||||
|
|
||||||
|
<Link rel="http://salmon-protocol.org/ns/salmon-replies"
|
||||||
|
href="https://social.example.com/main/salmon/user/1"/>
|
||||||
|
|
||||||
|
<Link rel="http://salmon-protocol.org/ns/salmon-mention"
|
||||||
|
href="https://social.example.com/main/salmon/user/1"/>
|
||||||
|
|
||||||
|
<Link rel="http://ostatus.org/schema/1.0/subscribe"
|
||||||
|
template="https://social.example.com/main/ostatussub?profile={uri}"/>
|
||||||
|
</XRD>
|
@@ -1,56 +1,43 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// FIXME: REPLACE \/ here
|
/*
|
||||||
define('MY_GNUSOCIAL', 'https://www.example.org/gnusocial/index.php');
|
* GNU social
|
||||||
|
* Copyright (C) 2010, Free Software Foundation, Inc
|
||||||
/**
|
*
|
||||||
* This is a general solution for when you can't have your GNU social instance in the domain root and for when you want to
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* socialfy from another domain.
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// From https://www.php.net/manual/en/function.getallheaders.php#84262 (joyview at gmail dot com)
|
|
||||||
if (!function_exists('getallheaders')) {
|
// basename should make sure we can't escape this directory
|
||||||
function getallheaders()
|
$u = basename($_GET['resource']);
|
||||||
{
|
|
||||||
$headers = [];
|
if (!strpos($u, '@')) {
|
||||||
foreach ($_SERVER as $name => $value) {
|
throw new Exception('Bad resource');
|
||||||
if (substr($name, 0, 5) == 'HTTP_') {
|
exit(1);
|
||||||
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $headers;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$ch = curl_init();
|
|
||||||
curl_setopt($ch, CURLOPT_HTTPHEADER, getallheaders());
|
|
||||||
curl_setopt($ch, CURLOPT_URL, MY_GNUSOCIAL . str_replace('webfinger/', 'webfinger', $_SERVER['REQUEST_URI']));
|
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
|
||||||
$response = curl_exec($ch);
|
|
||||||
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
|
|
||||||
$body = substr($response, $header_size);
|
|
||||||
// From https://stackoverflow.com/a/10590242 (c.hill)
|
|
||||||
function get_headers_from_curl_response($response)
|
|
||||||
{
|
|
||||||
$headers = array();
|
|
||||||
|
|
||||||
$header_text = substr($response, 0, strpos($response, "\r\n\r\n"));
|
if (mb_strpos($u, 'acct:')===0) {
|
||||||
|
$u = substr($u, 5);
|
||||||
foreach (explode("\r\n", $header_text) as $i => $line) {
|
|
||||||
if ($i === 0) {
|
|
||||||
$headers['http_code'] = $line;
|
|
||||||
} else {
|
|
||||||
list($key, $value) = explode(': ', $line);
|
|
||||||
|
|
||||||
$headers[$key] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $headers;
|
|
||||||
}
|
}
|
||||||
$headers = get_headers_from_curl_response($response);
|
|
||||||
foreach ($headers as $name => $value) {
|
// Just to be a little bit safer, you know, with all the unicode stuff going on
|
||||||
header("{$name}: $value");
|
$u = filter_var($u, FILTER_SANITIZE_EMAIL);
|
||||||
|
|
||||||
|
$f = $u . ".xml";
|
||||||
|
|
||||||
|
if (file_exists($f)) {
|
||||||
|
header('Content-Disposition: attachment; filename="'.urlencode($f).'"');
|
||||||
|
header('Content-type: application/xrd+xml');
|
||||||
|
echo file_get_contents($f);
|
||||||
}
|
}
|
||||||
echo $body;
|
|
||||||
curl_close($ch);
|
|
||||||
|
@@ -44,11 +44,6 @@
|
|||||||
# RewriteRule (.*) index.php/$1 [L,QSA]
|
# RewriteRule (.*) index.php/$1 [L,QSA]
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
# Enable X-Sendfile if available. Still needs to be enabled in the config
|
|
||||||
<IfModule mod_xsendfile.c>
|
|
||||||
XSendFile On
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
<FilesMatch "\.(ini)">
|
<FilesMatch "\.(ini)">
|
||||||
<IfVersion < 2.3>
|
<IfVersion < 2.3>
|
||||||
Order allow,deny
|
Order allow,deny
|
||||||
|
@@ -6,15 +6,7 @@ server {
|
|||||||
server_name social.example.org;
|
server_name social.example.org;
|
||||||
|
|
||||||
# redirect all traffic to HTTPS
|
# redirect all traffic to HTTPS
|
||||||
return 301 https://$host$request_uri;
|
rewrite ^ https://$host$request_uri? permanent;
|
||||||
}
|
|
||||||
|
|
||||||
map $sent_http_content_type $gnusocial_expires_policy {
|
|
||||||
default off;
|
|
||||||
text/css 30d;
|
|
||||||
application/javascript 30d;
|
|
||||||
~image/ 30d;
|
|
||||||
~video/ 30d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
@@ -24,8 +16,8 @@ server {
|
|||||||
listen 443 ssl http2;
|
listen 443 ssl http2;
|
||||||
|
|
||||||
# Root
|
# Root
|
||||||
# FIXME: Change the path below to where you installed GNU social (GNU social's root + /public)
|
# FIXME: Change the path below to where you installed GNU social
|
||||||
root /var/www/gnusocial/public;
|
root /path/to/gnusocial/root;
|
||||||
|
|
||||||
# Server name
|
# Server name
|
||||||
# FIXME: Change "social.example.org" to your site's domain name
|
# FIXME: Change "social.example.org" to your site's domain name
|
||||||
@@ -39,36 +31,14 @@ server {
|
|||||||
# Index
|
# Index
|
||||||
index index.php;
|
index index.php;
|
||||||
|
|
||||||
# Enable browser caching for JS, CSS, images, audio, video
|
|
||||||
expires $gnusocial_expires_policy;
|
|
||||||
|
|
||||||
# X-Accel/X-Sendfile. Still needs to be enabled in the config
|
|
||||||
location ^~ /file {
|
|
||||||
internal;
|
|
||||||
# FIXME: Change "/path/to/gnusocial/root/" to the folder where
|
|
||||||
# attachments are stored (normally the same as the site root)
|
|
||||||
root /path/to/gnusocial/root/;
|
|
||||||
|
|
||||||
# Enable compression for images, audio, video to save bandwidth
|
|
||||||
# gzip on;
|
|
||||||
# gzip_comp_level 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
# PHP
|
# PHP
|
||||||
# FIXME: Change "php7.X" to your version of fpm
|
location ~ ^/(index|install)\.php$ {
|
||||||
location ~ ^/(index|install)\.php(/.*)?$ {
|
|
||||||
#location ^~ /index.php {
|
#location ^~ /index.php {
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
|
include snippets/fastcgi-php.conf;
|
||||||
|
|
||||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
fastcgi_pass unix:/run/php/php-fpm.sock;
|
||||||
set $path_info $fastcgi_path_info;
|
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||||
try_files $fastcgi_script_name =404;
|
|
||||||
|
|
||||||
fastcgi_pass unix:/run/php/php7.X-fpm.sock;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
|
|
||||||
fastcgi_param PATH_INFO $path_info;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Don't allow any PHP file other than index.php to be executed
|
# Don't allow any PHP file other than index.php to be executed
|
||||||
@@ -83,11 +53,6 @@ server {
|
|||||||
try_files $uri $uri/ @index_handler;
|
try_files $uri $uri/ @index_handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
# If avatars are located at /path/to/gnusocial/root/file (default)
|
|
||||||
location ^~ /avatar {
|
|
||||||
rewrite ^(.*)$ /file/$1 last;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fancy URLs
|
# Fancy URLs
|
||||||
error_page 404 @index_handler;
|
error_page 404 @index_handler;
|
||||||
location @index_handler {
|
location @index_handler {
|
||||||
@@ -112,4 +77,13 @@ server {
|
|||||||
# client_max_body_size 15M;
|
# client_max_body_size 15M;
|
||||||
# client_body_buffer_size 128k;
|
# client_body_buffer_size 128k;
|
||||||
# gzip_vary on;
|
# gzip_vary on;
|
||||||
|
#
|
||||||
|
# location ~* \.(?:css|js|woff|svg|gif|png|webp|ttf|ico|jpe?g)$ {
|
||||||
|
# gzip on;
|
||||||
|
# gzip_comp_level 4;
|
||||||
|
# add_header Cache-Control "public";
|
||||||
|
# expires 30d;
|
||||||
|
# access_log off;
|
||||||
|
# log_not_found off;
|
||||||
|
# }
|
||||||
}
|
}
|
||||||
|
@@ -1,17 +0,0 @@
|
|||||||
# Versioning
|
|
||||||
|
|
||||||
## Release cycle
|
|
||||||
We follow Semantic Versioning as defined on [https://semver.org/](https://semver.org).
|
|
||||||
|
|
||||||
The GNU social platform has a monthly release cycle. That is, we only increment the version number on day 1 of each month.
|
|
||||||
|
|
||||||
For GNU social plugins, we increment version number by commit. Plugins update have a propagation of the same type in the
|
|
||||||
GNU social's monthly version bump.
|
|
||||||
|
|
||||||
If we have various patch type updates in a month, we only bump it by one in the end of the month. If in the same month
|
|
||||||
we have a minor too, we will only bump the minor value.
|
|
||||||
|
|
||||||
# Lifecycle
|
|
||||||
|
|
||||||
GNU social has 'dev', 'alpha', 'beta', 'rc' and 'release' cycles. We usually are in `dev` during summer. When we finish a `dev` cycle we release an `alpha` (`dev`s aren't tagged as releases). From `alpha` to `release` it depends on how perfect GNU social is after the end of the `dev` cycle. But we use the number after `alpha` instead of `patch` number for small bug fixes when in this cycle. When we finally go from a `r`elease `c`andidate to a `release`, we party... and we use semver for all the small changes until we start working in another `dev` cycle (usually on another summer).
|
|
||||||
|
|
@@ -27,8 +27,8 @@ PHP modules
|
|||||||
The following software packages are *required* for this software to
|
The following software packages are *required* for this software to
|
||||||
run correctly.
|
run correctly.
|
||||||
|
|
||||||
- PHP 7.4+
|
- PHP 7+ PHP7.x is also supported.
|
||||||
- MariaDB 10.3+
|
- MariaDB 5+ MariaDB 10.x is also supported.
|
||||||
- Web server Apache, lighttpd and nginx will all work. CGI mode is
|
- Web server Apache, lighttpd and nginx will all work. CGI mode is
|
||||||
recommended and also some variant of 'suexec' (or a
|
recommended and also some variant of 'suexec' (or a
|
||||||
proper setup php-fpm pool)
|
proper setup php-fpm pool)
|
||||||
@@ -50,6 +50,7 @@ functional setup of GNU social:
|
|||||||
- php-opcache Improved PHP performance by precompilation
|
- php-opcache Improved PHP performance by precompilation
|
||||||
- php-readline For interactive scripts
|
- php-readline For interactive scripts
|
||||||
- php-xml XML parser
|
- php-xml XML parser
|
||||||
|
- php-ds Faster data structures
|
||||||
|
|
||||||
NOTE: Some distros require manual enabling in the relevant php.ini for some modules.
|
NOTE: Some distros require manual enabling in the relevant php.ini for some modules.
|
||||||
|
|
||||||
@@ -69,6 +70,7 @@ For some functionality, you will also need the following extensions:
|
|||||||
- gettext For multiple languages. Default on many PHP installs;
|
- gettext For multiple languages. Default on many PHP installs;
|
||||||
will be emulated if not present.
|
will be emulated if not present.
|
||||||
- exif For thumbnails to be properly oriented.
|
- exif For thumbnails to be properly oriented.
|
||||||
|
- php-ds For faster data structures; will be emulated if not present.
|
||||||
|
|
||||||
You may also experience better performance from your site if you configure
|
You may also experience better performance from your site if you configure
|
||||||
a PHP cache/accelerator. Most distributions come with "opcache" support.
|
a PHP cache/accelerator. Most distributions come with "opcache" support.
|
||||||
|
3
Makefile
3
Makefile
@@ -7,9 +7,6 @@ plugin_mo = $(patsubst %.po,%.mo,$(wildcard plugins/*/locale/*/LC_MESSAGES/*.po)
|
|||||||
|
|
||||||
translations : $(core_mo) $(plugin_mo)
|
translations : $(core_mo) $(plugin_mo)
|
||||||
|
|
||||||
upgrade :
|
|
||||||
php scripts/upgrade.php
|
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
rm -f $(core_mo) $(plugin_mo)
|
rm -f $(core_mo) $(plugin_mo)
|
||||||
|
|
||||||
|
50
README.md
50
README.md
@@ -1,5 +1,5 @@
|
|||||||
# GNU social 2.0.x
|
# GNU social 1.20.x
|
||||||
(c) 2010-2021 Free Software Foundation, Inc
|
(c) 2010-2019 Free Software Foundation, Inc
|
||||||
|
|
||||||
This is the README file for GNU social, the free
|
This is the README file for GNU social, the free
|
||||||
software social networking platform. It includes
|
software social networking platform. It includes
|
||||||
@@ -36,7 +36,7 @@ XMPP), and specially-designed desktop clients that
|
|||||||
support the Twitter API.
|
support the Twitter API.
|
||||||
|
|
||||||
GNU social supports open standards (such as OStatus
|
GNU social supports open standards (such as OStatus
|
||||||
<https://www.w3.org/community/ostatus/> and ActivityPub <https://activitypub.rocks/>) that lets users in
|
<https://www.w3.org/community/ostatus/>) that lets users in
|
||||||
different networks follow each other. It enables a
|
different networks follow each other. It enables a
|
||||||
distributed social network spread all across the
|
distributed social network spread all across the
|
||||||
Web.
|
Web.
|
||||||
@@ -102,20 +102,44 @@ unless you configured a separate logfile. This is
|
|||||||
probably the first place to look if you're getting
|
probably the first place to look if you're getting
|
||||||
weird behaviour from GNU social.
|
weird behaviour from GNU social.
|
||||||
|
|
||||||
Do __not__ forget to run `/scripts/upgrade.php` if you're upgrading to this release.
|
If you're tracking the unstable version of
|
||||||
|
GNU social in the git repository (see below), and you
|
||||||
|
get a compilation error ("unexpected T_STRING") in
|
||||||
|
the browser, check to see that you don't have any
|
||||||
|
conflicts in your code.
|
||||||
|
|
||||||
|
### Unstable version
|
||||||
|
|
||||||
|
If you're adventurous or impatient, you may want
|
||||||
|
to install the development version of GNU social.
|
||||||
|
To get it, use the git version control tool
|
||||||
|
<http://git-scm.com/> like so:
|
||||||
|
|
||||||
|
git clone git@notabug.org:diogo/gnu-social.git
|
||||||
|
|
||||||
|
In the current phase of development it is probably
|
||||||
|
recommended to use git as a means to stay up to date
|
||||||
|
with the source code. You can choose between these
|
||||||
|
branches:
|
||||||
|
* 1.20.x "oldstable", few updates, well tested coded
|
||||||
|
* master "stable", usually working well
|
||||||
|
* nightly "testing", most updates, not always working as expected
|
||||||
|
|
||||||
|
To keep it up-to-date, use `git pull`. Watch for conflicts!
|
||||||
|
|
||||||
|
As in any upgrade, do __not__ forget to run `/scripts/upgrade.php`.
|
||||||
|
|
||||||
## Further information
|
## Further information
|
||||||
|
|
||||||
There are several ways to get more information about GNU social.
|
There are several ways to get more information about GNU social.
|
||||||
|
|
||||||
* The #social IRC channel at irc.libera.chat <https://libera.chat/>.
|
* The #social IRC channel on freenode.net <https://www.freenode.net/>.
|
||||||
* The #social:libera.chat Matrix room
|
* The unofficial XMPP room linked to IRC on <xmpp:gnusocial@conference.bka.li>
|
||||||
* The bridged XMPP room at <xmpp:gnusocial@conference.bka.li?join>
|
* The GNU social website <https://gnu.io/social/>
|
||||||
* The GNU social website <https://gnusocial.rocks/>
|
|
||||||
|
|
||||||
* GNU social has a bug tracker for any defects you may find, or ideas for
|
* GNU social has a bug tracker for any defects you may find, or ideas for
|
||||||
making things better. <https://notabug.org/diogo/gnu-social/issues>
|
making things better. <https://notabug.org/diogo/gnu-social/issues>
|
||||||
* Patches are welcome, preferably to our repository on notabug.org. <https://notabug.org/diogo/gnu-social>
|
* Patches are welcome, preferrably to our repository on notabug.org. <https://notabug.org/diogo/gnu-social>
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
@@ -123,9 +147,11 @@ An incomplete list of developers who've worked on GNU social,
|
|||||||
or its predecessors StatusNet and Free Social has been made available
|
or its predecessors StatusNet and Free Social has been made available
|
||||||
in `CREDITS.md`.
|
in `CREDITS.md`.
|
||||||
|
|
||||||
### Release development team
|
### Current team
|
||||||
|
|
||||||
|
* Matt Lee
|
||||||
|
* Mikael Nordfeldth
|
||||||
* Diogo Cordeiro
|
* Diogo Cordeiro
|
||||||
|
* Bruno Casteleiro
|
||||||
|
* Miguel Dantas
|
||||||
* Alexei Sorokin
|
* Alexei Sorokin
|
||||||
* Many important contributions from GNU social Summer of Code students such as Bruno Casteleiro and Hugo Sales.
|
|
||||||
|
|
||||||
|
@@ -1,47 +0,0 @@
|
|||||||
# GNU social v2.0.0 - THIS. IS. GNU SOCIAL!!!
|
|
||||||
|
|
||||||
Release name chosen after 300 by Frank Miller where the main protagonist Leonidas, King of Sparta, declines peace with the
|
|
||||||
Persians, after being disrespected, by shouting at the Persian Messenger "This is Sparta!" and kicking him into a large well
|
|
||||||
proceeded by the killing of the other Persian messengers.
|
|
||||||
|
|
||||||
## For users/sysadmins
|
|
||||||
|
|
||||||
### Web server changes
|
|
||||||
- GS is now structurally divided in includes and public
|
|
||||||
- New media handling system, new important settings, refer to CONFIGURE doc and web server conf
|
|
||||||
- `$config['site']['x-static-delivery']`
|
|
||||||
- You must also review the [attachments section of CONFIGURE](https://notabug.org/diogo/gnu-social/src/new_modules_system/DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md#attachments).
|
|
||||||
- OEmbed upgraded to Embed plugin (and now we provide Open Graph information too)
|
|
||||||
- Composer was integrated
|
|
||||||
|
|
||||||
### Functionality
|
|
||||||
- Restored broken built-in plugins
|
|
||||||
- A more powerful Plugins management tool for sysadmins
|
|
||||||
|
|
||||||
### Federation
|
|
||||||
- Added ActivityPub support
|
|
||||||
- Enabled the search box to import remote notices and profiles
|
|
||||||
- Direct messages are now via ActivityPub only
|
|
||||||
|
|
||||||
### Load and Storage
|
|
||||||
- New queues system
|
|
||||||
- Support for Redis was added
|
|
||||||
- Support for PostgreSQL was added
|
|
||||||
|
|
||||||
## For developers
|
|
||||||
|
|
||||||
### APIs
|
|
||||||
- New Internal Session Handler and consequently a new API, migration should be simple enough
|
|
||||||
- Dropped support for StatusNet plugins, devs should now use GNUsocial class instead
|
|
||||||
|
|
||||||
### Modules
|
|
||||||
- Composer was integrated
|
|
||||||
- GS is now structurely divided in includes and public
|
|
||||||
- A more powerful Plugins management tool for sysadmins
|
|
||||||
|
|
||||||
Now plugins can be installed via the sysadmin UI. Therefore, now you should package your plugins either in tar or zip. The
|
|
||||||
package name must be the same as the plugin's internal name. For example, a plugin
|
|
||||||
named `Chuck Norris (social@chuck.norris)` must be in a file named: `ChuckNorris.tar`.
|
|
||||||
Inside there MUST be two directories, one named 'includes' with everything that should be unpacked
|
|
||||||
in `local/plugins/{plugin_name}` and another named 'public' with everything that should be unpacked
|
|
||||||
in `public/local/plugins/{plugin_name}`.
|
|
33
TODO.md
33
TODO.md
@@ -1,33 +0,0 @@
|
|||||||
# TODO
|
|
||||||
|
|
||||||
Hi! Thank you for your interest in contributing, please refer to
|
|
||||||
[DOCUMENTATION/DEVELOPERS](https://notabug.org/diogo/gnu-social/src/nightly/DOCUMENTATION/DEVELOPERS)
|
|
||||||
to learn how you can contribute.
|
|
||||||
|
|
||||||
## Pending
|
|
||||||
|
|
||||||
### [Core]
|
|
||||||
- Improve Cronish
|
|
||||||
- Run session garbage collection
|
|
||||||
- Cleanup Email Registration
|
|
||||||
- [Security] Review confirmation codes
|
|
||||||
```
|
|
||||||
<includeals> my guess is that the author intent was that the admin wouldn't have to verify his account, but has misread the User::register docblock
|
|
||||||
<xmpp-gnu> [XRevan86] https://notabug.org/diogo/gnu-social/src/nightly/plugins/EmailRegistration/EmailRegistrationPlugin.php#L114
|
|
||||||
<xmpp-gnu> [XRevan86] https://notabug.org/diogo/gnu-social/src/nightly/classes/Confirm_address.php#L52-L68
|
|
||||||
<xmpp-gnu> [XRevan86] Here's why 13 symbols
|
|
||||||
<xmpp-gnu> [XRevan86] https://notabug.org/diogo/gnu-social/src/nightly/classes/User.php#L343-L349 I wonder why parts of the code reinvent the wheel.
|
|
||||||
<xmpp-gnu> [XRevan86] $result = Confirm_address::saveNew($user->id, $email, 'email');
|
|
||||||
<xmpp-gnu> [XRevan86] I think it can be replaced with that.
|
|
||||||
<xmpp-gnu> [XRevan86] https://notabug.org/diogo/gnu-social/src/nightly/actions/emailsettings.php#L357-L364
|
|
||||||
<xmpp-gnu> [XRevan86] https://notabug.org/diogo/gnu-social/src/nightly/actions/imsettings.php#L316-L325
|
|
||||||
<xmpp-gnu> [XRevan86] The last one is a bit different, as it's not email. But I think it still applies.
|
|
||||||
<xmpp-gnu> [XRevan86] diogo: Maybe saveNew can be extended to accept variable bitsize (or better charsize).
|
|
||||||
<xmpp-gnu> [XRevan86] https://notabug.org/diogo/gnu-social/src/nightly/actions/smssettings.php#L320-L328 then this also can be altered
|
|
||||||
<xmpp-gnu> [XRevan86] but with keeping the original 40 bitsize
|
|
||||||
```
|
|
||||||
- [Database] Move from Pear DB to [PDO_DataObject](https://github.com/roojs/PDO_DataObject)
|
|
||||||
|
|
||||||
There are more pending tasks/ideas to implement in this
|
|
||||||
[repo's issues](https://notabug.org/diogo/gnu-social/issues).
|
|
||||||
|
|
@@ -1,38 +1,42 @@
|
|||||||
<?php
|
<?php
|
||||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
|
||||||
//
|
|
||||||
// GNU social is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// GNU social is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* StatusNet, the distributed open-source microblogging tool
|
||||||
|
*
|
||||||
* Site access administration panel
|
* Site access administration panel
|
||||||
*
|
*
|
||||||
|
* PHP version 5
|
||||||
|
*
|
||||||
|
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
* @category Settings
|
* @category Settings
|
||||||
* @package GNUsocial
|
* @package StatusNet
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2010 StatusNet, Inc.
|
* @copyright 2010 StatusNet, Inc.
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
defined('GNUSOCIAL') || die();
|
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Administer site access settings
|
* Administer site access settings
|
||||||
*
|
*
|
||||||
* @category Admin
|
* @category Admin
|
||||||
* @package GNUsocial
|
* @package StatusNet
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
class AccessadminpanelAction extends AdminPanelAction
|
class AccessadminpanelAction extends AdminPanelAction
|
||||||
{
|
{
|
||||||
@@ -41,7 +45,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
|||||||
*
|
*
|
||||||
* @return string page title
|
* @return string page title
|
||||||
*/
|
*/
|
||||||
public function title()
|
function title()
|
||||||
{
|
{
|
||||||
// TRANS: Page title for Access admin panel that allows configuring site access.
|
// TRANS: Page title for Access admin panel that allows configuring site access.
|
||||||
return _('Access');
|
return _('Access');
|
||||||
@@ -52,7 +56,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
|||||||
*
|
*
|
||||||
* @return string instructions
|
* @return string instructions
|
||||||
*/
|
*/
|
||||||
public function getInstructions()
|
function getInstructions()
|
||||||
{
|
{
|
||||||
// TRANS: Page notice.
|
// TRANS: Page notice.
|
||||||
return _('Site access settings');
|
return _('Site access settings');
|
||||||
@@ -63,7 +67,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function showForm()
|
function showForm()
|
||||||
{
|
{
|
||||||
$form = new AccessAdminPanelForm($this);
|
$form = new AccessAdminPanelForm($this);
|
||||||
$form->show();
|
$form->show();
|
||||||
@@ -75,7 +79,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function saveSettings()
|
function saveSettings()
|
||||||
{
|
{
|
||||||
static $booleans = array('site' => array('private', 'inviteonly', 'closed'),
|
static $booleans = array('site' => array('private', 'inviteonly', 'closed'),
|
||||||
'public' => array('localonly'));
|
'public' => array('localonly'));
|
||||||
@@ -88,7 +92,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
|||||||
|
|
||||||
$config = new Config();
|
$config = new Config();
|
||||||
|
|
||||||
$config->query('START TRANSACTION');
|
$config->query('BEGIN');
|
||||||
|
|
||||||
foreach ($booleans as $section => $parts) {
|
foreach ($booleans as $section => $parts) {
|
||||||
foreach ($parts as $setting) {
|
foreach ($parts as $setting) {
|
||||||
@@ -109,7 +113,7 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
*
|
*
|
||||||
* @return int ID of the form
|
* @return int ID of the form
|
||||||
*/
|
*/
|
||||||
public function id()
|
function id()
|
||||||
{
|
{
|
||||||
return 'form_site_admin_panel';
|
return 'form_site_admin_panel';
|
||||||
}
|
}
|
||||||
@@ -119,7 +123,7 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
*
|
*
|
||||||
* @return string class of the form
|
* @return string class of the form
|
||||||
*/
|
*/
|
||||||
public function formClass()
|
function formClass()
|
||||||
{
|
{
|
||||||
return 'form_settings';
|
return 'form_settings';
|
||||||
}
|
}
|
||||||
@@ -129,7 +133,7 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
*
|
*
|
||||||
* @return string URL of the action
|
* @return string URL of the action
|
||||||
*/
|
*/
|
||||||
public function action()
|
function action()
|
||||||
{
|
{
|
||||||
return common_local_url('accessadminpanel');
|
return common_local_url('accessadminpanel');
|
||||||
}
|
}
|
||||||
@@ -139,7 +143,7 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function formData()
|
function formData()
|
||||||
{
|
{
|
||||||
$this->out->elementStart('fieldset', array('id' => 'settings_admin_account_access'));
|
$this->out->elementStart('fieldset', array('id' => 'settings_admin_account_access'));
|
||||||
// TRANS: Form legend for registration form.
|
// TRANS: Form legend for registration form.
|
||||||
@@ -150,24 +154,18 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
// TRANS: Checkbox instructions for admin setting "Invite only".
|
// TRANS: Checkbox instructions for admin setting "Invite only".
|
||||||
$instructions = _('Make registration invitation only.');
|
$instructions = _('Make registration invitation only.');
|
||||||
// TRANS: Checkbox label for configuring site as invite only.
|
// TRANS: Checkbox label for configuring site as invite only.
|
||||||
$this->out->checkbox(
|
$this->out->checkbox('inviteonly', _('Invite only'),
|
||||||
'inviteonly',
|
|
||||||
_('Invite only'),
|
|
||||||
(bool) $this->value('inviteonly'),
|
(bool) $this->value('inviteonly'),
|
||||||
$instructions
|
$instructions);
|
||||||
);
|
|
||||||
$this->unli();
|
$this->unli();
|
||||||
|
|
||||||
$this->li();
|
$this->li();
|
||||||
// TRANS: Checkbox instructions for admin setting "Closed" (no new registrations).
|
// TRANS: Checkbox instructions for admin setting "Closed" (no new registrations).
|
||||||
$instructions = _('Disable new registrations.');
|
$instructions = _('Disable new registrations.');
|
||||||
// TRANS: Checkbox label for disabling new user registrations.
|
// TRANS: Checkbox label for disabling new user registrations.
|
||||||
$this->out->checkbox(
|
$this->out->checkbox('closed', _('Closed'),
|
||||||
'closed',
|
|
||||||
_('Closed'),
|
|
||||||
(bool) $this->value('closed'),
|
(bool) $this->value('closed'),
|
||||||
$instructions
|
$instructions);
|
||||||
);
|
|
||||||
$this->unli();
|
$this->unli();
|
||||||
|
|
||||||
$this->out->elementEnd('ul');
|
$this->out->elementEnd('ul');
|
||||||
@@ -175,7 +173,7 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
|
|
||||||
|
|
||||||
// Public access settings (login requirements for feeds etc.)
|
// Public access settings (login requirements for feeds etc.)
|
||||||
$this->out->elementStart('fieldset', ['id' => 'settings_admin_public_access']);
|
$this->out->elementStart('fieldset', array('id' => 'settings_admin_public_access'));
|
||||||
// TRANS: Form legend for registration form.
|
// TRANS: Form legend for registration form.
|
||||||
$this->out->element('legend', null, _('Feed access'));
|
$this->out->element('legend', null, _('Feed access'));
|
||||||
$this->out->elementStart('ul', 'form_data');
|
$this->out->elementStart('ul', 'form_data');
|
||||||
@@ -183,24 +181,18 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
// TRANS: Checkbox instructions for admin setting "Private".
|
// TRANS: Checkbox instructions for admin setting "Private".
|
||||||
$instructions = _('Prohibit anonymous users (not logged in) from viewing site?');
|
$instructions = _('Prohibit anonymous users (not logged in) from viewing site?');
|
||||||
// TRANS: Checkbox label for prohibiting anonymous users from viewing site.
|
// TRANS: Checkbox label for prohibiting anonymous users from viewing site.
|
||||||
$this->out->checkbox(
|
$this->out->checkbox('private', _m('LABEL', 'Private'),
|
||||||
'private',
|
|
||||||
_m('LABEL', 'Private'),
|
|
||||||
(bool) $this->value('private'),
|
(bool) $this->value('private'),
|
||||||
$instructions
|
$instructions);
|
||||||
);
|
|
||||||
$this->unli();
|
$this->unli();
|
||||||
|
|
||||||
$this->li();
|
$this->li();
|
||||||
// TRANS: Description of the full network notice stream views..
|
// TRANS: Description of the full network notice stream views..
|
||||||
$instructions = _('The full network view includes (public) remote notices which may be unrelated to local conversations.');
|
$instructions = _('The full network view includes (public) remote notices which may be unrelated to local conversations.');
|
||||||
// TRANS: Checkbox label for hiding remote network posts if they have not been interacted with locally.
|
// TRANS: Checkbox label for hiding remote network posts if they have not been interacted with locally.
|
||||||
$this->out->checkbox(
|
$this->out->checkbox('localonly', _('Restrict full network view to accounts'),
|
||||||
'localonly',
|
|
||||||
_('Restrict full network view to accounts'),
|
|
||||||
(bool) $this->value('localonly', 'public'),
|
(bool) $this->value('localonly', 'public'),
|
||||||
$instructions
|
$instructions);
|
||||||
);
|
|
||||||
$this->unli();
|
$this->unli();
|
||||||
|
|
||||||
$this->out->elementEnd('ul');
|
$this->out->elementEnd('ul');
|
||||||
@@ -212,7 +204,7 @@ class AccessAdminPanelForm extends AdminForm
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function formActions()
|
function formActions()
|
||||||
{
|
{
|
||||||
// TRANS: Button title to save access settings in site admin panel.
|
// TRANS: Button title to save access settings in site admin panel.
|
||||||
$title = _('Save access settings.');
|
$title = _('Save access settings.');
|
||||||
|
@@ -31,7 +31,7 @@ if (!defined('STATUSNET')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once INSTALLDIR . '/lib/profile/togglepeopletag.php';
|
require_once INSTALLDIR . '/lib/togglepeopletag.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@@ -1,45 +1,55 @@
|
|||||||
<?php
|
<?php
|
||||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
|
||||||
//
|
|
||||||
// GNU social is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// GNU social is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* StatusNet, the distributed open-source microblogging tool
|
||||||
|
*
|
||||||
* Show the newest groups
|
* Show the newest groups
|
||||||
*
|
*
|
||||||
|
* PHP version 5
|
||||||
|
*
|
||||||
|
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
* @category API
|
* @category API
|
||||||
* @package GNUsocial
|
* @package StatusNet
|
||||||
* @author Craig Andrews <candrews@integralblue.com>
|
* @author Craig Andrews <candrews@integralblue.com>
|
||||||
* @author Evan Prodromou <evan@status.net>
|
* @author Evan Prodromou <evan@status.net>
|
||||||
* @author Jeffery To <jeffery.to@gmail.com>
|
* @author Jeffery To <jeffery.to@gmail.com>
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2009 StatusNet, Inc.
|
* @copyright 2009 StatusNet, Inc.
|
||||||
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
|
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
defined('GNUSOCIAL') || die();
|
if (!defined('STATUSNET')) {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns of the lastest 20 groups for the site
|
* Returns of the lastest 20 groups for the site
|
||||||
*
|
*
|
||||||
* @copyright 2009 StatusNet, Inc.
|
* @category API
|
||||||
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
|
* @package StatusNet
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
* @author Craig Andrews <candrews@integralblue.com>
|
||||||
|
* @author Evan Prodromou <evan@status.net>
|
||||||
|
* @author Jeffery To <jeffery.to@gmail.com>
|
||||||
|
* @author Zach Copley <zach@status.net>
|
||||||
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
class ApiGroupListAllAction extends ApiPrivateAuthAction
|
class ApiGroupListAllAction extends ApiPrivateAuthAction
|
||||||
{
|
{
|
||||||
public $groups = null;
|
var $groups = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Take arguments for running
|
* Take arguments for running
|
||||||
@@ -48,7 +58,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
|||||||
*
|
*
|
||||||
* @return boolean success flag
|
* @return boolean success flag
|
||||||
*/
|
*/
|
||||||
public function prepare(array $args = [])
|
function prepare(array $args = array())
|
||||||
{
|
{
|
||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
@@ -67,7 +77,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function handle()
|
function handle()
|
||||||
{
|
{
|
||||||
parent::handle();
|
parent::handle();
|
||||||
|
|
||||||
@@ -80,7 +90,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
|||||||
// TRANS: Message is used as a subtitle when listing the latest 20 groups. %s is a site name.
|
// TRANS: Message is used as a subtitle when listing the latest 20 groups. %s is a site name.
|
||||||
$subtitle = sprintf(_("groups on %s"), $sitename);
|
$subtitle = sprintf(_("groups on %s"), $sitename);
|
||||||
|
|
||||||
switch ($this->format) {
|
switch($this->format) {
|
||||||
case 'xml':
|
case 'xml':
|
||||||
$this->showXmlGroups($this->groups);
|
$this->showXmlGroups($this->groups);
|
||||||
break;
|
break;
|
||||||
@@ -118,23 +128,25 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
|||||||
*
|
*
|
||||||
* @return array groups
|
* @return array groups
|
||||||
*/
|
*/
|
||||||
public function getGroups()
|
function getGroups()
|
||||||
{
|
{
|
||||||
|
$qry = 'SELECT user_group.* '.
|
||||||
|
'from user_group join local_group on user_group.id = local_group.group_id '.
|
||||||
|
'order by created desc ';
|
||||||
|
$offset = intval($this->page - 1) * intval($this->count);
|
||||||
|
$limit = intval($this->count);
|
||||||
|
if (common_config('db', 'type') == 'pgsql') {
|
||||||
|
$qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
|
||||||
|
} else {
|
||||||
|
$qry .= ' LIMIT ' . $offset . ', ' . $limit;
|
||||||
|
}
|
||||||
$group = new User_group();
|
$group = new User_group();
|
||||||
|
|
||||||
$group->selectAdd();
|
$group->query($qry);
|
||||||
$group->selectAdd('user_group.*');
|
|
||||||
$group->joinAdd(['id', 'local_group:group_id']);
|
|
||||||
$group->orderBy('user_group.created DESC, user_group.id DESC');
|
|
||||||
|
|
||||||
$offset = ((int) $this->page - 1) * (int) $this->count;
|
$groups = array();
|
||||||
$group->limit($offset, $this->count);
|
|
||||||
|
|
||||||
$groups = [];
|
|
||||||
if ($group->find()) {
|
|
||||||
while ($group->fetch()) {
|
while ($group->fetch()) {
|
||||||
$groups[] = clone $group;
|
$groups[] = clone($group);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $groups;
|
return $groups;
|
||||||
@@ -147,7 +159,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
|||||||
*
|
*
|
||||||
* @return boolean true
|
* @return boolean true
|
||||||
*/
|
*/
|
||||||
public function isReadOnly($args)
|
function isReadOnly($args)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -157,7 +169,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
|||||||
*
|
*
|
||||||
* @return string datestamp of the site's latest group
|
* @return string datestamp of the site's latest group
|
||||||
*/
|
*/
|
||||||
public function lastModified()
|
function lastModified()
|
||||||
{
|
{
|
||||||
if (!empty($this->groups) && (count($this->groups) > 0)) {
|
if (!empty($this->groups) && (count($this->groups) > 0)) {
|
||||||
return strtotime($this->groups[0]->created);
|
return strtotime($this->groups[0]->created);
|
||||||
@@ -174,9 +186,10 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
|||||||
*
|
*
|
||||||
* @return string etag
|
* @return string etag
|
||||||
*/
|
*/
|
||||||
public function etag()
|
function etag()
|
||||||
{
|
{
|
||||||
if (!empty($this->groups) && (count($this->groups) > 0)) {
|
if (!empty($this->groups) && (count($this->groups) > 0)) {
|
||||||
|
|
||||||
$last = count($this->groups) - 1;
|
$last = count($this->groups) - 1;
|
||||||
|
|
||||||
return '"' . implode(
|
return '"' . implode(
|
||||||
|
@@ -1,38 +1,44 @@
|
|||||||
<?php
|
<?php
|
||||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
|
||||||
//
|
|
||||||
// GNU social is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// GNU social is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* StatusNet, the distributed open-source microblogging tool
|
||||||
|
*
|
||||||
* Update a group's profile
|
* Update a group's profile
|
||||||
*
|
*
|
||||||
|
* PHP version 5
|
||||||
|
*
|
||||||
|
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
* @category API
|
* @category API
|
||||||
* @package GNUsocial
|
* @package StatusNet
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @copyright 2010 StatusNet, Inc.
|
* @copyright 2010 StatusNet, Inc.
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
defined('GNUSOCIAL') || die();
|
if (!defined('STATUSNET')) {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API analog to the group edit page
|
* API analog to the group edit page
|
||||||
*
|
*
|
||||||
* @category API
|
* @category API
|
||||||
* @package GNUsocial
|
* @package StatusNet
|
||||||
* @author Zach Copley <zach@status.net>
|
* @author Zach Copley <zach@status.net>
|
||||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
class ApiGroupProfileUpdateAction extends ApiAuthAction
|
class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||||
{
|
{
|
||||||
@@ -94,21 +100,20 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
$this->clientError(_('You must be an admin to edit the group.'), 403);
|
$this->clientError(_('You must be an admin to edit the group.'), 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->group->query('START TRANSACTION');
|
$this->group->query('BEGIN');
|
||||||
|
|
||||||
$orig = clone($this->group);
|
$orig = clone($this->group);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (common_config('profile', 'changenick') == true && $this->group->nickname !== $this->nickname) {
|
if (common_config('profile', 'changenick') == true && $this->group->nickname !== $this->nickname) {
|
||||||
try {
|
try {
|
||||||
$this->group->nickname = Nickname::normalize($this->nickname, true);
|
$this->group->nickname = Nickname::normalize($this->nickname, true);
|
||||||
} catch (NicknameException $e) {
|
} catch (NicknameException $e) {
|
||||||
throw new ApiValidationException($e->getMessage());
|
throw new ApiValidationException($e->getMessage());
|
||||||
}
|
}
|
||||||
$this->group->mainpage = common_local_url(
|
$this->group->mainpage = common_local_url('showgroup',
|
||||||
'showgroup',
|
array('nickname' => $this->group->nickname));
|
||||||
['nickname' => $this->group->nickname]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($this->fullname)) {
|
if (!empty($this->fullname)) {
|
||||||
@@ -130,6 +135,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
$this->validateLocation();
|
$this->validateLocation();
|
||||||
$this->group->location = $this->location;
|
$this->group->location = $this->location;
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (ApiValidationException $ave) {
|
} catch (ApiValidationException $ave) {
|
||||||
$this->clientError($ave->getMessage(), 400);
|
$this->clientError($ave->getMessage(), 400);
|
||||||
}
|
}
|
||||||
@@ -161,7 +167,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
|
|
||||||
$this->group->query('COMMIT');
|
$this->group->query('COMMIT');
|
||||||
|
|
||||||
switch ($this->format) {
|
switch($this->format) {
|
||||||
case 'xml':
|
case 'xml':
|
||||||
$this->showSingleXmlGroup($this->group);
|
$this->showSingleXmlGroup($this->group);
|
||||||
break;
|
break;
|
||||||
@@ -174,7 +180,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateHomepage()
|
function validateHomepage()
|
||||||
{
|
{
|
||||||
if (!is_null($this->homepage)
|
if (!is_null($this->homepage)
|
||||||
&& (strlen($this->homepage) > 0)
|
&& (strlen($this->homepage) > 0)
|
||||||
@@ -186,7 +192,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateFullname()
|
function validateFullname()
|
||||||
{
|
{
|
||||||
if (!is_null($this->fullname) && mb_strlen($this->fullname) > 255) {
|
if (!is_null($this->fullname) && mb_strlen($this->fullname) > 255) {
|
||||||
throw new ApiValidationException(
|
throw new ApiValidationException(
|
||||||
@@ -196,21 +202,19 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateDescription()
|
function validateDescription()
|
||||||
{
|
{
|
||||||
if (User_group::descriptionTooLong($this->description)) {
|
if (User_group::descriptionTooLong($this->description)) {
|
||||||
// TRANS: API validation exception thrown when description does not validate.
|
// TRANS: API validation exception thrown when description does not validate.
|
||||||
// TRANS: %d is the maximum description length and used for plural.
|
// TRANS: %d is the maximum description length and used for plural.
|
||||||
throw new ApiValidationException(sprintf(
|
throw new ApiValidationException(sprintf(_m('Description is too long (maximum %d character).',
|
||||||
_m('Description is too long (maximum %d character).',
|
|
||||||
'Description is too long (maximum %d characters).',
|
'Description is too long (maximum %d characters).',
|
||||||
User_group::maxDescription()),
|
User_group::maxDescription()),
|
||||||
User_group::maxDescription()
|
User_group::maxDescription()));
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateLocation()
|
function validateLocation()
|
||||||
{
|
{
|
||||||
if (!is_null($this->location) && mb_strlen($this->location) > 255) {
|
if (!is_null($this->location) && mb_strlen($this->location) > 255) {
|
||||||
throw new ApiValidationException(
|
throw new ApiValidationException(
|
||||||
@@ -220,13 +224,11 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateAliases()
|
function validateAliases()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$aliases = array_map(
|
$aliases = array_map(array('Nickname', 'normalize'),
|
||||||
['Nickname', 'normalize'],
|
array_unique(preg_split('/[\s,]+/', $this->aliasstring)));
|
||||||
array_unique(preg_split('/[\s,]+/', $this->aliasstring))
|
|
||||||
);
|
|
||||||
} catch (NicknameException $e) {
|
} catch (NicknameException $e) {
|
||||||
throw new ApiValidationException(sprintf('Error processing aliases: %s', $e->getMessage()));
|
throw new ApiValidationException(sprintf('Error processing aliases: %s', $e->getMessage()));
|
||||||
}
|
}
|
||||||
@@ -234,12 +236,10 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
|||||||
if (count($aliases) > common_config('group', 'maxaliases')) {
|
if (count($aliases) > common_config('group', 'maxaliases')) {
|
||||||
// TRANS: API validation exception thrown when aliases do not validate.
|
// TRANS: API validation exception thrown when aliases do not validate.
|
||||||
// TRANS: %d is the maximum number of aliases and used for plural.
|
// TRANS: %d is the maximum number of aliases and used for plural.
|
||||||
throw new ApiValidationException(sprintf(
|
throw new ApiValidationException(sprintf(_m('Too many aliases! Maximum %d allowed.',
|
||||||
_m('Too many aliases! Maximum %d allowed.',
|
|
||||||
'Too many aliases! Maximum %d allowed.',
|
'Too many aliases! Maximum %d allowed.',
|
||||||
common_config('group', 'maxaliases')),
|
common_config('group', 'maxaliases')),
|
||||||
common_config('group', 'maxaliases')
|
common_config('group', 'maxaliases')));
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $aliases;
|
return $aliases;
|
||||||
|
@@ -30,7 +30,7 @@ if (!defined('STATUSNET')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once INSTALLDIR . '/lib/api/apilistusers.php';
|
require_once INSTALLDIR . '/lib/apilistusers.php';
|
||||||
|
|
||||||
class ApiListMembersAction extends ApiListUsersAction
|
class ApiListMembersAction extends ApiListUsersAction
|
||||||
{
|
{
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user