Compare commits

...

1096 Commits

Author SHA1 Message Date
010f70e432
[TWIG][CSS][Accessibility] Base template accessibility improvements. Applying more semantic HTML5 tags and aria to describe content actions. 2021-08-20 11:38:32 +01:00
fc310a0b4e
[CSS] Fixed Favourite button background size and colour. Fixed right panel incorrect font size. 2021-08-20 11:38:32 +01:00
d398456be8
[TESTS] Fix namespace on Controller Security test 2021-08-20 11:34:08 +01:00
3288d48b8a
[TESTS] Fix broken tests and expand tests around Attachments 2021-08-20 11:34:07 +01:00
94edde001c
[TESTS] Fix Common test 2021-08-20 11:34:06 +01:00
41d759428f
[TESTS][DataFixtures] Use Temporary file instead of an ad-hoc solution to copy the upload files 2021-08-20 11:32:49 +01:00
469cd97b9b
[Posting] Respect process_links setting 2021-08-19 19:37:56 +01:00
8a01224feb
[FileQuota] Update plugin to respect the new entities 2021-08-19 19:37:56 +01:00
61d558b371
[CORE] Fix path configuration 2021-08-19 01:58:29 +01:00
8c5486ba13
[FIXTURES] Catch any exception, we don't have VIPS-related only 2021-08-19 01:58:29 +01:00
a7d4a56b14
[TESTS][Forms] Respect new naming conventions 2021-08-19 01:57:19 +01:00
bef23f20bc
[TESTS] remove accidentally duplicate sample upload 2021-08-19 01:07:51 +01:00
22ad2bd5cc
[VideoEncoder] Port plugin to v3 properly 2021-08-18 23:38:03 +01:00
968a425459
[DOCS][Developer] Paradigms: Update is_null based on poll votes
Everything around the use we give to php's null is about the state of having a value or not. Thus, using `is_null` always is the less bad option.
2021-08-18 23:38:03 +01:00
30975111d9
[ImageEncoder] Make plugin respect instance config and use the new core interface 2021-08-18 23:38:03 +01:00
7c85d312ed
[ENTITY][AttachmentThumbnail] Improve the way EncoderPlugins participate in the thumbnail process 2021-08-18 23:38:03 +01:00
c50e3324ef
[TWIG][Attachments] Don't throw event with mimetype in its name 2021-08-18 23:38:02 +01:00
aebc5358b5
[Core][GSFile] Improve the way EncoderPlugins participate in the file sanitization process 2021-08-18 23:38:02 +01:00
24b3e22f73
[ENTITY][Attachment] Respect rfc6838#section-4.2 mimetype length 2021-08-18 23:38:02 +01:00
6e9cde8a5c
[TESTS][Controller][AdminTest] Update int tests to use attachment file_quota instead, as we deleted attachment max width 2021-08-18 23:37:57 +01:00
4089fc692d
[CONFIG] Add setting for attachment sanitization 2021-08-18 22:17:40 +01:00
f25759d60b
[CONTROLLER][Attachment] Some attachments may not have dimensions 2021-08-18 22:17:39 +01:00
a383021992
[DOCUMENTATION] Update documentation regarding route accept formats 2021-08-18 21:40:08 +01:00
d6e6e56814
[ROUTER][UTIL] Allow specifying the Accept format for a route 2021-08-18 21:33:07 +01:00
9afa265c30
[DOCKER] Update PHP docker container to include ffmpeg, for the VideoEncoderPlugin 2021-08-18 21:20:25 +01:00
027c9a9324
[MODULES][PLUGINS] Move noteActionHandle utility to NoteHandlerPlugin which plugins which handle actions on notes should extend 2021-08-18 19:14:24 +01:00
2c10ce5cfc
[UI] Rename all forms to more specific names, to avoid form name collisions 2021-08-18 18:38:54 +01:00
c03c6f1bb5
[UTIL][Form] Disallow using very generic form names, as they can collide with other forms in the same page 2021-08-18 18:35:03 +01:00
be5328cdc5
[TESTS] Fix LocalUserTest, i forgor to boot the kernel 2021-08-18 18:09:26 +01:00
4a781d483a
[TESTS] Fix tests broken with rebased commits 2021-08-18 17:40:37 +01:00
5bcabbb025
[TESTS] Raise test coverage for Link to 100% 2021-08-18 17:35:10 +01:00
b6cd58d501
[TESTS] Raise test coverage of LocalGroup to 100% 2021-08-18 17:35:10 +01:00
2ba6f66b7f
[TESTS] Raise test coverage of LocalUser to 100% 2021-08-18 17:35:10 +01:00
152beb5798
[TESTS] Raise GSActor test coverage to 100% 2021-08-18 17:35:10 +01:00
96612fcd43
[TESTS][Attachment][AttachmentThumbnail][GSFile] Reorganize tests and raise test coverage to 100% 2021-08-18 17:35:10 +01:00
4cda3fc645
[ATTACHMENTS][AttachmentThumbnail] Fix implementation of predictScalingValues and small fixes 2021-08-18 17:35:10 +01:00
b72fcd2a05
[TESTS] Add code coverage annotations to entities 2021-08-18 17:35:10 +01:00
9018b1301a
[TESTS] Raise test coverage for Note to 100% 2021-08-18 17:35:10 +01:00
20901d26df
[Note] Fix scope check for group notes, move away from SQL, to DQL 2021-08-18 17:35:10 +01:00
0b3ebf841d
[TESTS][DataFixtures] Add user, self follows, group member and group scope note 2021-08-18 17:35:09 +01:00
fd1bd9838d
[TOOLS] Disable command echo in Makefile 2021-08-18 17:35:09 +01:00
7320c6834f
[UI][Attachment] Use Attachment methods to get the proper URL, rather than crafting it in a template 2021-08-18 17:35:09 +01:00
9c533a54a7
[ATTACHMENTS] Ensure thumbnail dimensions are bounded and change way cropping is implemented 2021-08-18 17:35:09 +01:00
5be4c6a22e
[VideoEncoder] Add plugin composer dependency php-ffmpeg/php-ffmpeg 2021-08-18 14:46:49 +01:00
61500c5223
[Embed] Move composer dependency embed/embed from core to plugin 2021-08-18 14:46:49 +01:00
f7c426e81c
[ENTITY][Link] self urls can't be considered a remote url 2021-08-18 14:34:49 +01:00
40f2f5f977
[Embed][StoreRemoteMedia] Re-add {white,black}list check config 2021-08-18 14:15:53 +01:00
b7b54b8a07
[Posting] Fix wrong usage of DB::findBy 2021-08-18 12:23:36 +01:00
a6e41d3bd8
[DOCS][Developer] Recommend reading the tests cases for when the doc doesn't cover 2021-08-17 23:39:45 +01:00
d4ad0cc3d4
[DOCS][Developer] Update storage documentation 2021-08-17 23:37:19 +01:00
3af33d1317
[ImageEncoder] Fix ImageSanitization, it should never modify the input image 2021-08-17 23:35:35 +01:00
2448d83ace [CSS] Hotfix: Figure captions do not overflow. 2021-08-17 21:59:54 +01:00
923ff309fe
[Posting] Store uploaded filenames as titles 2021-08-17 21:48:38 +01:00
f039c86578
[Avatar] Preserve uploaded filename and use Avatar's own route instead of attachment 2021-08-17 21:48:37 +01:00
e76e3b710b
Remove weird empty template 2021-08-17 21:48:37 +01:00
022a9476cc [TWIG][CSS] Left and right panels accessibility improvements. Tabindex is now properly set up. When panels have the attribute open but aren't focused (keyboard navigation out of panel, into main content) they aren't displayed anymore. 2021-08-17 21:43:58 +01:00
4e5f9a51f0
[TESTS] Hot-fix Security controller tests, broken with ongoing form rendering changes 2021-08-17 20:54:46 +01:00
44593f2ab4
[TWIG][CSS] More consistent classes. Checkbox styling done. Register and Login pages now done. 2021-08-17 20:52:22 +01:00
2ae1198704
[UTIL][FORM] Password form now shows the proper HTML class, and it's respective label. 2021-08-17 20:52:22 +01:00
9e52bd127f
[CONTROLLER][SECURITY] Added class names. Help labels for each form element. Each form element now has a proper block prefix (the resulting HTML won't simply concatenate the form's name to the element's label). 2021-08-17 20:52:21 +01:00
41b45435ff
[DOC] Fixed installation.md typos. 2021-08-17 20:52:21 +01:00
e9fa41c5a8
[FORM] Fix bug where options were passed in the data parameter 2021-08-17 20:52:21 +01:00
48c11a3fda
[DOCS][Developer] Add an introduction 2021-08-17 20:27:54 +01:00
fa1585bd00
[DOCS][Developer] httpclient: Add an example of lazyness care 2021-08-17 20:27:54 +01:00
f5918d8d5c
[DOCS][Developer] Paradigms: apply XRevan86 fixes and remove the return types section, we must revisit it later.. 2021-08-17 20:27:54 +01:00
ff4d31404b
[DOCS][Developer] Remove low level index, we will approach these themes in another manner
Fix some broken links
2021-08-17 20:27:54 +01:00
ac6f2bed5e
[TOOLS] Add make command 'database-force-schema-update' to update the database schema and 'redis-shell' 2021-08-17 01:31:52 +01:00
5cb45fcd66
Duplicate public/assets/css/bg.jpg history in tests/sample-uploads/attachment-lifecycle-target.jpg history. 2021-08-17 01:31:52 +01:00
dd22894f66
[TESTS][TOOLS] Always stop containers regardless of test success 2021-08-17 01:31:52 +01:00
11178289fa
[DEPENDENCIES] Update dependencies 2021-08-16 18:05:24 +01:00
1e8beefb07
[PLUGINS][ENTITY][Cover][ProfileColor] Clean up after interns and move entity defintions to be inside the corresponding plugin, rather than in core 2021-08-16 17:20:33 +01:00
f68a2ce481
[TESTS] Raise test coverage for GSFile to 100% 2021-08-16 17:11:28 +01:00
b0f5352a53
[TESTS] Raise test coverage for Attachment controller to 100% 2021-08-16 17:11:05 +01:00
69ff8c2750
[CORE][GSFile] Use pathinfo rather than regular expressions and don't attempt to persist an already persisted entity 2021-08-16 17:10:33 +01:00
355b26221d
[CONTROLLER][Attachment] Small refactor and add testing annotation 2021-08-16 17:09:44 +01:00
d4c3e26f50
[TESTS] Remove copied upload test files, if upload failed 2021-08-16 17:09:02 +01:00
5bd5c25dcf
[TESTS] Add coverage ignore flags to trivial methods 2021-08-16 17:08:29 +01:00
e30ae79eb7
[DB][DOCUMENTATION] Explain limit: 2 in findOneBy 2021-08-16 17:07:00 +01:00
fb861ed41f
[UTIL][EXCEPTIONS] Introduce NotStoredLocallyException 2021-08-16 17:06:02 +01:00
33bf99cfda
[ENTITY][Attachment] Raise mimetype max length to 64 characters and ensure we don't attempt to store more than that 2021-08-14 21:47:49 +01:00
4d883d1011
[TESTS] Cleanup attachment test data 2021-08-14 21:46:44 +01:00
1d95080f9a
[TESTS] Remove MediaFileTest and move setup code to media data fixture 2021-08-14 19:49:51 +00:00
bb57d7dc10
[TESTS] Move Media fixtures to their own file, for organization 2021-08-14 19:49:51 +00:00
f3972abb70
[DOCUMENTATION][Entity] Improve documentation on Entity::getWithPK, explaining the ways it can be used 2021-08-14 19:49:50 +00:00
2e3ab5bdfb
[ENTITY][Link] Sometimes URLs don't work, handle that 2021-08-14 17:08:11 +01:00
d23312aff9
[Embed] Add UI element and fix some bugs 2021-08-14 17:04:59 +01:00
a43f1a641a
[TWIG] Add Links representation to notes 2021-08-14 17:04:58 +01:00
31c5fd6da7
[ImageEncoder] Handle VIPS unsupported image type 2021-08-14 17:04:58 +01:00
7b3ca428e9
[ATTACHMENT] Some attachments don't have thumbnails and that's okay 2021-08-14 17:04:58 +01:00
df5e7b139a
[CORE][GSFile] ensureFilenameWithProperExtension: extension isn't an I/O param 2021-08-14 17:04:57 +01:00
4c1fc40c43
[ENTITY][Note] Add getter for note links 2021-08-14 17:04:57 +01:00
c381e58d33
[ENTITY] Refactor RemoteURL entities to Link
RemoteURL was being an awfully confusing term.
2021-08-14 17:04:51 +01:00
333567c6a1
[Embed] Retrieve remote thumbnails and other improvements 2021-08-14 17:00:53 +01:00
632a54208d
[Embed] Fix usage of EmbedLib
Fix other minor bugs
2021-08-14 17:00:53 +01:00
daaf7ea236
[Attachment] Sometimes we can't provide download of original file 2021-08-14 17:00:53 +01:00
3019048585
[Posting] Re-add original file to attachment on upload, if it was previously removed 2021-08-14 17:00:52 +01:00
9781ddc8e0
[AttachmentToNote][Attachment] Add title getter to Attachment 2021-08-14 17:00:52 +01:00
c12eacc758
[TESTS][Twig] Fix ExtensionTest->testIconsExtension 2021-08-14 17:00:52 +01:00
d13da61d30
[StoreRemoteMedia] Implement the first version of it in v3 2021-08-14 17:00:51 +01:00
f64436771c
[UTIL] Common::config wasn't a proper port from v2, it has to accept one argument only as well 2021-08-14 17:00:51 +01:00
91666f7d61
[RemoteURLToAttachment] Fix primary key, relation is: One Attachment Has Many URLs, One URL Has One Attachment 2021-08-14 17:00:51 +01:00
b20a4c89fb
[Attachment] Allow to delete the associated file 2021-08-14 17:00:50 +01:00
6453593b0d
[MODULES] Add module configuration 2021-08-14 17:00:50 +01:00
f72cfd1c2b
[CORE][Event] Fix bug on handler Log 2021-08-14 17:00:50 +01:00
c0a404c640
[CORE][Entity] Compare with object properties when creating/updating, instead of class 2021-08-14 17:00:50 +01:00
aec8521e4b
[ENTITY][Posting] Remove GSActorToRemoteURL, Fix URL database store 2021-08-14 17:00:49 +01:00
eb6ff68f7a
[AttachmentShowRelated] Bug fix after re-introduction of NoteActions 2021-08-14 17:00:49 +01:00
c86cac2095
[CSS][Assets] Minified header icons. Reverted footer links position due to Firefox's corageous interpretation of a fixed element's position. 2021-08-14 17:00:49 +01:00
c14718e8dd
[Favourite][TWIG][CSS] Favourite shows alt-text and properly sets colours. Titles translated on the right panel. 2021-08-14 17:00:48 +01:00
ae7516c893
[ATTACHMENTS] Always store in the same location 2021-08-14 17:00:48 +01:00
32ad5dbd74
[ENTITY] Split Attachment in various new entities
Remove Attachment Scope
Fixed some minor bugs

Scope will be implemented later in v3. It doesn't make sense to have
the scope handling being per attachment. Different actors can post
the same attachment with different scopes. The attachment controller
will assume the highest level of scope applied to the attachment and
the rest will be handled at the note level.

Motivation:
* Remove title from attachment, as it's part of the relation between attachment and note.
* Remove actor from attachment, many actors may publish the same attachment.
* Remove is_local from attachment,  as it's part of the relation between attachment and note.
* Remove remote_url from attachment, different urls can return the same attachment.

Addition:
* Attachment now has a lives attribute,  it's a reference counter with a nicer name
* GSActorToAttachment
* GSActorToRemoteURL
* RemoteURL
* RemoteURLToNote
* RemoteURLToAttachment
* AttachmentToNote now has a title attribute
2021-08-14 17:00:46 +01:00
2ea739ef61
[FileQuota] We'll get back to this plugin later 2021-08-14 16:17:15 +01:00
420b3f4aeb
[DB][Attachments] Use count function rathar than fetch and count, rename to refCount, rather than countDepencies 2021-08-14 16:13:01 +01:00
6cea2b1d00
[DEPENDENCIES] Update dependencies 2021-08-14 16:13:01 +01:00
9c99c11790
[TemporaryFile][TESTS] Throw on attempt to write to null resource and fix tests 2021-08-14 16:13:01 +01:00
ecbfba1b1a
[TESTS] Add test for JSON response and invalid accept format 2021-08-14 16:13:00 +01:00
66b39d3607
[ENTITY] Add JsonSerializable interface to Entity base class and implement it for the Note class 2021-08-14 16:13:00 +01:00
8e627f2c18
[TESTS] Add test annotations to core classes 2021-08-14 16:12:59 +01:00
7cace2051f
[CORE][Controller] Fix JSON response and add test annotations 2021-08-14 16:12:59 +01:00
a4cb90ba12
[EVENTS] Change FormatNoteList do separate in and out arguments
This is necessary due to some weird problem which I wasn't able to figure out (but which doesn't matter)
that somehow causes the event to be called twice during testing, and thus the function was exploding
2021-08-14 16:12:58 +01:00
cb0093bd4a
[TESTS] Fix Entity test in accordance with the changes to createOrUpdate 2021-08-14 16:12:58 +01:00
c804892672
[TEST] Raise test coverage for UserPanel to 100% 2021-08-14 16:12:57 +01:00
e053ee451b
[CONTROLLER][UserPanel] Finish implementation of ::notifications so it actually saves the values in the database 2021-08-14 16:12:57 +01:00
9a6fddb004
[CONTROLLR][UserPanel][PLUGINS] Add submit button to notification settings for each transport 2021-08-14 16:12:57 +01:00
06b9bd9910
[CONTROLLER][AdminPanel] Further ensure form validity 2021-08-14 16:12:56 +01:00
47daf6169a
[CORE][Log] Add Log::unexpected_exception utility which logs and throws a ServerException 2021-08-14 16:12:56 +01:00
71b1ee7796
[CORE][Entity] Fix implementation of createOrUpdate so it doesn't throw NotFoundException if trying to create an object
This was previously done because we wanted to notify the callee that
and entity existed but not with the provided contents. With the change
of return value, with a bool $is_update, this is no longer a problem.
2021-08-14 16:12:55 +01:00
4266b361c0
[TESTS] Update PHPUnit config to start executing tests by last failure. This doens't seem to actually work currently, though 2021-08-14 16:12:55 +01:00
504c8f8935
[TOOLS] Add utility commands to the Makefile 2021-08-14 16:12:55 +01:00
c38bbed7df
[UTIL][FormFields] Move FormFields class to Util\Form namespace 2021-08-14 16:12:54 +01:00
7308e66981
[Favourite][TWIG][CSS] Favourite now works. 2021-08-14 16:12:54 +01:00
2590ea7b67
[CSS] Overall typography resizing to provide proper text hierarchy. Radio buttons polish, notes author box is now smaller. Better organization of CSS rules according to their filename and thus, their aim. 2021-08-14 16:12:53 +01:00
6aa61abd81
[CSS] Fixed top margin, footer elements are now actually footer elements. 2021-08-14 16:12:53 +01:00
96abf53e22
[TWIG][CSS] Buttons are now the correct size in all contexts. Right panel create a notice section re-structure. 2021-08-14 16:12:52 +01:00
b7d205465f
[TWIG][CSS] Feedback provided to active page. Removed top accent border on notes. 2021-08-14 16:12:52 +01:00
d19c990acf
[FAQ][CSS] All FAQ pages stylized, minor structure changes throughout. 2021-08-14 16:12:52 +01:00
38abbc14b9
[TWIG][CSS] Left panel text hierarchy fix (no <hr> element between timeline navigation and its items). Default CSS fixes for buttons and input file selectors. 2021-08-14 16:12:51 +01:00
0eb9575534
[CSS] Input file elements polish. It should resize properly and provide feedback when selected (not a thing in Firefox ESR yet). 2021-08-14 16:12:51 +01:00
a02093e848
[CSS] Base CSS polish, reset CSS additions for better cross-browser compatibility. 2021-08-14 16:12:51 +01:00
9343d00110
[Avatar] Delete attachment only if safe 2021-08-14 16:12:47 +01:00
67f5421691
[ATTACHMENTS] Add dependencies counter 2021-08-05 14:44:05 +01:00
bbaeaad052 [CSS] Fixed background incorrect sizing. 2021-08-05 13:09:18 +01:00
5236278f45 [CSS] Mesh gradient works as intended with no banding. 2021-08-05 13:01:31 +01:00
289eef5cf7
[Avatar] Store as regular attachments 2021-08-05 03:24:21 +01:00
c155f4e30e
[DEV] Add PsySH REPL 2021-08-05 03:24:21 +01:00
5896f5bb82
[Avatar] Move entity from core to component 2021-08-05 03:23:05 +01:00
1556b3e019
[CORE][GSFile] Allow storing files under /file 2021-08-05 03:22:57 +01:00
c58b9fb5b1
[TESTS] Ignore coverage of ResetPasswordRequest, as it uses mailing functionality. We may want to introduce this test in the future 2021-08-04 20:11:47 +00:00
97a3c067d9
[UTIL][FormFields] Allow specifying whether a password is required and provide placeholder text 2021-08-04 20:11:47 +00:00
92db61a975
[ROUTES] Remove individual settings pages, as they got merged 2021-08-04 20:11:47 +00:00
05e10589c3
[ENTITY] Refactor LocalUser::changePassword for easier use 2021-08-04 20:11:47 +00:00
a590ddd85e
[UTIL][EXCEPTION] Add AuthenticationException, representing an auth error, status code 401 unauthorized 2021-08-04 20:11:47 +00:00
0bead1c58a
[TESTS] Change format of data fixtures to allow creating more users 2021-08-04 20:11:47 +00:00
0845224188
[CORE][DB] Specify desired case in array_change_case, for clarity 2021-08-04 20:11:47 +00:00
1da1f0918e
[TESTS] Raise test coverage for AdminPanel to 100% 2021-08-04 20:11:47 +00:00
b075ab610b
[SECURITY] Do not require email when in development 2021-08-04 17:48:00 +01:00
5b858a7bc1
[DOCS][Dev] Add Debugging and Testing 2021-08-04 16:58:27 +01:00
f760de43b0
[TESTS] Fixup Security controller tests to match new UI 2021-08-03 19:37:56 +00:00
960675b459
[TESTS] Raise test coverage for AdminPanel controller to 100% 2021-08-03 19:37:56 +00:00
f9c1d14c7a
[TESTS] Raise test coverage for Attachment controller to 100% 2021-08-03 19:37:56 +00:00
ed21290ef4
[TESTS] Add a sample image to the test dataset 2021-08-03 19:37:56 +00:00
6b098a26f7
[CORE][GSFile] Ensure files are stored inside the configured storage folder, with a relative filename in the database 2021-08-03 19:37:56 +00:00
19a966f1a9
[CORE][CONTROLLER] Add TODO to Controller base class as to where our custom exception pages would be implemented 2021-08-03 19:23:03 +00:00
f5f11b6e54
[CORE][ENTITY] Allow create'ing will null values 2021-08-03 19:23:03 +00:00
9077403f65
[ImageEncoder] Don't print_r the exception as that leads to an OOM error 2021-08-03 19:23:03 +00:00
bbdad515a2
[CONFIG] Ensure consistency in config file 2021-08-03 19:23:03 +00:00
7034476cc7
[TESTS] Make PHPUnit exit on first fail and some other tweaks 2021-08-03 19:23:03 +00:00
927472cf06
[UTIL][FORM] Create a utility class that defines common form fields, such as passwords 2021-08-03 19:23:02 +00:00
b2456d8cd2
[TESTS] Raise test coverage for Controller/Security to 100% 2021-08-03 19:23:02 +00:00
d1e92a80e5
[CORE][GSFile] Assert that the destination folder where to store the attachment is inside the INSTALLDIR and store the filepath in the database 2021-08-03 19:23:02 +00:00
af951685ed
[TESTS] Add coverage ignore to TemplateController and ResetPassword (as it requires sending emails) 2021-08-03 19:23:02 +00:00
9c61e92257
[CONTROLLER][Attachment] Assert that the supplied is positive and add documentation 2021-08-03 19:23:02 +00:00
4297eb71a0
[CORE][GSFile] Change actor_id paramenter of validateAndStoreFileAsAttachment to optional and reorder them and their usages 2021-08-03 19:23:02 +00:00
b89368bf6a
[AUTOGENERATED] Update entity fields for ResetPasswordRequest entity 2021-08-03 19:23:02 +00:00
5fc5df68f5
[CORE] Add repositories, as needed by the Reset Password Bundle 2021-08-03 19:23:02 +00:00
a83d506d6c
[UTIL] Add a class that defines commonly used form fields 2021-08-03 19:22:54 +00:00
56481c8289
[CORE] Add passowrd reset and forgot password functionality 2021-08-03 19:22:54 +00:00
6d2f8daeae
[DEPENDENCIES] Add symfonycasts/reset-password-bundle as a dependency 2021-08-03 19:22:54 +00:00
bdbd588de9
[CORE][SECURITY][EMAIL] Move email confirmation functionality to it's own static wrapper, in preparation for adding password reset functionality 2021-08-03 19:22:54 +00:00
176d604abb
[CONTROLLER][Security] Refactor and make clearer errors with duplicate nicknames and emails. Return notes as a callable, since they're not used in the default template, in the login and register pages 2021-08-03 19:22:54 +00:00
bff65afe5d
[TESTS][Queue] Add @codeCoverageIgnore to select queueing functions 2021-08-03 19:22:50 +00:00
6479b698f8
[TESTS][Router] Add tests for Router and use named paramenters, as we can since PHP8 2021-08-03 19:22:16 +00:00
a01914ddac
[ENTITY][LocalUser] Add method 'findByNicknameOrEmail' 2021-08-03 19:22:16 +00:00
2e3ec15827
[CORE][Controller][TESTS] Fix issue that arrises in tests where the Accept header is not specified 2021-08-03 19:22:12 +00:00
6deac21960
[EXCEPTION] Add Email related exceptions 2021-08-03 19:21:34 +00:00
c4de4cab32
[UTIL][Nickname] Refactor Nickname and extract a validate function, as we'll want to perform normalization in select cases in the future, likely as a plugin 2021-08-03 19:21:34 +00:00
75af2232dc
[UI] Add TODO annotation to login template, since it's possible to login using email, so the fonrm field names should be updated 2021-08-03 19:21:31 +00:00
988d384654
[TESTS][DataFixtures] Add password and email to created test user 2021-08-03 19:15:30 +00:00
14db5d9864
[TESTS][Twig] Add @codeCoverageIgnore to select methods, as these are simple wrappers 2021-08-03 19:15:30 +00:00
e0ebef594f
[TESTS][DB] Update test to reflec fact that GSActor no longer has a normalized_nickname field 2021-08-03 19:15:30 +00:00
63d26d1295
[TESTS][Nickname] Update tests to reflect new usage. Normalization functionality will be moved to a plugin 2021-08-03 19:15:30 +00:00
ed850a7763
[TESTS][TemporaryFile] Update test to reflect new usage 2021-08-03 19:15:30 +00:00
e196a3577d
[ENTITY] Remove 'normalized_nickname' field from GSActor as that feature will be moved to a plugin 2021-08-03 19:15:30 +00:00
c0e4dec674
[TESTS][DOCUMENTATION][Module] Add documentation and exclude method from testing in Module base class 2021-08-03 19:15:30 +00:00
88ab76c480
[CORE][TemporaryFile] Add option to specify attempts and better handle when reaching the attemp limit without being able to create a file 2021-08-03 19:14:56 +00:00
1f9acaf4ef
[TESTS] Add tests for GSFile 2021-08-03 19:13:30 +00:00
55710aa33d
[DB] Refactor findOneBy method 2021-08-03 19:13:29 +00:00
8e743eabb9
[TESTS][DOCUMENTATION] Add documenation for the list events command and exclude it from unit testing 2021-08-03 19:13:29 +00:00
d34155c743
[CONFIG] Make password length limits configurable 2021-08-03 19:13:29 +00:00
0d6b4093fe
[TESTS] Exclude Data Fixtures from testing, as that happens before testing 2021-08-03 19:13:29 +00:00
400716c1b2
[TESTS] Exclude class Security from testing, as it's a simple wrapper 2021-08-03 19:13:29 +00:00
75c9ffde31
[TESTS] Raise test coverage for ModuleManager to 100% 2021-08-03 19:13:29 +00:00
4258148a03
[TESTS] Exclude HTTPClient from testing, as it's a simple wrapper and we don't want to be performing HTTP requests in tests, for speed and reliability 2021-08-03 19:13:29 +00:00
6956e6907c
[TESTS] Raise test coverage for Form to 100% 2021-08-03 19:13:29 +00:00
7ee908f4dc
[TESTS] Revert exposing Redis docker container ports, as this conflicts with the actual instance, and was intended for testing 2021-08-03 19:13:29 +00:00
b2d72673c7
[TESTS][EVENTS] Raise test coverage for Event class to 100% 2021-08-03 19:13:28 +00:00
b51d43e6e2
[TESTS][ENTITY] Raise test coverage for Entity class to 100% 2021-08-03 19:13:28 +00:00
5777cdeaf9
[TESTS][LOG] Raise test coverage for Log class to 100% 2021-08-03 19:13:28 +00:00
b0ef7599b2
[TESTS] Ignore GNUsocial class from tests, as it simply pipes objects around 2021-08-03 19:13:28 +00:00
2c74bd7fb4
[FORM][DOCUMENTATION] Add documentation to Form class 2021-08-03 19:13:28 +00:00
b9fdaa1401
[EVENT] Fixup implementation, as imformed by tests 2021-08-03 19:13:28 +00:00
88bb0c6b38
[ENTITY] Fixup implementation, as imformed by tests 2021-08-03 19:13:28 +00:00
df956a5f90
[DB] Handle using methods with class name as well as table name and add lookup methods 2021-08-03 19:13:28 +00:00
aa66263b92
[TESTS] Add missing tests for Common 2021-08-03 19:13:28 +00:00
ae27d95509
[TESTS] Expand and fix cache tests 2021-08-03 19:13:27 +00:00
2beda0dd44
[TESTS] Add ignore annotations to code paths that serve as hooks in DependencyInjection 2021-08-03 19:13:27 +00:00
b79629b6d2
[TESTS][CACHE] Fixup errors found in cache implementation by testing. Ensure the newest values are kept, in pushList with max_count 2021-08-03 19:13:27 +00:00
4f6f4aa512
[ENTITY] Fix foreign key type in Cover entity, as found by tests 2021-08-03 19:13:27 +00:00
3554a5c369
[TESTS] Exclude Routes from testing, as well as, temporarily, src/Security 2021-08-03 19:13:27 +00:00
5ca8842308
[TESTS] Use vendor/bin/simple-phpunit for running the tests, as it provides the appropriate polyfills 2021-08-03 19:13:20 +00:00
5bf4a68454 [LEFT][RIGHT][CSS] Panels now occupy full page in smaller screen sizes. 2021-08-03 19:02:39 +01:00
903e6b33ff [RIGHT][CSS] Right panel now shows an intuitive icon for other note options available. 2021-08-03 19:02:39 +01:00
0a0ead3081 [TWIG][CSS] Overall CSS optimizations. Image gradients are now used, 64x64 px. 2021-08-03 19:02:39 +01:00
efeb4b4ffe [SETTINGS][PLUGIN][CONTROLLER] Populate profile tabs event added. Settings base template populated with such event for plugins and components.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-08-03 19:02:39 +01:00
780d341939 [SETTINGS][ROUTES][CONTROLLER] Settings overhaul, refactoring to accommodate new global settings view. WIP, component settings aren't shown at the moment.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-08-03 19:02:39 +01:00
5e012c39ab [SETTINGS][TWIG][CSS] Settings WIP. Form polished, dropdowns need styling.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-08-03 19:02:38 +01:00
787afb9b41 [BASE][CSS] Snappier and consistent animations.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-08-03 19:02:38 +01:00
0e7c657301 [TWIG][SETTINGS] WIP. Settings navigation early sketch.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-08-03 19:02:38 +01:00
95f92d34db [CSS] <figcaption> now has top padding for better legibility, hover now resizes it's element accordingly.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-08-03 19:02:38 +01:00
3cd33fb83a [TWIG][CSS] Panels are fixed and base content acts accordingly on all sizes.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-08-03 19:02:38 +01:00
c2fc2300c7
[DOCS][Dev] Add HTTP Client 2021-08-03 18:22:37 +01:00
7fd4149695
[DOCS][Dev] Add Security 2021-08-03 17:54:43 +01:00
0273c8ca24
[DOCS][Dev] Add Queues 2021-08-03 17:23:58 +01:00
477518abf7
[DOCS][Dev] Add Internationalisation 2021-08-03 16:07:32 +01:00
47171069c2
[DOCS][Dev] Add Attachments 2021-08-03 15:37:31 +01:00
e8f57e8380
[DOCS][Dev] Configure search 2021-08-03 15:37:30 +01:00
7f3a9bc880
[DOCS][Dev] Add Logging 2021-08-03 15:37:30 +01:00
263a5f67f3
[DOCS][Dev] Add Templates 2021-08-03 13:34:57 +01:00
df1f12470f
[DOCS][Dev] Add Routes and Controllers 2021-08-03 13:34:56 +01:00
0cf53a4163
[DOCS][Dev] Add Cache 2021-08-03 13:34:53 +01:00
12f3e1f406
[DOCS][Dev] Cleanup src directory 2021-07-31 01:57:20 +01:00
15f2514aa2
[DOCS][Dev] Add database chapter 2021-07-31 01:46:54 +01:00
900d538e26
[DOCS][DEV] Add events 2021-07-30 19:09:25 +01:00
8f8b66c938
[DOCS][Paradigms] Elaborate on Null, Set and Void 2021-07-29 13:43:57 +01:00
3c0f6b294f
[DOCS] Write exceptions chapter 2021-07-28 21:06:55 +01:00
cfd771283a
[TWIG][CSS] Final fix for panels, resizing works as intended, content is wrapped when no space is available. Simpler rules throughout.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:45 +01:00
88eea554fc
[TWIG][CSS] Panels weren't "flexing" properly, in smaller sizes the right panel form would break.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:45 +01:00
5c8735ebea
[TWIG][CSS] Fixed right panel buttons, fix issue where the form was invalid on send.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:44 +01:00
d2a7281a4d
[TWIG][CSS] Right panel WIP. Create a note now looks better, need to style in some way the default user agent buttons without removing features (e.g. current file chosen).
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:44 +01:00
0ce686d8bb
[TWIG][CSS] Left panel profile section done.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:44 +01:00
b4bf720b06
[TWIG][CSS] Register and Login styling done.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:44 +01:00
0d83bbff23
[CSS] Fixing poor responsiveness to main nav element hover animation.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:43 +01:00
a9d710f189
[CSS][TWIG] Left panel HTML nesting to better aid screen readers.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:43 +01:00
4b095961d8
[CSS][TWIG] Panels icons are now hidden on desktop view to stop possible inconsistencies on window resizing. Left Panel polish.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:43 +01:00
14ecf913bf
[CSS][TWIG] Details element is now shown by default on larger screens, and hidden on smaller screens.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:42 +01:00
2b4bf6c31f
[CSS][TWIG] Timeline navigation is now a part of the left panel, this way more items could be displayed at a time. Left panel styling WIP.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:42 +01:00
6437e68132
[TWIG] Microformats added to timeline, note's view and media. Should be backwards compatiblr as well.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:42 +01:00
37a2db3706
[CSS] Fixed accessibility issues with header and panel elements. Left, instance and right elements are now properly ordered when focused.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:41 +01:00
362be17aba
[CSS] Fixed incorrect Chromium based browsers improper main content view. Flex item order (shouldn't be a problem, but it was) and padding for the container class was the root issue.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:41 +01:00
3a5ba9b6c4
[CSS] Main container 'order' attribute was somehow a problem in Chromium. 2021-07-28 11:52:41 +01:00
dd7d412e83
[CSS] Fixed top content margin. 2021-07-28 11:52:41 +01:00
593d5bf96e
[TWIG][CSS] Accessibility improvements, all general links provide proper feedback now. Base theme CSS progress, page now looks more as it should. Panels WIP. 2021-07-28 11:52:40 +01:00
d6cf812707
[TWIG][CSS][ICONS] New profile and notice creation panel, alternative text set correctly for header icons. WIP in base styling and panels. 2021-07-28 11:52:40 +01:00
2d7b201e71
[TWIG][CSS] Found solution to show details content by default in desktop view. However, post_form is being rendered multiple times, it was already rendered in the Posting Component. Needs to be fixed. 2021-07-28 11:52:40 +01:00
ac5df2f6b3
[TWIG][CSS] Panels are now animated when shown, main content width as well as panel's is now correctly configured. WIP: displaying side panels by default when space is available, "details" element state cannot be manipulated through CSS only, need a better solution. 2021-07-28 11:52:39 +01:00
375d0097f3
[TWIG][CSS] Panels functionality works as intended, size needs to be worked upon. 2021-07-28 11:52:39 +01:00
a5eb231196
[TWIG][CSS] Complete HTML refactoring, now using details element instead of a checkbox trick per panel. Using a "grid" akin to IBM's Carbon design guidelines. 2021-07-28 11:52:39 +01:00
aa6886a62a
[TWIG][CSS] Timeline WIP. Creating a notice is now done on the right panel. HTML structure improvements, such as the timeline divided from the navigation div. 2021-07-28 11:52:39 +01:00
aa1fd8ea40
[TWIG][CSS] Base template structural refactoring to accommodate true canons of page construction. CSS WIP to reflect these changes.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:38 +01:00
f47fedcfd4
[TWIG][CSS] Fixed right panel buttons, fix issue where the form was invalid on send.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:38 +01:00
f206b55869
[TWIG][CSS] Right panel WIP. Create a note now looks better, need to style in some way the default user agent buttons without removing features (e.g. current file chosen).
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:38 +01:00
69f5c1e312
[TWIG][CSS] Left panel profile section done.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:37 +01:00
8b4148a00d
[TWIG][CSS] Register and Login styling done.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:37 +01:00
df44d92bb2
[CSS] Fixing poor responsiveness to main nav element hover animation.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:37 +01:00
021583ea05
[CSS][TWIG] Left panel HTML nesting to better aid screen readers.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:36 +01:00
4afaa6858b
[CSS][TWIG] Panels icons are now hidden on desktop view to stop possible inconsistencies on window resizing. Left Panel polish.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:36 +01:00
ab7d1b0370
[CSS][TWIG] Details element is now shown by default on larger screens, and hidden on smaller screens.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:36 +01:00
38225dfa6e
[CSS][TWIG] Timeline navigation is now a part of the left panel, this way more items could be displayed at a time. Left panel styling WIP.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:36 +01:00
154025090c
[TWIG] Microformats added to timeline, note's view and media. Should be backwards compatible as well.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:52:30 +01:00
8ec17086a0
[CSS] Fixed accessibility issues with header and panel elements. Left, instance and right elements are now properly ordered when focused.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:46:14 +01:00
18f2823e14
[CSS] Fixed incorrect Chromium based browsers improper main content view. Flex item order (shouldn't be a problem, but it was) and padding for the container class was the root issue.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:46:13 +01:00
7dd23f3f2c
[CSS] Main container 'order' attribute was somehow a problem in Chromium. 2021-07-28 11:46:13 +01:00
a34f0c2534
[CSS] Fixed top content margin. 2021-07-28 11:46:13 +01:00
7d15ec1620
[TWIG][CSS] Accessibility improvements, all general links provide proper feedback now. Base theme CSS progress, page now looks more as it should. Panels WIP. 2021-07-28 11:46:13 +01:00
2d253ee5ad
[TWIG][CSS][ICONS] New profile and notice creation panel, alternative text set correctly for header icons. WIP in base styling and panels. 2021-07-28 11:46:12 +01:00
c18879b02f
[TWIG][CSS] Found solution to show details content by default in desktop view. However, post_form is being rendered multiple times, it was already rendered in the Posting Component. Needs to be fixed. 2021-07-28 11:46:12 +01:00
a48e699133
[TWIG][CSS] Panels are now animated when shown, main content width as well as panel's is now correctly configured. WIP: displaying side panels by default when space is available, "details" element state cannot be manipulated through CSS only, need a better solution. 2021-07-28 11:46:12 +01:00
77675ea8c4
[TWIG][CSS] Panels functionality works as intended, size needs to be worked upon. 2021-07-28 11:46:11 +01:00
b7b69b549e
[TWIG][CSS] Complete HTML refactoring, now using details element instead of a checkbox trick per panel. Using a "grid" akin to IBM's Carbon design guidelines. 2021-07-28 11:46:11 +01:00
681f001f4e
[TWIG][CSS] Timeline WIP. Creating a notice is now done on the right panel. HTML structure improvements, such as the timeline divided from the navigation div. 2021-07-28 11:46:11 +01:00
c5e5708915
[TWIG][CSS] Base template structural refactoring to accommodate true canons of page construction. CSS WIP to reflect these changes.
Signed-off-by: Eliseu Amaro <mail@eliseuama.ro>
2021-07-28 11:46:10 +01:00
86e92fedc2
[MEDIA][Thumbnail] Fix non-instantiated variable 2021-07-26 21:19:40 +01:00
8ef6aceb6a
[DOCS][Dev] Write paradigms 2021-07-26 20:38:23 +01:00
bf01e97533
[SECURITY] Remove aggressive normalization of nicknames. This will be moved to a plugin in the future and we'll open an RFC, as discussed 2021-07-26 17:12:42 +00:00
835a3c6701 [TOOLS] Fix pre commit hook to allow for partial file commits (git add -p/git reset -p) 2021-07-26 15:46:20 +00:00
cc0ef73799 [MEDIA][AttachmentThumbnail] Add mimetype to Entity 2021-07-22 21:17:23 +01:00
c3eda07521 [Media] EncoderPlugins should handle the views that concern them
Ensure the intended filetypes and mimetypes during Vips conversions (part 2)
Sanitize Attachments instead of Validate (part 2)
Various bug fixes
2021-07-22 21:10:45 +01:00
832a5c0bd9 [Media] Support any kind of thumbnails in the Core
Sanitize Attachments instead of Validate (part 1)
Ensure the intended filetypes and mimetypes during Vips conversions (part 1)
Various bug fixes
2021-07-22 21:10:45 +01:00
143ecea376 [Media] File quota should be triggered by the Core 2021-07-22 21:10:45 +01:00
0eebcdbd51 [POSTING] Make it possible for plugins to change the placeholder string 2021-07-22 13:02:09 +01:00
aada96beb7 [MEDIA] We need permissions to run chmod in directories
It's better to have in the filename data that we couldnt't otherwise rapidly retrieve
2021-07-22 12:32:52 +01:00
218bec1826 [MEDIA] Fix database misses on thumbnail retrieval
We were storing the real scaling values instead of the predictions, but the core is never able to pre-compute the real values generated by the encoding plugins so, we have to rely on our own aproximation function ported from v2
2021-07-20 23:47:27 +01:00
4d2131808a [FILE][TemporaryFile] Fix various issues now that we also have Symfony's file abstractions 2021-07-20 23:46:18 +01:00
4ef400f509 [DOCS][Developer] Adopt a top-down approach
Minor corrections to the overview
2021-07-20 12:41:48 +01:00
086754d95b [CORE][GNUsocial] Fix undefined property typo 2021-07-20 11:48:29 +01:00
5e9cd21db5 [DOCS][User][SysAdmin] Add thomask as an author as we're starting this from his unofficial docs 2021-07-20 11:48:07 +01:00
65c2c42790 [DOCS] Add designer book. 2021-07-20 10:56:51 +01:00
d6f31ad4b4 [DOCKER][nginx] Removing default nginx config through docker/nginx/domain.sh. The default config conflicts with 'localhost' server_name. 2021-07-20 10:56:51 +01:00
8f7e0f2131 [DOCS] Elaborate initial architecture page 2021-07-20 09:41:30 +01:00
3af3526b5c [CORE] Proxies: constant HEADER_X_FORWARDED_ALL is deprecated
Give ENV preference over SERVER
2021-07-19 15:24:12 +01:00
a46140fc00 [UTIL] Add utility to flatten the result of note queries 2021-05-23 19:59:42 +00:00
eecef99372 [TESTS] Raise test coverage for App\Controller\Network to 100% and fixup related code 2021-05-23 19:56:45 +00:00
5543f65ce9 [UI] Remove margin in timeline container 2021-05-12 19:40:47 +00:00
818a31a690 [UTIL] Provide static access to current request and utilities in Common 2021-05-12 19:33:03 +00:00
9b862d6a26 [CORE] Throw more meaningfull error when method doesn't exist in Security and Entity 2021-05-12 15:44:09 +00:00
f8107c86c5 [TESTS] Raise App\Core\DB\DB test coverage to 100% and fix issues found 2021-05-11 21:04:15 +00:00
ce98e80836 [TESTS] Raise App\Core\DB\UpdateListener test coverage to 100% 2021-05-06 21:57:06 +00:00
75adf2e59f [TESTS] Change relevant tests to use GNUsocialTestCase, so they can access all the needed features 2021-05-06 21:56:28 +00:00
31518f97ee [CORE] Clarify message when calling non existent method in Entity 2021-05-06 21:54:50 +00:00
dab822037c [TESTS] Merge datafixtures to allow for using the correct ID in notes, and add group_inbox 2021-05-06 21:54:50 +00:00
79644d1e2b [TESTS] Add GNUsocialTestCase, which initializes our infrastructure when bootKernel is called 2021-05-06 21:54:50 +00:00
5f9b61f4bf [AUTOGENERATED] Update autogenerated code 2021-05-05 16:03:03 +00:00
3a6a1b71d6 [TOOLS][TESTS] Add coverage ignore tag to autogenerated code 2021-05-05 15:56:03 +00:00
f25494cd83 [TOOLS][TESTS] Add a data fixture with example notes, for testing 2021-05-05 13:37:43 +00:00
b79c0595d5 [TESTS] Expand test coverage for App\Util\Forms\ArrayTransformer, App\Util\Notification and App\Twig\Runtime 2021-05-05 13:37:10 +00:00
33cdea87ee [TWIG] Remove unused Twig function 'get_note_other_content' 2021-05-05 13:35:25 +00:00
c532fdb4c8 [TESTS] Add ignored files and folders to config 2021-05-05 13:34:32 +00:00
5cc82785c6 [TESTS] Raise App\Util\TemporaryFile test coverage to 100% 2021-05-05 12:46:29 +00:00
05fbcdefa8 [TOOLS][TESTS] Make tests run as www-data 2021-05-05 12:46:29 +00:00
dd218b04e9 [UTIL] Fix App\Util\TemporaryFile, adding default options and preventing warning on not enough permission 2021-05-05 12:46:17 +00:00
059ed1fa76 [TESTS] Raise test coverage for NicknameTest to 100% 2021-05-05 12:46:17 +00:00
f946da6f29 [TOOLS][TESTS] Add data fixtures, which populate the database with users used for testing 2021-05-05 12:46:08 +00:00
9e2037e086 [UTIL] Rename and rewrite isTaken to checkTaken 2021-05-05 12:46:08 +00:00
84399a76e3 [ENTITY] Add 'normalized_nickname' to GSActor, the result of Nickname::normalize, so we can make sure we don't have very similar nicknames duplicated 2021-05-05 12:46:08 +00:00
4f0bdade45 [DEPENDENCIES] Add doctrine/doctrine-fixtures-bundle, which allows populating the database in the testing environment 2021-05-05 12:46:08 +00:00
d5db350595 [TOOLS][TESTS] Adjust configuration for testing environment 2021-05-05 12:45:58 +00:00
f5fcfe628e [TESTS] Raise App\Util\HTML test coverage to 100% 2021-05-02 21:02:43 +00:00
fde7b87c65 [TESTS] Raise App\Util\Bitmap test coverage to 100% 2021-05-02 20:47:15 +00:00
f841e5e0dd [TESTS] Raise App\Util\Common test coverage to 100% 2021-05-02 20:42:25 +00:00
39ac043d59 [ENTITY] Add uniqueness constraint to Attachment::file_hash 2021-05-02 15:48:33 +00:00
041d19a22d [ATTACHMENTS] Don't store an attachment if it's a dupplicate, reuse it 2021-05-02 15:48:33 +00:00
b99fab00e9 [UTILS][TemporaryFile] Change way TemporaryFile takes arguments and it's internal implementation 2021-05-02 15:48:33 +00:00
88e84f2dc5 [UTIL] Fix bugs found in App\Util\Formatting by tests 2021-05-02 15:28:56 +00:00
16055c7055 [TESTS] Add tests increasing coverage of App\Util\Formatting to 100% 2021-05-02 15:28:56 +00:00
15c406a348 [TESTS] Move testing container's DB and Redis to different ports, so it can be used at the same time as the regular containers 2021-05-02 15:28:56 +00:00
eff703ca21 [TESTS] Add test container with Xdebug and allow for generation of coverage reports with 'make test' 2021-05-02 13:31:04 +00:00
2e943293e6 [ATTACHMENTS] Do not create thumbnails for attachments with mimetype different from 'image|video' 2021-05-02 00:50:16 +01:00
6aea20db05 [Embed] Do not create AttachmenThumbnail 2021-05-02 00:49:10 +01:00
a5a2032e75 [ENTITY] Fix entity->has to access private properties with closure bindTo 2021-05-02 00:14:24 +01:00
c948ca6178 [CSS][Network] Minor fixes concerning attachment representation (centering and width) 2021-05-02 00:00:03 +01:00
676210f76a [ATTACHMENTS] Follow URL redirects and don't duplicate attachments 2021-05-02 00:00:03 +01:00
af4b0113ba [ATTACHMENTS] Respect config for smart crop 2021-05-02 00:00:03 +01:00
3f565442d2 [Posting] Don't sanitize on storage
We prefer to have the original input in database and sanitize on output when appropriate
2021-05-02 00:00:03 +01:00
4397d12fa4 [AUTOGENERATED] Update auto generated code 2021-05-02 00:00:03 +01:00
c58d7e470a [CORE][ImageEncoder] Add width and height back in attachment entity and allow for differently sized thumbs
The strategy adopted involves predicting the thumb size as we did in v2 before having vips resize
2021-05-02 00:00:02 +01:00
5a40d1f3e3 [Embed] Fix some bugs and change AttachmentEmbed::url to ::media_url 2021-05-01 23:58:49 +01:00
ced6e236ce [ATTACHMENTS][GSFile] Rename ValidateAndStore functions 2021-05-01 23:57:51 +01:00
d5a7f2122a [Embed] Local config 2021-05-01 23:57:51 +01:00
d0d98a611d [DEPENDENCIES] Add ext-curl 2021-05-01 23:57:51 +01:00
650bfec699 [ATTACHMENTS] In sendFile, check that file exists or show a custom exception 2021-05-01 13:02:14 +00:00
6d842d60c5 [ENTITY] Change foreign key definition to new format for cover and profile_color tables 2021-05-01 12:50:49 +00:00
e0e1dca0f0 [DOCUMENTATION] Add database diagram to developer documentation 2021-05-01 12:49:04 +00:00
6374e30475 [CSS][Network] Improve attachment representation
Part of why we have thumbnails with a specific size is so that they are in the proper theme size
2021-04-30 23:47:46 +01:00
0086d8dec4 [CSS][Left] Vertical scroll on left menu when it doesn't fit the screen 2021-04-30 23:43:34 +01:00
6910620d59 [CSS][Network] Fix horizontal menu on smaller screens 2021-04-30 23:40:32 +01:00
0629c1434d [UTIL][Formatting] Add twigRenderFile 2021-04-30 23:08:08 +01:00
120571fa42 [DOCUMENTATION] Add high level code walkthrough to developer docs 2021-04-30 23:08:08 +01:00
d9a3ecb116 [Posting] Add missing default visibility option 2021-04-30 23:08:08 +01:00
1bf5e9d117 [ImageEncoder][FileQuota] Move quota enforcement to it's own plugin, so it can be easily shared and disabled 2021-04-30 23:08:08 +01:00
aa28251c11 [TEMPLATES] Fix identation 2021-04-30 23:08:08 +01:00
c2f6665cce [AttachmentShowRelated] Move Attachment related to plugin 2021-04-30 23:08:08 +01:00
b196af5f36 [SECURITY] We can't really show a stream for this, was a nice concept, but not properly doable without requiring JS 2021-04-30 23:08:08 +01:00
ebfa0e2240 [Avatar][Embed] Change use of TemporaryFile::getPath to getRealPath 2021-04-30 23:08:08 +01:00
365a7b436f [ImageEncoder] Implement attachment validation for images. This limits the maximum dimensions of the file, enforces a per file, per user and per user-month size quota and fixes the title if it's a filename, by replacing the extension to the new one 2021-04-30 23:08:08 +01:00
93e1e4b7a9 [ENTITY] Add field size to attachments, used for quota calculations 2021-04-30 23:08:08 +01:00
e5ee31a2fe [UTIL] Add option for setting a file suffix on TemporaryFile constructor and add missing TemporaryFileException 2021-04-30 23:08:08 +01:00
e32d8711d6 [CONFIG] Add attachments/max_{width,height} config option, which is used as maximum dimensions when validating attachments 2021-04-30 23:08:08 +01:00
78a17425f9 [DEPENDENCIES] Add oroinc/doctrine-extensions, which provides cross database platform date functions 2021-04-30 23:08:08 +01:00
94b100dc06 [CSS] Refactor Right Panel style 2021-04-30 23:08:02 +01:00
75c494dca1 [TEMPLATES] Add dynamic blocks to right panel 2021-04-30 23:05:39 +01:00
f95b8ab226 [CSS] Fix invisible checkboxes 2021-04-29 20:36:50 +00:00
6819dd9fb7 [TEMPLATES] Minor refactoring, extending left was weird 2021-04-29 20:36:50 +00:00
c57a8481b1 [Avatar] Implement avatar deletion 2021-04-29 20:36:50 +00:00
ec0c551bb3 [AVATAR] Move avatar settings page to Avatar component 2021-04-29 18:14:49 +00:00
f17d4d2d92 [Embed] Use Formatting utilities rather than substr and such 2021-04-29 18:14:49 +00:00
255055d149 [Embed] Add docblock to handle function to pass pre-commit hook 2021-04-29 17:42:31 +01:00
55c4ad40cd [ENTITY][GSActor] Fix getAvatarUrl method 2021-04-29 17:42:06 +01:00
5fbc079c55 [RIGHT] Introduce component abstraction 2021-04-29 17:40:19 +01:00
22c79db540 [VIEWS] Minor proofreading of templates and css 2021-04-29 17:08:09 +01:00
bb56b24d8f [ATTACHMENTS] Restrict thumbnail generation to allowed sizes. Defaults to only configured sizes, but can be extended with the event 'GetAllowedThumbnailSizes'. The intention is to prevent DoS attacks, since handling a thumbnail request is a relatively slow process 2021-04-28 21:53:02 +00:00
b2841cb5fc [UI] Fix 'hide_attachments is not defined' error 2021-04-28 21:50:55 +00:00
f264cd6125 [ATTACHMENTS] Add controller and templates for the attachment show page, which shows extra info about an attachment, such as related notes and tags 2021-04-28 21:25:35 +00:00
d49de9d35e [CORE] Typo in GSFile and slight Twig weirdness in base template 2021-04-28 20:16:59 +00:00
7f765c530e [Embed][ENTITY] Fix embed route and use attachment_view rather than _show. Rename Entity::have to Entity::has, because grammar 2021-04-28 20:15:43 +00:00
e699824b1d [Embed] Fix plugin. Only attempt to show an image, if we have one 2021-04-28 15:03:17 +00:00
6da8cf7f14 [ATTACHMENTS] Add event 'AttachmentFileInfo' to allow a plugin to override the file displayed 2021-04-28 15:01:40 +00:00
e08767cec0 [UTIL] Fix remove affix utilities, so they only try to remove an affix if the string starts/ends with it 2021-04-28 15:00:04 +00:00
83415b7aa6 [CONFIG] Add attachment related parameters to default config 2021-04-28 14:59:04 +00:00
495e66f4ae [AUTOGENERATED] Update autogenerated code 2021-04-27 21:24:48 +00:00
17ea4ecce1 [DB] Fix error in config/services.yaml where the wrong namespace was used for the UpdateListener 2021-04-27 21:23:47 +00:00
1d7375b9cb [TOOLS] Use \DateTimeInterface rather than DateTimeInterface 2021-04-27 21:23:00 +00:00
0a69f6de8c [AUTOGENERATED] Run bin/generate_entity_fields for the Embed plugin 2021-04-27 21:18:44 +00:00
72cd2e7a30 [Embed] Review and port v2 code 2021-04-27 20:56:50 +00:00
c6389c63b8 [ENTITY] Add meta method 'have*' to Entity base class, which checks if a field 'isset' 2021-04-27 20:56:13 +00:00
f388554166 [ATTACHMENTS][EVENT] Add onHashFile event, which can be used to deduplicate files
Currently, we simply hash the contents of the file with sha256, but in the future we can use something smarter,
which could find visual feature similarity between images
2021-04-27 20:53:59 +00:00
b4ad396cd1 [FORMATTING] Add utilities to remove affixes from strings 2021-04-27 20:52:12 +00:00
c3473e45d2 [DEPENDENCIES] Add 'embed/embed', 'nyholm/psr7' and 'symfony/dom-crawler' 2021-04-27 20:50:43 +00:00
075b495f5a [ENTITY] Add utils to Attachment and AttachmentThumbnail to get the corresponding URL and html representation parameters 2021-04-27 18:10:18 +00:00
9b3ccac246 [UTIL] Add TemporaryFile class, courtesy of Alexei Sorokin from v2, a class that ensures files stored in /tmp are removed, as it doesn't happen in some cases 2021-04-27 18:10:18 +00:00
82d9326343 [PLUGINS] Remove scripts. These will need to be implemented with Commands 2021-04-27 18:10:18 +00:00
464406cccc [Emebed] Add Embed plugin and initial cleanup 2021-04-27 18:10:18 +00:00
2782aa9924 [UI] Use event 'ShowAttachment' to permit plugins like Embed to alter the representation 2021-04-27 18:10:18 +00:00
1df7be7e8a [UTIL] Add method to validate url 2021-04-27 18:10:18 +00:00
792a9f097c [HTTPClient] Add utility functions for all HTTP methods 2021-04-27 18:10:18 +00:00
4649ee9e71 [DB] Make DB::findOneBy throw a different exception if two values are found 2021-04-27 18:10:18 +00:00
c1db9bd0a3 [Posting] Extract and store URLs from note content. Introduce 'AttachmentStoreNew' event 2021-04-25 21:20:28 +00:00
cc47cda3d1 [TESTS] Fix Nickname test 2021-04-23 15:38:26 +00:00
1503c98f26 [Favourite] Make twig event operate on array rather than string 2021-04-23 12:55:42 +00:00
b82658e345 [SECURITY][DB] Make user register 'atomic', by using a single transaction for inserting all objects, to avoid partial inserts 2021-04-23 12:54:25 +00:00
1bad2fa050 [TESTS] Fix wrong namespace in tests 2021-04-22 18:26:00 +00:00
926d0af663 [PLUGIN] Change base class from Module to Plugin for all plugins 2021-04-19 18:51:42 +00:00
0a7496de1e [AVATAR] Display avatar rounded 2021-04-19 18:41:40 +00:00
9814baf192 [UI] Use thumbnail path for thumbs 2021-04-19 13:22:50 +01:00
5ec7717fa1 [ATTACHMENTS] Move thumbnail controller to core and cleanup 2021-04-19 13:22:50 +01:00
d316f9dd6f [ImageEncoder] Change preferred type to always be WEBP 2021-04-19 13:22:50 +01:00
529ec19801 [AVATAR] Display avatar as round on the default theme 2021-04-19 13:22:50 +01:00
e105889a59 [AVATAR] Fix JS cropping script and save square image, in case other themes need it 2021-04-19 13:22:50 +01:00
c37a75cf7b [ImageEncoder] Move DB::persist call to AttachmentThumbnail 2021-04-19 13:22:40 +01:00
a33a25983e [ImageEncoder] Fix error when not providing a width and/or height 2021-04-19 13:22:26 +01:00
2f137f8b44 [ATTACHMENTS] Even more further refactoring
Introduce Encoder plugins Instead of abstract upload and thumb modules

Ported attachment routes. In v3 thumbnail depends on existing attachment
so route updated accordingly.
2021-04-19 13:22:04 +01:00
0f52638a80 [ATTACHMENTS] Further refactoring
Some key points:
- Components and Plugins shouldn't extend Module directly
- Avatars should be fetched via GSActor ID, not by nickname as that isn't unique
- Avatar now is a separate Component
- Common file utilities are now to be placed in Core\GSFile, this will
  handle storage and trigger validation
- Some bug fixes
2021-04-19 13:21:32 +01:00
bbc2fe1b5a [ENTITY] Cache AttachmentThumbnail query result 2021-04-16 20:28:39 +01:00
45a894c953 [Poll] Move tables from core to plugin 2021-04-16 20:28:39 +01:00
c8915df31e [ImageThumbnail] Finish image thumbnailing functionality 2021-04-16 20:28:39 +01:00
f6dea6e162 [DB] Fix bug in custom criteria format wrangling 2021-04-16 20:28:39 +01:00
ec8ad1888a [DEPENDENCIES] Add php-vips 2021-04-16 20:28:39 +01:00
8a280c349f [TOOLS] In pre-commit hook, only run php-doc-check if some PHP file changed 2021-04-16 20:28:39 +01:00
cbb36c9531 [DOCKER] Add VIPS PHP extension to Docker build 2021-04-16 20:28:39 +01:00
acf5bd1ff5 [ImageThumbnail] Implement image resizing with Intervention/Image 2021-04-16 20:28:39 +01:00
6dd6491bee [ImageThumbnail] Structure of plugin to generate thumbnails for image attachments 2021-04-16 20:28:39 +01:00
2f65311ae6 [DB] Allow DQL queries with table name rather than entity 2021-04-16 20:28:39 +01:00
cadd48922d [CORE] Add functionality to App\Core\Controller to get and validate GET parameters 2021-04-16 20:28:39 +01:00
2232f28283 [Posting] Rename file to attachment and cache result of actor tag query 2021-04-16 20:28:39 +01:00
b639ce906c [MEDIA] Rename File to Attachment 2021-04-16 20:28:39 +01:00
d6414e51a2 [CORE] Rename NoteScope to VisibilityScope, as it will be used for attachment visbility too 2021-04-16 20:28:39 +01:00
1fda65bc3d [DB] Add table map which allows using table names rather than entities in Doctrine operations 2021-04-16 20:28:39 +01:00
a5505bf848 [AUTOGENERATED] Update autogenerated code 2021-04-16 20:28:39 +01:00
678d62781b [Directory] Fixup directory plugin 2021-04-16 20:28:39 +01:00
b5ffe8a52b [DOCUMENTATION] Three books instead of only one
The User one is intended to illustrate the various common use cases, possibilities regarding customization and introduce the existing functionalities.

The Administrator one explains the step by step of how to install and maintain a GNU social instance, be it as node of The Free Network or as an intranet social network in a company setting.

The Developer one starts by introducing the Modules system and architecture, then the plugin development process and finally the exciting internals of GNU social for those looking forward to make the most advanced contributions.
2021-04-16 20:28:23 +01:00
8e9da452c6 [MEDIA] Refactor File as Attachment 2021-04-16 20:27:33 +01:00
8fc2a83e3c [CONFIG][TWIG] Move twig config to php code to add support for placing templates in modules (plugins and components) 2021-04-16 20:21:54 +01:00
f4e40002a4 [Directory] Move templates from core to plugin 2021-04-16 20:21:54 +01:00
8c6881f526 [COMPOSER][Media] Add example composer.json in plugins/Media 2021-04-16 20:21:54 +01:00
0802f7a9e3 [TWIG] Add way to launch events from TWIG, capture service and add way to render from a string 2021-04-16 20:21:54 +01:00
d95e51a030 [LEFT][EVENT] Add event allowing plugins to add links to the left panel 2021-04-16 20:21:54 +01:00
085a98cea3 [Favourite] Move table and left panel links to plugin 2021-04-16 20:21:54 +01:00
f7af76a1ba [DEPENDENCIES] Add wikimedia/composer-merge-plugin 2021-04-16 20:21:54 +01:00
c5b26bcffb [FAVOURITE] Temporary commit to fix exception in timeline 2021-04-16 20:21:54 +01:00
244cc8dae1 [Favourite] Move controller to plugin 2021-04-16 20:21:54 +01:00
520733888d Rename FFmpeg to VideoThumbnail FIXME 2021-04-16 20:21:54 +01:00
a1cac40f6a [MODULES] Introduce the concept of abstract modules to V3
Introduce placeholder for abstract upload and thumb modules
Temporarily supress some bugs
2021-04-16 20:21:54 +01:00
6bfea8a0df [NETWORK] Fix big brain bug 2021-04-14 19:54:38 +00:00
ae29a9c00a [ENTITY] Remove extraneous File_thumbnail.php file 2021-04-14 16:12:26 +00:00
5ddc551fd9 [SCRIPTS] pre-commit now has variables double quoted 2021-04-14 15:47:10 +00:00
764ff60c34 [INSTALL] Elaborate on localhost installation 2021-04-14 15:47:06 +00:00
ae91f75aeb [FFmpeg] Copy FFmpeg plugin from v2 2021-04-14 15:44:45 +00:00
5d4f544a03 [TOOLS] Fix missing exported variable in bin/configure 2021-04-14 15:40:14 +00:00
efd2719481 [Embed][StoreRemoteMedia][Media] Copy and cleanup plugins from v2 2021-04-14 15:37:24 +00:00
66ed6fb658 [Media] Copy media subsystem from v2 and roughly structure it for v3 2021-04-14 15:37:24 +00:00
6606a72e67 [TOOLS][DOCKER] Make sure composer doesn't require interaction when installing 2021-04-14 15:37:24 +00:00
fc019d6a6e [ActivityPub] Remove ActivityPub plugin until we're ready to work on it, as it needs significant work 2021-04-14 15:37:24 +00:00
6be1622fd0 [DB][FKEY] Temporarily disable foreign key mapping, as there seems to be a bug in doctrine, which is under investigation 2021-04-14 15:37:24 +00:00
d0fd0e6c6c [DB] Remove unique constraint from GSActor.nickname and fix register and related functionality 2021-04-14 15:37:24 +00:00
079d230959 [NICKNAME] Don't throw when normalizing reserved nicknames 2021-04-14 15:37:24 +00:00
637c25d5fe [WEB] Fix translations and small inconsistency when opening on web 2021-04-14 15:37:24 +00:00
051720a686 [TESTS] Add tests to all relevant methods under App\Util and fix errors that popup 2021-04-14 15:37:24 +00:00
f3c2048c62 [NICKNAME] Add nickname min length config and check it in Nickname::normalize 2021-04-14 15:37:24 +00:00
988c5af6d3 [DEPENDENCIES] Add jchook/phpunit-assert-throws and update dependencies 2021-04-14 15:37:24 +00:00
aa58c3520c Duplicate src/Util/Exception/NicknameTooLongException.php history in src/Util/Exception/NicknameTooShortException.php history. 2021-04-14 15:37:24 +00:00
cafd9a39a0 [TESTS] Add tests of Common and fix small oddities that pop up 2021-04-14 15:37:24 +00:00
120011a2d0 [TESTS] Fix error when testing cold redis cache 2021-04-14 15:37:24 +00:00
c8b2ce6694 [TESTS] Add tests for the bitmap utility and fix implementation 2021-04-14 15:37:24 +00:00
b855dd00ac [LOG] Only try to log if setup, so logs can be disabled, in tests, for instance 2021-04-14 15:37:24 +00:00
d082f4249c CACHE] Fix cache implementation with the help of tests and remove premature optimization for non-redis list caching
This complicated the code significantly and likely didn't help that much, if at all. The recommended setup is using Redis, anyway, which is plenty optimized
2021-04-14 15:37:24 +00:00
f11f9040b1 [TESTS] Add App\Core\Cache test 2021-04-14 15:37:24 +00:00
27dbd5521a [DEPENDENCIES] Update dependencies, including redis-polyfill, to be able to implement a test 2021-04-14 15:37:24 +00:00
4f3b797c80 [TESTS] Update PHPUnit configuration and upgrade to version 9.5 2021-04-14 15:37:23 +00:00
f5df7edc6c [DOCKER][TOOLS] Add option to bin/configure to use a prebuilt PHP container (https://hub.docker.com/repository/docker/gsocial/php) 2021-04-14 15:37:23 +00:00
99c4e8ded5 [TESTS] Fix deprecations 2021-04-14 15:37:23 +00:00
a8b599d213 [DOCKER] Fix default docker-compose file 2021-04-14 15:37:23 +00:00
ffaf5da984 [TESTS] Fix unkept unit tests 2021-04-14 15:37:23 +00:00
49fa11ba07 [TEST] Fix translation test 2021-04-14 15:37:23 +00:00
a1546a51cd [DEPENDENCIES] Upgrade to Symfony 5.2 to get my upstream ICU translation feature 2021-04-14 15:37:23 +00:00
0f0851dbf3 [DOCUMENTATION] Add documentation on installing without docker and other topics 2021-04-14 15:37:23 +00:00
ef617819e0 [DOCUMENTATION] Add documentation on installing with Docker 2021-04-14 15:37:23 +00:00
636f8d1be9 [DOCTRINE][CONFIGURATION] Add new required Doctrine DBAL parameter, for testing environments 2021-04-14 15:37:23 +00:00
b8c73d2d2a [DEPENDENCIES] Update all dependencies 2021-04-14 15:37:23 +00:00
b2aff4c75e [DB] Fix Doctrine errors due to lack of column uniqueness
So, Doctrine doesn't like that `GSActorTag.tag` is not unique, even
though composite key `[tagger, tag]` is. `tag` can't unique, but
doctrine doesn't understand this. This seems like a Doctrine bug that
should be investigated. For now we'll just not mark it as a foreign
key
2021-04-14 15:37:23 +00:00
f912236114 [DOCKER][MAIL] Temporarily disable mail container 2021-04-14 15:37:23 +00:00
349df02f78 [DOCKER][MAIL] Update config and change the way mail docker handles it, so the edits aren't visible from the outside, polluting the git staging area 2021-04-14 15:37:23 +00:00
0a15ccab9b [DOKER][MAIL][BOOTSTRAP] Make bootstrap generate separate certificates for the web root and the mail server 2021-04-14 15:37:23 +00:00
cfbb28f1ea [DOCKER] Remove quotes from docker env files, as docker (or at least docker-compose) include them in the actual value 2021-04-14 15:37:23 +00:00
e008bf1863 [DB] Make Note.source reference NoteSource.code, the primary key 2021-04-14 15:37:23 +00:00
297d30706f [DOCKER] Rename docker-compose.yaml, so there can still be a default one on the repo, while the previous name can be used by the configurator without having problems with git 2021-04-14 15:37:23 +00:00
2f570fcc2a [TOOLS][DOCKER] Rewrite the configuration script to use whiptail/dialog, and refactor 2021-04-14 15:37:23 +00:00
Angelo D. Moura
ea6623f029 [UI][NOTE][MARKDOWN] Add markdown support to the notes 2021-04-14 15:37:23 +00:00
up201706832
ccf4480395 [REPLY] Fixed CSS for reply form, making it now usable 2021-04-14 15:37:23 +00:00
up201706832
98f072bc12 [AUTH][REMEMBER-ME] Changed name of column in rememberme_token database table to fix bug 2021-04-14 15:37:23 +00:00
Daniel
03aa46cf4e [ProfileColor] Added profile color css 2021-04-14 15:37:23 +00:00
Daniel
4d0f87b91b [ProfileColor] Visualize profile color 2021-04-14 15:37:23 +00:00
Daniel
a4fdb193bc [ProfileColor] Added Profile Color entity, color form and db store/load to color settings controler 2021-04-14 15:37:23 +00:00
Daniel
9ea47c5385 [ProfileColor] Added plugin base, controller and settings template 2021-04-14 15:37:23 +00:00
Daniel
79f0615441 [REVERSEFAV] Added css to make Reverse favs label in one line 2021-04-14 15:37:23 +00:00
Daniel
7e215d9f9e [REVERSEFAV] Fixed typo 2021-04-14 15:37:23 +00:00
Daniel
04b9c736a6 [REVERSEFAV] Added reverse favorourites stream/template 2021-04-14 15:37:23 +00:00
João Brandão
5e26359783 [UI][TIMELINES] Refactored query for public stream 2021-04-14 15:37:23 +00:00
Daniel
493476f408 [UI][TIMELINES] Fix undefined main_nav_tabs in logged out view 2021-04-14 15:37:23 +00:00
Angelo D. Moura
54fd7eda06 [Directory] Actors stream now includes a link to groups stream 2021-04-14 15:37:23 +00:00
Angelo D. Moura
f838dbe5f3 [Directory] Lint fix - missed a coma 2021-04-14 15:37:23 +00:00
Angelo D. Moura
793e1b0417 [Directory] Finished implementing groups stream as a plugin 2021-04-14 15:37:23 +00:00
Angelo D. Moura
66875e93f8 [Directory] Finished implementing groups stream using Directory plugin 2021-04-14 15:37:23 +00:00
Angelo D. Moura
08fe5fb23f [Directory] Changed the route so the plugin Directory doesn't take over - query is not working for some reason 2021-04-14 15:37:23 +00:00
Angelo D. Moura
d4038cd520 [Directory] Added the route, controller and a blank template file - something is broken 2021-04-14 15:37:23 +00:00
Angelo D. Moura
f29b15924c [Directory] Actors are now organized by nickname 2021-04-14 15:37:23 +00:00
Angelo D. Moura
f621e521f9 [Directory] Actors are no longer related with notes, and the logged in user now shows on the stream 2021-04-14 15:37:23 +00:00
Angelo D. Moura
b9622e4512 [Directory] Changed the title of the template and add a css rule for actor-bio 2021-04-14 15:37:23 +00:00
Angelo D. Moura
f67c41a7ac [Directory] Almost finishied creating the /actors stream - problems with the css files 2021-04-14 15:37:23 +00:00
Angelo D. Moura
19be786da8 [Directory] Add the route, controller function, and blank template file 2021-04-14 15:37:23 +00:00
Daniel
e14efe86a4 [Directory] Add documentation 2021-04-14 15:37:23 +00:00
Daniel
a19b51f91e [Directory] Moved /actors stream to directory plugin 2021-04-14 15:37:23 +00:00
Daniel
35d2bdfd5e [Cover] Remove of cover form 2021-04-14 15:37:23 +00:00
Daniel
485607169f [Cover] Added cover route verifications 2021-04-14 15:37:23 +00:00
Daniel
ee039ab2e9 [Cover] Removed commented code 2021-04-14 15:37:23 +00:00
Daniel
e2df8aec10 [Cover] Input restrictions, Code cleanup 2021-04-14 15:37:23 +00:00
Daniel
0d18615fd8 [Cover] Added cover css, changed cover settings route name 2021-04-14 15:37:23 +00:00
Daniel
4f69686968 [Cover] Added temporary css 2021-04-14 15:37:23 +00:00
Daniel
777b8b55fd [Cover] Cover route, cover now renders 2021-04-14 15:37:23 +00:00
Daniel
7688cc39a8 [Cover] Added TWIG vars for profile plugins 2021-04-14 15:37:23 +00:00
Daniel
4fd33bf37f [Cover] Added Cover Entity, updated form handler
Basically the same as the avatar
2021-04-14 15:37:23 +00:00
Daniel
3d3c560516 [Cover] Started implementing Cover plugin: base class, route, base templates, added tabs in profile template 2021-04-14 15:37:23 +00:00
Diogo Machado
1abc3e3e7d [STATIC ANALYSIS] Started removal process for the errors found by PHPStan 2021-04-14 15:37:23 +00:00
Pastilhas
f1f4ad7ba7 [DOCKER][MAIL] Fixed hash command
Also added permissions to start.sh
2021-04-14 15:37:23 +00:00
margarida
66670ff220 [TOOLS][DOCKER] Add mail setup to configure 2021-04-14 15:37:23 +00:00
margarida
a5eca9f110 [TOOLS][DOCKER] Changed script to write docker-compose.yaml 2021-04-14 15:37:23 +00:00
margarida
f9b98f87a4 [TOOLS][DOCKER] Change dialog method to command substitution and redirection and add way of finding git's root 2021-04-14 15:37:23 +00:00
margarida
28b337f793 [TOOLS][DOCKER] Added input verfication 2021-04-14 15:37:23 +00:00
margarida
b02564e575 [TOOLS][DOCKER] Added first version of configuration shell script 2021-04-14 15:37:23 +00:00
João Brandão
850f1b327e [UI] Visual restructure of login/register pages 2021-04-14 15:37:23 +00:00
João Brandão
b98db96c27 [UI] Show public stream on login/register pages 2021-04-14 15:37:23 +00:00
up201706832
49b0494f28 [UI] Extracted public stream on login/register pages to a twig template 2021-04-14 15:37:23 +00:00
João Brandão
27137b4762 [UI] Visual restructure of login/register pages 2021-04-14 15:37:23 +00:00
Pastilhas
81109c88c7 [DOCKER][MAIL] Fixed variable expansion in run 2021-04-14 15:37:23 +00:00
Pastilhas
748d86d6d3 [DOCKER][MAIL] Cleanup opendkim.conf
Also improved consistency in other files
2021-04-14 15:37:23 +00:00
Pastilhas
dde68b1d22 [DOCKER][MAIL] Removed unsued files, modified dovecot.conf 2021-04-14 15:37:23 +00:00
Pastilhas
a27e3593fa [DOCKER][MAIL] User is now created on setup and Dockerfile
Continuation of previous commit
2021-04-14 15:37:23 +00:00
Pastilhas
aaa6585a1e [DOCKER][MAIL] Removed unused config files and scripts
Now user is created on setup and dockerfile
2021-04-14 15:37:23 +00:00
Pastilhas
a3908a22ae [DOCKER][MAIL] Substituted supervisord for s6 2021-04-14 15:37:23 +00:00
Pastilhas
0a5ac7cf7e [DOCKER][MAIL] Moved and modified setup.sh 2021-04-14 15:37:23 +00:00
Pastilhas
7e99d5faa8 [DOCKER][MAIL] Switched named volume to shared volume and changed env vars to env file 2021-04-14 15:37:23 +00:00
Pastilhas
b43cc4f742 [DOCKER][MAIL] Improved exec.sh 2021-04-14 15:37:23 +00:00
Pastilhas
e99d8481b5 [DOCKER][MAIL] Fixed small bug with ssl certificates 2021-04-14 15:37:23 +00:00
Pastilhas
5950986a6f [DOCKER][MAIL] Fixed small bugs in config and scripts 2021-04-14 15:37:23 +00:00
Pastilhas
c37f5a59b3 [DOCKER][MAIL] New config files 2021-04-14 15:37:23 +00:00
Pastilhas
92ffc5644f [DOCKER][MAIL] Fused services into single container 2021-04-14 15:37:23 +00:00
Pastilhas
439ea2c182 [DOCKER][MAIL] Changed directory path 2021-04-14 15:37:23 +00:00
Pastilhas
27065e5ead [DOCKER][MAIL] Setup docker mail server 2021-04-14 15:37:23 +00:00
Pastilhas
12cfb5006a [DOCKER][MAIL] Added docker mailserver setup 2021-04-14 15:37:23 +00:00
Daniel
ac16b3eff1 [Poll] Removed/refactored unnecessary files, changed redirect to default parameters in new poll route 2021-04-14 15:37:23 +00:00
Daniel
696ebe60e0 [Poll] Restructured templates, added misssing poll related css 2021-04-14 15:37:23 +00:00
Daniel
168b7d313a [Poll] Polls now have an associated note, poll templates, start_show_styles event, started css 2021-04-14 15:37:23 +00:00
Daniel
3a51d3ef89 [Poll] Started testing with note integration 2021-04-14 15:37:23 +00:00
Daniel
7c8dbccee2 [Poll] Added file headers 2021-04-14 15:37:23 +00:00
Daniel
7a925cd9a6 [Poll] Added modified param for Poll/Poll response, added PollTest 2021-04-14 15:37:23 +00:00
Daniel
0a1ea8749b [Poll] Added variable num of options
not sure if it is the right way to do it
2021-04-14 15:37:23 +00:00
Daniel
8543c8c68e [Poll] Added templates, response counting 2021-04-14 15:37:23 +00:00
Daniel
8bbeb79233 [Poll] Store poll response to DB 2021-04-14 15:37:23 +00:00
Daniel
4fcde940ff [Poll] Added New Route, RespondPoll, Poll Response, PollResponseForm 2021-04-14 15:37:23 +00:00
Daniel
a98e3a32f9 [Poll] Fixed ShowPoll route, moved Poll Entity, created NewPollForm
Entity was temporarily moved to src/Entity in order to load from DB, since it is yet no possible to do that from Plugin
2021-04-14 15:37:23 +00:00
Daniel
a9c35def3f [AUTOGENERATED][Poll] Add auto generated code for poll entity and new route 2021-04-14 15:37:23 +00:00
Daniel
b860c6bbb0 [Poll] Started porting Poll Plugin 2021-04-14 15:37:23 +00:00
margarida
03007194c8 [TOOLS][DOCKER] Added input verfication 2021-04-14 15:37:23 +00:00
margarida
b600dc0902 [TOOLS][DOCKER] Added first version of configuration shell script 2021-04-14 15:37:23 +00:00
Daniel
0868880d45 [TESTS] Added unit tests 2021-04-14 15:37:23 +00:00
Angelo D. Moura
5ec7e2e092 [TWIG] Moves the SVG custom function to an extension and change the test regex 2021-04-14 15:37:23 +00:00
Angelo D. Moura
b60185a97c [TWIG][TESTS] Update IconsExtension test 2021-04-14 15:37:23 +00:00
Angelo D. Moura
cacd9a574d [TWIG] Add SVG icon embed function 2021-04-14 15:37:23 +00:00
Diogo Machado
5a7b895476 [DB][TESTS] Implement Doctrine event listener to update timestamps on modification, and related tests 2021-04-14 15:37:23 +00:00
Daniel
630ef3e826 [FORM] Implement ActorArrayTransformer 2021-04-14 15:37:23 +00:00
bb4f5b88e7 [PLUGIN][Favourite] Move favourite table definition to inside the plugin, as it is now supported 2021-04-14 15:37:23 +00:00
23904f326d [SchemaDef] Finish association mapping implementation 2021-04-14 15:37:23 +00:00
9b42f525e8 [DB][NoteLocation] Add missing multiplicity to column 2021-04-14 15:37:23 +00:00
9d12dde7c1 [DB] Fix typo in table definitions and fix name of GSActorCircle table 2021-04-14 15:37:23 +00:00
adb5cfbb72 [AUTOGENERATED][DB][File][GroupJoinQueue] Update autogenerated code and add select fields as specified in the previous commit 2021-04-14 15:37:23 +00:00
f8c47387c4 [DB] Change foreign key specification to new format 2021-04-14 15:37:23 +00:00
b337d6b2eb [SCHEMADEF] Add preliminary support for foreign keys 2021-04-14 15:37:23 +00:00
f486656756 [DOCKER] Bump to PHP version 8 2021-04-14 15:37:23 +00:00
2c9bd3575b [AUTOGENERATED] Update auto generated code in entities 2021-04-14 15:37:23 +00:00
e1941b6612 [TOOLS] Use GSActor rather than Gsactor in autogenerated code 2021-04-14 15:37:23 +00:00
256169a3c4 [GIT] Change my email to the new one in all files and bump copyright year 2021-04-14 15:37:23 +00:00
f51a772826 Add some missing documentation to ActivityPub 2021-04-14 15:37:23 +00:00
0d2cf6eaa6 [DB] Merge definition of SchemaDefDriver with SchemaDefPass for clarity 2021-04-14 15:37:23 +00:00
8a14222d51 [NETWORK][TreeNotes] Add TreeNotes plugin which takes over the responsibility of displaying a conversation as a tree, in order to reduce the number of queries 2021-04-14 15:37:23 +00:00
9c2a911dab [Reply] Fix bug where wrong variable is used when replying to a note 2021-04-14 15:37:23 +00:00
Hugo Sales
cfc8af675f [DEPENDENCIES] Update all dependencies 2021-04-14 15:37:23 +00:00
Hugo Sales
b1cb923036 Ensure group table name is quoted, as it's a reserved word in postgreSQL 2021-04-14 15:37:23 +00:00
Hugo Sales
ff1d6d9df8 Small update to php dockerfile 2021-04-14 15:37:23 +00:00
Hugo Sales
5c1b3b99f4 [DEPENDENCIES] Update dependencies 2021-04-14 15:37:23 +00:00
7e9ffbe033 [DOCUMENTATION] Add mdBook stub 2021-04-14 15:37:23 +00:00
Hugo Sales
38deea85e2 [CONFIGURATION] Remove the individual language settings from social.yaml, as these are not something that changes at runtime 2021-04-14 15:37:23 +00:00
Hugo Sales
91eb3354e3 [COMMAND] Change the way ListEventsCommand outputs the results to use the output interface and add some formatting 2021-04-14 15:37:23 +00:00
Hugo Sales
5cced1c9ed [DOCUMENTATION][REFACTOR] Add documentation to all flagged function and do some small cleanup 2021-04-14 15:37:23 +00:00
Hugo Sales
9cc7b6adf5 [HOOKS] Update pre-commit script to check for missing documentation in functions 2021-04-14 15:37:23 +00:00
Hugo Sales
1f4f080bd2 [DEPENDENCIES] Update dependencies 2021-04-14 15:37:23 +00:00
Hugo Sales
8eb32add3a [DEPENDENCIES] Update dependencies 2021-04-14 15:37:23 +00:00
Hugo Sales
fdaa89e3c9 [EVENT] Rename event names to camel case to make finding handlers easier 2021-04-14 15:37:23 +00:00
Hugo Sales
dd8fe29a98 [REGISTER] Add self follow when registering, fixing the '-1 followers' bug 2021-04-14 15:37:23 +00:00
Hugo Sales
ed9e4be6b2 [SETTINGS][NOTIFICATIONS] Fix error when displaying the user notification settings page 2021-04-14 15:37:23 +00:00
Hugo Sales
69202ce7a0 [Reply] Fix missing use statement 2021-04-14 15:37:23 +00:00
Hugo Sales
88ce4cbf80 [CONTROLLER] Fix use of undefined variable 2021-04-14 15:37:23 +00:00
Hugo Sales
4c021a2838 [POSTING] Fix missing use statement 2021-04-14 15:37:23 +00:00
Tiago Magalhaes
4050222bc8 [CORE] made configure script explicitly fail when bootstrap.env is not present 2021-04-14 15:37:23 +00:00
Hugo Sales
4b4da170f2 [CONFIG][CACHE] Move cache configuration from environment variables to the configuration file 2021-04-14 15:37:23 +00:00
Hugo Sales
8ef85e90e9 [UI] Make configured instance name show in UI, fix repeat icon 2021-04-14 15:37:23 +00:00
Hugo Sales
06e92344cc [CONFIG] Various fixes to use new configuration format 2021-04-14 15:37:23 +00:00
Hugo Sales
a9944592c4 [CONFIG] Fix error on missing or empty local configuration 2021-04-14 15:37:23 +00:00
Hugo Sales
02c7bdf4f0 [CONFIG][DB] Remove config from the database, put it in yaml, so it can be baked into the container 2021-04-14 15:37:22 +00:00
Hugo Sales
b34307b74c [DEPENDENCIES] Update dependencies 2021-04-14 15:37:22 +00:00
Hugo Sales
c43f25f4b8 [CSS][UI] Update CSS to fix reply note action (icon swap needed) and remove duplication 2021-04-14 15:37:22 +00:00
Hugo Sales
8547c54103 [CORE] Add missing use statement in module base class 2021-04-14 15:37:22 +00:00
Hugo Sales
db608ca3c1 [UTILS] Make bitmap not use a static class var and set object properties as lowercase 2021-04-14 15:37:22 +00:00
Hugo Sales
abc32ecc0e [NoteAction] Refactor duplicated code out to base class 2021-04-14 15:37:22 +00:00
Hugo Sales
d7ff38fe24 [NOTE] Add isVisibleTo 2021-04-14 15:37:22 +00:00
Hugo Sales
4b84ef5183 [Directory] Add missing use statement 2021-04-14 15:37:22 +00:00
Hugo Sales
a7b7d487d7 POSTING remove REPLY route 2021-04-14 15:37:22 +00:00
Hugo Sales
7e7bfd1958 [EXCEPTION] Make findOne return NotFoundException 2021-04-14 15:37:22 +00:00
Hugo Sales
9f4a53dbbd [EXCEPTION] Add base class to invalid form exception and add URL arguments to redirect exception 2021-04-14 15:37:22 +00:00
Hugo Sales
96415f8523 [SECURITY] Fix getRoles 2021-04-14 15:37:22 +00:00
Hugo Sales
e0672e559a [MODULES] Fix module manager dev-mode rebuild 2021-04-14 15:37:22 +00:00
Hugo Sales
c8b6db650a [UI] Only show note action buttons if a user is logged in 2021-04-14 15:37:22 +00:00
Hugo Sales
9ae31501cc [Controller] Fix exception handler to recurse on the exception's previous (in some contexts, RedirectException gets wrapped) 2021-04-14 15:37:22 +00:00
Hugo Sales
1330c96681 [UTIL] Update bitmap base class, making using easier 2021-04-14 15:37:22 +00:00
Hugo Sales
774d7ffdf9 [Reply] Move reply functionality to a plugin 2021-04-14 15:37:22 +00:00
Hugo Sales
0492d71294 [NoteActions] Refactor note actions and fix bug in favourite 2021-04-14 15:37:22 +00:00
Hugo Sales
1c37eb7c72 [UI] Display error when submitted form is invalid 2021-04-14 15:37:22 +00:00
Hugo Sales
34fab45b6b [MODULE][DB] Added support for loading entity definitions from modules 2021-04-14 15:37:22 +00:00
Hugo Sales
b1e49f67f4 FIXUP WITH DOCTRINE DEV 2021-04-14 15:37:22 +00:00
Hugo Sales
6926d70543 [Bridge] Replace zero dates with CURRENT_TIMESTAMP 2021-04-14 15:37:22 +00:00
Hugo Sales
09a1342588 [TOOLS] Add support for updating autocode in modules 2021-04-14 15:37:22 +00:00
Hugo Sales
ff96c2bb59 [AUTOGENERATED] Update autogenerated code in module entities 2021-04-14 15:37:22 +00:00
Hugo Sales
4ab7da32ce [CONFIG][DEV][DOCTRINE] Add doctrine stacktrace tracking in dev mode 2021-04-14 15:37:22 +00:00
Hugo Sales
749bec5d52 [EXCEPTION][UI][UX] Add RedirectException, which can be thrown anywhere to redirect somewhere, and an exception handler 2021-04-14 15:37:22 +00:00
Hugo Sales
7a68ba4f05 [UI][NOTE] Add reply to in UI 2021-04-14 15:37:22 +00:00
Hugo Sales
3affbc3c78 [Posting] Fix form name and remove unused recycle route and controller 2021-04-14 15:37:22 +00:00
Hugo Sales
5663e5e58d [Media] Add cache control directive to all files served 2021-04-14 15:37:22 +00:00
Hugo Sales
922c435e28 [Repeat][Favourite] Only display action buttons if logged in (instead of forcing login) 2021-04-14 15:37:22 +00:00
Hugo Sales
5c4be9d29e [DB] Add rendered collumn to note table, so we can preserve microtags from other services 2021-04-14 15:37:22 +00:00
Hugo Sales
13fb9b4698 [DB] Fix local_user table to use a numeric id, since the username is editable 2021-04-14 15:37:22 +00:00
rainydaysavings
8e17dd1829 [TWIG] Improving view template structure 2021-04-14 15:37:22 +00:00
rainydaysavings
3a4d3fc1e2 [TWIG] Adding active rules 2021-04-14 15:37:22 +00:00
rainydaysavings
1f7e3a1d90 [UI] CSS polish all around 2021-04-14 15:37:22 +00:00
rainydaysavings
40aa4fa60e [CONTROLLER][ROUTE] Favourites page initial query implementation and routing 2021-04-14 15:37:22 +00:00
rainydaysavings
aa4418e71a [UI] Fixing Login CSS issues 2021-04-14 15:37:22 +00:00
Hugo Sales
76b8b29776 [UI][FEED] Fix scope in timelines; major rewrite of home timeline query, still missing scoping and paging 2021-04-14 15:37:22 +00:00
Hugo Sales
d862457623 [DB][DEFAULTS] Change attachment storage location from uploads to attachments 2021-04-14 15:37:22 +00:00
Hugo Sales
f6a40390e0 [DB] Rename notice to activity in notification table 2021-04-14 15:37:22 +00:00
Hugo Sales
1387eab434 [UI] Subtract self follow from total user follows 2021-04-14 15:37:22 +00:00
Hugo Sales
ca576981a3 [DB][NOTE] Update scope 2021-04-14 15:37:22 +00:00
Hugo Sales
5cf7050008 [Media] Display images and videos inline in notes 2021-04-14 15:37:22 +00:00
rainydaysavings
af3ed18d48 [UI][TWIG] Fixing note actions placement and size, more descriptive rules 2021-04-14 15:37:22 +00:00
Hugo Sales
54e8852fb7 [Posting] Fix posting form name and css 2021-04-14 15:37:22 +00:00
Hugo Sales
109b17b1f9 [FORM] Add names to forms 2021-04-14 15:37:22 +00:00
Hugo Sales
a129a6e368 [DB] Add Activity table, to store all known activity 2021-04-14 15:37:22 +00:00
Hugo Sales
736fb672a5 [EXCEPTION] Fix exceptions not being translated 2021-04-14 15:37:22 +00:00
Hugo Sales
7b467091d6 [DB] Add wrapper for making native queries 2021-04-14 15:37:22 +00:00
Hugo Sales
b364a51f80 [Directory] Add directory plugin, for listing people and groups 2021-04-14 15:37:22 +00:00
Hugo Sales
8f68d7deb4 [Posting] Add missing includes 2021-04-14 15:37:22 +00:00
rainydaysavings
b5b39b5f68 [UI] All radio buttons now look like they should 2021-04-14 15:37:22 +00:00
rainydaysavings
49cd0af021 [PLUGIN] Removing unnecessary labels 2021-04-14 15:37:22 +00:00
rainydaysavings
c423101c00 [TWIG] Making notes view more easily customizable 2021-04-14 15:37:22 +00:00
rainydaysavings
ebf6f8d735 [UI] Fixing note actions views 2021-04-14 15:37:22 +00:00
rainydaysavings
ce94d50043 [PLUGIN] Recycle initial implementation 2021-04-14 15:37:22 +00:00
rainydaysavings
0ed0d0470c [Favourite] Add backend support for favourite 2021-04-14 15:37:22 +00:00
rainydaysavings
153c8d0d64 [DB] Temporarily add favourite entity in core, as plugins don't support them yet 2021-04-14 15:37:22 +00:00
Hugo Sales
75bc71f473 [DB] Add helper for removing entities 2021-04-14 15:37:22 +00:00
Hugo Sales
29f30a6932 [DB] Add support for calling methods with FQCN 2021-04-14 15:37:22 +00:00
rainydaysavings
f4e52f5e11 [TWIG] Various routes added 2021-04-14 15:37:22 +00:00
rainydaysavings
902a57d10f [UI] Replies border fix and other minor fixes 2021-04-14 15:37:22 +00:00
rainydaysavings
928064c5ee [CONTROLLER] Replies and network queries implemented 2021-04-14 15:37:22 +00:00
rainydaysavings
492f32c555 [COMPONENT][CONTROLLER][TWIG] Recycle component work 2021-04-14 15:37:22 +00:00
rainydaysavings
b0566e7b8c [TWIG][UI] Replies CSS fixes 2021-04-14 15:37:22 +00:00
rainydaysavings
6d3dba17d2 [ROUTE] Network and replies routes added 2021-04-14 15:37:22 +00:00
rainydaysavings
2d1200e2e6 [COMPONENT] Favourite initial implementation 2021-04-14 15:37:22 +00:00
rainydaysavings
a2c40163f5 [UI] Fixing note actions placement 2021-04-14 15:37:22 +00:00
rainydaysavings
a51c546f8c [UI] Responsiveness overall polish 2021-04-14 15:37:22 +00:00
rainydaysavings
b2c2e6b6c6 [UI] Browser compatibility improvements, various small fixes 2021-04-14 15:37:22 +00:00
rainydaysavings
fa0612c0d1 [UI] Checkboxes now display a custom tick 2021-04-14 15:37:22 +00:00
rainydaysavings
4d0028d95f [TWIG] Timeline attachment form restructure 2021-04-14 15:37:22 +00:00
rainydaysavings
54c54990a4 [Controller] Attempting to fix home timeline query 2021-04-14 15:37:22 +00:00
rainydaysavings
930a9a99f2 [UI] No focus outlines by default 2021-04-14 15:37:22 +00:00
rainydaysavings
36aff803c6 [UI] Reply icon now shows accordingly, same for the replies themselves 2021-04-14 15:37:22 +00:00
rainydaysavings
b609932726 [UI] Custom and accessible checkboxes, radio buttons and normal buttons 2021-04-14 15:37:22 +00:00
rainydaysavings
8f7790fa3c [COMPONENT] Fixing typo 2021-04-14 15:37:22 +00:00
Hugo Sales
e13e763d5c [NOTE][UI] Add note replying and UI displaying 2021-04-14 15:37:22 +00:00
Hugo Sales
c0caf520b8 [CACHE] Fix bug in list caching 2021-04-14 15:37:22 +00:00
Hugo Sales
1c1ef7a572 [MODULE] Fix avatars not loading 2021-04-14 15:37:22 +00:00
Hugo Sales
fefee324b4 [DB][MODULES][ActivityPub] Cleanup table definitions 2021-04-14 15:37:22 +00:00
rainydaysavings
07178e6ffa [TWIG] Timeline template rework 2021-04-14 15:37:22 +00:00
rainydaysavings
d96e4f9076 [ROUTE] Home timeline route url now shows accordingly as the user nickname 2021-04-14 15:37:22 +00:00
rainydaysavings
6445931493 [UI] Posting form re-styling 2021-04-14 15:37:22 +00:00
rainydaysavings
11d6c19d65 [CONTROLLER] Reply initial implementation 2021-04-14 15:37:22 +00:00
rainydaysavings
b9355b49f3 [COMPONENT] Posting form restructure and minor fixes 2021-04-14 15:37:22 +00:00
rainydaysavings
be86a05ddb [TWIG] Timeline structure rework 2021-04-14 15:37:22 +00:00
rainydaysavings
79be38992f [ROUTE] Home timeline added 2021-04-14 15:37:22 +00:00
rainydaysavings
6d92230c32 [CONTROLLER] Home timeline controller work 2021-04-14 15:37:22 +00:00
rainydaysavings
f5267a1975 [UI] Posting form styling work 2021-04-14 15:37:22 +00:00
rainydaysavings
5dbde32f01 [COMPONENT] Posting form now shows a random default string 2021-04-14 15:37:22 +00:00
rainydaysavings
655b5e36a4 [UI] Links removed since they are part of a plugin 2021-04-14 15:37:22 +00:00
rainydaysavings
a4c6fbbbd8 [UI] Post form new structure first styling implementation 2021-04-14 15:37:22 +00:00
rainydaysavings
1f89f3298c [UI] Small border fix 2021-04-14 15:37:22 +00:00
rainydaysavings
f16fcb0200 [COMPONENTS] Small fix 2021-04-14 15:37:22 +00:00
rainydaysavings
253705f704 [UI][TWIG] Better, divided form rendring of the posting form 2021-04-14 15:37:22 +00:00
rainydaysavings
cf8c85f6ba [UI] Small border radius problem fix 2021-04-14 15:37:22 +00:00
rainydaysavings
dec35a6aa1 [COMPONENT] Posts scope initial form 2021-04-14 15:37:22 +00:00
rainydaysavings
9442556c3e [UI] Fixing login and register styling, refactoring 2021-04-14 15:37:22 +00:00
rainydaysavings
a761c4e11a [UI] Fixing issue where notices wouldn't break text 2021-04-14 15:37:22 +00:00
rainydaysavings
fa40bfb8dc [UI] Fixing static pages styling 2021-04-14 15:37:22 +00:00
rainydaysavings
27d292affd [UI] Fixes to settings CSS 2021-04-14 15:37:22 +00:00
rainydaysavings
dc5992bebd [UI] Finalizing timeline structure and CSS 2021-04-14 15:37:22 +00:00
rainydaysavings
3c06a1e24f [UI] New reset CSS to deal with firefox's abysmal and evil defaults 2021-04-14 15:37:22 +00:00
Hugo Sales
84cfa65bc6 [ActivityPub] Initial cleanup, removing 'die' statements, and ignoring the subfolders 2021-04-14 15:37:22 +00:00
Hugo Sales
43665749bb [UI][TWIG] Small UI cleanup and change twig 'active' function to check for starts with, rather than equals 2021-04-14 15:37:22 +00:00
Hugo Sales
57297aba56 [DB][MEDIA] Small database structure changes 2021-04-14 15:37:22 +00:00
Hugo Sales
9204213dbc [MEDIA] Only try to get an avatar if a user is logged in 2021-04-14 15:37:22 +00:00
Hugo Sales
1b0cab6dc8 [UI][NOTE] Post and see attachments 2021-04-14 15:37:22 +00:00
Hugo Sales
9a0c64c3d1 [DEPENDENCY] Add tgalopin/html-sanitizer-bundle and transitively tgalopin/html-sanitizer 2021-04-14 15:37:22 +00:00
Hugo Sales
4b8e6bb198 [MEDIA][CACHE] Cache avatar queries and delete stale values; small refactoring 2021-04-14 15:37:22 +00:00
Hugo Sales
624aef0a8e [UI][MEDIA] Add actor avatar in feed timeline 2021-04-14 15:37:22 +00:00
Hugo Sales
d66ec9d85c [SECURITY] Fix error in user registering where password wasn't hashed 2021-04-14 15:37:22 +00:00
rainydaysavings
fc6bb1ddf6 [UI] Fixing timeline notice structure and CSS 2021-04-14 15:37:22 +00:00
rainydaysavings
475e78e13f [UI] Fix left panel new dynamic components view 2021-04-14 15:37:22 +00:00
Hugo Sales
8ceeb6be80 [UI][SELFTAGS] Display 'none' if the user doesn't have selftags 2021-04-14 15:37:22 +00:00
Hugo Sales
f76bfca921 [UI][ACCOUNT][SETTINGS] Hack to fix error related to phone number, until a solution is found upstream 2021-04-14 15:37:22 +00:00
Hugo Sales
0758b84d2c [UI][LEFT] Add # before selftags, and link 2021-04-14 15:37:22 +00:00
Hugo Sales
aab9212ffa [UI][FAQ] Fix static pages 2021-04-14 15:37:22 +00:00
Hugo Sales
b3c5fe9e96 [CONTROLLER] Stop propagation of kernel.controller so notices aren't posted 5 times. Not sure why it happens otherwise 2021-04-14 15:37:22 +00:00
Hugo Sales
8ca49478ab [WRAPPER][HTTPClient] Static wrapper around Symfony's HTTP Client 2021-04-14 15:37:22 +00:00
Hugo Sales
e142b90653 [DB][FOLLOW] Change Follow table 2021-04-14 15:37:22 +00:00
Hugo Sales
8276baecab [UI][CACHE][DB] Add follow counts to left panel, caching the results; change follow table 2021-04-14 15:37:22 +00:00
Hugo Sales
b678ab2191 [UI][LEFT] Add link to settings on avatar and personal info 2021-04-14 15:37:22 +00:00
Hugo Sales
5ed2abaf64 [ENTITY] Add Entity base class to all entities 2021-04-14 15:37:22 +00:00
Hugo Sales
513a1e58b8 [MODULE][Left][UI][TAGS] Add Left module which handles fetching tags and followers, fix self tags 2021-04-14 15:37:22 +00:00
Hugo Sales
d86636ebd4 [DB][File] Remove timestamp, add actor_id 2021-04-14 15:37:22 +00:00
Hugo Sales
6d1fa10965 [DB][AVATAR] Remove extraneous slash 2021-04-14 15:37:22 +00:00
Hugo Sales
86bd1dbbbf [DB][DEFAULTS] Add avatar/default 2021-04-14 15:37:22 +00:00
Hugo Sales
96aa98cbcf [UserPanel] Fix upload of avatar 2021-04-14 15:37:22 +00:00
Hugo Sales
30deeaf4ef [Media] Use utils 2021-04-14 15:37:22 +00:00
Hugo Sales
fe50909549 [DB] Add 'dql' method to wrap 'createQuery' and replace 'Gsactor' with 'GSActor' 2021-04-14 15:37:22 +00:00
Hugo Sales
651af27674 [Media] Move code from media.php to utils.php 2021-04-14 15:37:22 +00:00
Hugo Sales
75958fc9b4 [MODULE][Posting] Add Posting module, which handles notice posting 2021-04-14 15:37:22 +00:00
Hugo Sales
036b4480f3 [MEDIA] Move avatar fetching and adding to ouput to media component 2021-04-14 15:37:22 +00:00
Hugo Sales
d4813b4ce9 [UTIL][Common] Fix import 2021-04-14 15:37:22 +00:00
Hugo Sales
21be5199cc [CONTROLLER][AdminPanel] Add missing use statement 2021-04-14 15:37:22 +00:00
Hugo Sales
8f43c12e22 [STREAM][NetworkPublic] Add skeleton of public timeline and posting 2021-04-14 15:37:22 +00:00
Hugo Sales
a752a5a07c [UTIL][Common] Implement 'isSystemPath' 2021-04-14 15:37:22 +00:00
Hugo Sales
4945a1342f [SECURITY] Wrap getUser in a try catch, in case the user doesn't exist 2021-04-14 15:37:22 +00:00
Hugo Sales
fd7e06bf18 [COMMAND] Fix 'bin/console doctrine:database:create' by only loading defaults if we have a connection 2021-04-14 15:37:22 +00:00
Hugo Sales
e2960aebcb [DEPENDENCY] Update dependencies 2021-04-14 15:37:22 +00:00
Hugo Sales
5b11c26e79 [AUTOGENERATED] Update autogenerated code 2021-04-14 15:37:22 +00:00
Hugo Sales
a60c79c35d [TOOLS] Fix bin/generate_entity_fields 2021-04-14 15:37:22 +00:00
Hugo Sales
0508886fc4 [CORE][DB] Fix uses of db tables after previous restructure 2021-04-14 15:37:22 +00:00
Hugo Sales
e0af29fd5e [CORE] Data Representation and Modelling refactor 2021-04-14 15:37:22 +00:00
rainydaysavings
9fa363d9bf [UI] Public feed responsive CSS work 2021-04-14 15:37:22 +00:00
rainydaysavings
c3a0b08c40 [UI] Responsive settings CSS work 2021-04-14 15:37:22 +00:00
rainydaysavings
b52d4faca7 [UI] Responsive base design polish 2021-04-14 15:37:22 +00:00
rainydaysavings
7d593366c7 [UI] Feed structure done, feed CSS work 2021-04-14 15:37:22 +00:00
rainydaysavings
4d00a0f6dd [UI] Polishing design, settings pages 2021-04-14 15:37:22 +00:00
rainydaysavings
648a911055 [UI] Polishing base template 2021-04-14 15:37:22 +00:00
rainydaysavings
0d3a1cc14e [UI] Left panel theme now looks like it should 2021-04-14 15:37:22 +00:00
rainydaysavings
c9b36b6030 [UI] Right panel checkbox size fix 2021-04-14 15:37:22 +00:00
rainydaysavings
52caf7cab1 [UI] Settings theme according to base theme 2021-04-14 15:37:22 +00:00
rainydaysavings
46d946f381 [UI] Complete base CSS overhaul and new theme 2021-04-14 15:37:22 +00:00
rainydaysavings
4568578e16 [UI] Right panel added 2021-04-14 15:37:22 +00:00
rainydaysavings
c0b6d8807f [UI] Additional fixes to settings page 2021-04-14 15:37:22 +00:00
rainydaysavings
c25d33e38a [UI] Small general settings CSS fixes 2021-04-14 15:37:22 +00:00
rainydaysavings
488247119a [UI] Settings small fix 2021-04-14 15:37:22 +00:00
rainydaysavings
08c792fac7 [UI] Notification settings checkbox placement fix 2021-04-14 15:37:22 +00:00
Hugo Sales
e96c273351 [LocalUser] Fix missing extend 2021-04-14 15:37:22 +00:00
Hugo Sales
a20e95fd38 [ROUTES] Add redirect from root to main/all, link from header to root, and change parameter order on RouteLoader::connect 2021-04-14 15:37:22 +00:00
Hugo Sales
37f21b516d [EXCEPTION] Add ServerException and inherit previous throwable
imported from v2/5ea5d3007563f76a77efbfb66936315441922542
2021-04-14 15:37:22 +00:00
Alexei Sorokin
690b8750c6 [DATABASE] Enable fulltext search by default
Also rename fulltext indices to more fitting names

Imported from v2/f84dbb369f01a1d4a9bc362d01cdd100cdc79313
2021-04-14 15:37:22 +00:00
Hugo Sales
459a60d789 [MEDIA][EXCEPTIONS] Fix errors and deprecations 2021-04-14 15:37:22 +00:00
Hugo Sales
56c4309cb8 [SECURITY] Refactor 2021-04-14 15:37:22 +00:00
Hugo Sales
d21d4f5cb1 [AVATAR] Update way avatar is sent, to use proper symfony responses, make config('site', 's_static_delivery') into a boolean 2021-04-14 15:37:22 +00:00
Hugo Sales
a498134b13 [AUTOGENERATED] Update autogenerated code 2021-04-14 15:37:22 +00:00
Hugo Sales
d91ab6f277 [TOOLS] Update generate_entity_fields 2021-04-14 15:37:22 +00:00
Hugo Sales
a5c97762e0 [AVATAR] Fixed avatar upload, added avatar inline download and updated template and base controller 2021-04-14 15:37:22 +00:00
Hugo Sales
d5e41ec099 [AVATAR] Handle avatar upload without js and save and validate uploaded files 2021-04-14 15:37:22 +00:00
Hugo Sales
9e45641b7b [AUTOGENERATED] Update autogenerated code 2021-04-14 15:37:22 +00:00
Hugo Sales
b7300c6457 [DEPENDENCIES] Update dependencies 2021-04-14 15:37:22 +00:00
Hugo Sales
04258b6072 [JS] Whitespace cleanup 2021-04-14 15:37:22 +00:00
Hugo Sales
480904a4e3 [MEDIA][AVATAR] Handle avatar validation and storage 2021-04-14 15:37:22 +00:00
Hugo Sales
7635f455ab [DB] Add entity base class to allow sharing methods such as 'create' 2021-04-14 15:37:22 +00:00
Hugo Sales
c06346ef31 [DB][FILE][AVATAR] Handle deleting files, change file and avatar tables 2021-04-14 15:37:22 +00:00
Hugo Sales
65d6204a01 [UI][SETTINGS] User notification settings with configurable transports (through plugins) 2021-04-14 15:37:22 +00:00
Hugo Sales
bdacd638c7 [PLUGIN] Remove Test plugin 2021-04-14 15:37:22 +00:00
Hugo Sales
b9a2badc31 [COMPONENT][PLUGIN] Move Email and XMPP notification handlers from components to plugins, so they can be disabled 2021-04-14 15:37:22 +00:00
Hugo Sales
be49bfa0c1 [COMPONENT] Remove 'post on status change' option for email transport 2021-04-14 15:37:22 +00:00
Hugo Sales
c1963438bc [AUTOGENERATED] Update autogenerated code 2021-04-14 15:37:22 +00:00
rainydaysavings
19e4f120c0 [UI] Notifications settings styling finished 2021-04-14 15:37:22 +00:00
rainydaysavings
cc4a95fbd5 [UI] Notification settings styling progress 2021-04-14 15:37:22 +00:00
rainydaysavings
246bf30c41 [UI] Notification settings tabs functional 2021-04-14 15:37:22 +00:00
rainydaysavings
a71f54c6bf [UI] Notifications settings page CSS work 2021-04-14 15:37:22 +00:00
rainydaysavings
e4db0eb9b9 [UI] Accessibility improvements all around 2021-04-14 15:37:22 +00:00
rainydaysavings
e1ff2a0ef1 [UI] Fixed issue where certain form element would be on top the left panel 2021-04-14 15:37:22 +00:00
rainydaysavings
3f98f8fecf [ROUTES] Fix use statement 2021-04-14 15:37:22 +00:00
rainydaysavings
10010552e1 [JS][UI][AVATAR] JS cropping script 2021-04-14 15:37:22 +00:00
rainydaysavings
d38bf8ff4c [UI] Cropping avatar as a circle, proper preview done 2021-04-14 15:37:22 +00:00
rainydaysavings
caab08b017 [CONTROLLER][UI] Avatar JS cropping added 2021-04-14 15:37:22 +00:00
rainydaysavings
85d8d9b268 [UI] Login and Register button fixes 2021-04-14 15:37:22 +00:00
rainydaysavings
a64a099d7d [UI] Controller and Route for FAQ page created as well as basic template structure 2021-04-14 15:37:22 +00:00
rainydaysavings
2a75237c70 [UI] Settings pages routes and styling done. 2021-04-14 15:37:22 +00:00
Hugo Sales
d7801737f6 [COMPONENT][PLUGIN] Small refactor and add license 2021-04-14 15:37:22 +00:00
Hugo Sales
b2b0990bf6 [CONTROLLER][UI] Add notification settings form 2021-04-14 15:37:22 +00:00
Hugo Sales
ed84c1f8bf [MODULE] Reload modules if modified, except in production environment 2021-04-14 15:37:22 +00:00
Hugo Sales
6567f10e69 [UTIL] Fix and rename arrayRemoveKeys 2021-04-14 15:37:22 +00:00
Hugo Sales
b2dbf9bc20 [CONFIG] Cleanup services.yaml config file 2021-04-14 15:37:21 +00:00
Hugo Sales
78929629f0 [FORMATTING] Update license header in SchemaDef compiler pass 2021-04-14 15:37:21 +00:00
Hugo Sales
7945a9c825 [EVENT][ROUTES] Add event to allow modules to add routes, 'add_route' 2021-04-14 15:37:21 +00:00
Hugo Sales
4c60aac8f8 [FRAMEWORK] Avoid double initializing the framework 2021-04-14 15:37:21 +00:00
Hugo Sales
d394f6fc9c [EVENT] Fix event handler and rename events to snake_case 2021-04-14 15:37:21 +00:00
Hugo Sales
605a8919a7 [PLUGIN] Update example plugin 2021-04-14 15:37:21 +00:00
Hugo Sales
bfa3095137 [MODULE][COMPILER] Add compiler pass responsible for loading, instantiating and wiring enabled modules 2021-04-14 15:37:21 +00:00
Hugo Sales
0e401edac2 [MODULE] Added module base class 2021-04-14 15:37:21 +00:00
Hugo Sales
468d00d393 [COMMAND] Fix ListEvents command to properly display the callable 2021-04-14 15:37:21 +00:00
Hugo Sales
f5f10890b6 [COMPOSER][MODULE] Add autoloading rules for components and plugins 2021-04-14 15:37:21 +00:00
Hugo Sales
9b2db7608b [MODULE] Renamed modules to components 2021-04-14 15:37:21 +00:00
Hugo Sales
0ca169aad2 [UTIL][FORM] Add form transformer array <--> string 2021-04-14 15:37:21 +00:00
Hugo Sales
9291bfbecb [UTIL] Add Common::array_remove_keys 2021-04-14 15:37:21 +00:00
Hugo Sales
e620c20bb4 [UI][CONTROLLER] Work on tabbed notification settings panel 2021-04-14 15:37:21 +00:00
Hugo Sales
4b73024a57 [MAIL] Make mailserver a required service 2021-04-14 15:37:21 +00:00
Hugo Sales
b4e42d6562 [SECURITY] Ensure ARGON2 constants are defined, or throw exception 2021-04-14 15:37:21 +00:00
Hugo Sales
3934d403ef [DEPENDENCY] Update dependencies 2021-04-14 15:37:21 +00:00
Hugo Sales
e571c62319 [UI][CONTROLLER] Refactor UserPanel to use the new Form::handle method and add placeholders in the password fields 2021-04-14 15:37:21 +00:00
Hugo Sales
9dffd1c93e [DATABASE] Remove DATABASE::flush from Profile::setSelfTags 2021-04-14 15:37:21 +00:00
Hugo Sales
34890aff90 [FORMATTING] Add option to split a string to array by both a comma and a space 2021-04-14 15:37:21 +00:00
Hugo Sales
503fa2e537 [FORM] Add DataTransformer to and from array 2021-04-14 15:37:21 +00:00
Hugo Sales
e10e6644e3 [FORM] Add Form::handle which automagically creates a form, handles a request, and writes the data to the given entity and update Form::create to do some more magic as well 2021-04-14 15:37:21 +00:00
Hugo Sales
4d2770319e [DATABASE][TOOLS] Update local_user to return the proper PhoneNumber type 2021-04-14 15:37:21 +00:00
Hugo Sales
0cba00ebbb [CORE][SECURITY][UX] Save previous url on /register and /logout 2021-04-14 15:37:21 +00:00
rainydaysavings
6e52fd4c95 [CONTROLLER][UI] Fixing controller display errors, Settings CSS fixes 2021-04-14 15:37:21 +00:00
rainydaysavings
9a2ac34ba3 [UI][ROUTES][CONTROLLER] Fixing Settings navs and templates 2021-04-14 15:37:21 +00:00
rainydaysavings
e334ce9a55 [UI] Register and Login rework 2021-04-14 15:37:21 +00:00
rainydaysavings
b8a0d14fd5 [UI] Left panel fix 2021-04-14 15:37:21 +00:00
Hugo Sales
7b0f5ab576 [Controller] Update settings/avatar 2021-04-14 15:37:21 +00:00
Hugo Sales
e7f541219d [DATABASE][TOOLS] Update local_user, SchemaDefDriver and bin/generate_entity_fields to use the phone_number type (which maps to a varchar 35 and does validation) 2021-04-14 15:37:21 +00:00
Hugo Sales
0bc59f1b9a [UI] Update settings/account to reflect the current values 2021-04-14 15:37:21 +00:00
Hugo Sales
8088b78a24 [UI][ROUTES] s%settings/profile%settings/personal_info% 2021-04-14 15:37:21 +00:00
Hugo Sales
b98d01bd06 [CORE][UX] Save previous url to redirect back after registering 2021-04-14 15:37:21 +00:00
Hugo Sales
d0c999199b [DEPENDENCY] Add odolbeau/phone-number-bundle 2021-04-14 15:37:21 +00:00
Hugo Sales
f907843d43 [UTIL][NICKNAME][FIX] Add self to constant 2021-04-14 15:37:21 +00:00
Hugo Sales
8aa1a3d05e [UI][USERPANEL] Add prefilled fields, mark some as optional and handle self tags in the profile settings page 2021-04-14 15:37:21 +00:00
Hugo Sales
c91c385dec [SELFTAGS] Add Profile::{set,get}SelfTags 2021-04-14 15:37:21 +00:00
Hugo Sales
2838aaad14 [FORM] Add Form::isRequired 2021-04-14 15:37:21 +00:00
Hugo Sales
d6a7843240 [DATABASE] Refactor DB.php and make findBy always return an array, instead of a doctrine collection 2021-04-14 15:37:21 +00:00
Hugo Sales
51f65edb55 [UTIL] Update Formatting::{toString,toArray} to allow spliting by either space or comma 2021-04-14 15:37:21 +00:00
Alexei Sorokin
256d57adaa [SECURITY] Update way passwords are checked and update 2021-04-14 15:37:21 +00:00
rainydaysavings
6d6b1447f8 [TWIG][ROUTES] Footer links routes and pages added 2021-04-14 15:37:21 +00:00
rainydaysavings
801399218f [UI][ROUTES] Footer links added 2021-04-14 15:37:21 +00:00
rainydaysavings
c2e69a06b0 [UI] Fixing problem due to Firefox's autofill filter 2021-04-14 15:37:21 +00:00
rainydaysavings
ae49f82580 [UI] Login template small fix 2021-04-14 15:37:21 +00:00
rainydaysavings
879666fab7 [UI] Left panel template and Login page CSS work done 2021-04-14 15:37:21 +00:00
Hugo Sales
81e45e3ace [SECURITY][CONTROLLER] Remove unreachable code from the Security controller 2021-04-14 15:37:21 +00:00
Hugo Sales
107351a6b5 [CONTROLLER][ADMIN][CONFIG] Fix form to use static strings as keys and add labels seperately; convert input from string to appropriate type 2021-04-14 15:37:21 +00:00
Hugo Sales
292d98a33c [LIB][Util] Update Common::setConfig to throw an exception if appropriate, add Formatting::{toString,toArray} 2021-04-14 15:37:21 +00:00
Hugo Sales
72ee91a8da [I18N] Remove incomplete autogenerated translation file, to be fixed later 2021-04-14 15:37:21 +00:00
Hugo Sales
2eb61543d9 [AUTOGENERATED] Update all entity fields 2021-04-14 15:37:21 +00:00
Hugo Sales
60002df680 [SECURITY] Small refactor in Authenticator.php, to remove unused services 2021-04-14 15:37:21 +00:00
Hugo Sales
f081d58e2b [USER][UI][AUTHENTICATION] Add registration form 2021-04-14 15:37:21 +00:00
Hugo Sales
13244c1e37 [UTIL][NICKNAME] Small refactor and remove the check between user nickname and group_alias, as these will have different semantics 2021-04-14 15:37:21 +00:00
Hugo Sales
71c9462d2e [DATABASE] Fix typos in user_notification_prefs 2021-04-14 15:37:21 +00:00
Hugo Sales
c410f9b67a [DATABASE] Fix typo in profile table and add a constructor 2021-04-14 15:37:21 +00:00
Hugo Sales
b4fb1569ce [FORM][WRAPPER] Merge argument options, not replace 2021-04-14 15:37:21 +00:00
Hugo Sales
fdcedb8295 [DATABASE] Update LocalUser table to not have a numerical id, add is_email_verified and fix getProfile accordingly 2021-04-14 15:37:21 +00:00
Hugo Sales
39e3e8a04e [MAILER][WRAPPER] Add mailer wrapper that respects the configuration 2021-04-14 15:37:21 +00:00
Hugo Sales
7bb3717673 [FIX] Fix bug in DATABASE.php, since findBy can return different types 2021-04-14 15:37:21 +00:00
Hugo Sales
8dcf563674 [TOOLS] Update generate fields script to output default values 2021-04-14 15:37:21 +00:00
Hugo Sales
a582cfe4f2 [DEPENDENCY] Add symfonycasts/verify-email-bundle 2021-04-14 15:37:21 +00:00
Hugo Sales
0af82054ff [COMMON][SECURITY][WRAPPER] Added security service static wrapper and Common::getUser 2021-04-14 15:37:21 +00:00
Hugo Sales
f812d9142f [CORE][ROUTES] Small refactor on entrypoint and RouteLoader 2021-04-14 15:37:21 +00:00
Hugo Sales
92ecb50cff [TWIG] Add twig function to output the active tag if the current route matches a given one 2021-04-14 15:37:21 +00:00
Hugo Sales
1b2c308808 [CONTROLLER][ROUTES] Refactor the base Controller to not reinvent the wheel too much and rely on Symfony's events 2021-04-14 15:37:21 +00:00
Hugo Sales
0c448ee83f [ROUTES] Change name of admin and settings routes and refactor the way they're specified 2021-04-14 15:37:21 +00:00
Hugo Sales
a075d35c8c [CONTROLLER][ROUTES] Refactor controllers to use the new base class and remove controller from the class name 2021-04-14 15:37:21 +00:00
Hugo Sales
f26b488045 [NOTIFICATION][DATABASE] Update user notification prefs table, implementation of Notification and define a base class for notification transport 2021-04-14 15:37:21 +00:00
Hugo Sales
2fd81e218a [CONTROLLER] Remove example enqueue 2021-04-14 15:37:21 +00:00
Hugo Sales
fc4d8bcf65 [DEFAULTS] Add password hashing algorithm default settings 2021-04-14 15:37:21 +00:00
Hugo Sales
0ef9223803 [LOGIN] Implement password checking and related systems 2021-04-14 15:37:21 +00:00
Hugo Sales
9bc186a072 [USER] Add UserRoles 2021-04-14 15:37:21 +00:00
Hugo Sales
70cb6d5d94 [DATABASE] Add role collumn to profile table 2021-04-14 15:37:21 +00:00
Hugo Sales
162a955f41 [UTIL] Update Common::config to ensure the values queried exist 2021-04-14 15:37:21 +00:00
Hugo Sales
aadb4832bc [DEFAULTS][FIX] Fix logic error that kept reloading the table when the file wasn't modified 2021-04-14 15:37:21 +00:00
Hugo Sales
0e96ffe287 [UI][SESSION] Add login and logout pages 2021-04-14 15:37:21 +00:00
Hugo Sales
958d5bfe22 [LIB][Util] Remove Functional::arity as it got merged upstream as Functional\ary 2021-04-14 15:37:21 +00:00
Hugo Sales
c0ba6250aa [LIB][Util] Make Common::config return the unserialized value instead of the entity 2021-04-14 15:37:21 +00:00
Hugo Sales
0a6b134f23 [CORE] Refactor GNUsocial.php so it initializes itself as a service 2021-04-14 15:37:21 +00:00
Hugo Sales
a7715fc9c3 [I18N] Remove support for context until it proves necessary, as it broke the code 2021-04-14 15:37:21 +00:00
Hugo Sales
b508fbe3b1 [TOOLS] Update shebang on scripts to use the correct php executable 2021-04-14 15:37:21 +00:00
Hugo Sales
9a9ac8b55f [AUTOGENERATED] Update autogenerated code 2021-04-14 15:37:21 +00:00
Hugo Sales
adda4caea4 [DATABASE] Rename user table to local_user, since doctrine shits itself otherwise ._. 2021-04-14 15:37:21 +00:00
Hugo Sales
a7ff0ef506 [DEPENDENCY] Add symfony/config as a dependency 2021-04-14 15:37:21 +00:00
Hugo Sales
ee1c1bce80 [CONFIG] Change way configuration is done to use Symfony's system instead of environment vars 2021-04-14 15:37:21 +00:00
Hugo Sales
7b00ab4699 [CORE][I18n][DEFAULTS] Remove I18nHelper 2021-04-14 15:37:21 +00:00
Hugo Sales
df60e72fb3 [LIB][Util] Change methods in the Common class to camelCase, add isSystemPath (previously in Nickname.php) 2021-04-14 15:37:21 +00:00
Hugo Sales
d5b5d97bc1 [UTIL][NICKNAME] Import nickname utilities and exceptions from v2 2021-04-14 15:37:21 +00:00
Hugo Sales
640c4b2ca8 [DEFAULTS] Update default reserved usernames 2021-04-14 15:37:21 +00:00
Hugo Sales
11822cbed0 [DATABASE][WRAPPER] Add findBy method which allows finding entities with a complex expression 2021-04-14 15:37:21 +00:00
Hugo Sales
9fb74c2f27 [DATABASE] Re-import the local_group table, as it'll be used as per the new group semantics 2021-04-14 15:37:21 +00:00
rainydaysavings
f361a64ab5 [UI] Settings routes refactor, avatar and misc settings added. 2021-04-14 15:37:21 +00:00
rainydaysavings
a4934a4ef3 [UI][CONTROLLER][ROUTES] UserPanel account page form added, account page CSS work 2021-04-14 15:37:21 +00:00
rainydaysavings
46c63b3240 [UI] Fixed top header spacing issue, hamburger menu weird rendering 2021-04-14 15:37:21 +00:00
rainydaysavings
f77f56e1f2 [UI] FAQ pages markdown fixes 2021-04-14 15:37:21 +00:00
rainydaysavings
2f05f05dc9 [UI][CONTROLLER] Form help messages added, fixed checkbox trick hitbox 2021-04-14 15:37:21 +00:00
rainydaysavings
02b17049e3 [UI] Reset CSS added, small fixes all around 2021-04-14 15:37:21 +00:00
rainydaysavings
ee6791fe97 [UI] Settings page CSS redesign port completed 2021-04-14 15:37:21 +00:00
rainydaysavings
de5554f1e2 [UI][CONTROLLER][ROUTES] Corrected core action name, UserPanel CSS work 2021-04-14 15:37:21 +00:00
rainydaysavings
e1f9143cf5 [UI] Fixed FAQ template issues 2021-04-14 15:37:21 +00:00
rainydaysavings
4fd69b684a [UI] Side panel animation added 2021-04-14 15:37:21 +00:00
rainydaysavings
c133565780 [UI] Redesign responsiveness work done 2021-04-14 15:37:21 +00:00
rainydaysavings
099be93420 [UI] Further work into new side panel design 2021-04-14 15:37:21 +00:00
rainydaysavings
43b7076ff8 [UI] Basic implementation of the new base design 2021-04-14 15:37:21 +00:00
rainydaysavings
49e33557e1 [UI] Polishing FAQ CSS 2021-04-14 15:37:21 +00:00
rainydaysavings
f16789f10e [UI] Standardization of sizes and variable usage for faster theming 2021-04-14 15:37:21 +00:00
rainydaysavings
2b4540952e [UI][CONTROLLER] Profile settings action functionality working 2021-04-14 15:37:21 +00:00
Hugo Sales
91ff4dbdec [DATABASE][WRAPPER] Update DATABASE wrapper so entity names are provided without the namespace 2021-04-14 15:37:21 +00:00
Hugo Sales
4cc196a69a [DOCKER] Add redis to the docker image 2021-04-14 15:37:21 +00:00
Hugo Sales
7cedbcd63f [CACHE] Fix usage of the redis extension 2021-04-14 15:37:21 +00:00
Hugo Sales
ba7ad5fd28 [DOCKER] Fix redis extension build process to use LZ4 and add APCu 2021-04-14 15:37:21 +00:00
Hugo Sales
7ca22ecc1d [DEPENDENCY] Add mock polyfill implementations of the redis and memcached extension 2021-04-14 15:37:21 +00:00
Hugo Sales
02a23a2aff [CACHE][Redis] Add special support for redis (fixed size lists), set method and general fixes 2021-04-14 15:37:21 +00:00
Hugo Sales
47af6e85b8 [LIB][Util] Refactor and implement array indexing methods on RingBuffer 2021-04-14 15:37:21 +00:00
Hugo Sales
04b0d63d43 [DOCKER] Updated php image so redis is compiled with LZ4 compression available, as it's the fastest at decompressing and really fast at compressing. Read performance is more important, with this being used as a cache 2021-04-14 15:37:21 +00:00
Hugo Sales
62c9b56b3f [CACHE] Add support for multiple pools with the syntax (as an example) SOCIAL_CACHE_ADAPTER='default=redis://localhost:6379,memcached://localhost:11211;db.config=apcu://' 2021-04-14 15:37:21 +00:00
Hugo Sales
155038a5c0 [DOCKER] Add msgpack and redis extensions to docker image 2021-04-14 15:37:21 +00:00
Hugo Sales
89ce298a3b [DEFAULTS] Add modified time to config table (as value) and only reload the defaults if the file is newer 2021-04-14 15:37:21 +00:00
Hugo Sales
9563fb0af3 [CACHE] Extend the static wrapper to support working with lists in caches that don't natively support them 2021-04-14 15:37:21 +00:00
Hugo Sales
2c4fcaaf07 [LIB][Util] Add Ring Buffer data structure 2021-04-14 15:37:21 +00:00
Hugo Sales
3aaad123de [DOCKER] Move certbot files to hidden folder, so it's ignored by GNU global 2021-04-14 15:37:21 +00:00
Hugo Sales
7a07b95240 [DEFAULTS][FIX] Fix defaults to use value from environment 2021-04-14 15:37:21 +00:00
Hugo Sales
e5babcd36e [PHP][EXTENSION][POLYFILL] Add php-ds polyfill, which is used if the native extension is not available 2021-04-14 15:37:21 +00:00
Hugo Sales
1134fec173 [DOCKER][PHP][EXTENSION] Add PHP ds extension to docker PHP image 2021-04-14 15:37:21 +00:00
Hugo Sales
d2b44f4400 [TOOLS][configure] Fix to use quotation marks properly 2021-04-14 15:37:21 +00:00
Hugo Sales
aaba304ca8 [CACHE][WRAPPER] Fix cache wrapper 2021-04-14 15:37:21 +00:00
Hugo Sales
288f8363ae [FORMATTING][DEFAULTS] Fix formatting and remove redundant config defaults 2021-04-14 15:37:21 +00:00
Hugo Sales
b09e1525eb [CACHE][HTTP] Configure simple HTTP cache 2021-04-14 15:37:21 +00:00
Hugo Sales
9fadb73ea5 [CACHE] Add a static wrapper around symfony/cache 2021-04-14 15:37:21 +00:00
Hugo Sales
cf1483e6b5 [DEPENDENCY] Add symfony/cache as a dependency 2021-04-14 15:37:21 +00:00
Hugo Sales
b579842eb6 [LOG][WRAPPER] Refactor log wrapper 2021-04-14 15:37:21 +00:00
Hugo Sales
47ab835549 [QUEUE] Add queueing wrapper, default configuration and example usage 2021-04-14 15:37:21 +00:00
Hugo Sales
69341880d3 [DEPENDENCY] Add symfony/messenger as a dependency 2021-04-14 15:37:21 +00:00
Hugo Sales
e146ebc05b [DATABASE] Delete queue_item table, as queueing will be handled by messenger 2021-04-14 15:37:21 +00:00
Hugo Sales
ceb5092b34 [CONTROLLER] Show dummy notices in main/all 2021-04-14 15:37:21 +00:00
Hugo Sales
17da1f7fb5 [MODULES] Make ModulesManager check if file exists 2021-04-14 15:37:21 +00:00
Hugo Sales
43e56c08f7 [CONTROLLER] Add Controller base class, which handles rendering templates if requested HTML or json, accordingly 2021-04-14 15:37:21 +00:00
Hugo Sales
6f9c70398b [ROUTE] Fix routes, config_admin got deleted 2021-04-14 15:37:21 +00:00
Hugo Sales
8b9a1dd535 [COMMAND][DEPRECATION][FIX] Fix app:events's deprecation 2021-04-14 15:37:21 +00:00
Hugo Sales
c2d9d5b75b [GIT] Update gitignore to ignore composer.local.json, where plugin settings will be placed 2021-04-14 15:37:21 +00:00
Hugo Sales
4fa6295fde [DEPENDENCY] Update all dependencies 2021-04-14 15:37:21 +00:00
Hugo Sales
bf4c06295a [DEPENDENCY] Add wikimedia/composer-merge-plugin as a dependency, to allow managing plugins 2021-04-14 15:37:21 +00:00
rainydaysavings
443a5438be [DEPENDENCY] Add erusev/parsedown and twig/markdown-extra as dependencies 2021-04-14 15:37:21 +00:00
rainydaysavings
9b88f93cad [TWIG][CONFIG] Change default_path and add public_path 2021-04-14 15:37:21 +00:00
rainydaysavings
d6196a5e69 [CONTROLLER] UserAdminPanel handle request fix
[UI] Minor CSS font size corrections
2021-04-14 15:37:21 +00:00
rainydaysavings
b39d43a700 [TWIG][UI] Settings: removed unnecessary pages, responsive CSS work 2021-04-14 15:37:21 +00:00
rainydaysavings
20497bf905 [UI][CONTROLLER] Settings page styling almost done. 2021-04-14 15:37:21 +00:00
rainydaysavings
fe20ed08d0 [TWIG] faq/contact template route fix 2021-04-14 15:37:21 +00:00
rainydaysavings
a87653860b [FAQ] Removing unnecessary categories. 2021-04-14 15:37:21 +00:00
rainydaysavings
9f2977bfd1 [UI][FAQ] FAQ polish, better use of twig, responsive css. 2021-04-14 15:37:21 +00:00
rainydaysavings
1e8efe180c [UI][Mobile][FAQ][ROUTES] FAQ sub pages and routing added, small screen css work started. 2021-04-14 15:37:21 +00:00
rainydaysavings
29712edbd3 [UI] Icon assets now work with Symfony asset component, header icon placement fixes 2021-04-14 15:37:21 +00:00
rainydaysavings
0211771d5f [UI][ROUTES][CONTROLLER] Settings pages routes and styling done. 2021-04-14 15:37:21 +00:00
rainydaysavings
f100d33d94 [UI] Work started on profile settings page. 2021-04-14 15:37:21 +00:00
rainydaysavings
9a05f11b65 [UI][Header] New header implemented. 2021-04-14 15:37:21 +00:00
rainydaysavings
b28f3ffa19 [TWIG][UI] CSS refactoring, containerized twig blocks and settings initial work 2021-04-14 15:37:21 +00:00
rainydaysavings
168d138481 [TWIG] FAQ base template hierarchy fixes
Minor refactoring of routes for FAQ static pages
2021-04-14 15:37:21 +00:00
rainydaysavings
3daa764d87 [UI][ROUTES] Better use of icons, fixing static pages routing. 2021-04-14 15:37:21 +00:00
rainydaysavings
ff06671cd5 [UI][FAQ] Better FAQ organization, removing unnecessary categories. 2021-04-14 15:37:21 +00:00
rainydaysavings
5736bd1408 [UI][Mobile][FAQ] FAQ polish, better use of twig, responsive css. 2021-04-14 15:37:21 +00:00
rainydaysavings
999b31b615 [UI][Mobile][FAQ] FAQ sub pages and routing added, small screen css work started. 2021-04-14 15:37:21 +00:00
rainydaysavings
e925c566ac [UI] SVG icons added
[TWIG][UI] Header completed
2021-04-14 15:37:21 +00:00
rainydaysavings
8faf299a23 [UI][FAQ] FAQ page progress, assets folder and assets added 2021-04-14 15:37:21 +00:00
rainydaysavings
2985284f2b [UI][FAQ] Controller and Route for FAQ page created as well as basic template structure 2021-04-14 15:37:21 +00:00
Hugo Sales
2d1d697498 [TOOLS] Fix bootstrap and pre-commit scripts 2021-04-14 15:37:21 +00:00
Hugo Sales
57310dcb15 [MODULE] Move 'foreign' entities from core to a module 2021-04-14 15:37:21 +00:00
Hugo Sales
a574971f0b [AUTOGENERATED] Update autogenerated code 2021-04-14 15:37:21 +00:00
Hugo Sales
68a5551f36 [TOOLS] Update bin/generate_entity_fields script 2021-04-14 15:37:21 +00:00
Hugo Sales
3a6b4cca1e [CORE][DATABASE] Replace zero dates with CURRENT_TIMESTAMP and add defaults to all 'created' or 'modified'
This commit is a port from v2's 9a515b9234 ([SCHEMA] Improve timestamp storage) to v3.

As explained by Alexei Sorokin:

Avoid the use of deprecated MariaDATABASE "zero dates" globally. If they're present
as attribute defaults somewhere, they will be replaced with NULL implicitly.
The existing "zero dates" in MariaDATABASE storage will be left intact and this
should not present any issues.

The "timestamp" type in table definitions now corresponds to DATETIME in
MariaDATABASE with "DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", which
should be close enough to the original behaviour for compatibility purposes.
It is now the recommended type for "modified" attributes, because of the
update trigger on MariaDATABASE. But there is no such trigger implemented on
PostgreSQL as of this moment.
2021-04-14 15:37:21 +00:00
Hugo Sales
6fe35833e7 [CORE][DATABASE] Restructure the database 2021-04-14 15:37:21 +00:00
Hugo Sales
4b4f235481 [ROUTE][ADMIN][CONFIG] Add route to update values in the config table 2021-04-14 15:37:21 +00:00
Hugo Sales
6c0c84c284 [DEFAULTS] Small fixes and add check of SOCIAL_NO_RELOAD_DEFAULTS from the environment, to override the reloading of default values 2021-04-14 15:37:21 +00:00
Hugo Sales
26c966084a [DOCUMENTATION] Fixed type annotations and documentation of Common::size_str_to_int 2021-04-14 15:37:21 +00:00
Hugo Sales
bf92c44d81 [CORE][Event] Move GSEvent to Event, no longer a name collision 2021-04-14 15:37:21 +00:00
Hugo Sales
07422c4e1a [FORM] Added Symfony Form wrapper 2021-04-14 15:37:21 +00:00
Hugo Sales
6e6e50939b [CORE][Symfony] Fixed deprecation resultant from Symfony 5.1 upgrade
User Deprecated: Since symfony/framework-bundle 5.1: Using type
"Symfony\Component\Routing\RouteCollectionBuilder" for argument 1 of
method "App\Kernel:configureRoutes()" is deprecated, use
"Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator"
instead.
2021-04-14 15:37:21 +00:00
Hugo Sales
0ecb164e2e [TESTS][I18N] Added test for I18n::_m and I18nHelper::formatICU 2021-04-14 15:37:21 +00:00
Hugo Sales
15cf498e75 [I18N] Fix implementation of I18nHelper::formatICU 2021-04-14 15:37:21 +00:00
Hugo Sales
377965d100 [ROUTES] Add easier support for using TemplateController and improved documentation 2021-04-14 15:37:21 +00:00
Hugo Sales
c9b0e994c1 [I18N] Small fixes. Still broken, though :') 2021-04-14 15:37:21 +00:00
Hugo Sales
daf4f0727d [AUTOLOAD] Always autoload _m file 2021-04-14 15:37:21 +00:00
Hugo Sales
652c3b5d62 [DEPENDENCY] Upgrade Symfony framework from 5.0 to 5.1 2021-04-14 15:37:21 +00:00
Hugo Sales
95764a0c48 [DEPENDENCY][DEV] Added Symfony Bridge PHPUnit 2021-04-14 15:37:21 +00:00
Hugo Sales
97e9991d85 [GIT] Updated gitignore 2021-04-14 15:37:21 +00:00
Hugo Sales
26be897578 [I18N] Overhaul _m() implementation to support ICU message formats 2021-04-14 15:37:21 +00:00
Hugo Sales
b15fb50194 [I18N] Dumped english translation files 2021-04-14 15:37:21 +00:00
Hugo Sales
d7218535dd [TOOLS] Small fix to composer install hook 2021-04-14 15:37:21 +00:00
Hugo Sales
3108d82a4d [I18N] Added ability to call _m_dynamic from any class, allowing it to define translations for dynamic-valued calls to _m 2021-04-14 15:37:21 +00:00
Hugo Sales
d5fa31a6f5 [TOOLS] Improve configure script to disallow reserved database names 2021-04-14 15:37:21 +00:00
Hugo Sales
a8cd9034ff [I18N] Custom translation extractor based on Symfony's PhpExtractor, since we use instead of 2021-04-14 15:37:21 +00:00
Hugo Sales
d73840352b [I18N] Refactor since rfc/use-static-function is not implemented
As the above mentioned RFC is not implemented, `_m` needs to be
outside of the I18n class, otherwise it would have to always be called
with `I18n::_m`.
2021-04-14 15:37:21 +00:00
Hugo Sales
766eac8467 [ROUTES] Add static wrapper around Symfony's router 2021-04-14 15:37:20 +00:00
Hugo Sales
0fe5ae7675 [CORE] Refactoring core 2021-04-14 15:37:20 +00:00
Hugo Sales
66c4ab7e24 [UI][CONFIG] Added admin configuration form 2021-04-14 15:37:20 +00:00
Hugo Sales
34f49edf2c [I18N] Fix i18n and add default domain 'Core' 2021-04-14 15:37:20 +00:00
Hugo Sales
27bb76706c [DEFAULTS] Fix default config loading logic 2021-04-14 15:37:20 +00:00
Hugo Sales
ce00acdb39 [TOOLS] Fixed all licence blocks, to use the same, foldable, format 2021-04-14 15:37:20 +00:00
Hugo Sales
e5a97611d0 [DEPENDENCY] Added alchemy/zippy, which adds support for multiple archive formats. Used to allow theme uploads in zip, tar, gz, or other formats 2021-04-14 15:37:20 +00:00
Hugo Sales
d2f49e56bc [DOCUMENTATION][DEFAULTS] Documented all defaults and updated some. Restructured other documentation. 2021-04-14 15:37:20 +00:00
Hugo Sales
520989bc59 [DEFAULTS] Remove deprecated defaults and convert them to snake_case 2021-04-14 15:37:20 +00:00
Hugo Sales
2407853970 [GIT] Added docker-compose to gitignore, in preparation for using a script to generate them 2021-04-14 15:37:20 +00:00
Hugo Sales
ccc0d7d401 [DATABASE] Change the way defaults are loaded, bulk insert, reload everything in debug mode, only on http requests (not command line) 2021-04-14 15:37:20 +00:00
Hugo Sales
ac68436b0b [TOOLS] Update install scripts 2021-04-14 15:37:20 +00:00
Hugo Sales
b0fece57ea [DATABASE] Fix 'relation config doesn't exist' 2021-04-14 15:37:20 +00:00
Hugo Sales
7dda377a79 [DATABASE] Postgres doesn't understand '0000-00-00 00:00:00' for datetime, use '-infinity' 2021-04-14 15:37:20 +00:00
Hugo Sales
4a754553f7 [DOCKER] Change postgres data path to the correct one 2021-04-14 15:37:20 +00:00
Hugo Sales
074797384d [DATABASE][CONFIG] Loading defaults into database, doctrine static wrapper 2021-04-14 15:37:20 +00:00
Hugo Sales
7718b167c3 [DATABASE][CONFIG] Bring default configs from V2 and implement DATABASE wrapper 2021-04-14 15:37:20 +00:00
Hugo Sales
a2f5b77ff0 [ASSETS] Import old favicon.ico 2021-04-14 15:37:20 +00:00
Hugo Sales
40ec37bd27 [CORE][UTIL] Moved classes from util to core
And splitted up Common
2021-04-14 15:37:20 +00:00
Hugo Sales
0d5f66e8b8 [FORMATTING] Cherry-pick of Diogo's 763ac735c0758624ebd5957993dc0676b865927a 2021-04-14 15:37:20 +00:00
Diogo Cordeiro
c67cf336d4 [DOCKER][BOOTSTRAP] Add option to use a self signed cert 2021-04-14 15:37:20 +00:00
Diogo Cordeiro
4efbf9361c [DOCUMENTATION][TOOL] Small bug fixes and docblock elaboration 2021-04-14 15:37:20 +00:00
Hugo Sales
87a768ac8d [CORE] Rename GNU social constants 2021-04-14 15:37:09 +00:00
Hugo Sales
26ee98a224 [DOCUMENTATION] Updated INSTALL.md to reflect the fact that a CNAME record can be used directly 2021-04-14 15:37:09 +00:00
Hugo Sales
5c1851028a [DOCUMENTATION] Import installation instructions for installing without docker from V2 2021-04-14 15:37:09 +00:00
Hugo Sales
f0b8f91a75 [DOCKER] Small fixes to docker setup, imported from V2 2021-04-14 15:37:09 +00:00
Hugo Sales
70fac546da [DOCUMENTATION] Added a code walkthrough document, which explains how the codebase works 2021-04-14 15:37:09 +00:00
Hugo Sales
80755fc6e2 [DOCUMENTATION] Added install documentation 2021-04-14 15:37:09 +00:00
Hugo Sales
feb3c16b3f [TOOLS] Updated install script to also support mariadb 2021-04-14 15:37:09 +00:00
Hugo Sales
cef20e1332 [TOOLS][DOCKER] Further fixes in the docker environment and fixed the install script 2021-04-14 15:37:09 +00:00
Hugo Sales
3b50815422 [DOCKER] Fixed docker environment to properly configure the app environment 2021-04-14 15:37:09 +00:00
Hugo Sales
33270dabf3 [TOOLS] Added script to configure the installation and to bootstrap certificate creation with Let's Encrypt 2021-04-14 15:37:09 +00:00
Hugo Sales
a97c511c7a [TOOLS][SSL] Added bin/boostrap_certificates.sh, allowing for easy configuration of SSL certificates with Let's Encrypt 2021-04-14 15:37:09 +00:00
Hugo Sales
3b5789639b [TOOLS][DOCUMENTATION] Improvements to entity generation script 2021-04-14 15:36:35 +00:00
Hugo Sales
04a59d22a6 [DOCUMENTATION] Added generated diagram 2021-04-14 15:36:35 +00:00
Hugo Sales
cb1944aca9 [DOCUMENTATION][TOOLS] Wrote a tool to generate entity diagrams from the database definition 2021-04-14 15:36:35 +00:00
Hugo Sales
c2add5e1d1 [UTIL] Wrote HTML library to convert arrays to html 2021-04-14 15:36:35 +00:00
Hugo Sales
a72e0a53e7 [GITIGNORE] Add file folder to gitignore 2021-04-14 15:36:35 +00:00
Hugo Sales
3ad81ab730 [DATABASE] Changed the type of the 'id' field of the ProfileList table from serial to int, as doctrine complains otherwise 2021-04-14 15:36:35 +00:00
Hugo Sales
2afb15ee02 [TOOLS][CS-FIX] Altered some php-cs-fix rules 2021-04-14 15:36:35 +00:00
Hugo Sales
160b811669 [DATABASE][AUTOCODE] Update autocode to use \DateTimeInterface instead of DateTime 2021-04-14 15:36:35 +00:00
Hugo Sales
fe603928e2 [TOOLS] Fix the generate_entities_fields script 2021-04-14 15:36:35 +00:00
Hugo Sales
57298da60e [SCHEMADEF] Bug fixes 2021-04-14 15:36:35 +00:00
Hugo Sales
d14ac1edf6 [DATABASE] Add missing table names 2021-04-14 15:36:35 +00:00
Hugo Sales
8ca49ab511 [MODULES] Fix small error in modules manager 2021-04-14 15:36:35 +00:00
Hugo Sales
04202b59ef [DATABASE][AUTOCODE] Autogenerated fields, setters and getters for each entity 2021-04-14 15:36:35 +00:00
Hugo Sales
4bc3eabd29 [TOOLS][AUTOCODE] Fixed generate_entities script 2021-04-14 15:36:35 +00:00
Hugo Sales
36bc871c65 [TOOLS] Change autocode tag to allow editor folding 2021-04-14 15:36:35 +00:00
Hugo Sales
1589f6e26f [DATABASE] Removed calls to common_config 2021-04-14 15:36:35 +00:00
Hugo Sales
b52f0c795e [FORMATTING] Changed license block format to allow folding 2021-04-14 15:36:35 +00:00
Hugo Sales
8f13d331ad [DATABASE] Extracted schemaDef method from old files and refactored onto new files 2021-04-14 15:36:35 +00:00
Hugo Sales
b46e3d5bf4 [COMMON] Added toCamelCase and toSnakeCase functions 2021-04-14 15:36:35 +00:00
Hugo Sales
8a8d0f1dcd [TOOLS] Add script used to port from old class files to entities 2021-04-14 15:36:35 +00:00
Hugo Sales
e3ef58bd8e [CORE][DATABASE] Import old classes folder into src/Entity 2021-04-14 15:36:35 +00:00
Hugo Sales
57f7f40fa9 [DATABASE] Remove testing entity 2021-04-14 15:36:35 +00:00
Hugo Sales
7e4aacd342 [TOOLS] Add command which imports a file with it's history 2021-04-14 15:36:35 +00:00
Hugo Sales
1caab62200 [MODULES] Rename extensions to modules, add example plugin, change plugin location 2021-04-14 15:36:35 +00:00
Hugo Sales
6c8da48efa [DOCUMENTATION] Document All The Things! 2021-04-14 15:36:35 +00:00
Hugo Sales
10a304ab83 [CORE][ROUTES] Implemented custom router, with an interface similar to the old one, which allows routes to be seperated into files 2021-04-14 15:36:35 +00:00
Hugo Sales
a1d83bd2a8 [COMMAND][EVENTS] Added command to list events and handlers, and search by regex 2021-04-14 15:36:35 +00:00
Hugo Sales
df6da4d941 [CORE][COMMAND] Register internal structures on command event 2021-04-14 15:36:35 +00:00
Hugo Sales
d8d2ad3e10 [CORE][EXTENSIONS] Added extension (modules, plugins) loading and test plugin, which is able to handle events 2021-04-14 15:36:35 +00:00
Hugo Sales
2f5bdeed62 [CORE][SCHEMADEF] Clean up SchemaDef compiler pass 2021-04-14 15:36:35 +00:00
Hugo Sales
40b0812d9b [CS-FIXER] Updated cs-fixer rules and added a temporary exception to the src/Entity folder (awaiting pr merge) 2021-04-14 15:36:35 +00:00
Hugo Sales
26ea268fed [DOCTRINE][SCRIPT] Created a script to generate the class fields and accessors from the schema definition 2021-04-14 15:36:35 +00:00
Hugo Sales
04a5d2bfef [DOCTRINE][SCHEMADEF] Small refactoring 2021-04-14 15:36:35 +00:00
Hugo Sales
06d76a649f [CORE][DOCTRINE] Implement SchemaDefDriver, which transforms the old syntax from to doctrine's metadata 2021-04-14 15:36:35 +00:00
Hugo Sales
b0960c5345 [DOCTRINE] Configure cli-config for doctrine console and ensure DATABASE is set to UTF-8 2021-04-14 15:36:35 +00:00
Hugo Sales
6546c088d9 [DOCTRINE][SCHEMADEF] Create a new metadata driver to allow us to continue using static schemaDef functions
This has the benefit of requiring fewer code changes, as well as providing a better isolation
between GNU social and symfony, useful in case the framework needs to be changed
2021-04-14 15:36:35 +00:00
Hugo Sales
69550a1036 [COMPOSER] Update composer dependencies 2021-04-14 15:36:35 +00:00
Hugo Sales
027726205d [CORE][I18N] Fix the translation system 2021-04-14 15:36:35 +00:00
Hugo Sales
4d2b8c26fa [CORE][I18N] Port the translation system to rely on symfony's 2021-04-14 15:36:35 +00:00
Hugo Sales
cc47efe4b5 [CORE][EVENTS] Bring existing Events and Boostrapper back
- Adapt the existing event system to rely on Symfony's event dispatcher
2021-04-14 15:36:35 +00:00
Hugo Sales
c0e53ae658 [CORE][ROUTES] Example route 2021-04-14 15:36:35 +00:00
Hugo Sales
5ec23f2200 [DOCKER] Updated dockerfile to add memcached 2021-04-14 15:36:35 +00:00
Hugo Sales
51d1ea4f8f [DOCKER] Added preliminary docker container 2021-04-14 15:36:35 +00:00
Hugo Sales
fff0ecd1cd [COMPOSER] Update composer packages 2021-04-14 15:36:35 +00:00
Hugo Sales
86b5bfe075 [V3] Big Bang
Beginning anew, this time with a modern framework: symfony
2021-04-14 15:36:35 +00:00
f01331671c [V3] Big Crunch
And so, just as it begins, so too must it end
One should not dwell and stall, for more is to come
2021-04-14 15:36:13 +00:00
20049 changed files with 47914 additions and 3124031 deletions

43
.env Normal file
View File

@ -0,0 +1,43 @@
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env contains default values for the environment variables needed by the app
# * .env.local uncommitted file with local overrides
# * .env.$APP_ENV committed environment-specific defaults
# * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=6a9ac3a09c73230107373e8e0b71e0a3
#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
#TRUSTED_HOSTS='^(localhost|example\.com)$'
###< symfony/framework-bundle ###
###> symfony/mailer ###
# MAILER_DSN=smtp://localhost
###< symfony/mailer ###
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
# For a PostgreSQL database, use: "postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=11&charset=utf8"
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
DATABASE_URL=postgresql://postgres:foobar@postgres:5432/social
#?serverVersion=11&charset=utf8
###< doctrine/doctrine-bundle ###
SHELL_VERBOSITY=3
###> symfony/messenger ###
# Choose one of the transports below
# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
MESSENGER_TRANSPORT_DSN_HIGH=doctrine://default?queue_name=high
MESSENGER_TRANSPORT_DSN_LOW=doctrine://default?queue_name=low
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
###< symfony/messenger ###

6
.env.test Normal file
View File

@ -0,0 +1,6 @@
# define your env variables for the test env here
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther
DATABASE_URL=postgresql://postgres:password@db:5432/social

80
.gitignore vendored
View File

@ -1,19 +1,63 @@
avatar/
files/
file/
local/
logs/
log/
run/
config.php
.htaccess
httpd.conf
dataobject.ini
*.bak
*.orig
*.rej
TODO.rym
config-*.php
good-config.php
*.mo
###> symfony/framework-bundle ###
/.env.local
/.env.local.php
/.env.*.local
/config/secrets/prod/prod.decrypt.private.php
/public/bundles/
/var/
/vendor/
###< symfony/framework-bundle ###
###> symfony/phpunit-bridge ###
.phpunit
.phpunit.result.cache
/phpunit.xml
###< symfony/phpunit-bridge ###
###> friendsofphp/php-cs-fixer ###
!.php_cs
/.php_cs.cache
###< friendsofphp/php-cs-fixer ###
###> phpunit/phpunit ###
/phpunit.xml
.phpunit.result.cache
###< phpunit/phpunit ###
DOCUMENTATION/database/*
!DOCUMENTATION/database/database.pdf
docker/certbot/.files
docker/certbot/www
docker/*/*.env
docker/mail/etc/hostname
docker/mail/etc/hosts
docker/mail/etc/resolv.conf
docker/mail/config/aliases.db
docker/mail/config/domains.db
docker/mail/config/mailboxes.db
docker/mail/config/passwd.db
docker/mail/etc/service/*
!docker/mail/etc/service/*/run
!docker/testing/*
!docker/testing/docker-compose.yaml
docker/testing/*~
docker-compose.yaml
composer.local.json
social.local.yaml
# V2
config.php
/file
notes
.test_coverage_report
.phpunit_cache

278
.php_cs Normal file
View File

@ -0,0 +1,278 @@
<?php
/*
* This document has been generated with
* https://mlocati.github.io/php-cs-fixer-configurator/#version:2.16.1|configurator
* you can change this configuration by importing this file.
*/
return PhpCsFixer\Config::create()
->setRiskyAllowed(true)
->setRules([
// Each line of multi-line DocComments must have an asterisk [PSR-5] and must be aligned with the first one.
'align_multiline_comment' => ['comment_type' => 'phpdocs_like'],
// PHP arrays should be declared using the configured syntax.
'array_syntax' => ['syntax' => 'short'],
// Binary operators should be surrounded by space as configured.
'binary_operator_spaces' => [
'default' => 'align_single_space_minimal',
'operators' => ['??' => 'align'],
],
// There MUST be one blank line after the namespace declaration.
'blank_line_after_namespace' => true,
// Each element of an array must be indented exactly once.
'array_indentation' => true,
// Ensure there is no code on the same line as the PHP open tag and it is followed by a blank line.
'blank_line_after_opening_tag' => false,
// The body of each structure MUST be enclosed by braces. Braces should be properly placed. Body of braces should be properly indented.
'braces' => ['allow_single_line_closure' => true, 'position_after_functions_and_oop_constructs' => 'next',
// 'allow_single_line_functions' => true, // Awaiting PR merge...
],
// A single space or none should be between cast and variable.
'cast_spaces' => true,
// Class, trait and interface elements must be separated with one blank line.
'class_attributes_separation' => false,
// Whitespace around the keywords of a class, trait or interfaces definition should be one space.
'class_definition' => ['single_item_single_line' => true, 'single_line' => true],
// Using `isset($var) &&` multiple times should be done in one call.
'combine_consecutive_issets' => true,
// Calling `unset` on multiple items should be done in one call.
'combine_consecutive_unsets' => true,
// Remove extra spaces in a nullable typehint.
'compact_nullable_typehint' => true,
// Concatenation should be spaced according configuration.
'concat_space' => ['spacing' => 'one'],
// The PHP constants `true`, `false`, and `null` MUST be written using the correct casing.
'constant_case' => true,
// Equal sign in declare statement should be surrounded by spaces or not following configuration.
'declare_equal_normalize' => ['space' => 'single'],
// Replaces `dirname(__FILE__)` expression with equivalent `__DIR__` constant.
'dir_constant' => true,
// PHP code MUST use only UTF-8 without BOM (remove BOM).
'encoding' => true,
// Replace deprecated `ereg` regular expression functions with `preg`.
'ereg_to_preg' => true,
// Escape implicit backslashes in strings and heredocs to ease the understanding of which are special chars interpreted by PHP and which not.
'escape_implicit_backslashes' => true,
// Add curly braces to indirect variables to make them clear to understand. Requires PHP >= 7.0.
'explicit_indirect_variable' => true,
// Converts implicit variables into explicit ones in double-quoted strings or heredoc syntax.
'explicit_string_variable' => true,
// PHP code must use the long `<?php` tags or short-echo `<?=` tags and not other tag variations.
'full_opening_tag' => true,
// Transforms imported FQCN parameters and return types in function arguments to short version.
'fully_qualified_strict_types' => true,
// Spaces should be properly placed in a function declaration.
'function_declaration' => ['closure_function_spacing' => 'one'],
// Ensure single space between function's argument and its typehint.
'function_typehint_space' => true,
// Pre- or post-increment and decrement operators should be used if possible.
'increment_style' => true,
// Code MUST use configured indentation type.
'indentation_type' => true,
// All PHP files must use same line ending.
'line_ending' => true,
// Use `&&` and `||` logical operators instead of `and` and `or`.
'logical_operators' => true,
// PHP keywords MUST be in lower case.
'lowercase_keywords' => true,
// Class static references `self`, `static` and `parent` MUST be in lower case.
'lowercase_static_reference' => true,
// Magic constants should be referred to using the correct casing.
'magic_constant_casing' => true,
// Magic method definitions and calls must be using the correct casing.
'magic_method_casing' => true,
// Replaces `intval`, `floatval`, `doubleval`, `strval` and `boolval` function calls with according type casting operator.
'modernize_types_casting' => true,
// DocBlocks must start with two asterisks, multiline comments must start with a single asterisk, after the opening slash. Both must end with a single asterisk before the closing slash.
'multiline_comment_opening_closing' => true,
// Forbid multi-line whitespace before the closing semicolon or move the semicolon to the new line for chained calls.
'multiline_whitespace_before_semicolons' => true,
// Add leading `\` before constant invocation of internal constant to speed up resolving. Constant name match is case-sensitive, except for `null`, `false` and `true`.
'native_constant_invocation' => false,
// Function defined by PHP should be called using the correct casing.
'native_function_casing' => true,
// Add leading `\` before function invocation to speed up resolving.
'native_function_invocation' => false,
// Native type hints for functions should use the correct case.
'native_function_type_declaration_casing' => true,
// There should be no empty lines after class opening brace.
'no_blank_lines_after_class_opening' => true,
// There should not be blank lines between docblock and the documented element.
'no_blank_lines_after_phpdoc' => true,
// There must be a comment when fall-through is intentional in a non-empty case body.
'no_break_comment' => true,
// The closing `? >` tag MUST be omitted from files containing only PHP.
'no_closing_tag' => true,
// There should not be any empty comments.
'no_empty_comment' => true,
// There should not be empty PHPDoc blocks.
'no_empty_phpdoc' => true,
// Remove useless semicolon statements.
'no_empty_statement' => true,
// Removes extra blank lines and/or blank lines following configuration.
'no_extra_blank_lines' => true,
// Remove leading slashes in `use` clauses.
'no_leading_import_slash' => true,
// The namespace declaration line shouldn't contain leading whitespace.
'no_leading_namespace_whitespace' => true,
// Either language construct `print` or `echo` should be used.
'no_mixed_echo_print' => true,
// Operator `=>` should not be surrounded by multi-line whitespaces.
'no_multiline_whitespace_around_double_arrow' => true,
// Properties MUST not be explicitly initialized with `null` except when they have a type declaration (PHP 7.4).
'no_null_property_initialization' => true,
// Short cast `bool` using double exclamation mark should not be used.
'no_short_bool_cast' => true,
// Replace short-echo `<?=` with long format `<?php echo` syntax.
'no_short_echo_tag' => true,
// Single-line whitespace before closing semicolon are prohibited.
'no_singleline_whitespace_before_semicolons' => true,
// When making a method or function call, there MUST NOT be a space between the method or function name and the opening parenthesis.
'no_spaces_after_function_name' => true,
// There MUST NOT be spaces around offset braces.
'no_spaces_around_offset' => true,
// There MUST NOT be a space after the opening parenthesis. There MUST NOT be a space before the closing parenthesis.
'no_spaces_inside_parenthesis' => true,
// Replaces superfluous `elseif` with `if`.
'no_superfluous_elseif' => false,
// Remove trailing commas in list function calls.
'no_trailing_comma_in_list_call' => true,
// PHP single-line arrays should not have trailing comma.
'no_trailing_comma_in_singleline_array' => true,
// Remove trailing whitespace at the end of non-blank lines.
'no_trailing_whitespace' => true,
// There MUST be no trailing spaces inside comment or PHPDoc.
'no_trailing_whitespace_in_comment' => true,
// Removes unneeded parentheses around control statements.
'no_unneeded_control_parentheses' => true,
// Removes unneeded curly braces that are superfluous and aren't part of a control structure's body.
'no_unneeded_curly_braces' => true,
// In function arguments there must not be arguments with default values before non-default ones.
'no_unreachable_default_argument_value' => true,
// Variables must be set `null` instead of using `(unset)` casting.
'no_unset_cast' => false,
// Properties should be set to `null` instead of using `unset`.
'no_unset_on_property' => true,
// Unused `use` statements must be removed.
'no_unused_imports' => true,
// There should not be useless `else` cases.
'no_useless_else' => false,
// There should not be an empty `return` statement at the end of a function.
'no_useless_return' => true,
// In array declaration, there MUST NOT be a whitespace before each comma.
'no_whitespace_before_comma_in_array' => true,
// Remove trailing whitespace at the end of blank lines.
'no_whitespace_in_blank_line' => true,
// Remove Zero-width space (ZWSP), Non-breaking space (NBSP) and other invisible unicode symbols.
'non_printable_character' => true,
// Array index should always be written by using square braces.
'normalize_index_brace' => true,
// There should not be space before or after object `T_OBJECT_OPERATOR` `->`.
'object_operator_without_whitespace' => true,
// Ordering `use` statements.
'ordered_imports' => true,
// Orders the elements of classes/interfaces/traits.
'ordered_class_elements' => false,
// PHPUnit assertion method calls like `->assertSame(true, $foo)` should be written with dedicated method like `->assertTrue($foo)`.
'php_unit_construct' => true,
// PHPUnit annotations should be a FQCNs including a root namespace.
'php_unit_fqcn_annotation' => true,
// Enforce camel (or snake) case for PHPUnit test methods, following configuration.
'php_unit_method_casing' => true,
// Usage of PHPUnit's mock e.g. `->will($this->returnValue(..))` must be replaced by its shorter equivalent such as `->willReturn(...)`.
'php_unit_mock_short_will_return' => true,
// Order `@covers` annotation of PHPUnit tests.
'php_unit_ordered_covers' => true,
// Changes the visibility of the `setUp()` and `tearDown()` functions of PHPUnit to `protected`, to match the PHPUnit TestCase.
'php_unit_set_up_tear_down_visibility' => true,
// PHPUnit methods like `assertSame` should be used instead of `assertEquals`.
'php_unit_strict' => true,
// Calls to `PHPUnit\Framework\TestCase` static methods must all be of the same type, either `$this->`, `self::` or `static::`.
'php_unit_test_case_static_method_calls' => true,
// PHPDoc should contain `@param` for all params.
'phpdoc_add_missing_param_annotation' => true,
// All items of the given phpdoc tags must be either left-aligned or (by default) aligned vertically.
'phpdoc_align' => true,
// Docblocks should have the same indentation as the documented subject.
'phpdoc_indent' => true,
// Fix PHPDoc inline tags, make `@inheritdoc` always inline.
'phpdoc_inline_tag' => true,
// `@access` annotations should be omitted from PHPDoc.
'phpdoc_no_access' => true,
// No alias PHPDoc tags should be used.
'phpdoc_no_alias_tag' => true,
// Annotations in PHPDoc should be ordered so that `@param` annotations come first, then `@throws` annotations, then `@return` annotations.
'phpdoc_order' => true,
// The type of `@return` annotations of methods returning a reference to itself must the configured one.
'phpdoc_return_self_reference' => true,
// Scalar types should always be written in the same form. `int` not `integer`, `bool` not `boolean`, `float` not `real` or `double`.
'phpdoc_scalar' => true,
// Annotations in PHPDoc should be grouped together so that annotations of the same type immediately follow each other, and annotations of a different type are separated by a single blank line.
'phpdoc_separation' => true,
// Single line `@var` PHPDoc should have proper spacing.
'phpdoc_single_line_var_spacing' => false,
// Removes extra blank lines after summary and after description in PHPDoc.
'phpdoc_trim_consecutive_blank_line_separation' => true,
// The correct case must be used for standard PHP types in PHPDoc.
'phpdoc_types' => true,
// Sorts PHPDoc types.
'phpdoc_types_order' => true,
// `@var` and `@type` annotations must have type and name in the correct order.
'phpdoc_var_annotation_correct_order' => true,
// Class names should match the file name.
'psr4' => true,
// There should be one or no space before colon, and one space after it in return type declarations, according to configuration.
'return_type_declaration' => true,
// Inside class or interface element `self` should be preferred to the class name itself.
'self_accessor' => true,
// Instructions must be terminated with a semicolon.
'semicolon_after_instruction' => true,
// Cast shall be used, not `settype`.
'set_type_to_cast' => true,
// Cast `(boolean)` and `(integer)` should be written as `(bool)` and `(int)`, `(double)` and `(real)` as `(float)`, `(binary)` as `(string)`.
'short_scalar_cast' => true,
// Converts explicit variables in double-quoted strings and heredoc syntax from simple to complex format (`${` to `{$`).
'simple_to_complex_string_variable' => true,
// There should be exactly one blank line before a namespace declaration.
'single_blank_line_before_namespace' => true,
// There MUST be one use keyword per declaration.
'single_import_per_statement' => true,
// There MUST NOT be more than one property or constant declared per statement.
'single_class_element_per_statement' => true,
// Each namespace use MUST go on its own line and there MUST be one blank line after the use statements block.
'single_line_after_imports' => true,
// Single-line comments and multi-line comments with only one line of actual content should use the `//` syntax.
'single_line_comment_style' => true,
// Convert double quotes to single quotes for simple strings.
'single_quote' => true,
// Each trait `use` must be done as single statement.
'single_trait_insert_per_statement' => true,
// Fix whitespace after a semicolon.
'space_after_semicolon' => true,
// Increment and decrement operators should be used if possible.
'standardize_increment' => true,
// Replace all `<>` with `!=`.
'standardize_not_equals' => true,
// A case should be followed by a colon and not a semicolon.
'switch_case_semicolon_to_colon' => true,
// Removes extra spaces between colon and case value.
'switch_case_space' => true,
// Standardize spaces around ternary operator.
'ternary_operator_spaces' => true,
// PHP multi-line arrays should have a trailing comma.
'trailing_comma_in_multiline_array' => true,
// Unary operators should be placed adjacent to their operands.
'unary_operator_spaces' => true,
// Visibility MUST be declared on all properties and methods; `abstract` and `final` MUST be declared before the visibility; `static` MUST be declared after the visibility.
'visibility_required' => true,
// In array declaration, there MUST be a whitespace after each comma.
'whitespace_after_comma_in_array' => true,
])
->setFinder(PhpCsFixer\Finder::create()
->exclude('vendor')
->exclude('var')
->exclude('docker')
->exclude('src/Entity')
->notPath('src/Core/DB/DefaultSettings.php')
->in(__DIR__)
);

View File

@ -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)

View File

@ -1,95 +0,0 @@
## Code of Conduct
### Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
### Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
### Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
### Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
### Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at mattl@gnu.org. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
### Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
## The Code of Conflict
GNU social has a high submission standard and we want to keep quality code in the
codebase and bad code out of it. As such your code will be closely scrutinized,
and you might take this criticism personally. Please understand that this is
meant to keep the standards of the codebase up, and isn't meant personally. All
the same, this isn't an excuse for poor behaviour, and a reviewer shouldn't be
misbehaving towards submitters.
If however, anyone feels personally abused, threatened, or otherwise
uncomfortable due to this process, that is not acceptable. If so, please
contact the project team at mattl@gnu.org, and they will work to resolve the issue
to the best of their ability.
As a reviewer of code, please strive to keep things civil and focused on the
technical issues involved. We are all humans, and frustrations can be high on
both sides of the process. Try to keep in mind the immortal words of Bill and
Ted, "Be excellent to each other."

View File

@ -1 +0,0 @@
GNU social's contributing resources and instructions are made available at [DOCUMENTATION/DEVELOPERS](https://notabug.org/diogo/gnu-social/src/nightly/DOCUMENTATION/DEVELOPERS).

661
COPYING
View File

@ -1,661 +0,0 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.

View File

@ -8,54 +8,55 @@ anyone's been overlooked in error.
Current team
------------
* Matt Lee
* Mikael Nordfeldth
* Diogo Cordeiro
* Bruno Casteleiro
* Miguel Dantas
* Alexei Sorokin
* Bruno Casteleiro
* Diogo Cordeiro
* Hugo Sales
Additional Contributors
-----------------------
* Ciaran Gultnieks
* Michael Landers
* Ori Avtalion
* Garret Buell
* Mike Cochrane
* Matthew Gregg
* Sean Murphy
* Leslie Michael Orchard
* Eric Helgeson
* Ken Sedgwick
* Brian Hendrickson
* Tobias Diekershoff
* Dan Moore
* Fil
* Jeff Mitchell
* Brenda Wallace
* Jeffery To
* Federico Marani
* mEDI
* Brett Taylor
* Brigitte Schuster
* Craig Andrews
* Donald Robertson
* Deb Nicholson
* Ian Denhart
* Steven DuBois
* Blaine Cook
* Henry Story
* Melvin Carvalho
* Stéphane Bérubé
* Akio
* Maiyannah Bishop
* Blaine Cook
* Bob Mottram
* David Yip
* Neil E Hodges
* Moonman
* Normandy
* Verius
* Brenda Wallace
* Brett Taylor
* Brian Hendrickson
* Brigitte Schuster
* Ciaran Gultnieks
* Craig Andrews
* Daniel Supernault
* Dan Moore
* David Yip
* Deb Nicholson
* Donald Robertson
* Eric Helgeson
* Federico Marani
* Fil
* Garret Buell
* Henry Story
* Ian Denhart
* Jeffery To
* Jeff Mitchell
* Ken Sedgwick
* Leslie Michael Orchard
* Maiyannah Bishop
* Matthew Gregg
* Matt Lee
* mEDI
* Melvin Carvalho
* Michael Landers
* Miguel Dantas
* Mikael Nordfeldth
* Mike Cochrane
* Moonman
* Neil E Hodges
* Normandy
* Ori Avtalion
* Sean Murphy
* Stéphane Bérubé
* Steven DuBois
* Tobias Diekershoff
* Verius
Credits for StatusNet
--------------
@ -64,24 +65,24 @@ Leads
* Zach Copley
Team
* Earle Martin
* Marie-Claude Doyon
* Sarven Capadisli
* Robin Millette
* Brion Vibber
* James Walker
* Samantha Doherty
* Florian Biree
* Erik Stambaugh
* 'drry'
* Gina Haeussge
* Tryggvi Björgvinsson
* Adrian Lang
* Ori Avtalion
* Meitar Moscovitz
* Ken Sheppardson
* Simon Waters, Surevine
* Brion Vibber
* 'drry'
* Earle Martin
* Erik Stambaugh
* Florian Biree
* Gina Haeussge
* James Walker
* Joshua Judson Rosen (rozzin)
* Ken Sheppardson
* Marie-Claude Doyon
* Meitar Moscovitz
* Ori Avtalion
* Robin Millette
* Samantha Doherty
* Sarven Capadisli
* Simon Waters, Surevine
* Tryggvi Björgvinsson
Translators
-----------

View File

@ -1,61 +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/>.
/**
* Description of this file.
*
* @package samples
* @author Diogo Cordeiro <diogo@fc.up.pt>
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
*/
namespace samples;
defined('GNUSOCIAL') || die();
require_once __DIR__ . DIRECTORY_SEPARATOR . 'SampleHandler.php';
/**
* Description of this class.
*
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
*/
class MySampleClass
{
/**
* Constructor for the sample class.
*
* @param string $dummy_word just because.
* @param int $result another just because.
*/
public function __construct(string $dummy_word = '', ?int $result = null)
{
global $demo;
$this->niceWorld();
}
/**
* How cool is this function.
*
* @return string
*/
public function niceWorld(): string
{
return 'hello, world.';
}
}

View File

@ -1,293 +0,0 @@
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
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 :)
Strings
-------------------------------------------------------------------------------
Use `'` instead of `"` for strings, where substitutions aren't required.
This is a performance issue, and prevents a lot of inconsistent coding styles.
When using substitutions, use curly braces around your variables - like so:
$var = "my_var: {$my_var}";
Comments and Documentation
-------------------------------------------------------------------------------
Comments go on the line ABOVE the code, NOT to the right of the code, unless it is very short.
All functions and methods are to be documented using PhpDocumentor - https://docs.phpdoc.org/guides/
File Headers
-------------------------------------------------------------------------------
File headers follow a consistent format, as such:
// 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/>.
/**
* Description of this file.
*
* @package samples
* @author Diogo Cordeiro <diogo@fc.up.pt>
* @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
*/
Please use it.
A few notes:
* The description of the file doesn't have to be exhaustive. Rather it's
meant to be a short summary of what's in this file and what it does. Try
to keep it to 1-5 lines. You can get more in-depth when documenting
individual functions!
* You'll probably see files with multiple authors, this is by
design - many people contributed to GNU social or its forebears! If you
are modifying an existing file, APPEND your own author line, and update
the copyright year if needed. Do not replace existing ones.
You may find `boilerplate.php` useful when creating a new file from scratch.
Paragraph spacing
-------------------------------------------------------------------------------
Where-ever possible, try to keep the lines to 80 characters. Don't
sacrifice readability for it though - if it makes more sense to have it in
one longer line, and it's more easily read that way, that's fine.
With assignments, avoid breaking them down into multiple lines unless
neccesary, except for enumerations and arrays.
'If' statements format
-------------------------------------------------------------------------------
Use switch statements where many else if's are going to be used. Switch/case is faster
if ($var == 'example') {
echo 'This is only an example';
} else {
echo 'This is not a test. This is the real thing';
}
Do NOT make if statements like this:
if ($var == 'example'){ echo 'An example'; }
OR this
if($var = 'example')
echo "An {$var}";
Associative arrays
-------------------------------------------------------------------------------
Always use `[]` instead of `array()`. Associative arrays must be written in the
following manner:
$array = [
'var' => 'value',
'var2' => 'value2'
];
Note that spaces are preferred around the '=>'.
A note about shorthands
-------------------------------------------------------------------------------
Some short hands are evil:
- Use the long format for `<?php`. Do NOT use `<?`.
- Use the long format for `<?php` echo. Do NOT use `<?=`.
Naming conventions
-------------------------------------------------------------------------------
Respect PSR-12 first.
- Classes use PascalCase (e.g. MyClass).
- Functions/Methods use camelCase (e.g. myFunction).
- Variables use snake_case (e.g. my_variable).
A note on variable names, etc. It must be possible to understand what is meant
without neccesarialy seeing it in context, because the code that calls something
might not always make it clear.
So if you have something like:
$notice->post($contents);
Well I can easily tell what you're doing there because the names are straight-
forward and clear.
Something like this:
foo->bar();
Is much less clear.
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.
Use English
-------------------------------------------------------------------------------
All variables, classes, methods, functions and comments must be in English.
Bad english is easier to work with than having to babelfish code to work out
how it works.
Encoding
-------------------------------------------------------------------------------
Files should be in UTF-8 encoding with UNIX line endings.
No ending tag
-------------------------------------------------------------------------------
Files should not end with an ending php tag "?>". Any whitespace after the
closing tag is sent to the browser and cause errors, so don't include them.
Nesting Functions
-------------------------------------------------------------------------------
Avoid, if at all possible. When not possible, document the living daylights
out of why you're nesting it. It's not always avoidable, but PHP 5 has a lot
of obscure problems that come up with using nested functions.
If you must use a nested function, be sure to have robust error-handling.
This is a must and submissions including nested functions that do not have
robust error handling will be rejected and you'll be asked to add it.
Scoping
-------------------------------------------------------------------------------
Properly enforcing scope of functions is something many PHP programmers don't
do, but should.
In general:
* Variables unique to a class should be protected and use interfacing to
change them. This allows for input validation and making sure we don't have
injection, especially when something's exposed to the API, that any program
can use, and not all of them are going to be be safe and trusted.
* Variables not unique to a class should be validated prior to every call,
which is why it's generally not a good idea to re-use stuff across classes
unless there's significant performance gains to doing so.
* Classes should protect functions that they do not want overriden, but they
should avoid protecting the constructor and destructor and related helper
functions as this prevents proper inheritance.
Typecasting
-------------------------------------------------------------------------------
PHP is a soft-typed language and it falls to us developers to make sure that
we are using the proper inputs. Where ever possible use explicit type casting.
Where it in't, you're going to have to make sure that you check all your
inputs before you pass them.
All outputs should be cast as an explicit PHP type.
Not properly typecasting is a shooting offence. Soft types let programmers
get away with a lot of lazy code, but lazy code is buggy code, and frankly, I
don't want it in GNU social if it's going to be buggy.
Consistent exception handling
-------------------------------------------------------------------------------
Consistency is key to good code to begin with, but it is especially important
to be consistent with how we handle errors. GNU social has a variety of built-
in exception classes. Use them, wherever it's possible and appropriate, and
they will do the heavy lifting for you.
Additionally, ensure you clean up any and all records and variables that need
cleanup in a function using try { } finally { } even if you do not plan on
catching exceptions (why wouldn't you, though? That's silly.)
If you do not call an exception handler, you must, at a minimum, record errors
to the log using common_log(level, message)
Ensure all possible control flows of a function have exception handling and
cleanup, where appropriate. Don't leave endpoints with unhandled exceptions.
Try not to leave something in an error state if it's avoidable.
Return values
-------------------------------------------------------------------------------
All functions must return a value. Every single one. This is not optional.
If you are simply making a procedure call, for example as part of a helper
function, then return boolean TRUE on success, and the exception on failure.
When returning the exception, return the whole nine yards, which is to say the
actual PHP exception object, not just an error message.
All return values not the above should be type cast, and you should sanitize
anything returned to ensure it fits into the cast. You might technically make
an integer a string, for instance, but you should be making sure that integer
SHOULD be a string, if you're returning it, and that it is a valid return
value.
A vast majority of programming errors come down to not checking your inputs
and outputs properly, so please try to do so as best and thoroughly as you can.
Layout and Location of files
-------------------------------------------------------------------------------
`/actions/` contains files that determine what happens when something "happens":
for instance, when someone favourites or repeats a notice. Code that is
related to a "happening" should go here.
`/classes/` contains abstract definitions of certain "things" in the codebase
such as a user or notice. If you're making a new "thing", it goes here.
`/lib/` is basically the back-end. Actions will call something in here to get
stuff done usually, which in turn will probably manipulate information stored
in one or more records represented by a class.
`/extlib/` is where external libraries are located. If you include a new
external library, it goes here.
`/plugins/` This is a great way to modularize your own new features. If you want
to create new core features for GNU social, it is probably best to create a
module unless you absolutely must override or modify the core behaviours.

View File

@ -1,32 +0,0 @@
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,
but it will help you avoid common problems.
1. Ensure all code control paths in all functions return a value.
2. Ensure all exceptions are trapped in an exception class, or minimally,
written to the log with common_log
3. Ensure the coding format standards are adhered to (see coding_standards.md)
4. Ensure that any new class that deals in public data has a corresponding new
API endpoint.
5. Ensure that all new API endpoints sanitize inputs and outputs properly.
6. Ensure that your version of the code works with PHP 7 on a standard
LAMP and LEMP stack (Linux+Apache+MariaDB+PHP and Linux+nginx+MariaDB+PHP)
7. If implementing new database functions, ensure they work with MariaDB
and postgreSQL.
8. Ensure all data that federates does so properly and has mechanisms to
catch and accomodate for federation transmission failure.
9. Ensure that nothing is left in an error state when it is avoidable.
10. Ensure that all code submitted is properly documented.
11. Ensure that there are no PHP Strict Standards or Parse errors in the code.

File diff suppressed because it is too large Load Diff

View File

@ -1,350 +0,0 @@
Plugin Development
==================
SamplePlugin.php
----------------
Each plugin requires a main class to interact with the GNU social system.
The main class usually extends the Plugin class that comes with GNU social.
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:
```php
public function onSomeEvent($paramA, &$paramB): bool
{
if ($paramA == 'jed') {
throw new Exception(sprintf(_m("Invalid parameter %s"), $paramA));
}
$paramB = 'spock';
return true;
}
```
Event Handlers
--------------
Event handlers must return a Boolean value.
If they return false, all other event handlers for this event (in other plug-in)
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.
Installation
------------
To enable a plugin (like the SamplePlugin), 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`
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
'local/plugins/{$name}/'. All files related to the plugin, including images,
JavaScript, CSS, external libraries or PHP plugins 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']);
```
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']);
```
```php
class SamplePlugin extends Plugin
{
public $attr1 = null;
public $attr2 = null;
}
```
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
means continue processing, false means stop.
```php
public function initialize(): bool
{
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
{
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
provides an easy way to ensure a table's structure and availability.
By default, the schema is checked every time GNU social 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!
```php
public function onCheckSchema(): bool
{
$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')
]
);
return true;
}
```
Load related plugins when needed
--------------------------------
Most non-trivial plugins will require extra plugins 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.
By tradition, action classes typically have files named for the action, all
lower-case. Data classes are in files with the data class name, initial letter
capitalized.
Note that this method will be called for *all* overloaded classes, not just ones
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
{
$dir = __DIR__;
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;
}
}
```
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.
```php
public function onRouterInitialized($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.
Action Class
------------
The Action class provides a rich set of events to hook, as well as output methods.
```php
public function onEndPrimaryNav($action): bool
{
// '''common_local_url()''' gets the correct URL for the action name we provide
$action->menuItem(common_local_url('hello'),
_m('Hello'), _m('A warm greeting'), false, 'nav_hello');
return true;
}
public function onPluginVersion(&$versions): bool
{
$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.')
];
return true;
}
```
hello.php
---------
This section is taken directly from the 'hello.php'. ( plugins/Sample/hello.php )
Give a warm greeting to our friendly user.
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.
```php
class HelloAction extends Action
{
var $user = null;
var $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(array $args = []) as the first line
of this method to make sure the default argument-processing happens.
```php
public function prepare(array $args = []): bool
{
parent::prepare($args);
$this->user = common_current_user();
if (!empty($this->user)) {
$this->gc = User_greeting_count::inc($this->user->id);
}
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.
```php
public function handle(): void
{
parent::handle();
$this->showPage();
}
```
Title of this page
------------------
Override this method to show a custom title.
```php
public function title(): string
{
if (empty($this->user)) {
return _m('Hello');
} else {
return sprintf(_m('Hello, %s'), $this->user->nickname);
}
}
```
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
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
{
if (empty($this->user)) {
$this->element('p', ['class' => 'greeting'],
_m('Hello, stranger!'));
} else {
$this->element('p', ['class' => 'greeting'],
sprintf(_m('Hello, %s'), $this->user->nickname));
$this->element('p', ['class' => 'greeting_count'],
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 GNU social 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.
```php
public function isReadOnly($args): bool
{
return false;
}
```

View File

@ -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);
}
}

View File

@ -1,14 +0,0 @@
Fun sample plugin: tweaks input data and adds a 'Cornify' ( http://www.cornify.com ) widget to sidebar.
Installation
============
add "addPlugin('Awesomeness');"
to the bottom of your config.php
Settings
========
none
Example
=======
addPlugin('Awesomeness');

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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)."

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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 "תוסף מגניבות מוסיף עוד מגניבות להתקנה של סטטוסנט."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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."

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 &AMP; 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();

View File

@ -1,132 +0,0 @@
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* Plugin for testing ad layout
*
* 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 Ads
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @copyright 2010 StatusNet Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
if (!defined('STATUSNET')) {
exit(1);
}
/**
* Plugin for testing ad layout
*
* This plugin uses the UAPPlugin framework to output ad content. However,
* its ad content is just images with one red pixel stretched to the
* right size. It's mostly useful for debugging theme layout.
*
* To use this plugin, set the parameter for the ad size you want to use
* to true (or anything non-null). For example, to make a leaderboard:
*
* addPlugin('BlankAd', array('leaderboard' => true));
*
* @category Plugin
* @package StatusNet
* @author Evan Prodromou <evan@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/
*
* @seeAlso Location
*/
class BlankAdPlugin extends UAPPlugin
{
const PLUGIN_VERSION = '2.0.0';
/**
* Show a medium rectangle 'ad'
*
* @param Action $action Action being shown
*
* @return void
*/
protected function showMediumRectangle($action)
{
$action->element('img',
array('width' => 300,
'height' => 250,
'src' => $this->path('redpixel.png')),
'');
}
/**
* Show a rectangle 'ad'
*
* @param Action $action Action being shown
*
* @return void
*/
protected function showRectangle($action)
{
$action->element('img',
array('width' => 180,
'height' => 150,
'src' => $this->path('redpixel.png')),
'');
}
/**
* Show a wide skyscraper ad
*
* @param Action $action Action being shown
*
* @return void
*/
protected function showWideSkyscraper($action)
{
$action->element('img',
array('width' => 160,
'height' => 600,
'src' => $this->path('redpixel.png')),
'');
}
/**
* Show a leaderboard ad
*
* @param Action $action Action being shown
*
* @return void
*/
protected function showLeaderboard($action)
{
$action->element('img',
array('width' => 728,
'height' => 90,
'src' => $this->path('redpixel.png')),
'');
}
public function onPluginVersion(array &$versions): bool
{
$versions[] = array('name' => 'BlankAd',
'version' => self::PLUGIN_VERSION,
'author' => 'Evan Prodromou',
'homepage' => GNUSOCIAL_ENGINE_REPO_URL . 'tree/master/plugins/BlankAdPlugin',
'rawdescription' =>
// TRANS: Plugin description.
_m('Plugin for testing ad layout.'));
return true;
}
}

View File

@ -1,14 +0,0 @@
Plugin for testing ad layout
This plugin uses the UAPPlugin framework to output ad content. However,
its ad content is just images with one red pixel stretched to the
right size. It's mostly useful for debugging theme layout.
To use this plugin, set the parameter for the ad size you want to use
to true (or anything non-null).
Example
=======
To make a leaderboard:
addPlugin('BlankAd', array('leaderboard' => true));

View File

@ -1,23 +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: Plugin description.
#: BlankAdPlugin.php:129
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +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:13+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr "Complementu pa probar la maquetación de publicidad."

View File

@ -1,23 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 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:13+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr "Дапаўненьне для праверкі рэклямных модуляў."

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 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:13+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr "Astenn da arnodiñ doare pajennaozañ ar bruderezh."

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,23 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 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:13+0000\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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr "Plugin zum Testen von Werbungs-Layout."

View File

@ -1,23 +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 15:03+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr ""

View File

@ -1,24 +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:01+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.
#: BlankAdPlugin.php:128
msgid "Plugin for testing ad layout."
msgstr "Plugin for testing ad layout."

Some files were not shown because too many files have changed in this diff Show More