Compare commits
2 Commits
v2.0.0beta
...
1.20.x
Author | SHA1 | Date | |
---|---|---|---|
|
ea647d80ee | ||
|
e2e3c1cdcd |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,4 +16,3 @@ TODO.rym
|
||||
config-*.php
|
||||
good-config.php
|
||||
*.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
|
||||
who've worked on GNU social, or its predecessors
|
||||
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.
|
||||
|
||||
V2 team
|
||||
-------
|
||||
* Diogo Cordeiro
|
||||
* Alexei Sorokin
|
||||
* Bruno Casteleiro
|
||||
|
||||
Credits for GNU social v1
|
||||
------------------------
|
||||
Leads
|
||||
* Mikael Nordfeldth
|
||||
Current team
|
||||
------------
|
||||
* Matt Lee
|
||||
* Mikael Nordfeldth
|
||||
* Diogo Cordeiro
|
||||
* Bruno Casteleiro
|
||||
* Miguel Dantas
|
||||
* Alexei Sorokin
|
||||
|
||||
Additional Contributors
|
||||
-----------------------
|
||||
* Ciaran Gultnieks
|
||||
* Michael Landers
|
||||
* Ori Avtalion
|
||||
@@ -48,7 +46,7 @@ Additional Contributors
|
||||
* Blaine Cook
|
||||
* Henry Story
|
||||
* Melvin Carvalho
|
||||
* Stéphane Bérubé (chimo)
|
||||
* chimo
|
||||
* Akio
|
||||
* Maiyannah Bishop
|
||||
* Bob Mottram
|
||||
@@ -57,9 +55,8 @@ Additional Contributors
|
||||
* Moonman
|
||||
* Normandy
|
||||
* Verius
|
||||
* Diogo Peralta Cordeiro
|
||||
* Alexei Sorokin
|
||||
* Daniel Supernault
|
||||
* Miguel Dantas
|
||||
|
||||
Credits for StatusNet
|
||||
--------------
|
||||
|
@@ -27,7 +27,7 @@ namespace samples;
|
||||
|
||||
defined('GNUSOCIAL') || die();
|
||||
|
||||
require_once __DIR__ . DIRECTORY_SEPARATOR . 'SampleHandler.php';
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'SampleHandler.php');
|
||||
|
||||
/**
|
||||
* Description of this class.
|
||||
@@ -43,7 +43,7 @@ class MySampleClass
|
||||
* @param string $dummy_word 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;
|
||||
$this->niceWorld();
|
||||
@@ -54,7 +54,7 @@ class MySampleClass
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function niceWorld(): string
|
||||
public function niceWorld() : string
|
||||
{
|
||||
return 'hello, world.';
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
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 see code which doesn't comply with the below, please fix it :)
|
||||
@@ -118,7 +118,7 @@ Some short hands are evil:
|
||||
|
||||
Naming conventions
|
||||
-------------------------------------------------------------------------------
|
||||
Respect PSR-12 first.
|
||||
Respect PSR2 first.
|
||||
|
||||
- Classes use PascalCase (e.g. MyClass).
|
||||
- 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.
|
||||
|
||||
|
||||
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
|
||||
-------------------------------------------------------------------------------
|
||||
Always use symbol based comparison operators (&&, ||) instead of text based
|
||||
operators (and, or) in an "if" clause as they are evaluated in different order
|
||||
and at different speeds.
|
||||
This is will prevent any confusion or strange results.
|
||||
operators (AND, OR) as they are evaluated in different orders and at different
|
||||
speeds. This is will prevent any confusion or strange results.
|
||||
|
||||
|
||||
Use English
|
||||
|
@@ -1,7 +1,7 @@
|
||||
Submission Checklist
|
||||
================================================================================
|
||||
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.
|
||||
|
||||
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)
|
||||
- $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
|
||||
- $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
|
||||
- $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)
|
||||
- $action: action object being shown
|
||||
- $user: current user
|
||||
@@ -1447,7 +1447,7 @@ CreateFileImageThumbnailSource: Hook to create image thumbnail source from a Fil
|
||||
|
||||
StartResizeImageFile: Hook to resize an image and output it to a file. No matching End event yet.
|
||||
- $imagefile: ImageFile object we're resizing.
|
||||
- $outpath: string with output filepath
|
||||
- $outpath: string with output filepath
|
||||
- $box: array with size ('width', 'height') and boundary box('x', 'y', 'w', 'h').
|
||||
|
||||
FillImageFileMetadata: Get more metadata about the ImageFile if it is perhaps not a real local file
|
||||
@@ -1496,16 +1496,3 @@ StartDocNav: Before outputting the docs Nav
|
||||
|
||||
EndDocNav: After outputting the docs Nav
|
||||
- $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
|
||||
==================
|
||||
=======================
|
||||
|
||||
SamplePlugin.php
|
||||
----------------
|
||||
-----------------------
|
||||
|
||||
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:
|
||||
|
||||
```php
|
||||
public function onSomeEvent($paramA, &$paramB): bool
|
||||
function onSomeEvent($paramA, &$paramB)
|
||||
{
|
||||
if ($paramA == 'jed') {
|
||||
throw new Exception(sprintf(_m("Invalid parameter %s"), $paramA));
|
||||
@@ -26,7 +26,7 @@ public function onSomeEvent($paramA, &$paramB): bool
|
||||
```
|
||||
|
||||
Event Handlers
|
||||
--------------
|
||||
-----------------------
|
||||
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
```php
|
||||
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}`
|
||||
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
|
||||
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
|
||||
Simple plugins can be implemented as a single module. Others are more complex
|
||||
and require additional modules; 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
|
||||
JavaScript, CSS, external libraries or PHP modules should go in the plugin
|
||||
directory.
|
||||
|
||||
Plugin Configuration
|
||||
--------------------
|
||||
------------------
|
||||
|
||||
Plugins are configured using public instance attributes. To set their values,
|
||||
site administrators use this syntax:
|
||||
|
||||
```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:
|
||||
|
||||
```php
|
||||
addPlugin('EmailNotify', ['sendTo' => 'evan@status.net']);
|
||||
addPlugin('EmailNotify', ['sendTo' => 'brionv@status.net']);
|
||||
addPlugin('EmailNotify', array('sendTo' => 'evan@status.net'));
|
||||
addPlugin('EmailNotify', array('sendTo' => 'brionv@status.net'));
|
||||
```
|
||||
|
||||
```php
|
||||
@@ -89,34 +96,34 @@ class SamplePlugin extends Plugin
|
||||
```
|
||||
|
||||
Initialization
|
||||
--------------
|
||||
------------------
|
||||
|
||||
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.
|
||||
|
||||
```php
|
||||
public function initialize(): bool
|
||||
function initialize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
Clean Up
|
||||
--------
|
||||
------------------
|
||||
|
||||
Plugins overload this method to do any cleanup they need, like disconnecting from
|
||||
remote servers or deleting temp files or so on.
|
||||
|
||||
```php
|
||||
public function cleanup(): bool
|
||||
function cleanup()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
Database schema setup
|
||||
---------------------
|
||||
------------------
|
||||
|
||||
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
|
||||
@@ -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!
|
||||
|
||||
```php
|
||||
public function onCheckSchema(): bool
|
||||
function onCheckSchema()
|
||||
{
|
||||
$schema = Schema::get();
|
||||
|
||||
// '''For storing user-submitted flags on profiles'''
|
||||
|
||||
$schema->ensureTable('user_greeting_count',[
|
||||
new ColumnDef('user_id', 'integer', null, true, 'PRI'),
|
||||
new ColumnDef('greeting_count', 'integer')
|
||||
]
|
||||
);
|
||||
$schema->ensureTable('user_greeting_count',
|
||||
array(new ColumnDef('user_id', 'integer', null,
|
||||
true, 'PRI'),
|
||||
new ColumnDef('greeting_count', 'integer')));
|
||||
|
||||
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.
|
||||
|
||||
This method receives a class name and loads the PHP file related to that class.
|
||||
@@ -160,26 +166,26 @@ in this plugin! So, make sure to return true by default to let other plugins,
|
||||
and the core code, get a chance.
|
||||
|
||||
```php
|
||||
public function onAutoload($cls): bool
|
||||
function onAutoload($cls)
|
||||
{
|
||||
$dir = __DIR__;
|
||||
$dir = dirname(__FILE__);
|
||||
|
||||
switch ($cls)
|
||||
{
|
||||
case 'HelloAction':
|
||||
include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
|
||||
return false;
|
||||
case 'User_greeting_count':
|
||||
include_once $dir . '/'.$cls.'.php';
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
case 'HelloAction':
|
||||
include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
|
||||
return false;
|
||||
case 'User_greeting_count':
|
||||
include_once $dir . '/'.$cls.'.php';
|
||||
return false;
|
||||
default:
|
||||
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
|
||||
@@ -187,28 +193,28 @@ named 'FoobarAction', where action = 'foobar'. The class must be loaded in the
|
||||
onAutoload() method.
|
||||
|
||||
```php
|
||||
public function onRouterInitialized($m): bool
|
||||
function onRouterInitialized($m)
|
||||
{
|
||||
$m->connect('main/hello',
|
||||
['action' => 'hello']);
|
||||
array('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.
|
||||
|
||||
Action Class
|
||||
------------
|
||||
------------------
|
||||
|
||||
The Action class provides a rich set of events to hook, as well as output methods.
|
||||
|
||||
```php
|
||||
public function onEndPrimaryNav($action): bool
|
||||
function onEndPrimaryNav($action)
|
||||
{
|
||||
// '''common_local_url()''' gets the correct URL for the action name we provide
|
||||
|
||||
@@ -217,22 +223,20 @@ public function onEndPrimaryNav($action): bool
|
||||
return true;
|
||||
}
|
||||
|
||||
public function onPluginVersion(&$versions): bool
|
||||
function onPluginVersion(&$versions)
|
||||
{
|
||||
$versions[] = [
|
||||
'name' => 'Sample',
|
||||
'version' => GNUSOCIAL_VERSION,
|
||||
'author' => 'Brion Vibber, Evan Prodromou',
|
||||
'homepage' => 'http://example.org/plugin',
|
||||
'rawdescription' =>
|
||||
_m('A sample plugin to show basics of development for new hackers.')
|
||||
];
|
||||
$versions[] = array('name' => 'Sample',
|
||||
'version' => STATUSNET_VERSION,
|
||||
'author' => 'Brion Vibber, Evan Prodromou',
|
||||
'homepage' => 'http://example.org/plugin',
|
||||
'rawdescription' =>
|
||||
_m('A sample plugin to show basics of development for new hackers.'));
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
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
|
||||
--------------------------
|
||||
------------------
|
||||
|
||||
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.
|
||||
@@ -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.
|
||||
|
||||
```php
|
||||
public function prepare(array $args = []): bool
|
||||
function prepare(array $args = [])
|
||||
{
|
||||
parent::prepare($args);
|
||||
|
||||
@@ -275,14 +279,14 @@ public function prepare(array $args = []): bool
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
```php
|
||||
public function handle(): void
|
||||
function handle()
|
||||
{
|
||||
parent::handle();
|
||||
|
||||
@@ -296,7 +300,7 @@ Title of this page
|
||||
Override this method to show a custom title.
|
||||
|
||||
```php
|
||||
public function title(): string
|
||||
function title()
|
||||
{
|
||||
if (empty($this->user)) {
|
||||
return _m('Hello');
|
||||
@@ -307,7 +311,7 @@ public function title(): string
|
||||
```
|
||||
|
||||
Show content in the content area
|
||||
--------------------------------
|
||||
------------------
|
||||
|
||||
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
|
||||
@@ -315,15 +319,15 @@ page; it's the main thing you want to overload. This method also demonstrates
|
||||
use of a plural localized string.
|
||||
|
||||
```php
|
||||
public function showContent(): void
|
||||
function showContent()
|
||||
{
|
||||
if (empty($this->user)) {
|
||||
$this->element('p', ['class' => 'greeting'],
|
||||
$this->element('p', array('class' => 'greeting'),
|
||||
_m('Hello, stranger!'));
|
||||
} else {
|
||||
$this->element('p', ['class' => 'greeting'],
|
||||
$this->element('p', array('class' => 'greeting'),
|
||||
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.',
|
||||
'I have greeted you %d times.',
|
||||
$this->gc->greeting_count),
|
||||
@@ -333,7 +337,7 @@ public function showContent(): void
|
||||
```
|
||||
|
||||
Return true if read only.
|
||||
-------------------------
|
||||
------------------
|
||||
|
||||
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
|
||||
@@ -343,8 +347,9 @@ This defaults to false to avoid data integrity issues, but you should make sure
|
||||
to overload it for performance gains.
|
||||
|
||||
```php
|
||||
public function isReadOnly($args): bool
|
||||
function isReadOnly($args)
|
||||
{
|
||||
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.
|
||||
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
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -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
|
||||
GNU social database. This is in the format
|
||||
'protocol://username:password@hostname/databasename', where 'protocol' is
|
||||
'mysqli' or 'pgsql' or 'mysql', 'username' is the username, 'password' is
|
||||
the password, and etc.
|
||||
'protocol://username:password@hostname/databasename', where 'protocol' is '
|
||||
mysql' or 'mysqli' (or possibly 'postgresql', if you really know what
|
||||
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',
|
||||
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
|
||||
'yourdbname'.
|
||||
|
||||
* `type` (enum["mysql", "pgsql"], default 'mysql'): Used for certain
|
||||
database-specific optimization code. Assumes mysql if not set. "mysql"
|
||||
covers MariaDB, Oracle MySQL, mysqli or otherwise.
|
||||
* `db_driver`(enum['DB','MDB2'], default null): You can try changing this to
|
||||
'MDB2' to use the other driver type for DB_DataObject, but note that it
|
||||
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
|
||||
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
|
||||
details.
|
||||
|
||||
* `schemacheck` (enum["runtime", "script"], default "runtime"): when
|
||||
to let plugins check the database schema to add tables or update
|
||||
them. 'runtime' can be costly (plugins check the schema on every
|
||||
hit, adding potentially several db queries, some quite long), but
|
||||
not everyone knows how to run a script or has the access in their
|
||||
hosting environment to do so. If you can, set this to 'script' and
|
||||
run scripts/checkschema.php whenever you install or upgrade a
|
||||
plugin.
|
||||
* `schemacheck` (enum["runtime", "script"], default "runtime"): when to let
|
||||
plugins check the database schema to add tables or update them. 'runtime'
|
||||
can be costly (plugins check the schema on every hit, adding potentially
|
||||
several db queries, some quite long), but not everyone knows how to run a
|
||||
script or has the access in their hosting environment to do so. If you can,
|
||||
set this to 'script' and run scripts/checkschema.php whenever you install
|
||||
or upgrade a plugin.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
* `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.
|
||||
|
||||
* `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
|
||||
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
|
||||
to false.
|
||||
to true.
|
||||
|
||||
* `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
|
||||
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
|
||||
(mimetype, date, size, oembed, etc.). Defaults to true.
|
||||
|
||||
* `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
|
||||
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
|
||||
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.
|
||||
|
||||
* `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
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -762,9 +733,11 @@ search
|
||||
Some stuff for search.
|
||||
|
||||
* `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
|
||||
but if your storage engine of choice does not support it, then feel free to
|
||||
choose 'like', but it could be miserably slow on large databases.
|
||||
be 'fulltext' or 'like' (default). The former is faster and more efficient
|
||||
but requires the lame old MyISAM engine for MySQL. The latter
|
||||
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
|
||||
|
@@ -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
|
||||
|
||||
// FIXME: REPLACE \/ here
|
||||
define('MY_GNUSOCIAL', 'https://www.example.org/gnusocial/index.php');
|
||||
|
||||
/**
|
||||
* 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
|
||||
* socialfy from another domain.
|
||||
/*
|
||||
* GNU social
|
||||
* Copyright (C) 2010, Free Software Foundation, Inc
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
// From https://www.php.net/manual/en/function.getallheaders.php#84262 (joyview at gmail dot com)
|
||||
if (!function_exists('getallheaders')) {
|
||||
function getallheaders()
|
||||
{
|
||||
$headers = [];
|
||||
foreach ($_SERVER as $name => $value) {
|
||||
if (substr($name, 0, 5) == 'HTTP_') {
|
||||
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
|
||||
}
|
||||
}
|
||||
return $headers;
|
||||
}
|
||||
|
||||
// basename should make sure we can't escape this directory
|
||||
$u = basename($_GET['resource']);
|
||||
|
||||
if (!strpos($u, '@')) {
|
||||
throw new Exception('Bad resource');
|
||||
exit(1);
|
||||
}
|
||||
$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"));
|
||||
|
||||
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;
|
||||
if (mb_strpos($u, 'acct:')===0) {
|
||||
$u = substr($u, 5);
|
||||
}
|
||||
$headers = get_headers_from_curl_response($response);
|
||||
foreach ($headers as $name => $value) {
|
||||
header("{$name}: $value");
|
||||
|
||||
// Just to be a little bit safer, you know, with all the unicode stuff going on
|
||||
$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]
|
||||
</IfModule>
|
||||
|
||||
# Enable X-Sendfile if available. Still needs to be enabled in the config
|
||||
<IfModule mod_xsendfile.c>
|
||||
XSendFile On
|
||||
</IfModule>
|
||||
|
||||
<FilesMatch "\.(ini)">
|
||||
<IfVersion < 2.3>
|
||||
Order allow,deny
|
||||
|
@@ -6,15 +6,7 @@ server {
|
||||
server_name social.example.org;
|
||||
|
||||
# redirect all traffic to HTTPS
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
map $sent_http_content_type $gnusocial_expires_policy {
|
||||
default off;
|
||||
text/css 30d;
|
||||
application/javascript 30d;
|
||||
~image/ 30d;
|
||||
~video/ 30d;
|
||||
rewrite ^ https://$host$request_uri? permanent;
|
||||
}
|
||||
|
||||
server {
|
||||
@@ -24,8 +16,8 @@ server {
|
||||
listen 443 ssl http2;
|
||||
|
||||
# Root
|
||||
# FIXME: Change the path below to where you installed GNU social (GNU social's root + /public)
|
||||
root /var/www/gnusocial/public;
|
||||
# FIXME: Change the path below to where you installed GNU social
|
||||
root /path/to/gnusocial/root;
|
||||
|
||||
# Server name
|
||||
# FIXME: Change "social.example.org" to your site's domain name
|
||||
@@ -39,36 +31,14 @@ server {
|
||||
# Index
|
||||
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
|
||||
# FIXME: Change "php7.X" to your version of fpm
|
||||
location ~ ^/(index|install)\.php(/.*)?$ {
|
||||
location ~ ^/(index|install)\.php$ {
|
||||
#location ^~ /index.php {
|
||||
include fastcgi_params;
|
||||
include snippets/fastcgi-php.conf;
|
||||
|
||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||
set $path_info $fastcgi_path_info;
|
||||
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;
|
||||
fastcgi_pass unix:/run/php/php-fpm.sock;
|
||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||
}
|
||||
|
||||
# Don't allow any PHP file other than index.php to be executed
|
||||
@@ -83,11 +53,6 @@ server {
|
||||
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
|
||||
error_page 404 @index_handler;
|
||||
location @index_handler {
|
||||
@@ -112,4 +77,13 @@ server {
|
||||
# client_max_body_size 15M;
|
||||
# client_body_buffer_size 128k;
|
||||
# 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
|
||||
run correctly.
|
||||
|
||||
- PHP 7.3+
|
||||
- MariaDB 10.3+
|
||||
- PHP 7+ PHP7.x is also supported.
|
||||
- MariaDB 5+ MariaDB 10.x is also supported.
|
||||
- Web server Apache, lighttpd and nginx will all work. CGI mode is
|
||||
recommended and also some variant of 'suexec' (or a
|
||||
proper setup php-fpm pool)
|
||||
@@ -50,6 +50,7 @@ functional setup of GNU social:
|
||||
- php-opcache Improved PHP performance by precompilation
|
||||
- php-readline For interactive scripts
|
||||
- php-xml XML parser
|
||||
- php-ds Faster data structures
|
||||
|
||||
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;
|
||||
will be emulated if not present.
|
||||
- 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
|
||||
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)
|
||||
|
||||
upgrade :
|
||||
php scripts/upgrade.php
|
||||
|
||||
clean :
|
||||
rm -f $(core_mo) $(plugin_mo)
|
||||
|
||||
|
50
README.md
50
README.md
@@ -1,5 +1,5 @@
|
||||
# GNU social 2.0.x
|
||||
(c) 2010-2021 Free Software Foundation, Inc
|
||||
# GNU social 1.20.x
|
||||
(c) 2010-2019 Free Software Foundation, Inc
|
||||
|
||||
This is the README file for GNU social, the free
|
||||
software social networking platform. It includes
|
||||
@@ -36,7 +36,7 @@ XMPP), and specially-designed desktop clients that
|
||||
support the Twitter API.
|
||||
|
||||
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
|
||||
distributed social network spread all across the
|
||||
Web.
|
||||
@@ -102,20 +102,44 @@ unless you configured a separate logfile. This is
|
||||
probably the first place to look if you're getting
|
||||
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
|
||||
|
||||
There are several ways to get more information about GNU social.
|
||||
|
||||
* The #social IRC channel at irc.libera.chat <https://libera.chat/>.
|
||||
* The #social:libera.chat Matrix room
|
||||
* The bridged XMPP room at <xmpp:gnusocial@conference.bka.li?join>
|
||||
* The GNU social website <https://gnusocial.rocks/>
|
||||
* The #social IRC channel on freenode.net <https://www.freenode.net/>.
|
||||
* The unofficial XMPP room linked to IRC on <xmpp:gnusocial@conference.bka.li>
|
||||
* The GNU social website <https://gnu.io/social/>
|
||||
|
||||
* 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>
|
||||
* 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
|
||||
|
||||
@@ -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
|
||||
in `CREDITS.md`.
|
||||
|
||||
### Release development team
|
||||
### Current team
|
||||
|
||||
* Matt Lee
|
||||
* Mikael Nordfeldth
|
||||
* Diogo Cordeiro
|
||||
* Bruno Casteleiro
|
||||
* Miguel Dantas
|
||||
* 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
|
||||
// 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
|
||||
*
|
||||
* 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
|
||||
* @package GNUsocial
|
||||
* @package StatusNet
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @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
|
||||
*
|
||||
* @category Admin
|
||||
* @package GNUsocial
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
||||
* @category Admin
|
||||
* @package StatusNet
|
||||
* @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 AccessadminpanelAction extends AdminPanelAction
|
||||
{
|
||||
@@ -41,7 +45,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
||||
*
|
||||
* @return string page title
|
||||
*/
|
||||
public function title()
|
||||
function title()
|
||||
{
|
||||
// TRANS: Page title for Access admin panel that allows configuring site access.
|
||||
return _('Access');
|
||||
@@ -52,7 +56,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
||||
*
|
||||
* @return string instructions
|
||||
*/
|
||||
public function getInstructions()
|
||||
function getInstructions()
|
||||
{
|
||||
// TRANS: Page notice.
|
||||
return _('Site access settings');
|
||||
@@ -63,7 +67,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function showForm()
|
||||
function showForm()
|
||||
{
|
||||
$form = new AccessAdminPanelForm($this);
|
||||
$form->show();
|
||||
@@ -75,7 +79,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function saveSettings()
|
||||
function saveSettings()
|
||||
{
|
||||
static $booleans = array('site' => array('private', 'inviteonly', 'closed'),
|
||||
'public' => array('localonly'));
|
||||
@@ -88,7 +92,7 @@ class AccessadminpanelAction extends AdminPanelAction
|
||||
|
||||
$config = new Config();
|
||||
|
||||
$config->query('START TRANSACTION');
|
||||
$config->query('BEGIN');
|
||||
|
||||
foreach ($booleans as $section => $parts) {
|
||||
foreach ($parts as $setting) {
|
||||
@@ -109,7 +113,7 @@ class AccessAdminPanelForm extends AdminForm
|
||||
*
|
||||
* @return int ID of the form
|
||||
*/
|
||||
public function id()
|
||||
function id()
|
||||
{
|
||||
return 'form_site_admin_panel';
|
||||
}
|
||||
@@ -119,7 +123,7 @@ class AccessAdminPanelForm extends AdminForm
|
||||
*
|
||||
* @return string class of the form
|
||||
*/
|
||||
public function formClass()
|
||||
function formClass()
|
||||
{
|
||||
return 'form_settings';
|
||||
}
|
||||
@@ -129,7 +133,7 @@ class AccessAdminPanelForm extends AdminForm
|
||||
*
|
||||
* @return string URL of the action
|
||||
*/
|
||||
public function action()
|
||||
function action()
|
||||
{
|
||||
return common_local_url('accessadminpanel');
|
||||
}
|
||||
@@ -139,7 +143,7 @@ class AccessAdminPanelForm extends AdminForm
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function formData()
|
||||
function formData()
|
||||
{
|
||||
$this->out->elementStart('fieldset', array('id' => 'settings_admin_account_access'));
|
||||
// TRANS: Form legend for registration form.
|
||||
@@ -150,24 +154,18 @@ class AccessAdminPanelForm extends AdminForm
|
||||
// TRANS: Checkbox instructions for admin setting "Invite only".
|
||||
$instructions = _('Make registration invitation only.');
|
||||
// TRANS: Checkbox label for configuring site as invite only.
|
||||
$this->out->checkbox(
|
||||
'inviteonly',
|
||||
_('Invite only'),
|
||||
(bool) $this->value('inviteonly'),
|
||||
$instructions
|
||||
);
|
||||
$this->out->checkbox('inviteonly', _('Invite only'),
|
||||
(bool) $this->value('inviteonly'),
|
||||
$instructions);
|
||||
$this->unli();
|
||||
|
||||
$this->li();
|
||||
// TRANS: Checkbox instructions for admin setting "Closed" (no new registrations).
|
||||
$instructions = _('Disable new registrations.');
|
||||
// TRANS: Checkbox label for disabling new user registrations.
|
||||
$this->out->checkbox(
|
||||
'closed',
|
||||
_('Closed'),
|
||||
(bool) $this->value('closed'),
|
||||
$instructions
|
||||
);
|
||||
$this->out->checkbox('closed', _('Closed'),
|
||||
(bool) $this->value('closed'),
|
||||
$instructions);
|
||||
$this->unli();
|
||||
|
||||
$this->out->elementEnd('ul');
|
||||
@@ -175,32 +173,26 @@ class AccessAdminPanelForm extends AdminForm
|
||||
|
||||
|
||||
// Public access settings (login requirements for feeds etc.)
|
||||
$this->out->elementStart('fieldset', ['id' => 'settings_admin_public_access']);
|
||||
// TRANS: Form legend for registration form.
|
||||
$this->out->elementStart('fieldset', array('id' => 'settings_admin_public_access'));
|
||||
// TRANS: Form legend for registration form.
|
||||
$this->out->element('legend', null, _('Feed access'));
|
||||
$this->out->elementStart('ul', 'form_data');
|
||||
$this->li();
|
||||
// TRANS: Checkbox instructions for admin setting "Private".
|
||||
$instructions = _('Prohibit anonymous users (not logged in) from viewing site?');
|
||||
// TRANS: Checkbox label for prohibiting anonymous users from viewing site.
|
||||
$this->out->checkbox(
|
||||
'private',
|
||||
_m('LABEL', 'Private'),
|
||||
(bool) $this->value('private'),
|
||||
$instructions
|
||||
);
|
||||
$this->out->checkbox('private', _m('LABEL', 'Private'),
|
||||
(bool) $this->value('private'),
|
||||
$instructions);
|
||||
$this->unli();
|
||||
|
||||
$this->li();
|
||||
// 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.');
|
||||
// TRANS: Checkbox label for hiding remote network posts if they have not been interacted with locally.
|
||||
$this->out->checkbox(
|
||||
'localonly',
|
||||
_('Restrict full network view to accounts'),
|
||||
(bool) $this->value('localonly', 'public'),
|
||||
$instructions
|
||||
);
|
||||
$this->out->checkbox('localonly', _('Restrict full network view to accounts'),
|
||||
(bool) $this->value('localonly', 'public'),
|
||||
$instructions);
|
||||
$this->unli();
|
||||
|
||||
$this->out->elementEnd('ul');
|
||||
@@ -212,7 +204,7 @@ class AccessAdminPanelForm extends AdminForm
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function formActions()
|
||||
function formActions()
|
||||
{
|
||||
// TRANS: Button title to save access settings in site admin panel.
|
||||
$title = _('Save access settings.');
|
||||
|
@@ -31,7 +31,7 @@ if (!defined('STATUSNET')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR . '/lib/profile/togglepeopletag.php';
|
||||
require_once INSTALLDIR . '/lib/togglepeopletag.php';
|
||||
|
||||
/**
|
||||
*
|
||||
|
@@ -1,45 +1,55 @@
|
||||
<?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
|
||||
*
|
||||
* 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
|
||||
* @package GNUsocial
|
||||
* @package StatusNet
|
||||
* @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>
|
||||
* @copyright 2009 StatusNet, Inc.
|
||||
* @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
|
||||
*
|
||||
* @copyright 2009 StatusNet, Inc.
|
||||
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
|
||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
||||
* @category API
|
||||
* @package StatusNet
|
||||
* @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
|
||||
{
|
||||
public $groups = null;
|
||||
var $groups = null;
|
||||
|
||||
/**
|
||||
* Take arguments for running
|
||||
@@ -48,7 +58,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
||||
*
|
||||
* @return boolean success flag
|
||||
*/
|
||||
public function prepare(array $args = [])
|
||||
function prepare(array $args = array())
|
||||
{
|
||||
parent::prepare($args);
|
||||
|
||||
@@ -67,7 +77,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
function 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.
|
||||
$subtitle = sprintf(_("groups on %s"), $sitename);
|
||||
|
||||
switch ($this->format) {
|
||||
switch($this->format) {
|
||||
case 'xml':
|
||||
$this->showXmlGroups($this->groups);
|
||||
break;
|
||||
@@ -118,23 +128,25 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
||||
*
|
||||
* @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->selectAdd();
|
||||
$group->selectAdd('user_group.*');
|
||||
$group->joinAdd(['id', 'local_group:group_id']);
|
||||
$group->orderBy('user_group.created DESC, user_group.id DESC');
|
||||
$group->query($qry);
|
||||
|
||||
$offset = ((int) $this->page - 1) * (int) $this->count;
|
||||
$group->limit($offset, $this->count);
|
||||
|
||||
$groups = [];
|
||||
if ($group->find()) {
|
||||
while ($group->fetch()) {
|
||||
$groups[] = clone $group;
|
||||
}
|
||||
$groups = array();
|
||||
while ($group->fetch()) {
|
||||
$groups[] = clone($group);
|
||||
}
|
||||
|
||||
return $groups;
|
||||
@@ -147,7 +159,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
public function isReadOnly($args)
|
||||
function isReadOnly($args)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -157,7 +169,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
||||
*
|
||||
* @return string datestamp of the site's latest group
|
||||
*/
|
||||
public function lastModified()
|
||||
function lastModified()
|
||||
{
|
||||
if (!empty($this->groups) && (count($this->groups) > 0)) {
|
||||
return strtotime($this->groups[0]->created);
|
||||
@@ -174,9 +186,10 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
|
||||
*
|
||||
* @return string etag
|
||||
*/
|
||||
public function etag()
|
||||
function etag()
|
||||
{
|
||||
if (!empty($this->groups) && (count($this->groups) > 0)) {
|
||||
|
||||
$last = count($this->groups) - 1;
|
||||
|
||||
return '"' . implode(
|
||||
|
@@ -1,38 +1,44 @@
|
||||
<?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
|
||||
*
|
||||
* 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
|
||||
* @package GNUsocial
|
||||
* @package StatusNet
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @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
|
||||
*
|
||||
* @category API
|
||||
* @package GNUsocial
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
||||
* @category API
|
||||
* @package StatusNet
|
||||
* @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 ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
{
|
||||
@@ -94,21 +100,20 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
$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);
|
||||
|
||||
try {
|
||||
|
||||
if (common_config('profile', 'changenick') == true && $this->group->nickname !== $this->nickname) {
|
||||
try {
|
||||
$this->group->nickname = Nickname::normalize($this->nickname, true);
|
||||
} catch (NicknameException $e) {
|
||||
throw new ApiValidationException($e->getMessage());
|
||||
}
|
||||
$this->group->mainpage = common_local_url(
|
||||
'showgroup',
|
||||
['nickname' => $this->group->nickname]
|
||||
);
|
||||
$this->group->mainpage = common_local_url('showgroup',
|
||||
array('nickname' => $this->group->nickname));
|
||||
}
|
||||
|
||||
if (!empty($this->fullname)) {
|
||||
@@ -130,6 +135,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
$this->validateLocation();
|
||||
$this->group->location = $this->location;
|
||||
}
|
||||
|
||||
} catch (ApiValidationException $ave) {
|
||||
$this->clientError($ave->getMessage(), 400);
|
||||
}
|
||||
@@ -161,7 +167,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
|
||||
$this->group->query('COMMIT');
|
||||
|
||||
switch ($this->format) {
|
||||
switch($this->format) {
|
||||
case 'xml':
|
||||
$this->showSingleXmlGroup($this->group);
|
||||
break;
|
||||
@@ -174,7 +180,7 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
}
|
||||
}
|
||||
|
||||
public function validateHomepage()
|
||||
function validateHomepage()
|
||||
{
|
||||
if (!is_null($this->homepage)
|
||||
&& (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) {
|
||||
throw new ApiValidationException(
|
||||
@@ -196,21 +202,19 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
}
|
||||
}
|
||||
|
||||
public function validateDescription()
|
||||
function validateDescription()
|
||||
{
|
||||
if (User_group::descriptionTooLong($this->description)) {
|
||||
// TRANS: API validation exception thrown when description does not validate.
|
||||
// TRANS: %d is the maximum description length and used for plural.
|
||||
throw new ApiValidationException(sprintf(
|
||||
_m('Description is too long (maximum %d character).',
|
||||
'Description is too long (maximum %d characters).',
|
||||
User_group::maxDescription()),
|
||||
User_group::maxDescription()
|
||||
));
|
||||
throw new ApiValidationException(sprintf(_m('Description is too long (maximum %d character).',
|
||||
'Description is too long (maximum %d characters).',
|
||||
User_group::maxDescription()),
|
||||
User_group::maxDescription()));
|
||||
}
|
||||
}
|
||||
|
||||
public function validateLocation()
|
||||
function validateLocation()
|
||||
{
|
||||
if (!is_null($this->location) && mb_strlen($this->location) > 255) {
|
||||
throw new ApiValidationException(
|
||||
@@ -220,13 +224,11 @@ class ApiGroupProfileUpdateAction extends ApiAuthAction
|
||||
}
|
||||
}
|
||||
|
||||
public function validateAliases()
|
||||
function validateAliases()
|
||||
{
|
||||
try {
|
||||
$aliases = array_map(
|
||||
['Nickname', 'normalize'],
|
||||
array_unique(preg_split('/[\s,]+/', $this->aliasstring))
|
||||
);
|
||||
$aliases = array_map(array('Nickname', 'normalize'),
|
||||
array_unique(preg_split('/[\s,]+/', $this->aliasstring)));
|
||||
} catch (NicknameException $e) {
|
||||
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')) {
|
||||
// TRANS: API validation exception thrown when aliases do not validate.
|
||||
// TRANS: %d is the maximum number of aliases and used for plural.
|
||||
throw new ApiValidationException(sprintf(
|
||||
_m('Too many aliases! Maximum %d allowed.',
|
||||
'Too many aliases! Maximum %d allowed.',
|
||||
common_config('group', 'maxaliases')),
|
||||
common_config('group', 'maxaliases')
|
||||
));
|
||||
throw new ApiValidationException(sprintf(_m('Too many aliases! Maximum %d allowed.',
|
||||
'Too many aliases! Maximum %d allowed.',
|
||||
common_config('group', 'maxaliases')),
|
||||
common_config('group', 'maxaliases')));
|
||||
}
|
||||
|
||||
return $aliases;
|
||||
|
@@ -30,7 +30,7 @@ if (!defined('STATUSNET')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once INSTALLDIR . '/lib/api/apilistusers.php';
|
||||
require_once INSTALLDIR . '/lib/apilistusers.php';
|
||||
|
||||
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