Components
18
Twig Components
37
Render Count
33
ms
Render Time
12.0
MiB
Memory Usage
Components
Render calls
entry | App\Twig\Components\EntryComponent | 12.0 MiB | 14.15 ms | |
---|---|---|---|---|
Input props | [ "entry" => App\Entity\Entry {#2360 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } +magazine: Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#2467 …} +slug: "RFC-Add-custom-fields-to-local-site-and-local-user-tables" +title: "[RFC] Add custom fields to local_site and local_user tables" +url: null +body: """ ### Proposal\n \n Add custom database columns to the `local_site` and `local_user` tables and corresponding config keys in the `editSite` and `saveUserSettings` interfaces. Data type would be `text` and the column name could be `user_custom` or something like that.\n \n ### Rationale\n \n Many 3rd party Lemmy UIs offer more config options than are covered by the discrete config keys currently exposed via `saveUserSettings` and in the `MyUserInfo` interface. A custom field where a JSON blob could be stored would allow 3rd party Lemmy UI clients to save site-level and user-level config options to the API similar to how Lemmy-UI has its settings saved.\n \n Currently, 3PAs largely (exclusively?) utilize local storage which limits any persistence to individual devices/browsers. Adding those `text` columns and exposing them via the `getSite`, `editSite` and `saveUserSettings` interfaces would allow 3rd party apps the ability to persist settings across devices by serializing them to JSON and storing/serving from the API.\n \n ### Use Cases\n \n - Application settings and preferences\n - Keyword filters\n - Favorite community lists\n - Community group lists\n - Structured site-level data such as rules, public community groups, report and moderation templates, etc.\n \n ### Possible Cons\n \n - Would slightly increase amount of data returned in the `getSite` API call due to the extra data in the `local_site` and `my_user` keys.\n - 3PA developers would have to share this field. \n - Not really a concern for the Lemmy devs, but there would ultimately need to be some cooperation between 3PA devs to avoid contention (e.g. a container with namespaces, etc).\n \n ### Workarounds Considered\n \n Adding a backend server to each 3rd party UI is possible but may be overkill for the relatively common and simple task of persisting settings. A custom field exposed by the Lemmy API would alleviate that. For use-cases more advanced than simple settings storage, the 3PA dev may opt to build their own backend anyway.\n \n In Tesseract, the current workaround is done by allowing export and import of user settings to a JSON file which can be loaded into a new device/browser. While that’s better than nothing, it’s far from ideal.\n \n Thoughts?\n \n **Update**: To test the viability of this RFC, I’ve horribly abused the `theme` field to store about 60 KB of JSON user settings data. Aside from breaking the CSS in Lemmy-UI (as expected), everything works great. The additional payload data in the `getSite` response doesn’t seem to be causing much of an impact. I may leave this in the next release under “advanced settings” with appropriate warnings as well as adding a “restore” button to restore it to a valid theme value. Ultimately, though, a dedicated field for 3PAs to use would be ideal. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 0 +favouriteCount: 4 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1699709635 {#2455 : 2023-11-11 14:33:55.0 +01:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#2363 …} +votes: Doctrine\ORM\PersistentCollection {#2372 …} +reports: Doctrine\ORM\PersistentCollection {#2386 …} +favourites: Doctrine\ORM\PersistentCollection {#2385 …} +notifications: Doctrine\ORM\PersistentCollection {#2378 …} +badges: Doctrine\ORM\PersistentCollection {#2381 …} +children: [] -id: 11991 -titleTs: "'add':2 'custom':3 'field':4 'local':6,9 'rfc':1 'site':7 'tabl':11 'user':10" -bodyTs: "'3pa':216,242,302 '3pas':110,443 '3rd':43,80,139,261 '60':369 'abil':143 'abus':362 'across':147 'ad':123,255,425 'add':2 'addit':391 'advanc':296,417 'allevi':289 'allow':79,138,320 'amount':194 'anyway':311 'api':98,158,201,287 'app':141 'applic':161 'appropri':420 'asid':376 'avoid':245 'backend':257,310 'better':342 'blob':74 'break':378 'build':307 'button':428 'call':202 'case':160,294 'caus':403 'client':84 'column':5,31,126 'common':273 'communiti':168,170,182 'con':190 'concern':227 'config':16,49,57,94 'consid':254 'contain':249 'content':246 'cooper':240 'correspond':15 'could':33,75 'cover':53 'css':380 'current':59,109,315 'custom':3,36,69,281 'data':24,177,196,207,375,393 'databas':4 'dedic':440 'dev':231,243,303 'develop':217 'devic':148 'device/browser':338 'devices/browsers':122 'discret':56 'doesn':398 'done':318 'due':203 'e.g':247 'editsit':20,133 'etc':188,252 'everyth':387 'exclus':112 'expect':386 'export':321 'expos':60,128,283 'extra':206 'far':347 'favorit':167 'field':70,223,282,365,441 'file':330 'filter':166 'getsit':132,200,396 'great':389 'group':171,183 'horribl':361 'ideal':349,448 'impact':407 'import':323 'increas':193 'individu':121 'interfac':23,67,136 'json':73,153,329,372 'kb':370 'key':17,58,215 'keyword':165 'larg':111 'leav':410 'lemmi':45,82,103,230,286,383 'lemmy-ui':102,382 'level':89,93,176 'like':39 'limit':117 'list':169,172 'load':334 'local':8,11,114,210 'mani':42 'may':267,304,409 'moder':186 'much':404 'myuserinfo':66 'name':32 'namespac':251 'need':236 'new':337 'next':414 'noth':344 'offer':47 'opt':305 'option':50,95 'overkil':269 'parti':44,81,140,262 'payload':392 'persist':119,145,278 'possibl':189,265 'prefer':164 'propos':1 'public':181 'rational':41 'realli':225 'relat':272 'releas':415 'report':184 'respons':397 'restor':427,430 'return':197 'rfc':358 'rule':180 'save':86,108 'saveuserset':22,62,135 'seem':400 'serial':150 'server':258 'set':107,146,162,279,299,326,374,418 'share':221 'similar':99 'simpl':275,298 'site':9,88,175,211 'site-level':87,174 'slight':192 'someth':38 'storag':115,300 'store':77,367 'storing/serving':155 'structur':173 'tabl':13 'task':276 'templat':187 'tesseract':313 'test':353 'text':28,125 'theme':364,435 'though':438 'thought':350 'type':25 'ui':46,83,104,263,384 'ultim':235,437 'updat':351 'use':159,293,445 'use-cas':292 'user':12,35,92,214,325,373 'user-level':91 'util':113 'valid':434 'valu':436 've':360 'via':61,130 'viabil':355 'warn':421 'well':423 'work':388 'workaround':253,316 'would':26,78,137,191,218,234,288,446" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1699718635 +visibility: "visible " +apId: "https://dubvee.org/post/370736" +editedAt: DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } +createdAt: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } } "showMagazineName" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\EntryComponent {#2302 -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …} -newCommentMarkerCount: App\Kbin\NewCommentMarker\NewCommentMarkerCount {#2301 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -security: Symfony\Bundle\SecurityBundle\Security {#1101 …} +entry: App\Entity\Entry {#2360 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } +magazine: Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#2467 …} +slug: "RFC-Add-custom-fields-to-local-site-and-local-user-tables" +title: "[RFC] Add custom fields to local_site and local_user tables" +url: null +body: """ ### Proposal\n \n Add custom database columns to the `local_site` and `local_user` tables and corresponding config keys in the `editSite` and `saveUserSettings` interfaces. Data type would be `text` and the column name could be `user_custom` or something like that.\n \n ### Rationale\n \n Many 3rd party Lemmy UIs offer more config options than are covered by the discrete config keys currently exposed via `saveUserSettings` and in the `MyUserInfo` interface. A custom field where a JSON blob could be stored would allow 3rd party Lemmy UI clients to save site-level and user-level config options to the API similar to how Lemmy-UI has its settings saved.\n \n Currently, 3PAs largely (exclusively?) utilize local storage which limits any persistence to individual devices/browsers. Adding those `text` columns and exposing them via the `getSite`, `editSite` and `saveUserSettings` interfaces would allow 3rd party apps the ability to persist settings across devices by serializing them to JSON and storing/serving from the API.\n \n ### Use Cases\n \n - Application settings and preferences\n - Keyword filters\n - Favorite community lists\n - Community group lists\n - Structured site-level data such as rules, public community groups, report and moderation templates, etc.\n \n ### Possible Cons\n \n - Would slightly increase amount of data returned in the `getSite` API call due to the extra data in the `local_site` and `my_user` keys.\n - 3PA developers would have to share this field. \n - Not really a concern for the Lemmy devs, but there would ultimately need to be some cooperation between 3PA devs to avoid contention (e.g. a container with namespaces, etc).\n \n ### Workarounds Considered\n \n Adding a backend server to each 3rd party UI is possible but may be overkill for the relatively common and simple task of persisting settings. A custom field exposed by the Lemmy API would alleviate that. For use-cases more advanced than simple settings storage, the 3PA dev may opt to build their own backend anyway.\n \n In Tesseract, the current workaround is done by allowing export and import of user settings to a JSON file which can be loaded into a new device/browser. While that’s better than nothing, it’s far from ideal.\n \n Thoughts?\n \n **Update**: To test the viability of this RFC, I’ve horribly abused the `theme` field to store about 60 KB of JSON user settings data. Aside from breaking the CSS in Lemmy-UI (as expected), everything works great. The additional payload data in the `getSite` response doesn’t seem to be causing much of an impact. I may leave this in the next release under “advanced settings” with appropriate warnings as well as adding a “restore” button to restore it to a valid theme value. Ultimately, though, a dedicated field for 3PAs to use would be ideal. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 0 +favouriteCount: 4 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1699709635 {#2455 : 2023-11-11 14:33:55.0 +01:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#2363 …} +votes: Doctrine\ORM\PersistentCollection {#2372 …} +reports: Doctrine\ORM\PersistentCollection {#2386 …} +favourites: Doctrine\ORM\PersistentCollection {#2385 …} +notifications: Doctrine\ORM\PersistentCollection {#2378 …} +badges: Doctrine\ORM\PersistentCollection {#2381 …} +children: [] -id: 11991 -titleTs: "'add':2 'custom':3 'field':4 'local':6,9 'rfc':1 'site':7 'tabl':11 'user':10" -bodyTs: "'3pa':216,242,302 '3pas':110,443 '3rd':43,80,139,261 '60':369 'abil':143 'abus':362 'across':147 'ad':123,255,425 'add':2 'addit':391 'advanc':296,417 'allevi':289 'allow':79,138,320 'amount':194 'anyway':311 'api':98,158,201,287 'app':141 'applic':161 'appropri':420 'asid':376 'avoid':245 'backend':257,310 'better':342 'blob':74 'break':378 'build':307 'button':428 'call':202 'case':160,294 'caus':403 'client':84 'column':5,31,126 'common':273 'communiti':168,170,182 'con':190 'concern':227 'config':16,49,57,94 'consid':254 'contain':249 'content':246 'cooper':240 'correspond':15 'could':33,75 'cover':53 'css':380 'current':59,109,315 'custom':3,36,69,281 'data':24,177,196,207,375,393 'databas':4 'dedic':440 'dev':231,243,303 'develop':217 'devic':148 'device/browser':338 'devices/browsers':122 'discret':56 'doesn':398 'done':318 'due':203 'e.g':247 'editsit':20,133 'etc':188,252 'everyth':387 'exclus':112 'expect':386 'export':321 'expos':60,128,283 'extra':206 'far':347 'favorit':167 'field':70,223,282,365,441 'file':330 'filter':166 'getsit':132,200,396 'great':389 'group':171,183 'horribl':361 'ideal':349,448 'impact':407 'import':323 'increas':193 'individu':121 'interfac':23,67,136 'json':73,153,329,372 'kb':370 'key':17,58,215 'keyword':165 'larg':111 'leav':410 'lemmi':45,82,103,230,286,383 'lemmy-ui':102,382 'level':89,93,176 'like':39 'limit':117 'list':169,172 'load':334 'local':8,11,114,210 'mani':42 'may':267,304,409 'moder':186 'much':404 'myuserinfo':66 'name':32 'namespac':251 'need':236 'new':337 'next':414 'noth':344 'offer':47 'opt':305 'option':50,95 'overkil':269 'parti':44,81,140,262 'payload':392 'persist':119,145,278 'possibl':189,265 'prefer':164 'propos':1 'public':181 'rational':41 'realli':225 'relat':272 'releas':415 'report':184 'respons':397 'restor':427,430 'return':197 'rfc':358 'rule':180 'save':86,108 'saveuserset':22,62,135 'seem':400 'serial':150 'server':258 'set':107,146,162,279,299,326,374,418 'share':221 'similar':99 'simpl':275,298 'site':9,88,175,211 'site-level':87,174 'slight':192 'someth':38 'storag':115,300 'store':77,367 'storing/serving':155 'structur':173 'tabl':13 'task':276 'templat':187 'tesseract':313 'test':353 'text':28,125 'theme':364,435 'though':438 'thought':350 'type':25 'ui':46,83,104,263,384 'ultim':235,437 'updat':351 'use':159,293,445 'use-cas':292 'user':12,35,92,214,325,373 'user-level':91 'util':113 'valid':434 'valu':436 've':360 'via':61,130 'viabil':355 'warn':421 'well':423 'work':388 'workaround':253,316 'would':26,78,137,191,218,234,288,446" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1699718635 +visibility: "visible " +apId: "https://dubvee.org/post/370736" +editedAt: DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } +createdAt: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } } +isSingle: false +showShortSentence: true +showBody: false +showMagazineName: true +canSeeTrash: false +newComments: 0 } |
user_inline | App\Twig\Components\UserInlineComponent | 12.0 MiB | 0.30 ms | |
---|---|---|---|---|
Input props | [ "user" => App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } "showAvatar" => false ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserInlineComponent {#2646 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } +showAvatar: false } |
date | App\Twig\Components\DateComponent | 12.0 MiB | 0.22 ms | |
---|---|---|---|---|
Input props | [ "date" => DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateComponent {#2713 +date: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } } |
date_edited | App\Twig\Components\DateEditedComponent | 12.0 MiB | 0.21 ms | |
---|---|---|---|---|
Input props | [ "createdAt" => DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } "editedAt" => DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateEditedComponent {#2777 +createdAt: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } +editedAt: DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } } |
magazine_inline | App\Twig\Components\MagazineInlineComponent | 12.0 MiB | 0.20 ms | |
---|---|---|---|---|
Input props | [ "magazine" => Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } "showAvatar" => false ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\MagazineInlineComponent {#2842 +magazine: Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } +showTitle: true +fullName: false +stretchedLink: false +showAvatar: false } |
vote | App\Twig\Components\VoteComponent | 12.0 MiB | 0.50 ms | |
---|---|---|---|---|
Input props | [ "subject" => App\Entity\Entry {#2360 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } +magazine: Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#2467 …} +slug: "RFC-Add-custom-fields-to-local-site-and-local-user-tables" +title: "[RFC] Add custom fields to local_site and local_user tables" +url: null +body: """ ### Proposal\n \n Add custom database columns to the `local_site` and `local_user` tables and corresponding config keys in the `editSite` and `saveUserSettings` interfaces. Data type would be `text` and the column name could be `user_custom` or something like that.\n \n ### Rationale\n \n Many 3rd party Lemmy UIs offer more config options than are covered by the discrete config keys currently exposed via `saveUserSettings` and in the `MyUserInfo` interface. A custom field where a JSON blob could be stored would allow 3rd party Lemmy UI clients to save site-level and user-level config options to the API similar to how Lemmy-UI has its settings saved.\n \n Currently, 3PAs largely (exclusively?) utilize local storage which limits any persistence to individual devices/browsers. Adding those `text` columns and exposing them via the `getSite`, `editSite` and `saveUserSettings` interfaces would allow 3rd party apps the ability to persist settings across devices by serializing them to JSON and storing/serving from the API.\n \n ### Use Cases\n \n - Application settings and preferences\n - Keyword filters\n - Favorite community lists\n - Community group lists\n - Structured site-level data such as rules, public community groups, report and moderation templates, etc.\n \n ### Possible Cons\n \n - Would slightly increase amount of data returned in the `getSite` API call due to the extra data in the `local_site` and `my_user` keys.\n - 3PA developers would have to share this field. \n - Not really a concern for the Lemmy devs, but there would ultimately need to be some cooperation between 3PA devs to avoid contention (e.g. a container with namespaces, etc).\n \n ### Workarounds Considered\n \n Adding a backend server to each 3rd party UI is possible but may be overkill for the relatively common and simple task of persisting settings. A custom field exposed by the Lemmy API would alleviate that. For use-cases more advanced than simple settings storage, the 3PA dev may opt to build their own backend anyway.\n \n In Tesseract, the current workaround is done by allowing export and import of user settings to a JSON file which can be loaded into a new device/browser. While that’s better than nothing, it’s far from ideal.\n \n Thoughts?\n \n **Update**: To test the viability of this RFC, I’ve horribly abused the `theme` field to store about 60 KB of JSON user settings data. Aside from breaking the CSS in Lemmy-UI (as expected), everything works great. The additional payload data in the `getSite` response doesn’t seem to be causing much of an impact. I may leave this in the next release under “advanced settings” with appropriate warnings as well as adding a “restore” button to restore it to a valid theme value. Ultimately, though, a dedicated field for 3PAs to use would be ideal. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 0 +favouriteCount: 4 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1699709635 {#2455 : 2023-11-11 14:33:55.0 +01:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#2363 …} +votes: Doctrine\ORM\PersistentCollection {#2372 …} +reports: Doctrine\ORM\PersistentCollection {#2386 …} +favourites: Doctrine\ORM\PersistentCollection {#2385 …} +notifications: Doctrine\ORM\PersistentCollection {#2378 …} +badges: Doctrine\ORM\PersistentCollection {#2381 …} +children: [] -id: 11991 -titleTs: "'add':2 'custom':3 'field':4 'local':6,9 'rfc':1 'site':7 'tabl':11 'user':10" -bodyTs: "'3pa':216,242,302 '3pas':110,443 '3rd':43,80,139,261 '60':369 'abil':143 'abus':362 'across':147 'ad':123,255,425 'add':2 'addit':391 'advanc':296,417 'allevi':289 'allow':79,138,320 'amount':194 'anyway':311 'api':98,158,201,287 'app':141 'applic':161 'appropri':420 'asid':376 'avoid':245 'backend':257,310 'better':342 'blob':74 'break':378 'build':307 'button':428 'call':202 'case':160,294 'caus':403 'client':84 'column':5,31,126 'common':273 'communiti':168,170,182 'con':190 'concern':227 'config':16,49,57,94 'consid':254 'contain':249 'content':246 'cooper':240 'correspond':15 'could':33,75 'cover':53 'css':380 'current':59,109,315 'custom':3,36,69,281 'data':24,177,196,207,375,393 'databas':4 'dedic':440 'dev':231,243,303 'develop':217 'devic':148 'device/browser':338 'devices/browsers':122 'discret':56 'doesn':398 'done':318 'due':203 'e.g':247 'editsit':20,133 'etc':188,252 'everyth':387 'exclus':112 'expect':386 'export':321 'expos':60,128,283 'extra':206 'far':347 'favorit':167 'field':70,223,282,365,441 'file':330 'filter':166 'getsit':132,200,396 'great':389 'group':171,183 'horribl':361 'ideal':349,448 'impact':407 'import':323 'increas':193 'individu':121 'interfac':23,67,136 'json':73,153,329,372 'kb':370 'key':17,58,215 'keyword':165 'larg':111 'leav':410 'lemmi':45,82,103,230,286,383 'lemmy-ui':102,382 'level':89,93,176 'like':39 'limit':117 'list':169,172 'load':334 'local':8,11,114,210 'mani':42 'may':267,304,409 'moder':186 'much':404 'myuserinfo':66 'name':32 'namespac':251 'need':236 'new':337 'next':414 'noth':344 'offer':47 'opt':305 'option':50,95 'overkil':269 'parti':44,81,140,262 'payload':392 'persist':119,145,278 'possibl':189,265 'prefer':164 'propos':1 'public':181 'rational':41 'realli':225 'relat':272 'releas':415 'report':184 'respons':397 'restor':427,430 'return':197 'rfc':358 'rule':180 'save':86,108 'saveuserset':22,62,135 'seem':400 'serial':150 'server':258 'set':107,146,162,279,299,326,374,418 'share':221 'similar':99 'simpl':275,298 'site':9,88,175,211 'site-level':87,174 'slight':192 'someth':38 'storag':115,300 'store':77,367 'storing/serving':155 'structur':173 'tabl':13 'task':276 'templat':187 'tesseract':313 'test':353 'text':28,125 'theme':364,435 'though':438 'thought':350 'type':25 'ui':46,83,104,263,384 'ultim':235,437 'updat':351 'use':159,293,445 'use-cas':292 'user':12,35,92,214,325,373 'user-level':91 'util':113 'valid':434 'valu':436 've':360 'via':61,130 'viabil':355 'warn':421 'well':423 'work':388 'workaround':253,316 'would':26,78,137,191,218,234,288,446" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1699718635 +visibility: "visible " +apId: "https://dubvee.org/post/370736" +editedAt: DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } +createdAt: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\VoteComponent {#2908 +subject: App\Entity\Entry {#2360 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } +magazine: Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#2467 …} +slug: "RFC-Add-custom-fields-to-local-site-and-local-user-tables" +title: "[RFC] Add custom fields to local_site and local_user tables" +url: null +body: """ ### Proposal\n \n Add custom database columns to the `local_site` and `local_user` tables and corresponding config keys in the `editSite` and `saveUserSettings` interfaces. Data type would be `text` and the column name could be `user_custom` or something like that.\n \n ### Rationale\n \n Many 3rd party Lemmy UIs offer more config options than are covered by the discrete config keys currently exposed via `saveUserSettings` and in the `MyUserInfo` interface. A custom field where a JSON blob could be stored would allow 3rd party Lemmy UI clients to save site-level and user-level config options to the API similar to how Lemmy-UI has its settings saved.\n \n Currently, 3PAs largely (exclusively?) utilize local storage which limits any persistence to individual devices/browsers. Adding those `text` columns and exposing them via the `getSite`, `editSite` and `saveUserSettings` interfaces would allow 3rd party apps the ability to persist settings across devices by serializing them to JSON and storing/serving from the API.\n \n ### Use Cases\n \n - Application settings and preferences\n - Keyword filters\n - Favorite community lists\n - Community group lists\n - Structured site-level data such as rules, public community groups, report and moderation templates, etc.\n \n ### Possible Cons\n \n - Would slightly increase amount of data returned in the `getSite` API call due to the extra data in the `local_site` and `my_user` keys.\n - 3PA developers would have to share this field. \n - Not really a concern for the Lemmy devs, but there would ultimately need to be some cooperation between 3PA devs to avoid contention (e.g. a container with namespaces, etc).\n \n ### Workarounds Considered\n \n Adding a backend server to each 3rd party UI is possible but may be overkill for the relatively common and simple task of persisting settings. A custom field exposed by the Lemmy API would alleviate that. For use-cases more advanced than simple settings storage, the 3PA dev may opt to build their own backend anyway.\n \n In Tesseract, the current workaround is done by allowing export and import of user settings to a JSON file which can be loaded into a new device/browser. While that’s better than nothing, it’s far from ideal.\n \n Thoughts?\n \n **Update**: To test the viability of this RFC, I’ve horribly abused the `theme` field to store about 60 KB of JSON user settings data. Aside from breaking the CSS in Lemmy-UI (as expected), everything works great. The additional payload data in the `getSite` response doesn’t seem to be causing much of an impact. I may leave this in the next release under “advanced settings” with appropriate warnings as well as adding a “restore” button to restore it to a valid theme value. Ultimately, though, a dedicated field for 3PAs to use would be ideal. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 0 +favouriteCount: 4 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1699709635 {#2455 : 2023-11-11 14:33:55.0 +01:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#2363 …} +votes: Doctrine\ORM\PersistentCollection {#2372 …} +reports: Doctrine\ORM\PersistentCollection {#2386 …} +favourites: Doctrine\ORM\PersistentCollection {#2385 …} +notifications: Doctrine\ORM\PersistentCollection {#2378 …} +badges: Doctrine\ORM\PersistentCollection {#2381 …} +children: [] -id: 11991 -titleTs: "'add':2 'custom':3 'field':4 'local':6,9 'rfc':1 'site':7 'tabl':11 'user':10" -bodyTs: "'3pa':216,242,302 '3pas':110,443 '3rd':43,80,139,261 '60':369 'abil':143 'abus':362 'across':147 'ad':123,255,425 'add':2 'addit':391 'advanc':296,417 'allevi':289 'allow':79,138,320 'amount':194 'anyway':311 'api':98,158,201,287 'app':141 'applic':161 'appropri':420 'asid':376 'avoid':245 'backend':257,310 'better':342 'blob':74 'break':378 'build':307 'button':428 'call':202 'case':160,294 'caus':403 'client':84 'column':5,31,126 'common':273 'communiti':168,170,182 'con':190 'concern':227 'config':16,49,57,94 'consid':254 'contain':249 'content':246 'cooper':240 'correspond':15 'could':33,75 'cover':53 'css':380 'current':59,109,315 'custom':3,36,69,281 'data':24,177,196,207,375,393 'databas':4 'dedic':440 'dev':231,243,303 'develop':217 'devic':148 'device/browser':338 'devices/browsers':122 'discret':56 'doesn':398 'done':318 'due':203 'e.g':247 'editsit':20,133 'etc':188,252 'everyth':387 'exclus':112 'expect':386 'export':321 'expos':60,128,283 'extra':206 'far':347 'favorit':167 'field':70,223,282,365,441 'file':330 'filter':166 'getsit':132,200,396 'great':389 'group':171,183 'horribl':361 'ideal':349,448 'impact':407 'import':323 'increas':193 'individu':121 'interfac':23,67,136 'json':73,153,329,372 'kb':370 'key':17,58,215 'keyword':165 'larg':111 'leav':410 'lemmi':45,82,103,230,286,383 'lemmy-ui':102,382 'level':89,93,176 'like':39 'limit':117 'list':169,172 'load':334 'local':8,11,114,210 'mani':42 'may':267,304,409 'moder':186 'much':404 'myuserinfo':66 'name':32 'namespac':251 'need':236 'new':337 'next':414 'noth':344 'offer':47 'opt':305 'option':50,95 'overkil':269 'parti':44,81,140,262 'payload':392 'persist':119,145,278 'possibl':189,265 'prefer':164 'propos':1 'public':181 'rational':41 'realli':225 'relat':272 'releas':415 'report':184 'respons':397 'restor':427,430 'return':197 'rfc':358 'rule':180 'save':86,108 'saveuserset':22,62,135 'seem':400 'serial':150 'server':258 'set':107,146,162,279,299,326,374,418 'share':221 'similar':99 'simpl':275,298 'site':9,88,175,211 'site-level':87,174 'slight':192 'someth':38 'storag':115,300 'store':77,367 'storing/serving':155 'structur':173 'tabl':13 'task':276 'templat':187 'tesseract':313 'test':353 'text':28,125 'theme':364,435 'though':438 'thought':350 'type':25 'ui':46,83,104,263,384 'ultim':235,437 'updat':351 'use':159,293,445 'use-cas':292 'user':12,35,92,214,325,373 'user-level':91 'util':113 'valid':434 'valu':436 've':360 'via':61,130 'viabil':355 'warn':421 'well':423 'work':388 'workaround':253,316 'would':26,78,137,191,218,234,288,446" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1699718635 +visibility: "visible " +apId: "https://dubvee.org/post/370736" +editedAt: DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } +createdAt: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } } +formDest: "entry" +showDownvote: true -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} } |
boost | App\Twig\Components\BoostComponent | 12.0 MiB | 2.56 ms | |
---|---|---|---|---|
Input props | [ "subject" => App\Entity\Entry {#2360 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } +magazine: Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#2467 …} +slug: "RFC-Add-custom-fields-to-local-site-and-local-user-tables" +title: "[RFC] Add custom fields to local_site and local_user tables" +url: null +body: """ ### Proposal\n \n Add custom database columns to the `local_site` and `local_user` tables and corresponding config keys in the `editSite` and `saveUserSettings` interfaces. Data type would be `text` and the column name could be `user_custom` or something like that.\n \n ### Rationale\n \n Many 3rd party Lemmy UIs offer more config options than are covered by the discrete config keys currently exposed via `saveUserSettings` and in the `MyUserInfo` interface. A custom field where a JSON blob could be stored would allow 3rd party Lemmy UI clients to save site-level and user-level config options to the API similar to how Lemmy-UI has its settings saved.\n \n Currently, 3PAs largely (exclusively?) utilize local storage which limits any persistence to individual devices/browsers. Adding those `text` columns and exposing them via the `getSite`, `editSite` and `saveUserSettings` interfaces would allow 3rd party apps the ability to persist settings across devices by serializing them to JSON and storing/serving from the API.\n \n ### Use Cases\n \n - Application settings and preferences\n - Keyword filters\n - Favorite community lists\n - Community group lists\n - Structured site-level data such as rules, public community groups, report and moderation templates, etc.\n \n ### Possible Cons\n \n - Would slightly increase amount of data returned in the `getSite` API call due to the extra data in the `local_site` and `my_user` keys.\n - 3PA developers would have to share this field. \n - Not really a concern for the Lemmy devs, but there would ultimately need to be some cooperation between 3PA devs to avoid contention (e.g. a container with namespaces, etc).\n \n ### Workarounds Considered\n \n Adding a backend server to each 3rd party UI is possible but may be overkill for the relatively common and simple task of persisting settings. A custom field exposed by the Lemmy API would alleviate that. For use-cases more advanced than simple settings storage, the 3PA dev may opt to build their own backend anyway.\n \n In Tesseract, the current workaround is done by allowing export and import of user settings to a JSON file which can be loaded into a new device/browser. While that’s better than nothing, it’s far from ideal.\n \n Thoughts?\n \n **Update**: To test the viability of this RFC, I’ve horribly abused the `theme` field to store about 60 KB of JSON user settings data. Aside from breaking the CSS in Lemmy-UI (as expected), everything works great. The additional payload data in the `getSite` response doesn’t seem to be causing much of an impact. I may leave this in the next release under “advanced settings” with appropriate warnings as well as adding a “restore” button to restore it to a valid theme value. Ultimately, though, a dedicated field for 3PAs to use would be ideal. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 0 +favouriteCount: 4 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1699709635 {#2455 : 2023-11-11 14:33:55.0 +01:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#2363 …} +votes: Doctrine\ORM\PersistentCollection {#2372 …} +reports: Doctrine\ORM\PersistentCollection {#2386 …} +favourites: Doctrine\ORM\PersistentCollection {#2385 …} +notifications: Doctrine\ORM\PersistentCollection {#2378 …} +badges: Doctrine\ORM\PersistentCollection {#2381 …} +children: [] -id: 11991 -titleTs: "'add':2 'custom':3 'field':4 'local':6,9 'rfc':1 'site':7 'tabl':11 'user':10" -bodyTs: "'3pa':216,242,302 '3pas':110,443 '3rd':43,80,139,261 '60':369 'abil':143 'abus':362 'across':147 'ad':123,255,425 'add':2 'addit':391 'advanc':296,417 'allevi':289 'allow':79,138,320 'amount':194 'anyway':311 'api':98,158,201,287 'app':141 'applic':161 'appropri':420 'asid':376 'avoid':245 'backend':257,310 'better':342 'blob':74 'break':378 'build':307 'button':428 'call':202 'case':160,294 'caus':403 'client':84 'column':5,31,126 'common':273 'communiti':168,170,182 'con':190 'concern':227 'config':16,49,57,94 'consid':254 'contain':249 'content':246 'cooper':240 'correspond':15 'could':33,75 'cover':53 'css':380 'current':59,109,315 'custom':3,36,69,281 'data':24,177,196,207,375,393 'databas':4 'dedic':440 'dev':231,243,303 'develop':217 'devic':148 'device/browser':338 'devices/browsers':122 'discret':56 'doesn':398 'done':318 'due':203 'e.g':247 'editsit':20,133 'etc':188,252 'everyth':387 'exclus':112 'expect':386 'export':321 'expos':60,128,283 'extra':206 'far':347 'favorit':167 'field':70,223,282,365,441 'file':330 'filter':166 'getsit':132,200,396 'great':389 'group':171,183 'horribl':361 'ideal':349,448 'impact':407 'import':323 'increas':193 'individu':121 'interfac':23,67,136 'json':73,153,329,372 'kb':370 'key':17,58,215 'keyword':165 'larg':111 'leav':410 'lemmi':45,82,103,230,286,383 'lemmy-ui':102,382 'level':89,93,176 'like':39 'limit':117 'list':169,172 'load':334 'local':8,11,114,210 'mani':42 'may':267,304,409 'moder':186 'much':404 'myuserinfo':66 'name':32 'namespac':251 'need':236 'new':337 'next':414 'noth':344 'offer':47 'opt':305 'option':50,95 'overkil':269 'parti':44,81,140,262 'payload':392 'persist':119,145,278 'possibl':189,265 'prefer':164 'propos':1 'public':181 'rational':41 'realli':225 'relat':272 'releas':415 'report':184 'respons':397 'restor':427,430 'return':197 'rfc':358 'rule':180 'save':86,108 'saveuserset':22,62,135 'seem':400 'serial':150 'server':258 'set':107,146,162,279,299,326,374,418 'share':221 'similar':99 'simpl':275,298 'site':9,88,175,211 'site-level':87,174 'slight':192 'someth':38 'storag':115,300 'store':77,367 'storing/serving':155 'structur':173 'tabl':13 'task':276 'templat':187 'tesseract':313 'test':353 'text':28,125 'theme':364,435 'though':438 'thought':350 'type':25 'ui':46,83,104,263,384 'ultim':235,437 'updat':351 'use':159,293,445 'use-cas':292 'user':12,35,92,214,325,373 'user-level':91 'util':113 'valid':434 'valu':436 've':360 'via':61,130 'viabil':355 'warn':421 'well':423 'work':388 'workaround':253,316 'would':26,78,137,191,218,234,288,446" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1699718635 +visibility: "visible " +apId: "https://dubvee.org/post/370736" +editedAt: DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } +createdAt: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\BoostComponent {#2975 +formDest: "entry" +subject: App\Entity\Entry {#2360 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } +magazine: Proxies\__CG__\App\Entity\Magazine {#2377 +icon: null +name: "lemmy_support@lemmy.ml" +title: "lemmy_support" +description: """ Support / questions about Lemmy.\n \n [Matrix Space: #lemmy-space](https://matrix.to/#/#lemmy-space:matrix.org) """ +rules: null +subscriptionsCount: 1 +entryCount: 130 +entryCommentCount: 600 +postCount: 2 +postCommentCount: 14 +isAdult: false +customCss: null +lastActive: DateTime @1728910137 {#2233 : 2024-10-14 14:48:57.0 +02:00 } +markedForDeletionAt: null +tags: null +moderators: Doctrine\ORM\PersistentCollection {#2238 …} +ownershipRequests: Doctrine\ORM\PersistentCollection {#2249 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#2259 …} +entries: Doctrine\ORM\PersistentCollection {#2244 …} +posts: Doctrine\ORM\PersistentCollection {#2250 …} +subscriptions: Doctrine\ORM\PersistentCollection {#2245 …} +bans: Doctrine\ORM\PersistentCollection {#2251 …} +reports: Doctrine\ORM\PersistentCollection {#2039 …} +badges: Doctrine\ORM\PersistentCollection {#2149 …} +logs: Doctrine\ORM\PersistentCollection {#2173 …} +awards: Doctrine\ORM\PersistentCollection {#2157 …} +categories: Doctrine\ORM\PersistentCollection {#2178 …} -id: 40 +apId: "lemmy_support@lemmy.ml" +apProfileId: "https://lemmy.ml/c/lemmy_support" +apPublicUrl: "https://lemmy.ml/c/lemmy_support" +apFollowersUrl: "https://lemmy.ml/c/lemmy_support/followers" +apInboxUrl: "https://lemmy.ml/inbox" +apDomain: "lemmy.ml" +apPreferredUsername: "lemmy_support" +apDiscoverable: true +apManuallyApprovesFollowers: null +privateKey: null +publicKey: null +apFetchedAt: DateTime @1729581033 {#2226 : 2024-10-22 09:10:33.0 +02:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1696687715 {#2234 : 2023-10-07 16:08:35.0 +02:00 } +__isInitialized__: true …2 } +image: null +domain: Proxies\__CG__\App\Entity\Domain {#2467 …} +slug: "RFC-Add-custom-fields-to-local-site-and-local-user-tables" +title: "[RFC] Add custom fields to local_site and local_user tables" +url: null +body: """ ### Proposal\n \n Add custom database columns to the `local_site` and `local_user` tables and corresponding config keys in the `editSite` and `saveUserSettings` interfaces. Data type would be `text` and the column name could be `user_custom` or something like that.\n \n ### Rationale\n \n Many 3rd party Lemmy UIs offer more config options than are covered by the discrete config keys currently exposed via `saveUserSettings` and in the `MyUserInfo` interface. A custom field where a JSON blob could be stored would allow 3rd party Lemmy UI clients to save site-level and user-level config options to the API similar to how Lemmy-UI has its settings saved.\n \n Currently, 3PAs largely (exclusively?) utilize local storage which limits any persistence to individual devices/browsers. Adding those `text` columns and exposing them via the `getSite`, `editSite` and `saveUserSettings` interfaces would allow 3rd party apps the ability to persist settings across devices by serializing them to JSON and storing/serving from the API.\n \n ### Use Cases\n \n - Application settings and preferences\n - Keyword filters\n - Favorite community lists\n - Community group lists\n - Structured site-level data such as rules, public community groups, report and moderation templates, etc.\n \n ### Possible Cons\n \n - Would slightly increase amount of data returned in the `getSite` API call due to the extra data in the `local_site` and `my_user` keys.\n - 3PA developers would have to share this field. \n - Not really a concern for the Lemmy devs, but there would ultimately need to be some cooperation between 3PA devs to avoid contention (e.g. a container with namespaces, etc).\n \n ### Workarounds Considered\n \n Adding a backend server to each 3rd party UI is possible but may be overkill for the relatively common and simple task of persisting settings. A custom field exposed by the Lemmy API would alleviate that. For use-cases more advanced than simple settings storage, the 3PA dev may opt to build their own backend anyway.\n \n In Tesseract, the current workaround is done by allowing export and import of user settings to a JSON file which can be loaded into a new device/browser. While that’s better than nothing, it’s far from ideal.\n \n Thoughts?\n \n **Update**: To test the viability of this RFC, I’ve horribly abused the `theme` field to store about 60 KB of JSON user settings data. Aside from breaking the CSS in Lemmy-UI (as expected), everything works great. The additional payload data in the `getSite` response doesn’t seem to be causing much of an impact. I may leave this in the next release under “advanced settings” with appropriate warnings as well as adding a “restore” button to restore it to a valid theme value. Ultimately, though, a dedicated field for 3PAs to use would be ideal. """ +type: "article" +lang: "en" +isOc: false +hasEmbed: false +commentCount: 0 +favouriteCount: 4 +score: 0 +isAdult: false +sticky: false +lastActive: DateTime @1699709635 {#2455 : 2023-11-11 14:33:55.0 +01:00 } +ip: null +adaAmount: 0 +tags: null +mentions: null +comments: Doctrine\ORM\PersistentCollection {#2363 …} +votes: Doctrine\ORM\PersistentCollection {#2372 …} +reports: Doctrine\ORM\PersistentCollection {#2386 …} +favourites: Doctrine\ORM\PersistentCollection {#2385 …} +notifications: Doctrine\ORM\PersistentCollection {#2378 …} +badges: Doctrine\ORM\PersistentCollection {#2381 …} +children: [] -id: 11991 -titleTs: "'add':2 'custom':3 'field':4 'local':6,9 'rfc':1 'site':7 'tabl':11 'user':10" -bodyTs: "'3pa':216,242,302 '3pas':110,443 '3rd':43,80,139,261 '60':369 'abil':143 'abus':362 'across':147 'ad':123,255,425 'add':2 'addit':391 'advanc':296,417 'allevi':289 'allow':79,138,320 'amount':194 'anyway':311 'api':98,158,201,287 'app':141 'applic':161 'appropri':420 'asid':376 'avoid':245 'backend':257,310 'better':342 'blob':74 'break':378 'build':307 'button':428 'call':202 'case':160,294 'caus':403 'client':84 'column':5,31,126 'common':273 'communiti':168,170,182 'con':190 'concern':227 'config':16,49,57,94 'consid':254 'contain':249 'content':246 'cooper':240 'correspond':15 'could':33,75 'cover':53 'css':380 'current':59,109,315 'custom':3,36,69,281 'data':24,177,196,207,375,393 'databas':4 'dedic':440 'dev':231,243,303 'develop':217 'devic':148 'device/browser':338 'devices/browsers':122 'discret':56 'doesn':398 'done':318 'due':203 'e.g':247 'editsit':20,133 'etc':188,252 'everyth':387 'exclus':112 'expect':386 'export':321 'expos':60,128,283 'extra':206 'far':347 'favorit':167 'field':70,223,282,365,441 'file':330 'filter':166 'getsit':132,200,396 'great':389 'group':171,183 'horribl':361 'ideal':349,448 'impact':407 'import':323 'increas':193 'individu':121 'interfac':23,67,136 'json':73,153,329,372 'kb':370 'key':17,58,215 'keyword':165 'larg':111 'leav':410 'lemmi':45,82,103,230,286,383 'lemmy-ui':102,382 'level':89,93,176 'like':39 'limit':117 'list':169,172 'load':334 'local':8,11,114,210 'mani':42 'may':267,304,409 'moder':186 'much':404 'myuserinfo':66 'name':32 'namespac':251 'need':236 'new':337 'next':414 'noth':344 'offer':47 'opt':305 'option':50,95 'overkil':269 'parti':44,81,140,262 'payload':392 'persist':119,145,278 'possibl':189,265 'prefer':164 'propos':1 'public':181 'rational':41 'realli':225 'relat':272 'releas':415 'report':184 'respons':397 'restor':427,430 'return':197 'rfc':358 'rule':180 'save':86,108 'saveuserset':22,62,135 'seem':400 'serial':150 'server':258 'set':107,146,162,279,299,326,374,418 'share':221 'similar':99 'simpl':275,298 'site':9,88,175,211 'site-level':87,174 'slight':192 'someth':38 'storag':115,300 'store':77,367 'storing/serving':155 'structur':173 'tabl':13 'task':276 'templat':187 'tesseract':313 'test':353 'text':28,125 'theme':364,435 'though':438 'thought':350 'type':25 'ui':46,83,104,263,384 'ultim':235,437 'updat':351 'use':159,293,445 'use-cas':292 'user':12,35,92,214,325,373 'user-level':91 'util':113 'valid':434 'valu':436 've':360 'via':61,130 'viabil':355 'warn':421 'well':423 'work':388 'workaround':253,316 'would':26,78,137,191,218,234,288,446" +cross: false +upVotes: 0 +downVotes: 0 +ranking: 1699718635 +visibility: "visible " +apId: "https://dubvee.org/post/370736" +editedAt: DateTimeImmutable @1699874770 {#2452 : 2023-11-13 12:26:10.0 +01:00 } +createdAt: DateTimeImmutable @1699709635 {#2370 : 2023-11-11 14:33:55.0 +01:00 } } -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} } |
settings_row_enum | App\Twig\Components\SettingsRowEnumComponent | 12.0 MiB | 0.22 ms | |
---|---|---|---|---|
Input props | [ "label" => "Sidebar position" "settingsKey" => "KBIN_GENERAL_SIDEBAR_POSITION" "values" => [ [ "name" => "Left" "value" => "LEFT" ] [ "name" => "Right" "value" => "RIGHT" ] ] "defaultValue" => "RIGHT" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowEnumComponent {#3343 +label: "Sidebar position" +help: "" +settingsKey: "KBIN_GENERAL_SIDEBAR_POSITION" +values: [ [ "name" => "Left" "value" => "LEFT" ] [ "name" => "Right" "value" => "RIGHT" ] ] +defaultValue: "RIGHT" +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.19 ms | |
---|---|---|---|---|
Input props | [ "label" => "Dynamic lists" "settingsKey" => "KBIN_GENERAL_DYNAMIC_LISTS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#3401 +label: "Dynamic lists" +help: "" +settingsKey: "KBIN_GENERAL_DYNAMIC_LISTS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Rounded edges" "settingsKey" => "KBIN_GENERAL_ROUNDED_EDGES" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#3463 +label: "Rounded edges" +help: "" +settingsKey: "KBIN_GENERAL_ROUNDED_EDGES" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.14 ms | |
---|---|---|---|---|
Input props | [ "label" => "Infinite scrolling" "help" => "Automatically load more content when you reach the bottom of the page." "settingsKey" => "KBIN_GENERAL_INFINITE_SCROLL" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#3519 +label: "Infinite scrolling" +help: "Automatically load more content when you reach the bottom of the page." +settingsKey: "KBIN_GENERAL_INFINITE_SCROLL" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Sticky navbar" "help" => "The navbar will stick to the top of the page when you scroll down." "settingsKey" => "KBIN_GENERAL_FIXED_NAVBAR" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#3578 +label: "Sticky navbar" +help: "The navbar will stick to the top of the page when you scroll down." +settingsKey: "KBIN_GENERAL_FIXED_NAVBAR" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show top bar" "settingsKey" => "KBIN_GENERAL_TOPBAR" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#3634 +label: "Show top bar" +help: "" +settingsKey: "KBIN_GENERAL_TOPBAR" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.17 ms | |
---|---|---|---|---|
Input props | [ "label" => "Turbo mode (experimental)" "settingsKey" => "KBIN_GENERAL_TURBO" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#3690 +label: "Turbo mode (experimental)" +help: "" +settingsKey: "KBIN_GENERAL_TURBO" +defaultValue: false +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.22 ms | |
---|---|---|---|---|
Input props | [ "label" => "Mark new comments" "settingsKey" => "KBIN_MARK_NEW_COMMENTS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#3748 +label: "Mark new comments" +help: "" +settingsKey: "KBIN_MARK_NEW_COMMENTS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show "Support Us" block" "settingsKey" => "KBIN_GENERAL_SUPPORT_US_BLOCK" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#3811 +label: "Show "Support Us" block" +help: "" +settingsKey: "KBIN_GENERAL_SUPPORT_US_BLOCK" +defaultValue: true +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.15 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show subscribed users" "settingsKey" => "KBIN_SUB_CHANNEL_USERS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#3869 +label: "Show subscribed users" +help: "" +settingsKey: "KBIN_SUB_CHANNEL_USERS" +defaultValue: false +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.17 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show subscribed magazines" "settingsKey" => "KBIN_SUB_CHANNEL_MAGAZINES" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#3925 +label: "Show subscribed magazines" +help: "" +settingsKey: "KBIN_SUB_CHANNEL_MAGAZINES" +defaultValue: false +reloadRequired: true } |
user_settings_row_switch | App\Twig\Components\UserSettingsRowSwitchComponent | 12.0 MiB | 0.15 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show subscribed domains" "settingsKey" => "KBIN_SUB_CHANNEL_DOMAINS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserSettingsRowSwitchComponent {#3981 +label: "Show subscribed domains" +help: "" +settingsKey: "KBIN_SUB_CHANNEL_DOMAINS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Auto media preview" "help" => "Automatically expand media previews." "settingsKey" => "KBIN_ENTRIES_SHOW_PREVIEW" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4037 +label: "Auto media preview" +help: "Automatically expand media previews." +settingsKey: "KBIN_ENTRIES_SHOW_PREVIEW" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Compact view" "settingsKey" => "KBIN_ENTRIES_COMPACT" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4093 +label: "Compact view" +help: "" +settingsKey: "KBIN_ENTRIES_COMPACT" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 1.63 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show users’ avatars" "settingsKey" => "KBIN_ENTRIES_SHOW_USERS_AVATARS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4149 +label: "Show users’ avatars" +help: "" +settingsKey: "KBIN_ENTRIES_SHOW_USERS_AVATARS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.21 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show magazines’ icons" "settingsKey" => "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4205 +label: "Show magazines’ icons" +help: "" +settingsKey: "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show thumbnails" "settingsKey" => "KBIN_ENTRIES_SHOW_THUMBNAILS" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4261 +label: "Show thumbnails" +help: "" +settingsKey: "KBIN_ENTRIES_SHOW_THUMBNAILS" +defaultValue: true +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Auto media preview" "help" => "Automatically expand media previews." "settingsKey" => "KBIN_POSTS_SHOW_PREVIEW" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4317 +label: "Auto media preview" +help: "Automatically expand media previews." +settingsKey: "KBIN_POSTS_SHOW_PREVIEW" +defaultValue: false +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.12 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show users’ avatars" "settingsKey" => "KBIN_POSTS_SHOW_USERS_AVATARS" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4373 +label: "Show users’ avatars" +help: "" +settingsKey: "KBIN_POSTS_SHOW_USERS_AVATARS" +defaultValue: true +reloadRequired: true } |
settings_row_enum | App\Twig\Components\SettingsRowEnumComponent | 12.0 MiB | 0.15 ms | |
---|---|---|---|---|
Input props | [ "label" => "Comment reply position" "help" => "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top." "settingsKey" => "KBIN_COMMENTS_REPLY_POSITION" "values" => [ [ "name" => "top" "value" => "TOP" ] [ "name" => "bottom" "value" => "BOTTOM" ] ] "defaultValue" => "TOP" ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowEnumComponent {#4429 +label: "Comment reply position" +help: "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top." +settingsKey: "KBIN_COMMENTS_REPLY_POSITION" +values: [ [ "name" => "top" "value" => "TOP" ] [ "name" => "bottom" "value" => "BOTTOM" ] ] +defaultValue: "TOP" +reloadRequired: true } |
settings_row_switch | App\Twig\Components\SettingsRowSwitchComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "label" => "Show Comment Avatars" "help" => "Display/hide user avatars when viewing comments on a single thread or post." "settingsKey" => "KBIN_COMMENTS_SHOW_USER_AVATAR" "defaultValue" => true ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SettingsRowSwitchComponent {#4487 +label: "Show Comment Avatars" +help: "Display/hide user avatars when viewing comments on a single thread or post." +settingsKey: "KBIN_COMMENTS_SHOW_USER_AVATAR" +defaultValue: true +reloadRequired: true } |
user_actions | App\Twig\Components\UserActionsComponent | 12.0 MiB | 0.46 ms | |
---|---|---|---|---|
Input props | [ "user" => App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\UserActionsComponent {#4565 +user: App\Entity\User {#265 +avatar: Proxies\__CG__\App\Entity\Image {#246 …} +cover: Proxies\__CG__\App\Entity\Image {#247 …} +email: "ptz@dubvee.org" +username: "@ptz@dubvee.org" +roles: [] +followersCount: 0 +homepage: "front" +about: "Ask me anything." +lastActive: DateTime @1707767810 {#273 : 2024-02-12 20:56:50.0 +01:00 } +markedForDeletionAt: null +fields: null +oauthGithubId: null +oauthGoogleId: null +oauthFacebookId: null +oauthKeycloakId: null +hideAdult: true +showSubscribedUsers: true +showSubscribedMagazines: true +showSubscribedDomains: true +preferredLanguages: [] +featuredMagazines: null +showProfileSubscriptions: true +showProfileFollowings: true +markNewComments: false +notifyOnNewEntry: false +notifyOnNewEntryReply: false +notifyOnNewEntryCommentReply: false +notifyOnNewPost: false +notifyOnNewPostReply: false +notifyOnNewPostCommentReply: false +addMentionsEntries: false +addMentionsPosts: true +isBanned: false +isVerified: false +isDeleted: false +isBot: false +spamProtection: true +customCss: null +ignoreMagazinesCustomCss: false +moderatorTokens: Doctrine\ORM\PersistentCollection {#236 …} +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#232 …} +moderatorRequests: Doctrine\ORM\PersistentCollection {#221 …} +entries: Doctrine\ORM\PersistentCollection {#179 …} +entryVotes: Doctrine\ORM\PersistentCollection {#151 …} +entryComments: Doctrine\ORM\PersistentCollection {#124 …} +entryCommentVotes: Doctrine\ORM\PersistentCollection {#94 …} +posts: Doctrine\ORM\PersistentCollection {#67 …} +postVotes: Doctrine\ORM\PersistentCollection {#82 …} +postComments: Doctrine\ORM\PersistentCollection {#1372 …} +postCommentVotes: Doctrine\ORM\PersistentCollection {#1594 …} +subscriptions: Doctrine\ORM\PersistentCollection {#1873 …} +subscribedDomains: Doctrine\ORM\PersistentCollection {#1769 …} +follows: Doctrine\ORM\PersistentCollection {#1809 …} +followers: Doctrine\ORM\PersistentCollection {#2390 …} +blocks: Doctrine\ORM\PersistentCollection {#1860 …} +blockers: Doctrine\ORM\PersistentCollection {#1857 …} +blockedMagazines: Doctrine\ORM\PersistentCollection {#1791 …} +blockedDomains: Doctrine\ORM\PersistentCollection {#2401 …} +reports: Doctrine\ORM\PersistentCollection {#2480 …} +favourites: Doctrine\ORM\PersistentCollection {#1373 …} +violations: Doctrine\ORM\PersistentCollection {#2413 …} +notifications: Doctrine\ORM\PersistentCollection {#1884 …} +awards: Doctrine\ORM\PersistentCollection {#1867 …} +subscribedCategories: Doctrine\ORM\PersistentCollection {#1920 …} +categories: Doctrine\ORM\PersistentCollection {#1395 …} -id: 31957 -password: "$2y$13$GQ5ytKsdAjGNepaBKTyaw.LxgdDgO3AmJCBWfHMnv0zu0ZgfjN0A2" -totpSecret: null -totpBackupCodes: [] -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1953 …} +apId: "ptz@dubvee.org" +apProfileId: "https://dubvee.org/u/ptz" +apPublicUrl: "https://dubvee.org/u/ptz" +apFollowersUrl: null +apInboxUrl: "https://dubvee.org/inbox" +apDomain: "dubvee.org" +apPreferredUsername: "ptz" +apDiscoverable: true +apManuallyApprovesFollowers: false +privateKey: null +publicKey: null +apFetchedAt: DateTime @1711023282 {#274 : 2024-03-21 13:14:42.0 +01:00 } +apDeletedAt: null +apTimeoutAt: null +visibility: "visible " +createdAt: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } } |
date | App\Twig\Components\DateComponent | 12.0 MiB | 0.13 ms | |
---|---|---|---|---|
Input props | [ "date" => DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\DateComponent {#4626 +date: DateTimeImmutable @1689880362 {#268 : 2023-07-20 21:12:42.0 +02:00 } } |
related_magazines | App\Twig\Components\RelatedMagazinesComponent | 12.0 MiB | 3.50 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedMagazinesComponent {#4713 +limit: 4 +tag: null +magazine: null +type: "random" +title: "random_magazines" +refreshedRandom: false -repository: App\Repository\MagazineRepository {#2446 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} } |
active_users | App\Twig\Components\ActiveUsersComponent | 12.0 MiB | 0.31 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\ActiveUsersComponent {#4778 +magazine: null -userRepository: App\Repository\UserRepository {#603 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} } |
related_categories | App\Twig\Components\RelatedCategoriesComponent | 12.0 MiB | 1.87 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedCategoriesComponent {#4837 +limit: 4 +tag: null +magazine: null +type: "random" +title: "random_categories" +refreshedRandom: false -repository: App\Repository\CategoryRepository {#4838 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} } |
related_posts | App\Twig\Components\RelatedPostsComponent | 12.0 MiB | 2.20 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedPostsComponent {#4908 +limit: 4 +tag: null +magazine: null +type: "random" +post: null +title: "random_posts" +refreshedRandom: false -repository: App\Repository\PostRepository {#4907 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -mentionManager: App\Service\MentionManager {#1536 …} } |
related_entries | App\Twig\Components\RelatedEntriesComponent | 12.0 MiB | 3.75 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null "tag" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\RelatedEntriesComponent {#4977 +limit: 4 +tag: null +magazine: null +type: "random" +entry: null +title: "random_entries" +refreshedRandom: false -repository: App\Repository\EntryRepository {#1474 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -twig: Twig\Environment {#1252 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -mentionManager: App\Service\MentionManager {#1536 …} } |
support_us_block | App\Twig\Components\SupportUsBlock | 12.0 MiB | 0.37 ms | |
---|---|---|---|---|
Input props | [] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\SupportUsBlock {#5046 +subject: ? App\Entity\Contracts\VotableInterface +url: ? string -twig: Twig\Environment {#1252 …} -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …} -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …} -partnerBlockRepository: App\Repository\PartnerBlockRepository {#5047 …} } |
featured_magazines | App\Twig\Components\FeaturedMagazinesComponent | 12.0 MiB | 1.67 ms | |
---|---|---|---|---|
Input props | [ "magazine" => null ] |
|||
Attributes | [] |
|||
Component | App\Twig\Components\FeaturedMagazinesComponent {#5139 +magazine: null -twig: Twig\Environment {#1252 …} -repository: App\Repository\MagazineRepository {#2446 …} } |