Commit Graph

289 Commits

Author SHA1 Message Date
Yassine Doghri 108fdf84b8 fix(import-update): insert episodes incrementally into database 2023-05-05 12:56:57 +00:00
Yassine Doghri ebb9be985a chore(podcast-import): clean unnecessary critical log when importing episodes 2023-04-17 11:21:07 +00:00
Yassine Doghri 855aacce0b fix(websub): add missing misc helper import
+ add checks before clearing episode cache
2023-04-17 11:18:02 +00:00
Yassine Doghri a00e45ea4c build: update js and php dependencies to latest 2023-04-14 11:22:12 +00:00
crowdin 23a47efefd chore(i18n): new Crowdin updates 2023-04-14 09:47:53 +00:00
Yassine Doghri 502f53c970 fix(s3): serve files using media base url to allow for CDN setup 2023-04-14 09:35:05 +00:00
Yassine Doghri a76724a8cf fix(s3): add proxy to serve images from s3 to client
refs #321
2023-04-13 11:46:31 +00:00
crowdin 1a69bc48bb chore(i18n): new Crowdin updates 2023-04-01 12:38:40 +00:00
Yassine Doghri 41d8efe6e7 fix: delete files using file_manager when deleting episode and podcast
- add deleteAll method to file manager
- refactor deletePodcastImageSizes and
deletePersonImagesSizes implementations
2023-03-30 13:23:10 +00:00
misuzu 7e1a470ba4 feat(media): set media storage directory as configurable 2023-03-28 16:13:04 +00:00
Yassine Doghri da7076fc2d fix(s3): do not create bucket if not exists, check if healthy instead
update php and js dependencies to latest
2023-03-23 11:46:21 +00:00
Aonrud ae5e12be3b fix: allow images to have .jpeg extension consistently 2023-03-21 18:06:54 +00:00
Yassine Doghri 208c2715f9 fix(s3): delete persons image sizes from bucket + add keyPrefix to config 2023-03-21 17:08:42 +00:00
Yassine Doghri a4141421aa fix(migration): change old media file_key to file_path
fixes #314
2023-03-18 10:13:36 +00:00
Yassine Doghri b3c6e05e6f fix: change app.mediaBaseURL to media.baseURL in install, docker entrypoints and docs 2023-03-17 17:36:26 +00:00
Yassine Doghri 5d2a2d49c4 fix(contributors): add dash to prevent deleting permissions from other podcast
fixes #310
2023-03-17 16:34:44 +00:00
Yassine Doghri 1dde11f8e4 feat: add health route to check if db, cache and file manager are ok 2023-03-17 14:54:03 +00:00
crowdin d2151b74bd chore(i18n): new Crowdin updates 2023-03-16 16:45:41 +00:00
Yassine Doghri d93fc98469 feat(media): add s3 to manage media files
Users may choose between filesystem (FS) or S3 to store and manage their media files
2023-03-16 13:00:05 +00:00
Yassine Doghri a9b630884b fix(auth): update podcast editors' permissions
`episodes.manage-notifications` should be `manage-notifications`
2023-03-07 14:55:49 +00:00
Yassine Doghri b63c1dc9b1 feat: add downloads count to episode list 2023-02-28 16:53:58 +00:00
Yassine Doghri fc009f3d00 revert(install): reset condition to look for instance owner before continuing install 2023-02-28 14:26:27 +00:00
Aonrud 1111177eb7 fix(analytics): check the x_forwarded_for client header 2023-02-24 15:38:14 +00:00
Yassine Doghri 84a6447fd4 ci: fix lint and formatting issues 2023-02-22 16:29:45 +00:00
Yassine Doghri a2a87abf7c fix: display bandwidth limit on dashboard when set in .env 2022-12-28 16:57:14 +00:00
crowdin 1cc9c11e8f chore(i18n): new Crowdin updates 2022-12-14 11:18:11 +00:00
Yassine Doghri 77ccb30600 fix(analytics): set EpisodeAudioController to init user session data 2022-12-14 10:02:36 +00:00
Yassine Doghri 0ad22e49bc fix(op3): remove scheme when wraping audio URI 2022-12-13 11:56:49 +00:00
Yassine Doghri 964cbba54f fix(rss): add file extension to enclosure url 2022-12-13 11:34:50 +00:00
Yassine Doghri 46d70541d3 fix(notifications): remove cache inconsistencies when marking notification as read 2022-12-09 16:44:59 +00:00
crowdin 2e7b462d94 chore(i18n): new Crowdin updates 2022-12-09 15:42:46 +00:00
Yassine Doghri 16527ed529 feat(analytics): add OP3 analytics service option + update episode audio url 2022-12-09 15:04:42 +00:00
Yassine Doghri 7fbbd08da6 fix(notifications): retrieve activity from database instead of getting cache 2022-12-07 14:00:38 +00:00
crowdin 80666bc728 chore(i18n): new Crowdin updates 2022-11-25 17:44:19 +00:00
Yassine Doghri c13cfa0ea0 fix(router): revert to CI4 v4.2.7 to include all routes 2022-11-24 15:30:24 +00:00
Yassine Doghri 4f7c17f420 chore: add missing translation keys for blocked actors and domains breadcrumb 2022-11-22 16:48:59 +00:00
Yassine Doghri 1d6b177a55 fix: update actorUsername regex to get url_to actor
Since CI4 v4.2.8, the actor route is not retrieved anymore, this prevents users from creating a
podcast.
2022-11-18 17:38:40 +00:00
crowdin b1e52ffac3 chore: new Crowdin updates 2022-11-17 14:42:46 +00:00
Yassine Doghri 0eb223baa0 chore: update CodeIgniter to v4.2.10 2022-11-17 13:10:34 +00:00
crowdin fa90decdd1 chore(i18n): new Crowdin updates 2022-11-04 11:03:24 +00:00
Yassine Doghri 379b9be2b9 fix(auth): disallow registration by default 2022-11-04 10:39:26 +00:00
Yassine Doghri 9f785db7ba fix(contributors): add prefix to podcast group to delete contributor 2022-11-04 10:39:26 +00:00
Yassine Doghri e26215a11f fix: extract podcast ids from user groups using a regex 2022-11-04 10:39:26 +00:00
Yassine Doghri ed7c247bcb fix(notifications): add manage-notifications permission to podcast 2022-11-04 10:39:26 +00:00
Yassine Doghri 82310a2e0b fix(platforms): convert special characters to htmlentities to validate url
remove validate_url custom validator and replace with CI4's valid_url_strict
2022-11-04 10:39:26 +00:00
Yassine Doghri 259fe5f697 fix(platforms): trim platform url before validation and storage
--> Having a URL with spaces in the beginning or end would cause the platform to be deleted
2022-11-01 15:15:39 +00:00
crowdin d76a1d9fee chore: new Crowdin updates 2022-10-20 07:55:28 +00:00
Yassine Doghri 07780c5f6f refactor(migrations): set namespace to null to run all migrations during install and updates 2022-10-20 06:48:44 +00:00
Yassine Doghri b07ac093b2 fix: validate slug length when submitting episode form + clean permalink edit prefix 2022-10-19 14:56:39 +00:00
Yassine Doghri 5a2ca0cc4a fix(install): add password validation when creating super admin 2022-10-19 11:47:26 +00:00
Yassine Doghri 0bab4c7af9 chore: remove testing update migration + rename auth migration 2022-10-19 11:02:05 +00:00
Yassine Doghri 1686f840d1 fix: sort episodes by published_at with unpublished episodes at the begining
set the right permissions for episode's publication date edit

fixes #249
2022-10-18 17:25:49 +00:00
Yassine Doghri d0836f3ee3 feat: add about page in admin with instance info + database update button 2022-10-18 16:53:51 +00:00
Yassine Doghri 3a57538572 build: set minimal php version to 8.1
closes #225
2022-10-17 14:17:50 +00:00
Yassine Doghri 7213ed290c feat(auth): add auth.enable2FA config to enable two-factor authentication
+ update phpstan and rector configs
2022-10-16 13:35:48 +00:00
Yassine Doghri c1287cbe6c refactor(auth): replace myth/auth with codeigniter/shield + define new roles
closes #222
2022-10-16 13:35:26 +00:00
crowdin d0d8be7fe3 chore: new Crowdin updates 2022-10-14 16:12:14 +00:00
Yassine Doghri d783d16eb7 feat(episode): add form to allow editing episode's publication date to a past date
This allows podcasters to reorganize their published episodes as they see fit

closes #97
2022-10-14 14:37:03 +00:00
Yassine Doghri 94c0b7c159 feat(rss): add rss feed route without the `.xml` extension
closes #247
2022-10-14 12:50:25 +00:00
Yassine Doghri ca109ba3a8 fix(premium-podcasts): display unlock button in embed when premium episode 2022-09-29 13:34:28 +00:00
Yassine Doghri 242352c4d9 fix(premium-podcasts): remove cache in unlock form + redirect to podcast if podcast is not premium 2022-09-29 11:10:39 +00:00
Yassine Doghri b1303c5255 fix(premium-podcasts): return different cached page when podcast is unlocked
- clear podcast cache when setting subscription link
- update and add missing translation keys
2022-09-29 10:52:28 +00:00
Yassine Doghri 3234500e2d feat: add premium podcasts to manage subscriptions for premium episodes
closes #193
2022-09-28 15:02:09 +00:00
Yassine Doghri b6114d3d93 chore: update rector to latest and use parallel for faster processing
update composer dependencies to latest
2022-09-28 14:00:46 +00:00
crowdin 7b66f46ae2 chore: new Crowdin updates 2022-09-23 15:51:26 +00:00
Yassine Doghri d7250ab03f fix(import): set default episode type if not set 2022-09-19 10:58:56 +00:00
Yassine Doghri e08555a4e9 fix(notifications): notify actors after activities insert / update using model callback methods
--> Remove sql triggers because most shared hosting plans prevent using them
2022-09-08 11:50:23 +00:00
Yassine Doghri 1c8af7550b fix(users): remove required roles input when editing user + prevent owner's roles from being edited
fixes #239
2022-09-07 09:41:58 +00:00
Yassine Doghri 7512e2ed1f fix: set storage limit as disk_total_space instead of free space 2022-09-07 08:27:28 +00:00
Yassine Doghri 48d1443472 feat(i18n): add support for Simplified Chinese (zh-Hans) and Catalan (ca) locales 2022-09-06 15:30:07 +00:00
crowdin 3fc9734161 chore: new Crowdin updates 2022-09-06 14:55:46 +00:00
Yassine Doghri 10fc6f17c6 fix(email): set the correct url in the activation and forgot emails
- add default values for Config/Email properties
- set mariadb to the minimal required version for development

fixes #204
2022-08-24 09:45:36 +00:00
crowdin c4a07c29f1 chore: new Crowdin updates 2022-08-22 15:56:51 +00:00
Ola Hneini 999999e3ef feat: add notifications inbox for actors
closes #215
2022-08-12 16:08:09 +00:00
Ola Hneini ad8f5f5a0f fix: set interact_as_actor for user upon password reset
closes #178
2022-08-12 16:06:26 +00:00
Yassine Doghri e66bf44341 fix(search-episodes): add fallback sql query using LIKE for search query with less than 4 characters
fixes #236
2022-07-28 15:11:25 +00:00
Yassine Doghri 78acd7f5c0 feat(episode-unpublish): remove episode comments upon unpublish 2022-07-21 16:37:22 +00:00
Yassine Doghri 8acdafd260 fix(episode-unpublish): set consistent posts_counts' increments/decrements for actors and episodes
Some episodes could not be unpublished because of out of range error when removing posts.

fixes #233
2022-07-21 13:56:10 +00:00
crowdin b5263107da chore: new Crowdin updates 2022-07-14 09:03:44 +00:00
Yassine Doghri b1a6c02e56 feat(admin): add instance wide dashboard with storage and bandwidth usage
* add DashboardCard component
* add instance wide podcasts and episodes numbers
* add app.storageLimit environment variable
* divide bytes by 1000 instead of 1024 in stats sql queries

closes #216
2022-07-06 15:29:15 +00:00
Ola Hneini 3d363f2efe feat: add publish feature for podcasts and set draft by default
closes #128, #220
2022-07-05 16:39:20 +00:00
crowdin 9843ce3882 chore: new Crowdin updates 2022-07-04 13:27:21 +00:00
Yassine Doghri 81f790868a chore: update quality tools + rewrite some migration files
* update php packages to latest
* update rector and ecs config
* update ci4/settings package to v2.1
2022-07-03 16:42:20 +00:00
Yassine Doghri 3b73c67250 refactor(rest-api): move rest api's enabled flag to the RestApi config 2022-06-29 16:22:10 +00:00
Sebastian Janik e64001d006 feat(api): add rest api with podcasts read endpoints
relates to #210
2022-06-22 11:06:53 +00:00
root ea20206ee6 fix: change image size requirement hints 2022-06-17 16:49:29 +00:00
root 5eb9dc168e feat: add update rss feed feature for podcasts to import their latest episodes
closes #183
2022-06-17 16:46:59 +00:00
Yassine Doghri 6be5d12877 feat(admin): add search form in podcast episodes list
closes #26
2022-06-17 12:52:36 +00:00
Yassine Doghri 14d7d07822 fix: replace deletedField with published_at for episodes
- remove delete_at field + soft delete for media and pages
- update CodeIgniter4 to 4.2.0 + update all starter files
- explicitly use builder() when creating queries from model
2022-06-13 16:30:34 +00:00
Ola Hneini dbb4030da4 feat: add permanent delete feature for podcasts 🎉
closes #89
2022-06-07 11:13:06 +00:00
Ola Hneini eb9ff522c2 feat(episodes): replace soft delete with permanent delete
+ add constraint to prevent deleting an episode when published
2022-05-05 15:48:16 +00:00
Yassine Doghri e340b54a84 feat(i18n): add Spanish to supported locales 2022-04-22 09:51:59 +00:00
crowdin cdc2e2edfb chore: new Crowdin updates 2022-04-22 07:56:31 +00:00
Yassine Doghri 4c490c15bb fix: overwrite common lang function to escape returned string
closes #196, fixes #198
2022-04-21 12:54:19 +00:00
Yassine Doghri 01640fa161 chore: new Crowdin updates
+ update rector config for crowdin compatibility
2022-04-15 12:16:12 +00:00
Yassine Doghri ced61fc236 feat(i18n): add Norwegian Nynorsk to supported locales 2022-04-14 15:04:09 +00:00
Yassine Doghri 4e22a0d5e4 fix: use UTC_TIMESTAMP() to get current utc date instead of NOW() in sql queries 2022-04-14 14:33:53 +00:00
Yassine Doghri 5564f77502 chore: new Crowdin updates 2022-04-14 13:11:07 +00:00
Yassine Doghri c9b9fe4ee8 feat(i18n): add support for German and Brazilian Portuguese languages
rename pt to pt-BR for brazilian portuguese
2022-04-05 16:23:47 +00:00
Yassine Doghri 7b71f7971d chore: new Crowdin updates
otetranome - Portuguese, Brazilian; Portuguese
forght - German
glottis0q - German
ernestoacostame - Spanish
Lucian I. Last (lil5) - Dutch
ButterflyOfFire (BoFFire) - Arabic
eorn - Breton
Angelos Chouvardas (achouvardas) - Greek
Russian Retro (retrograde) - Russian
cExplorer - German
GabiSnow - Spanish
CTHTC - German
Romain de Laage (rdelaage) - Spanish
LuuzViir (Spanish)
Samuel Roland (samuelroland) - French
thelama - Portuguese
2022-04-05 15:45:54 +00:00
Benjamin Bellamy 0188b67354 feat(analytics-gdpr): update cached personal data to expire at midnight 2022-04-01 16:35:34 +00:00
Yassine Doghri df8506bb40 build: filter out unsupported locales from the castopod bundle + remove german as supported locale
- add .rsync-filter files to Language folders in order to filter out unsupported locales
- remove
german as supported locale, awaiting completed translation files
- remove unneeded app/Resources/
folder from bundle
2022-04-01 16:35:34 +00:00
Benjamin Bellamy 6f2e7c009c feat(analytics): add current date and secret salt to analytics hash for improved privacy 2022-04-01 16:35:34 +00:00
crowdin d021abb52f feat(i18n): add 7 new languages + update german translations
add Breton, Dutch, Indonesian, Italian, Portuguese, Spanish and Swedish
2022-04-01 16:35:34 +00:00
Yassine Doghri 12b22008a2 fix(socialinteract): move social interact uri into uri attribute + update social data upon import 2022-04-01 16:35:34 +00:00
Yassine Doghri c220b310ed feat(i18n): add german language as supported locale + create Language files from english source 2022-04-01 16:35:34 +00:00
crowdin e985a193dc chore(i18n): update French translations 2022-04-01 16:35:34 +00:00
crowdin f3db223e33 chore: new Crowdin updates 2022-04-01 16:35:34 +00:00
Yassine Doghri 357886b931 refactor(translations): sort french translation keys for Countries.php in admin module 2022-04-01 16:35:34 +00:00
Ola Hneini 9859c7434c fix: change message upon cancellation of episode publication 2022-04-01 16:35:34 +00:00
Yassine Doghri 10d3f73786 feat: add WebSub module for pushing feed updates to open hubs 2022-03-15 16:47:35 +00:00
Yassine Doghri 90e44437bd fix: remove cache from remote follow form to display error messages 2022-03-15 14:05:19 +00:00
Patryk Miś 2d83b44add feat(i18n): add Polish translation 2022-03-04 17:52:52 +00:00
Yassine Doghri b57f0b6eb6 fix(video-clips): update condition to check if ffmpeg is installed
fixes #163
2022-03-04 15:40:38 +00:00
Yassine Doghri cd2e1e1dc3 fix(security): add csrf filter + prevent xss attacks by escaping user input
- update CI4 to v4.1.9's stable production package
- update php and js dependencies to latest
2022-03-04 14:36:32 +00:00
Yassine Doghri a597cf4ecf feat(podcasting 2.0): update podcast:social tag to adhere to latest spec 2022-03-03 16:15:42 +00:00
Yassine Doghri 5bcdfebe64 feat(icons): add default icons for podcasting, social and funding platforms + remove complex icons
- add pleroma, misskey and fosspay platforms
- update adaures/ipcat-php to fix autoload issue
-
fix Breez and Podcast Guru icons

closes #166, #167, #170
2022-02-24 14:48:17 +00:00
Yassine Doghri fa5b5f51a4 docs(init): create documentation website using vitepress
- rename podlibre to adaures
- rename castopod-host to castopod
- simplify README and redirect to docs site
- move INSTALL and UPDATE docs
- add new gitlabci pipeline to deploy docs
- upgrade node to v16 in Dockerfile
2022-02-19 16:06:11 +00:00
Yassine Doghri e7eec48e7b feat(podcast-form): add new_feed_url field to set an url when changing domain or host 2022-02-09 17:44:24 +00:00
Yassine Doghri 91128fad7a fix(fediverse): set model instances as non shared to prevent overlapping 2022-02-05 11:40:30 +00:00
Yassine Doghri 2f2480998f fix(activitypub): allow cors on get requests for routes exposing acitivitypub objects 2022-02-05 10:57:02 +00:00
Yassine Doghri 0128a21ec5 fix(activitypub): add target_actor_id for create activity to broadcast post reply 2022-02-03 14:12:47 +00:00
Yassine Doghri 962dd305f5 fix(activitypub): add target actor id to like / announce activities to send directly to note's actor 2022-02-03 14:12:47 +00:00
Yassine Doghri 8fbf948fbb fix(activitypub): add conditions for possibly missing actor properties + add user-agent to requests 2022-02-03 14:12:36 +00:00
Yassine Doghri b7f285e4e2 fix(http-signature): update SIGNATURE_PATTERN allowing signature keys to be sent in any order
set algorithm key as optional and set defaults for both algorithm (rsa-sha256) and headers (date)
keys
2022-02-03 10:15:59 +00:00
Benjamin Bellamy ee50539591 fix(analytics): set initial value for duration and bandwidth 2022-01-31 16:49:26 +00:00
Yassine Doghri 99bfac0b42 feat(housekeeping): add clear_cache option to flush redis or files cache 2022-01-29 16:42:34 +00:00
Yassine Doghri 42d92d0c8d fix(housekeeping): replace the use of GLOB_BRACE with looping over file extensions
The GLOB_BRACE flag is not available on non GNU systems, such as Solaris or Alpine Linux.

fixes #154
2022-01-29 15:32:38 +00:00
Yassine Doghri f21ca57603 fix(housekeeping): set default sizes value + ignore illegal IFD size error to proceed with script 2022-01-29 15:21:46 +00:00
Yassine Doghri 99bb40b8bc fix: clear cache when deleting podcast banner 2022-01-23 16:02:24 +00:00
Yassine Doghri 209dfbd134 fix(activitypub): set created_by to null for reblog if no user + update episode oembed data 2022-01-23 15:42:56 +00:00
Yassine Doghri 67b73c1525 docs: update install, update and readme for next release
fix translation files
2022-01-22 14:44:07 +00:00
Yassine Doghri 06b1a8b29b fix: update translations for settings' tasks to include what they should be used for 2022-01-21 19:51:36 +00:00
Yassine Doghri db191ac31b fix: add translation key for audio-clipper trim labels 2022-01-21 18:29:39 +00:00
Yassine Doghri dff1208725 fix(video-clips): check if created video exists before recreating it and failing
update seed scripts to prevent sql error when reloading install page
2022-01-21 17:25:27 +00:00
Yassine Doghri 7f7c878cb6 fix(video-clips): create unique temporary files for resources to be deleted after generation
- tempfile uniqueness ensures that each process lives in its independent context
- add
writable/temp folder to store video clips temporary resources
- add videoClipWorkers config to
Admin for specifying the number of ffmpeg processes to run in parallel
- update video clip preview
background to better suit the end result
2022-01-21 12:35:50 +00:00
Yassine Doghri c1581c1fd4 refactor: rename audio_file urls to audio urls 2022-01-21 08:52:28 +00:00
Yassine Doghri cfb3da6592 fix: keep subtitle line breaks when parsing srt file to json
update job duration label for video clips list
2022-01-20 15:38:40 +00:00
Yassine Doghri 11c916fe43 feat(themes): set different default banner per theme 2022-01-20 14:51:31 +00:00
Yassine Doghri 3ae6232585 fix(video-clips): clear video clip cache after process has finished 2022-01-19 19:09:35 +00:00
Yassine Doghri 8721719cd7 feat(vite): add vite config to decouple it from CI_ENVIRONMENT 2022-01-19 18:31:57 +00:00
Yassine Doghri 17fb29b209 fix: set localized slug_field key as string in french language 2022-01-19 11:39:13 +00:00
Yassine Doghri 9303e51bc5 feat: add task to housekeeping setting for resetting all instance counts
set two toggle switches to run housekeeping tasks seperately if needed
2022-01-14 17:42:55 +00:00
Yassine Doghri e65e236bbc refactor: replace hardcoded media root with media_path helper method in settings controller 2022-01-13 16:45:08 +00:00
Yassine Doghri 89dee41d58 feat: add housekeeping task to run after migrations
add run housekeeping button in general settings page
2022-01-13 16:02:14 +00:00
Yassine Doghri 38899124ec fix: rewrite regenerate image function to use saveSizes method from Image entity 2022-01-11 10:51:10 +00:00
Yassine Doghri 241366130e chore(clips): clear video clip and soundbite cache on delete 2022-01-10 16:52:12 +00:00
Yassine Doghri 00987610a0 feat(transcript): parse srt subtitles into json file + add max file size info below audio file input
remove episode form warning + add javascript validation when uploading a file to check if it's too
big to upload
2022-01-09 16:37:13 +00:00
Yassine Doghri 1670558473 feat: add basic stats on podcast about page
number of seasons and episodes + publication date of the first episode
2022-01-06 16:52:13 +00:00
Yassine Doghri 88fddc81d7 feat(nodeinfo2): add .well-known route for nodeinfo2 containing metadata about the castopod instance 2022-01-06 14:26:32 +00:00