Commit Graph

301 Commits

Author SHA1 Message Date
Yassine Doghri
06c4f15477 fix(fediverse): check that actor's images mimetype is present or guess it otherwise
fixes #348
2023-06-26 11:46:52 +00:00
Yassine Doghri
aa46dca4e3 fix(podcast-import): set default values for person group and role if not found in taxonomy
+ update podcast-feed and podcast-persons-taxonomy packages
2023-06-22 15:11:21 +00:00
crowdin
ad1ba4f8a1 chore(i18n): new Crowdin updates 2023-06-21 17:49:33 +00:00
Yassine Doghri
d8e1d4031d feat(import): run podcast imports' processes asynchronously using tasks
- use codeigniter4/tasks project to handle cron tasks
- use yassinedoghri/podcast-feed project to parse feeds for imports
2023-06-21 16:17:11 +00:00
Krzysztof Domańczy
85505d4b31 feat(rest-api): add endpoints for episodes and full text search for podcasts and episodes
closes #296
2023-06-21 10:07:31 +00:00
Yassine Doghri
30db9f0667 fix(s3): serve files without cache if dummy cache handler + add http referer header to redirect 2023-06-14 17:20:14 +00:00
Yassine Doghri
4c1a3e5015 refactor: fix some of phpstan's ignored errors 2023-06-13 16:05:02 +00:00
Yassine Doghri
2a50f6e4d2 style: update ecs config to align associative arrays arrows
update composer dependencies to latest
2023-06-12 15:12:49 +00:00
Yassine Doghri
cb92dc73f1 fix(s3): use presigned request uri to serve static files 2023-06-05 11:48:29 +00:00
crowdin
5fb43065ef chore(i18n): new Crowdin updates 2023-05-09 14:30:05 +00:00
Yassine Doghri
c682f03a67 fix: replace essence with embera to create preview cards 2023-05-09 11:55:16 +00:00
crowdin
80dfe46323 chore(i18n): new Crowdin updates 2023-05-05 14:28:51 +00:00
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