Commit Graph

1035 Commits

Author SHA1 Message Date
Hugo Sales 25900d38bd
[UTIL][EXCEPTION][RedirectException] Remove hack that would attempt to generate a URL inplace 2021-12-21 12:46:02 +00:00
Hugo Sales 027adc97b2
[CONTROLLER][ActorController] Make ActorController extend the FeedController, so notes get filtered 2021-12-21 12:45:15 +00:00
Hugo Sales 7f65b23074
[DB] Allow mentioning 'note' in a DQL query (in quotes), in order to be able to search in the activity table (previously would be replaced by the class name) 2021-12-21 12:44:34 +00:00
Hugo Sales d6d5926b6e
[TOOLS][DOC] Add missing documentation, as flagged by doc-check 2021-12-21 12:24:23 +00:00
Hugo Sales da8c41e094
[TOOLS] Fix errors found by PHPStan 2021-12-21 12:17:51 +00:00
Hugo Sales fa863d9e03
[CONTROLLER][ENTITY][Actor] Add way of creating a group that doesn't exist 2021-12-21 12:12:03 +00:00
Hugo Sales 88a137fb15
[ROUTES] Rename actor routes and add route for groups 2021-12-21 12:10:51 +00:00
Hugo Sales 87aa9360a3
[CORE][ActorController] Refactor actor related controllers (Actor, Subscribers, Subscriptions) to remove duplicated code 2021-12-21 12:10:08 +00:00
Hugo Sales 315fd95b94
[COMPONENT][Posting] Add facility to allow mentioning groups that don't yet exist 2021-12-21 12:07:54 +00:00
Hugo Sales e27f2dd202
[ENTITY] Remove Group entity, as groups are actors 2021-12-20 20:20:25 +00:00
Eliseu Amaro 918e6823a9
[ENTITY][Actor] Init Actor's class variable homepage, bio, and location to null
The template cards/profile/view.html.twig tries to access the bio variable before it's initialized, an is null check was already in place. However, even then, the variable needs to be init beforehand. The same change was applied to homepage and location since they might lead to similar issues.
2021-12-20 16:31:26 +00:00
Eliseu Amaro 622057ba0d
[CONTROLLER][Feeds] Added should_format field on returned array
FeedController will only handle FormatNoteList if the should_format field is true.

This change was made to make the replies route feed possible, this route is added by the Conversation component. Since a reply isn't a conversation root, if the FeedController handled the FormatNoteList event, this feed wouldn't have any notes to display.
2021-12-20 15:39:23 +00:00
Diogo Peralta Cordeiro 23f94ac961
[CORE][Controller] Define html format as default 2021-12-20 13:32:49 +00:00
Diogo Peralta Cordeiro ed67da89dc
[TAGS] Fix some minor logic issues with Actor Tags and Circles 2021-12-20 13:32:49 +00:00
Diogo Peralta Cordeiro a9feb79825
[SECURITY] New actors are Person user on register by default 2021-12-20 13:32:49 +00:00
Diogo Peralta Cordeiro 57beb178cc
[Notification][ENTITY][Activity] Avoid including sender in notification targets 2021-12-19 19:04:05 +00:00
Diogo Peralta Cordeiro 93fa7eb0b5
[ENTITY][Note] Language in notes is optional 2021-12-19 19:04:05 +00:00
Diogo Peralta Cordeiro 1d09a02ad6
[FreeNetwork][ActivityPub] Sometimes remote Actors report empty full names in not very explicit manners 2021-12-19 19:04:05 +00:00
Hugo Sales a81ac673ac
[CORE][ENTITY] Rename 'Entity::getWithPK' to 'Entity::getByPK' 2021-12-19 19:04:01 +00:00
Hugo Sales 5dca5568b7
[CORE][Cache] Fix wrong return type in Cache::delete 2021-12-16 11:01:23 +00:00
Hugo Sales 24291a268a
[CORE][Cache][DOCS] Add documentation to complex private function 'Cache::redisMaybeRecompute' 2021-12-16 10:47:01 +00:00
Hugo Sales 6d8679d86b
[CORE] Fix resetting the config to the default values 2021-12-13 15:49:52 +00:00
Hugo Sales 3ba7e1804b
[CORE][Cache] Add fast path for redis cache interactions 2021-12-13 15:49:52 +00:00
Hugo Sales 10ddbf692a
[ENTITY][LocalUser] Make more use of caching and factor out the cache keys 2021-12-12 16:21:09 +00:00
Hugo Sales 1e8eea0434
[ENTITY][Actor] Add type field, which denotes whether the actor is a person, org, group, business or bot 2021-12-11 22:19:37 +00:00
Hugo Sales e62896b84e
[UTIL][FormFields] Allow specifying a null actor in the language field, for when there isn't a logged in user 2021-12-11 22:18:31 +00:00
Hugo Sales 6a9388a789
[UTIL][FormFields] Add option language form field so the user can provide no selection 2021-12-10 21:03:37 +00:00
Hugo Sales ada94a98e2
[COMPONENT][Search] Move search form to utility function. Add search form and search builder forms to search results page 2021-12-10 13:53:23 +00:00
Hugo Sales c720ce7daf
[UTIL][Functional] Add cartesianProduct while it doesn't get merged upstream to \Functional 2021-12-10 13:53:23 +00:00
Hugo Sales dd33720957
[TWIG] Add 'dd' and 'die' functions to twig 2021-12-10 12:06:47 +00:00
Hugo Sales 33fba0d970
[COMPONENT][Language][ENTITY][ActorLanguage] Refactor cache keys in ActorLanguage. Add ActorLangauge::getActorRelatedLanguagesIds and use it in note filtering in the Language component 2021-12-10 10:19:23 +00:00
Diogo Peralta Cordeiro 60d31e097e
[COMPONENT][Notification] Support empty array of targets 2021-12-10 04:05:34 +00:00
Diogo Peralta Cordeiro b89f57ce93
[ENTITY][Note] Language can be null 2021-12-10 04:05:34 +00:00
Diogo Peralta Cordeiro dcc37b055d
[COMPONENT][Link] Remove relation to note when note is removed
Moved entity NoteToLink to the component
2021-12-10 04:04:56 +00:00
Diogo Peralta Cordeiro 5f167517ad
[ENTITY][Note] Add deleter 2021-12-10 02:46:25 +00:00
Hugo Sales b1585f0ef2
[ENTITY][Actor][ActorTag] Ensure only one copy of each tag is inserted 2021-12-09 22:23:17 +00:00
Hugo Sales ab9dd1db77
[CACHE][ENTITY][Actor] Refactor Actor so that all cache keys are kept in one cacheKeys function, so that we can more easily be certain there are no mismatches in cache keys between gets and deletes 2021-12-09 21:59:49 +00:00
Hugo Sales 1be4b3d481
[EVENT][FilterNoteList] Use an in-out parameter, so multiple events can act on this 2021-12-09 21:39:00 +00:00
Eliseu Amaro f547fd3bb9
[CONTROLLER][FeedController] Fix return value, from notes to notes_out 2021-12-09 19:06:18 +00:00
Hugo Sales c137a484af
[ENTITY][ActorTag] Fix url in actor tag 2021-12-09 16:34:07 +00:00
Eliseu Amaro 774e32f834
[PLUGINS][TreeNotes] Working, however feed is still not formatted
[ENTITY][Note] Fix for getReplies()
2021-12-09 00:15:47 +00:00
Diogo Peralta Cordeiro 480a42cca5
[PLUGIN][ActivityPub] Introduce ActivitypubObject. Beware, inside the plugin, an Object can never be an Activity.
Many bug fixes and other major changes (interface changed, see EVENTS.md)
2021-12-08 23:24:23 +00:00
Eliseu Amaro b1227d36f1
[CARDS][Note] In conversation time ago information added 2021-12-08 22:48:04 +00:00
Hugo Sales d52a043705
[TWIG] Restructure user settings template, making it much easier to use and extend 2021-12-08 19:57:35 +00:00
Hugo Sales 3b8a3e953d
[CONTROLLER][FeedController] Make post processing happen more automatically, reducing noise in individual controllers. Now it's enough to simply extends App\Core\Controller\FeedController, to implement a feed 2021-12-08 10:20:37 +00:00
Hugo Sales 4c0210fb00
[CORE][FeedController][CONTROLLER][Feeds] Refactor feed filtering into base class 2021-12-07 21:06:39 +00:00
Hugo Sales c131e47176
[COMPONENT][Tag] Remove wrong canonicalization of tags in tag feed controller. Fix display of original tags 2021-12-07 20:10:59 +00:00
Hugo Sales c093eb9089
[TWIG] Update instanceof filter to be able to check for native types 2021-12-07 19:52:27 +00:00
Diogo Peralta Cordeiro 63bf93d7f3
[CORE][Entity][Note] Language can be null 2021-12-05 21:03:13 +00:00
Hugo Sales 2a161c9c66
[PLUGIN][TagBasedFiltering] Block actor tags, but don't block notes from the current actor 2021-12-05 19:18:57 +00:00
Hugo Sales 259e07b259
[ENTITY][ActorTag][ActorTagBlock] Add 'use_canonical' column 2021-12-05 17:55:49 +00:00
Hugo Sales 9f445632b2
[PLUGIN][TagBasedFiltering] Expand to allow filtering by actor tags 2021-12-05 17:55:49 +00:00
Hugo Sales e29e1cc87c
[ENTITY] Rename 'getFrom' to 'getBy' 2021-12-05 17:55:46 +00:00
Hugo Sales 4f669d4e01
[ENTITY][NoteTag][Language] Add convinience cache getters 2021-12-05 17:54:58 +00:00
Hugo Sales a47a01abee
[ENTITY][ActorTagBlock][NoteTagBlock] Add ActorTagBlock and NoteTagBlock 2021-12-05 17:54:58 +00:00
Hugo Sales 8a495bd714
[CONTROLLER][Feeds][EVENT] Refactor and add 'FilterNoteList' event 2021-12-05 17:54:58 +00:00
Hugo Sales 314859b775
[ENTITY][NoteTag] Add 'use_canonical' column, which indicates whether the user wanted to canonicalize the tag or not (for themselves, the canonical field is still filled, for blocks) 2021-12-05 17:54:58 +00:00
Hugo Sales 1457aa8220
[UI][PLUGIN][DeleteNote][EVENT] Add 'AddExtraNoteActions' event, which can be leveraged to add extra actions on each note, but which are normally collapsed 2021-12-05 17:54:58 +00:00
Hugo Sales 969df371dd
[COMPONENT][Avatar] Small refactor 2021-12-05 17:54:58 +00:00
Diogo Peralta Cordeiro 9512890264
[PLUGIN][ActivityPub] Implement Actor Update
Diverse minor bug fixes
2021-12-05 03:11:08 +00:00
Eliseu Amaro 4501b7e85e
[CONTROLLER][UserPanel] Re-organised all settings forms. Added email, password, language forms separated from account or personal account info
[CORE][Form] Better PHPDoc and used is_null() for checks

[ENTITY][LocalUser] Add setNicknameSanitisedAndCached

[UTIL][Exception] Better NicknameNotAllowedException default message
2021-12-03 03:32:43 +00:00
Diogo Peralta Cordeiro b66873e289
[PLUGIN][StoreRemoteMedia] Do not save empty files 2021-12-03 01:16:57 +00:00
Diogo Peralta Cordeiro 70ed04a7db
[COMPONENT][Link] Fix some minor issues with empty headed links, typo in event handler's name, and refactor entity to inside component 2021-12-03 00:46:52 +00:00
Eliseu Amaro 6ce78141a8
[CONTROLLER][UserPanel] Actor nickname cache is updated 2021-12-02 22:21:47 +00:00
Eliseu Amaro 2967b544f5
[CONTROLLER][UserPanel] Nickname now normalized 2021-12-02 20:49:10 +00:00
Eliseu Amaro 863cfbdedc
[CONTROLLER] Old password input type set to password
[CONTROLLER] Notification form fields requirement set to false
2021-12-02 19:32:39 +00:00
Hugo Sales 772ec6efcf
[UI] Set html img width and height attributes for avatar 2021-12-02 19:13:33 +00:00
Diogo Peralta Cordeiro eeaad19754
[Attachment] Move Controller and Entities to a Component
There's no problem in having the templates in the core
2021-12-02 15:14:07 +00:00
Eliseu Amaro 37ef8cddfa
[ENTITY][Note] Add getLanguageLocale() and getNoteLanguageShortDisplay()
[CARDS][Note] Render note's language short display

[PLUGINS] Bring back titles to Reply, Repeat and Favourite actions
2021-12-02 15:05:49 +00:00
Diogo Peralta Cordeiro d044039272
[FreeNetwork] Initial multi-protocol support 2021-12-02 14:23:21 +00:00
Diogo Peralta Cordeiro 30f3e2c462
[FEEDS][Home] Fix bug nickname is not unique, but it is for local users 2021-12-02 11:12:03 +00:00
Eliseu Amaro eeb42ef8ea
[CONTROLLER][Actor] Provide template with all notes by actor
[ENTITY][Note] Add getAllNotesByActor

[TWIG] Actor profile page now renders all notes by the actor
2021-12-01 21:41:41 +00:00
Eliseu Amaro 5d8bd6c74a
[TWIG][Note] Add single note view 2021-12-01 21:07:14 +00:00
Hugo Sales d58483a6ca
[TOOLS] Cleanup PHPStan warnings 2021-12-01 19:47:43 +00:00
Hugo Sales 0b57b20d38
[UI][PLUGIN][Reply][Favourite][ENTITY][Feed] Remove replies and favourite links from navigation/view.html.twig and add them to the feeds section 2021-12-01 19:47:43 +00:00
Hugo Sales 73981030fa
[CONTROLLER][COMPONENT][Left] Move edit feeds controller to the Left component 2021-12-01 19:47:43 +00:00
Hugo Sales 475bb1a033
[UTIL][EXCEPTION][BugFoundException] Use only the relative path, for convenience and to avoid potentially leaking the sysadmin's user 2021-12-01 19:47:42 +00:00
Hugo Sales d4c77925d2
[CORE][DB][ENTITY][Actor] Make DB::dql return a chunked array if selecting multiple entities, remove partitioning from callsite
`DB::dql('select a, b, from a join b')` would previously return `[a,
b, a, b, ...]` (or even `[b, a, b, a, ...]`), and now will return
`[[a, a, ...], [b, b, ...]]`. The issue would be further compounded
when selecting even more entities, where the order would be
unpredictable
2021-12-01 19:47:42 +00:00
Hugo Sales 6c7f69dd94
[ENTITY][Actor] Partition the results of the joint query into a separate list of ActorsCircles and ActorTags, as desired 2021-12-01 19:47:42 +00:00
Hugo Sales a3e5f7646c
[CONTROLLER][UserPanel] Use only the ActorTags in the settings 2021-12-01 19:47:42 +00:00
Hugo Sales 4f7e243bee
[CORE][DB] Don't do column renaming if a list of entities is specified 2021-12-01 19:47:41 +00:00
Diogo Peralta Cordeiro 424df54a1b
[ActivityPub] Add HTTP Signatures 2021-12-01 19:47:41 +00:00
Diogo Peralta Cordeiro 123544fa50
[ActivityPub] Port Postman 2021-12-01 19:47:40 +00:00
Diogo Peralta Cordeiro df3fbbc9e7
[ActivityPub] Add ActivityToType
Minor bug fixes
2021-12-01 19:47:39 +00:00
Eliseu Amaro f92c00c7aa
[CONTROLLER][Feeds] Add block prefixes to distinguish form groups
[TWIG] Divide form into various groupings for clearer representation
2021-11-29 23:12:09 +00:00
Hugo Sales 98568b6f53
[ENTITY][Actor][ActorTag] Make Actor->getSelfTags and Actor->getOtherTags return [ActorCircle[], ActorTag[]], rather than ActorCrircle alone 2021-11-29 23:12:07 +00:00
Hugo Sales 3477ad5efc
[PLUGINS][RelatedTags] Add related tags plugin and needed infrastructure. Initial work on pinned content 2021-11-29 22:42:51 +00:00
Hugo Sales 3227018963
[CORE][DB] Allow specifying the entites to be retrieved, as when using renaming, tables in join would attempt to be selected 2021-11-29 22:42:50 +00:00
Hugo Sales 5c3d561a67
[COMPONENTS][Tag] Refactor Tag and add self tag stream 2021-11-29 22:42:50 +00:00
Hugo Sales 6680772e47
[UI][I18N][UTIL][FormFields][Language][COMPONENTS][Posting][PLUGINS][Reply] Factor out translation from `FormFields::language` and remove help text in cases from Posting and Reply 2021-11-29 22:42:50 +00:00
Hugo Sales fc81f7301c
[CORE][DB][ENTITY][Actor] Add `DB::removeBy` and use it in `Actor->setSelfTags` 2021-11-29 22:42:50 +00:00
Hugo Sales 66ff3c594d
[UTIL][Formatting] Fix wrong event name 2021-11-29 22:42:49 +00:00
Hugo Sales 8f5b404941
[CACHE] Switch to 'empty' rather than 'is_null' is Cache::getHashMapKey, as it may return null or false 2021-11-29 22:42:49 +00:00
Hugo Sales f986f59424
[ENTITY][ActorTag] Add 'canonical' field to actor_tag 2021-11-29 22:42:49 +00:00
Diogo Peralta Cordeiro 56526c9ba6
[ActivityPub][Inbox] Restore Create Note Functionality
Minor bug fixes
2021-11-29 22:42:46 +00:00
Eliseu Amaro 7145dba8af
[PLUGINS][Oomox] getEntity added.
[CORE][Cache] exists added.
2021-11-27 15:14:17 +00:00
Diogo Peralta Cordeiro 7b9d388a44
[NOTIFICATION] Implement Target Collector 2021-11-27 15:14:15 +00:00
Diogo Peralta Cordeiro 51994406da
[CORE][ENTITY] Properly port ProfileTag, ProfileTagSubscription and ProfileList as ActorTag, ActorTagSubscription and ActorCircle 2021-11-27 04:17:18 +00:00
Hugo Sales 11d2cfb9ed
[UI][FEEDS][ENTITY][Feed] Add way to customize the feeds that are displayed in the left panel. The user can add, delete, reoder and rename them 2021-11-26 23:35:10 +00:00
Hugo Sales cdc8886bb8
[CORE][DB] Rename parameters 'orderBy' to 'order_by' 2021-11-26 23:34:37 +00:00
Hugo Sales 42f40f9ebe
[CORE][CONTROLLER][Network] Refactor term 'network' into 'feeds' 2021-11-26 23:34:37 +00:00
Diogo Peralta Cordeiro 0ab8febab3
[CORE][DB] Document magic methods 2021-11-26 15:11:51 +00:00
Eliseu Amaro 180ae15647
[PLUGINS][Oomox] User theme CSS file is served. Settings page needs polish, and option to revert changes. 2021-11-26 14:45:28 +00:00
Eliseu Amaro 7fa2418e54
[PLUGINS][Oomox] Theme colours WIP. 2021-11-26 14:45:28 +00:00
Hugo Sales 6cd7be6abc
[UI][CONTROLLER][ENTITY][DOCS] Refactor term 'timeline' into 'feed' 2021-11-26 13:05:23 +00:00
Hugo Sales 283820a4a5
[UI][ENTITY][Language] Use list rather than hashmap so actor language ordering is preserved 2021-11-26 12:30:21 +00:00
Hugo Sales 04e6b2fb53
[ENTITY][Language] Properly handle context actor language 2021-11-26 12:29:27 +00:00
Hugo Sales edf1b30e89
[TOOLS][DOCS] Add missing doc blocks 2021-11-25 23:16:04 +00:00
Hugo Sales b1262919da
[TOOLS] Fix (most) issues found by PHPStan 2021-11-25 23:08:30 +00:00
Hugo Sales 98b719dca3
[COMPONENTS][Tag] Split tag into words and stem each 2021-11-25 20:37:53 +00:00
Hugo Sales 2d057024b9
[TAGS][ENTITY][Note] Properly store the note language, pass it along when rendering content. Add mechanism for stemming tags, with fallback to simply slug-ifying them 2021-11-25 20:37:53 +00:00
Hugo Sales f837df5753
[CACHE] Add way of calculating hash map if key is not found 2021-11-25 20:37:53 +00:00
Hugo Sales c1779dc12d
[UI] Don't display short language form in user panel language selection 2021-11-25 20:37:53 +00:00
Hugo Sales 0194b6b14c
[TESTS] Fix tests by adding missing is_local columns and by login in the admin user in the admin panel test 2021-11-25 20:37:52 +00:00
Hugo Sales d9544c6edb
[CORE][SECURITY] Move to the new authentication format, for Symfony 5.3 2021-11-25 20:37:45 +00:00
Diogo Peralta Cordeiro 05758c999f
[ENTITY][Actor] fix typo in findRelativeActors query 2021-11-25 02:07:12 +00:00
Eliseu Amaro d8147cbd2d
[PLUGINS][AttachmentShowRelated] Fixed note template error. Fixed if statement.
[CORE][Controller] Commented CSP out.
2021-11-24 12:46:32 +00:00
Eliseu Amaro 8edaabbabf
[TWIG][Settings] WIP Refactoring of user panel. Now using macros to diminish repeated code.
[CONTROLLER][UserPanel] Replaced form names. More readable.
2021-11-24 12:46:31 +00:00
Hugo Sales 30f4131f5d
[TESTS] Add missing 'is_local' to actors in data fixtures 2021-11-24 12:46:31 +00:00
Hugo Sales 206856e1ba
[FORM][FormFields] Add way of specifying attributes for password fields (namely form autocomplete=new-password) 2021-11-24 12:46:31 +00:00
Hugo Sales 3a5e52ee0d
[CORE][SECURITY] Move to the new authentication format, for Symfony 5.3
Keep using (deprecated) Guard
2021-11-24 12:46:26 +00:00
Hugo Sales b4ce77320e
[TESTS] Fix remaining tests, back to 100% passed. Some minor semantic changes 2021-11-20 21:33:25 +00:00
Hugo Sales c68d7ae406
[CONTROLLER][UserPanel] Make function names camelCase 2021-11-20 21:33:25 +00:00
Hugo Sales 7e4a971fac
[ENTITY][LocalUser][CACHE] Remove bad keys from getByNickname cache key 2021-11-20 21:33:25 +00:00
Hugo Sales 0e104a9701
[UTIL][HTML][TESTS] Fix test and implementation and expand HTML generation utilities 2021-11-20 21:33:25 +00:00
Hugo Sales fe755f7c42
[UTIL][FormFields] Accomodate use of FormFields::repeated_password without a 'required' option 2021-11-20 21:33:23 +00:00
Eliseu Amaro 0aa43783e8
[PLUGIN][Repeat] Repeat now repeats attachments as it should.
[COMPONENTS][Posting] Now accepts attachments already processed.
[ENTITY][Note] Added getAttachmentsWithTitle().
2021-11-17 17:14:15 +00:00
Eliseu Amaro 8077bdb0b5
[CORE][Controller] CSP default-src changed to 'self' to allow internal redirects. 2021-11-17 01:29:36 +00:00
Eliseu Amaro 1d31bd651e
[CORE][Controller] Added Content-Security-Policy response header. 2021-11-17 00:49:23 +00:00
Diogo Peralta Cordeiro f07dce4604
[UTIL][Form] Fix bug with repeated_password 2021-11-16 23:27:29 +00:00
Diogo Peralta Cordeiro 89d36a68e5
[ENTITY][Actor] Add is_local, it's common to depend, and this makes it much faster, with a low space cost 2021-11-16 23:26:20 +00:00
Hugo Sales b8b19abed2
[ENTITY][AttachmentThumbnail] Do not attempt to check if a file exists if the path is null 2021-11-15 19:25:52 +00:00
Hugo Sales 5cafc80d01
[UTIL][FormFields] Refactor duplicated language choice form entry logic 2021-11-15 19:25:52 +00:00
Hugo Sales e6c0db9ee1
[CORE][Cache] Allow retrieving multiple keys from a hashmap 2021-11-15 19:25:52 +00:00
Hugo Sales 587d701d11
[CONTROLLER][Network] Temporarily remove replies from streams, following planned changes to the Reply plugin 2021-11-15 19:25:52 +00:00
Hugo Sales 774eb49af4
[UI][CONTROLLER][UserPanel][ENTITY][ActorLanguage][Language][Actor] Add interface to allow user to select thier preferred languages and to order them. Rename ActorLanguage::order to ordering 2021-11-15 19:25:52 +00:00
Hugo Sales d5e6fd603d
[CONTROLLER][UserPanel] Fix 'could not convert IntergetType to string' error 2021-11-15 19:25:51 +00:00
Hugo Sales 1abd28c949
[UI][TWIG][CONTROLLER][UserPanell] Add way to expand details with a GET parameter. Implement it in UserPanel 2021-11-15 19:25:51 +00:00
Hugo Sales c509692102
[ENTITY][AttachmentThumbnail] Uncache when deleting, cleanup code and ensure the biggest thumbnail is used when the original is not avaliable 2021-11-15 19:25:51 +00:00
Hugo Sales a3074662b8
[TESTS] Remove 'reply_to' in note creation in data fixtures 2021-11-15 19:25:51 +00:00
Hugo Sales eab6de3609
[TESTS][Security] Fix SecurityTest. Remove nickname normalization on register (a plugin can handle that). Move from filter_var(FILTER_VALIDATE_EMAIL) as it does not support dotless domains 2021-11-15 19:25:50 +00:00
Hugo Sales bf5ffe7d3d
[CACHE][TEST] Fix errors in cache implementation found by tests 2021-11-15 19:25:44 +00:00
Hugo Sales 98352cfece
[TESTS] Properly provide both createClient and bootKernel in test base class 2021-11-11 12:39:36 +00:00
Hugo Sales 2239845a00
[CONTROLLER][Security] Remove nickname normalization when trying to login 2021-11-11 12:39:36 +00:00
Hugo Sales a1c78696f7
[CORE][Actor][Posting] Fixup Actor::getPreferredLanguageChoices following changes in how the data is cached 2021-11-11 12:39:36 +00:00
Hugo Sales f39f800a8e
[TESTS] Add now-required content-type to notes created in data fixtures 2021-11-11 12:39:35 +00:00
Hugo Sales f667b558f7
[TESTS] Fix SecurityTest
This test was broken by changes in the routing and in the templates.
However, this revealead a potential open redirect and duplicated code
in the Reply and Favourite plugins
2021-11-11 12:39:28 +00:00
Hugo Sales dea9aa4dcf
[CORE][Router] Remove duplicate service for URL generation, as that is actually the same object 2021-11-11 12:38:09 +00:00
Eliseu Amaro d0f9fde7c2
[PLUGIN][Reply] WIP. Note complementary info now shows who has replied on the original note! 2021-11-10 15:44:28 +00:00
Eliseu Amaro f2f1bdc145
[PLUGIN][Reply] Separated replies from Note table.
[PLUGIN][Repeat] Deleted unnecessary card note template, info now to
appended at the end of note.
[PLUGIN][TreeNotes] WIP to accomodate reply plugin changes.
[TWIG][Runtime] Removed getAdditionalTemplateVars event.
2021-11-10 13:29:53 +00:00
Hugo Sales 7d8819a3da
[DB][CONTROLLER][Network][ENTITY][Note] Fix Note::getAllNotes 2021-11-09 23:38:37 +00:00
Hugo Sales f0c532340e
[DB] Fix uses of `DB::sql`, to remove the deprecated second `entities` parameter 2021-11-08 20:35:38 +00:00
Hugo Sales 767b2035e7
[ENTITY][ActorLanguage] Remove duplicate specification of 'not null' in table schema 2021-11-08 20:32:10 +00:00
Hugo Sales 1d84f1629e
[CORE][DB] Make DB::sql not error when selecting from tables with columns of the same name and remove the second enitites paramter, calculating it internally instead 2021-11-08 20:32:10 +00:00
Diogo Peralta Cordeiro f98afd15ce
[ENTITY] Refactor Follow as Subscription 2021-11-08 16:14:23 +00:00
Hugo Sales 68c6dd1ba9
[CORE][Cache] Use hashmaps to store language related items 2021-11-08 16:08:04 +00:00
Hugo Sales 2eb31952bc
[ENTITY][Language] Use varchar as char leads to a padded string, which isn't helpful 2021-11-08 16:08:03 +00:00
Hugo Sales 2cf3a0b4e6
[COMPONENT][Posting] Display short language signifier rather than the full name for the first preffered language 2021-11-08 16:08:03 +00:00
Hugo Sales 705bf815ab
[CACHE] Add partial implmentation for caching hashmaps (non-list arrays, i.e. array<string,string>). No non-redis-fallback yet 2021-11-08 16:08:03 +00:00
Hugo Sales cd470cbf93
[CORE] Fix loading of settings from modules 2021-11-08 16:08:03 +00:00
Hugo Sales 019ad794d1
[Posting] Add dropdown with language choice, with preferred choice according to user choice and context (group, etc) 2021-11-08 16:08:02 +00:00
Hugo Sales 9444c34071
[ENTITY][Actor][ActorLanguage][Language] Remove Actor::preferred_lang_id. Add ActorLanguage::order. Add Language::{short_display,long_display}. Instead of an actor having a single preffered language, the entries in ActorLanguage should be used, sorted by ActorLanguage::order 2021-11-08 16:08:02 +00:00
Hugo Sales 2bd05fbd47
[TOOLS][COMMAND] Add 'app:populate_initial_values' command, which inserts values into the language table if it does not yet contain values. Add database-force-nuke to Makefile, which does all the steps necessary to reset the database 2021-11-08 16:08:02 +00:00
Hugo Sales 1960f6944f
[CORE][DB] Fix error in regex that prevented selecting collumns that are named the same way a column is 2021-11-02 11:14:59 +00:00
Hugo Sales 839fa070c7
[CORE][Posting] Default Posting language to site language, if the user hasn't selected one 2021-11-02 11:14:59 +00:00
Eliseu Amaro cf09b48e92
[PLUGINS][Repeat] Added note_repeat entity, fixed visual discrepancies, and completed the expected functionality.
[ENTITY][Note] Removed repeat_off from table. It is now part of the Repeat plugin.
2021-11-01 21:19:56 +00:00
Diogo Peralta Cordeiro 712d1739e4
[UTIL][Formatting] Make local mentions great again 2021-11-01 12:16:29 +00:00
Eliseu Amaro 91dd6e1428
[Controller][Security] Fullname is not setup automatically upon registering anymore.
[ENTITY][Actor] Changes to accomodate fullname from potentially being null.
[ENTITY][Note] Changes to accomodate fullname from potentially being null.
2021-10-29 22:05:10 +01:00
Eliseu Amaro 9a23e03330
[PLUGINS][Repeat] Repeat template override WIP. 2021-10-29 17:26:20 +01:00
Hugo Sales 44454ac28a
[UTIL][TemporaryFile] Ensure `resource` is neither `false` nor `null` when attempting to cleanup, otherwise `getRealPath` returns `false` and we get sad 2021-10-28 17:36:02 +01:00
Hugo Sales 458c09485a
[CORE][ENTITY] Move preferred language setting from [LocalUser] to [Actor], make [Language] `language` unique and make [Note] `content_type` not null 2021-10-28 17:34:01 +01:00
Hugo Sales e6c5312025
[CORE][GSFile] Add `check_is_supported_mimetype` option to `GSFile::storeFileAsAttachment` 2021-10-28 17:29:57 +01:00
Hugo Sales c352e40518
[CORE][Controller] Allow plugins to override the Twig templates 2021-10-28 14:29:34 +01:00
Hugo Sales 18aeeb3850
[ENTITY] Add a [Language] table, which has a char 64 field that maps to an int. This is then used in [Note], [LocalUser] and [ActorLanguage] 2021-10-28 11:26:34 +01:00
Eliseu Amaro e54e55dfbf
[EXCEPTION][RedirectException] You are now able to redirect to a specific url. 2021-10-27 20:44:50 +01:00
Eliseu Amaro 3e2fefa8af
[TWIG][Cards] Fullname is now displayed as the note author, nickname as an identification.
[CONTROLLER][Security] Fullname is set on resgistration to enable it to be shown by default in notes.
[CONTROLLER][UserPanel] Fullname extra step added.
[CSS] Fullname and nickname representation work.
2021-10-27 20:44:50 +01:00
Diogo Peralta Cordeiro 3cdaf6671a
[CORE][HTTPClient] Add some shortcut functions inspired by pre-v3 2021-10-27 04:22:18 +01:00
Diogo Peralta Cordeiro 3227e1f919
[CORE][Log] Document magic methods 2021-10-27 04:22:18 +01:00
Diogo Peralta Cordeiro bccafd0d7b
[CORE][GSFile] Respect mimetype whitelist and extensions blacklist before saving files 2021-10-27 04:19:33 +01:00
Eliseu Amaro 8038fdbce9
[UTIL][Common] Added Common::getUploadLimit().
[COMPONENT][Posting] Update Posting to warn the user of submtting attachments too large.
2021-10-27 04:19:32 +01:00
Eliseu Amaro 656c2c7812
[SECURITY][Authenticator] fix wrong route id on after login redirection 2021-10-27 04:19:32 +01:00
Hugo Sales 299e893ca9
[TOOLS][PHPStan][DocCheck] Fix errors found by PHPStan and Doc Check 2021-10-27 04:19:31 +01:00
Hugo Sales dff5647b97
[DB][Note] Add langauge field to notes 2021-10-27 04:19:31 +01:00
Hugo Sales 8a10fec31d
[CONTROLLER][UserPanel] Make all fields in settings not required 2021-10-27 04:19:30 +01:00
Hugo Sales 2694d83ae4
[TOOLS][CS-FIXER] Run new PHP CS Fixer config. Notably, adds strict_types 2021-10-27 04:19:30 +01:00
Diogo Peralta Cordeiro 028ea79fff
[CORE][Router] Properly act on Accept headers 2021-10-27 04:19:30 +01:00
Eliseu Amaro 99fd2f725b
[Core][Util] Hotfix: In App\Core\DB\DB persistWithSameId, casting the id to an int. In App\Util\HTML html, tag is now evaluated beforehand, making sure it's a string. 2021-10-27 04:19:30 +01:00
Diogo Peralta Cordeiro 8fdc52636f
[ActivityPub] Port RSA 2021-10-27 04:19:29 +01:00
Diogo Peralta Cordeiro 8544fe157b
[FreeNetwork] First steps porting webfinger/lrdd to v3, GET webfinger requests already have a basic result 2021-10-27 04:19:29 +01:00
Diogo Peralta Cordeiro 44cf1fa24c
[UTIL][Nickname] Fix some parameters issues found with strict types 2021-10-27 04:19:29 +01:00
Hugo Sales b524c5bc90
[TOOLS][PHPStan] Add missing toString on the call to DB::filterName, as it seems something changed in some update 2021-10-27 04:19:28 +01:00
Hugo Sales b65ee4c21d
[TOOLS][CS-FIXER] Fix incorrect transformation 2021-10-27 04:19:28 +01:00
Hugo Sales 9109c61af5
[TOOLS][CS-FIXER] Run new PHP CS Fixer config. Notably, adds strict_types 2021-10-27 04:19:28 +01:00
Hugo Sales d575f8aef5
[UTIL][Formatting] Make it possible to supply string|array to either or both argument of Formatting::{starts,ends}With 2021-10-27 04:19:26 +01:00
Diogo Peralta Cordeiro 99ab24ec23
[CORE][Controller] Allow routes without text/html response
Improve GET getters
2021-10-27 04:19:23 +01:00
Diogo Peralta Cordeiro 03f6029ce5
[SECURITY] Fix nickname validation and properly allow email auth 2021-10-18 13:22:55 +01:00
Diogo Peralta Cordeiro 071b769997
[CORE][Util][Common] Correct behaviour for absense of value 2021-10-18 13:22:45 +01:00
Diogo Peralta Cordeiro 517ed953f2
[FreeNetwork] First step towards de-duplication mechanism for federation
Refactored AS2 inside AP; [ENTITY][Activity] went from core to AP
Webfinger plugin will be part of FreeNetwork component
2021-10-06 11:48:22 +01:00
Eliseu Amaro 3cb6563c40 [TWIG][EndShowStyles] Route as an event argument 2021-10-06 00:34:27 +01:00
Eliseu Amaro 17a13b3f20 [CSS] Fix: Left and right panel checkbox border when active. 2021-10-04 12:31:06 +01:00
Eliseu Amaro 80d1be323d [COMPONENTS][Search][CSS] Extra header forms now accessible through a details element. Re-organizing templates structure. 2021-10-04 12:17:14 +01:00
Eliseu Amaro d38ad60c76 [COMPONENTS][CSS] Adding components styling properly. 2021-10-01 17:25:51 +01:00
Hugo Sales 19c2a91232
[TOOLS][PHPStan][ProfileColor][ENTITY][TEST][AttachmentThumbnail] Fix issues reported by phpstan 2021-09-27 19:50:56 +01:00
Hugo Sales 1107d8257d
[TWIG] Add `instanceof` test
Use with:
{% if var is instanceof(Namespace\Class) %}
2021-09-27 19:50:56 +01:00
Hugo Sales 2d8b220e92
[CORE][Controller] Make Controller abstract, `handle` an optional non static method and use `static::class` rather than `get_called_class` 2021-09-27 19:50:56 +01:00
Diogo Peralta Cordeiro a681acae67
[ENTITY][AttachmentThumbnail] Every image should have width and height attributes 2021-09-25 19:40:11 +01:00
Diogo Peralta Cordeiro 3268559f9a
[AttachmentThumbnail] Use other thumbnail when requested isn't available and there's no original file 2021-09-23 16:19:50 +01:00
Hugo Sales af3531f1c7
[CORE][GSFile] Add type annotation to the `$encoders` used in attachment handling 2021-09-23 14:54:21 +01:00
Hugo Sales 21e598d877
[ENTITY][Actor] Fix issue with deleting a self tag 2021-09-23 14:34:34 +01:00
Diogo Peralta Cordeiro 4820a863a9
[Avatar] Fix cache usage and other minor bugs 2021-09-23 14:34:34 +01:00
Eliseu Amaro a557ba0224 [Timelines][Plugins][Left] Plugins now provide their path ID. Feed redone as it's own independant template. 2021-09-22 16:47:06 +01:00
Diogo Peralta Cordeiro 05f16a3084
[ENTITY][AttachmentThumbnail] Now thumbnails are always only available in three sizes: small, medium, big
Commit jointly produced with eli (Eliseu Amaro)

Breaking change: Entity changed to only store the tinyint referring to the size stored

With this, the logic was simplified and now it's not possible to make an
instance produce unnecessary thumbs. The aspect ratio is preserved and
thus the thumbs will always look nice. New configuration was added to
maintain flexibility.
2021-09-22 15:13:46 +01:00
Diogo Peralta Cordeiro 7beb5c2995
[GSFile] Fix sanitize configuration 2021-09-22 15:13:46 +01:00
Hugo Sales 69e7dc44bd
[ENTITY][Note] Change `isVisibleTo` to allow for not supplying an actor 2021-09-21 16:38:50 +01:00
Hugo Sales 879f54c772
[CACHE] Filter notes by scope in `pagedStream`
This currently does not return a fixed number of notes per page. Fixing this is left as an exercise to the reader
2021-09-21 16:37:51 +01:00
Hugo Sales 14c173df7a
[CACHE][COMPONENT][Tag] Add generic Cache::pagedStream and use it for the tag stream. Note that it doesn't respect scope yet 2021-09-21 15:35:07 +01:00
Hugo Sales 6715a036e9
[CACHE] Add way to fetch limit,offset values from a list 2021-09-21 11:04:26 +01:00
Hugo Sales ce80065775
[DB] Add mechanism for specifying limit and offset in dql query 2021-09-21 11:04:26 +01:00
Hugo Sales 91fd7d1cfa
[CONFIG][CORE] Fix bug in overriding default config 2021-09-21 11:04:14 +01:00
Diogo Peralta Cordeiro 8bb6285522
[ENTITY][Note] A note may have no content 2021-09-20 17:06:21 +01:00
Diogo Peralta Cordeiro b7298eaa44
[ENTITY] ActorTag: use getter for tag name on toString 2021-09-20 17:05:50 +01:00
Hugo Sales 8fe8687c5b
[UTIL][HTML] Move to a unified array 2021-09-20 13:28:18 +01:00
Hugo Sales e8f4563633
[UTIL][Formatting][COMPONENT][Link][Tag] Refactor code from formatting into Link and Tag, where appropriate. Drop 'perfect url regex' as the one used in v2 is better 2021-09-20 13:28:18 +01:00
Hugo Sales 556b8f8265
[ENTITY][NoteTag] Add 'canonical' field to tag 2021-09-20 13:27:27 +01:00
Hugo Sales 04174bc56d
[UTIL][UI] Change how plaintext notes are rendered to be split into paragraphs. Remove span around tags 2021-09-20 13:27:27 +01:00
Hugo Sales 51c7e10483
[UTIL][HTML] Allow specifying `options: [raw => bool]`, whether to escape the provided inner HTML or not. Use with care 2021-09-20 13:27:21 +01:00
Diogo Peralta Cordeiro 67d62cf37b
[TWIG] Remove kludge event TwigPopulateVars 2021-09-18 07:27:35 +01:00
Diogo Peralta Cordeiro fda998e335
[Avatar] We definitely don't need an event to retrieve avatar urls 2021-09-18 07:26:10 +01:00
Diogo Peralta Cordeiro 2bd19fa087
[NOTE][Posting] Revert regressions introduced with c90efe2c52
Entity Note: It doesn't make sense to handle attachments on Note::create.
Attachments exist out of Notes, they are a thing on their own.
Furthermore, they aren't always handled the same, they most definitely
aren't always uploaded files.

FileQuota: It doesn't make sense to check if a file is greater than max
allowed upload size here. The plugin ensures a user is inside his
allowed quota, it's ignorant to anything else. Whether a file respect
max upload is a core thing that must be handled directly in the Posting
component. TODO: The configuration regarding user and monthly quota
must become FileQuotaPlugin settings and be removed from core.

c90efe2c52 - [UI] Add mechanism for rendering note contents in different formats. Implement plaintext rendering. Use rendered field for note content, rather than the content itself
2021-09-18 05:12:18 +01:00
Diogo Peralta Cordeiro 941cbe6599
[Actor] Refactor GSActor into Actor 2021-09-18 05:12:17 +01:00
Diogo Peralta Cordeiro d6f31d102a
[CORE][ActivityStreamsTwo][ActivityPub] Set all routes
Allow global routes to act for every actor
Fix Favoured stream query
2021-09-18 05:12:15 +01:00
Hugo Sales b177cb69e7
[HTML][SECURITY] Harden implmentation of HTML generation 2021-09-18 05:12:08 +01:00
Hugo Sales 8f0a3e4977
[UI] Add mechanism for rendering note contents in different formats. Implement plaintext rendering. Use rendered field for note content, rather than the content itself 2021-09-18 05:12:06 +01:00
Hugo Sales f344ed376c
[ATTACHMENTS][Embed][UI] Allow plugins to provide a title for an attachment, if a note has none, implement such a mechanism in Embed and cache the result, since it is potentially costly 2021-09-18 05:12:06 +01:00
Hugo Sales 15a2a69274
[ROUTER] Add option `is_system_path`, to allow specifying that a route, such as `gsactor_view_nickname` should not be considered a system path, when checking for the collision of nicknames 2021-09-18 05:12:05 +01:00
Hugo Sales e563c393f8
[ROUTER] Add mechanism for sorting the order in which core routes are loaded 2021-09-18 05:12:05 +01:00
Eliseu Amaro e9d809d441 [Security][Exception] Security exception handling, login and register. TODO EmailNotFoundException and NicknameNotFoundException. 2021-09-15 14:48:06 +01:00
Eliseu Amaro 26af284353 [CONTROLLER][SECURITY] Registration feedback. The flashError works. However, Symfony's Exception error page is viewed upon trying to register. 2021-09-15 14:48:06 +01:00
Diogo Peralta Cordeiro 365edbaff0
[ActivityStreamsTwo] Initial Actor support
Various bug fixes
2021-09-15 10:26:53 +01:00
Hugo Sales 1adde913c6
[PHPStan] Only run custom PHPStan extensions if environment vairable PHPSTAN_BOOT_KERNEL is defined (since it requires having the whole social setup available) 2021-09-14 13:13:45 +01:00
Diogo Peralta Cordeiro 7c465bba5f
[NOTE] Add mimetype to notes 2021-09-14 13:13:45 +01:00
Hugo Sales c69b28d894
[CORE] Fix `Undefined array key 0` in `DB::filterTableName` 2021-09-14 13:13:45 +01:00
Hugo Sales b74d944ae3
[TOOLS][PHPStan] Raise PHPStan level to 3 and fix new errors 2021-09-14 13:13:45 +01:00
Hugo Sales f81bf4a257
[TOOLS][PHPStan] Add mechanism for initializing the whole application 2021-09-14 13:13:44 +01:00
Hugo Sales ddb9702b1c
[TOOLS][PHPStan] Add support for deducing the correct entity type from a table name. Needs refactoring and can only run inside container, as it connects to the database itself 2021-09-14 13:13:44 +01:00
Hugo Sales 4e30e5aad9
[TOOLS] Fix all issues found by PHPStan level 2 2021-09-14 13:13:44 +01:00
Eliseu Amaro 61071a6821
[PLUGINS][Reply][Repeat][Favourite] Base template semantic rework. Reply, repeat and favourite respective classes are now assigned in their NoteHandlerPlugin. 2021-09-14 13:13:43 +01:00
Diogo Peralta Cordeiro ddd2ffe26a
[TWIG] Add extension to check if Firefox is being used 2021-09-14 13:13:43 +01:00
Hugo Sales add8f4a52f
[TOOLS] Fix all errors found by PHPStan level 1 2021-09-14 13:13:42 +01:00
Hugo Sales 277a080d7c
[EXCEPTION] Add `NotImplementedException` 2021-09-14 13:13:42 +01:00