Commit Graph

285 Commits

Author SHA1 Message Date
Yassine Doghri
6802bee0db
ci(gitlabci): add easy-coding-standard check for code-style + fix quality scripts 2021-06-11 09:35:06 +00:00
Yassine Doghri
aa1612342e
style(ecs): add easy-coding-standard to enforce coding style rules for php
- update .devcontainer settings: remove auto-formatting
for php + set intelephense as default formatter
- remove prettier php plugin as it lacks php 8 support
- add captain hook action for checking style pre-commit
- fix style with ecs on all files except views
2021-06-11 09:34:48 +00:00
Yassine Doghri
fb3593f828
refactor: remove all empty declarations + add missing type declarations
update composer dependencies
2021-05-18 17:16:36 +00:00
Yassine Doghri
93e605b406
refactor(persons): move podcast and episode persons models to person model for consistency
- fix lazy loading properties + podcast import controller
- rename all snake_case variables to
camelCase
- fix broken routes
- refactor Location construction logic and setters
2021-05-17 17:11:23 +00:00
Yassine Doghri
6b74a9e98a
refactor: update code base to php 8 and set phpstan lvl to 6 2021-05-14 17:59:35 +00:00
Yassine Doghri
525698d834
ci: remove git hooks before uninstalling composer dev dependencies 2021-05-12 14:12:39 +00:00
Yassine Doghri
231d578d64
refactor: add phpstan and update code to adhere to level 5
- move and refactor Image.php from Libraries to Entities folder
- update some database field names
/ types
- update composer packages
2021-05-12 14:00:25 +00:00
Yassine Doghri
5c5c6da4be
refactor: add rector to enforce type declarations, code quality + style and remove dead code
- update CI process to include quality stage (tests + code review)
- add captainhook to install git pre-commit & pre-push hooks
- remove .devcontainer Dockerfile to use project's docker-compose services: all
services can now be started automatically using vscode
- update docs/setup-development.md
2021-05-12 10:48:30 +00:00
semantic-release-bot
a54a5964c3 chore(release): 1.0.0-alpha.57 [skip ci]
# [1.0.0-alpha.57](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.56...v1.0.0-alpha.57) (2021-05-12)

### Bug Fixes

* **follow:** add missing helpers to Actor controller ([ee53a73](ee53a732dc))
2021-05-12 10:32:49 +00:00
Yassine Doghri
ee53a732dc
fix(follow): add missing helpers to Actor controller 2021-05-12 10:22:16 +00:00
semantic-release-bot
fca7bd6808 chore(release): 1.0.0-alpha.56 [skip ci]
# [1.0.0-alpha.56](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.55...v1.0.0-alpha.56) (2021-05-12)

### Bug Fixes

* **rss:** use originalPath instead of originalMediaPath in Image library ([b4012b7](b4012b7d2e))
2021-05-12 09:16:14 +00:00
Yassine Doghri
b4012b7d2e
fix(rss): use originalPath instead of originalMediaPath in Image library 2021-05-12 08:19:09 +00:00
semantic-release-bot
6c7964fd51 chore(release): 1.0.0-alpha.55 [skip ci]
# [1.0.0-alpha.55](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.54...v1.0.0-alpha.55) (2021-05-03)

### Features

* add remote_url alternative for transcript and chapters files ([3143c9a](3143c9ad36))
2021-05-03 17:44:20 +00:00
Yassine Doghri
3143c9ad36 feat: add remote_url alternative for transcript and chapters files 2021-05-03 17:39:58 +00:00
semantic-release-bot
1296187613 chore(release): 1.0.0-alpha.54 [skip ci]
# [1.0.0-alpha.54](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.53...v1.0.0-alpha.54) (2021-05-03)

### Features

* set app parameter forceGlobalSecureRequests = true forcing requests to go through https ([d9dff1b](d9dff1b8bf))
* **ux:** remove admin dashboard and redirect directly to podcast list ([27c48b8](27c48b8fa9))
* add cache to ActivityPub sql queries + cache activity and note pages ([2d297f4](2d297f45b3))

### Performance Improvements

* **cache:** update CI4 to use cache's deleteMatching method ([54b84f9](54b84f9684))
* **docker:** add redis caching service for development ([05ace8c](05ace8cff2))
2021-05-03 15:43:53 +00:00
Yassine Doghri
d9dff1b8bf
feat: set app parameter forceGlobalSecureRequests = true forcing requests to go through https
docs: update INSTALL.md to include SSL certificate requirement + update install instructions
2021-05-03 15:32:55 +00:00
Yassine Doghri
27c48b8fa9
feat(ux): remove admin dashboard and redirect directly to podcast list
As there is currently no info on the dashboard, it is unnecessary for now
2021-05-03 15:32:55 +00:00
Yassine Doghri
2d297f45b3
feat: add cache to ActivityPub sql queries + cache activity and note pages
- authenticated pages are not cached
- add AnalyticsTrait to register a podcast webpage hit across
mutliple controllers
- set actor_id as unique in podcasts table
- fix issues with preview card not appearing
- update codeigniter4-uuid
2021-05-03 15:32:54 +00:00
Yassine Doghri
54b84f9684
perf(cache): update CI4 to use cache's deleteMatching method
add missing locale to category_options cache name
2021-05-03 15:32:46 +00:00
semantic-release-bot
d372d6746c chore(release): 1.0.0-alpha.53 [skip ci]
# [1.0.0-alpha.53](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.52...v1.0.0-alpha.53) (2021-04-16)

### Bug Fixes

* check that note has a preview_card_id before displaying it ([acb8b3a](acb8b3a401)), closes [#114](https://code.podlibre.org/podlibre/castopod/issues/114)
2021-04-16 18:09:32 +00:00
Yassine Doghri
acb8b3a401
fix: check that note has a preview_card_id before displaying it
fixes #114
2021-04-16 17:59:39 +00:00
semantic-release-bot
b81e812506 chore(release): 1.0.0-alpha.52 [skip ci]
# [1.0.0-alpha.52](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.51...v1.0.0-alpha.52) (2021-04-16)

### Bug Fixes

* **avatar:** use default avatar when no avatar url has been set ([9d23c7e](9d23c7e7e1)), closes [#111](https://code.podlibre.org/podlibre/castopod/issues/111)
2021-04-16 17:15:22 +00:00
Yassine Doghri
9d23c7e7e1
fix(avatar): use default avatar when no avatar url has been set
- get avatar and cover urls from entity: if no image exists, retrieve the default ones.
- always
set icon and image in actor object: set the default ones if podcast hasn't set them.

fixes #111
2021-04-16 17:05:23 +00:00
semantic-release-bot
e2b85a1d8f chore(release): 1.0.0-alpha.51 [skip ci]
# [1.0.0-alpha.51](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.50...v1.0.0-alpha.51) (2021-04-15)

### Bug Fixes

* **interact-as:** set actor_id instead of podcast id upon login event ([5dfade7](5dfade7cf3)), closes [#104](https://code.podlibre.org/podlibre/castopod/issues/104)
2021-04-15 09:20:24 +00:00
Yassine Doghri
5dfade7cf3 fix(interact-as): set actor_id instead of podcast id upon login event
fixes #104
2021-04-15 08:27:29 +00:00
Yassine Doghri
247ae1824f refactor(analytics): move all analytics files to a new Libraries/Analytics folder
- add page hit on podcast activity page
- update development docs
2021-04-14 15:58:40 +00:00
semantic-release-bot
1c0d6cee44 chore(release): 1.0.0-alpha.50 [skip ci]
# [1.0.0-alpha.50](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.49...v1.0.0-alpha.50) (2021-04-14)

### Bug Fixes

* **persons:** prevent overflow of persons list by adding horizontal scroll ([9e8995d](9e8995dc6e))
2021-04-14 14:54:22 +00:00
Yassine Doghri
9e8995dc6e
fix(persons): prevent overflow of persons list by adding horizontal scroll
add js tootip to show persons info
2021-04-12 10:08:05 +00:00
semantic-release-bot
388fb42b3e chore(release): 1.0.0-alpha.49 [skip ci]
# [1.0.0-alpha.49](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.48...v1.0.0-alpha.49) (2021-04-12)

### Bug Fixes

* **multiselect:** add missing class names in choices options for purge to work properly ([719538d](719538d0cc))
2021-04-12 09:37:37 +00:00
Yassine Doghri
719538d0cc
fix(multiselect): add missing class names in choices options for purge to work properly
Multiselect options wouldn't show up in production environment because of purgecss removing state
classes.
2021-04-12 09:18:25 +00:00
semantic-release-bot
6303e71973 chore(release): 1.0.0-alpha.48 [skip ci]
# [1.0.0-alpha.48](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.47...v1.0.0-alpha.48) (2021-04-10)

### Bug Fixes

* **import-with-escaped-characters:** remove \CodeIgniter\HTTP\URI in download_file, closes [#103](https://code.podlibre.org/podlibre/castopod/issues/103) ([35b5be0](35b5be095f))
2021-04-10 14:42:23 +00:00
Benjamin Bellamy
35b5be095f fix(import-with-escaped-characters): remove \CodeIgniter\HTTP\URI in download_file, closes #103 2021-04-10 16:18:23 +02:00
semantic-release-bot
15180d2265 chore(release): 1.0.0-alpha.47 [skip ci]
# [1.0.0-alpha.47](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.46...v1.0.0-alpha.47) (2021-04-10)

### Bug Fixes

* **episodeCount:** add missing brackets to French language file ([c1b4112](c1b411265a))
2021-04-10 14:14:47 +00:00
Benjamin Bellamy
c1b411265a fix(episodeCount): add missing brackets to French language file 2021-04-10 14:06:30 +02:00
semantic-release-bot
6fc06bc8f8 chore(release): 1.0.0-alpha.46 [skip ci]
# [1.0.0-alpha.46](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.45...v1.0.0-alpha.46) (2021-04-09)

### Bug Fixes

* **episodes-page:** handle defaultQuery being null when no podcast episodes ([15183b7](15183b7eab)), closes [#100](https://code.podlibre.org/podlibre/castopod/issues/100)
2021-04-09 13:31:01 +00:00
Yassine Doghri
15183b7eab
fix(episodes-page): handle defaultQuery being null when no podcast episodes
fixes #100
2021-04-09 13:16:31 +00:00
semantic-release-bot
14d3d1d727 chore(release): 1.0.0-alpha.45 [skip ci]
# [1.0.0-alpha.45](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.44...v1.0.0-alpha.45) (2021-04-08)

### Bug Fixes

* add head request to analytics_hit route ([f0a2f0b](f0a2f0bea4))
2021-04-08 14:03:52 +00:00
Yassine Doghri
f0a2f0bea4
fix: add head request to analytics_hit route
validators break because they can't request the episode's audio files with HEAD
2021-04-08 13:54:05 +00:00
semantic-release-bot
b5eb4c68a5 chore(release): 1.0.0-alpha.44 [skip ci]
# [1.0.0-alpha.44](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.43...v1.0.0-alpha.44) (2021-04-08)

### Bug Fixes

* **rss:** set ❬itunes:author❭ tag to owner_name if publisher not specified ([2271c14](2271c1445b)), closes [#96](https://code.podlibre.org/podlibre/castopod/issues/96)
2021-04-08 11:20:49 +00:00
Yassine Doghri
2271c1445b
fix(rss): set ❬itunes:author❭ tag to owner_name if publisher not specified
some platforms require the ❬itunes:author❭ tag to be specified in order to import an rss feed

fixes #96
2021-04-08 11:10:58 +00:00
semantic-release-bot
0cd6b80847 chore(release): 1.0.0-alpha.43 [skip ci]
# [1.0.0-alpha.43](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.42...v1.0.0-alpha.43) (2021-04-08)

### Bug Fixes

* **episode-form:** show warning to set `memory_limit`, `upload_max_filesize` & `post_max_size` ([3b3c218](3b3c218b9c)), closes [#5](https://code.podlibre.org/podlibre/castopod/issues/5) [#86](https://code.podlibre.org/podlibre/castopod/issues/86)
2021-04-08 10:50:31 +00:00
Yassine Doghri
3b3c218b9c fix(episode-form): show warning to set memory_limit, upload_max_filesize & post_max_size
remove undefined "my-podcasts" route

closes #5, #86
2021-04-08 10:45:58 +00:00
semantic-release-bot
c37a4af2d8 chore(release): 1.0.0-alpha.42 [skip ci]
# [1.0.0-alpha.42](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.41...v1.0.0-alpha.42) (2021-04-02)

### Features

* **fediverse:** implement activitypub protocols + update user interface ([2f525c0](2f525c0f6e)), closes [#69](https://code.podlibre.org/podlibre/castopod/issues/69) [#65](https://code.podlibre.org/podlibre/castopod/issues/65) [#85](https://code.podlibre.org/podlibre/castopod/issues/85) [#51](https://code.podlibre.org/podlibre/castopod/issues/51) [#91](https://code.podlibre.org/podlibre/castopod/issues/91) [#92](https://code.podlibre.org/podlibre/castopod/issues/92) [#88](https://code.podlibre.org/podlibre/castopod/issues/88)
2021-04-02 17:24:40 +00:00
Yassine Doghri
2f525c0f6e feat(fediverse): implement activitypub protocols + update user interface
- add "ActivityPub" library to handle server to server federation and basic
  client to server protocols using activitypub:
  - add webfinger endpoint to look for actor
  - add actor definition with inbox / outbox / followers
  - remote follow an actor
  - create notes with possible preview cards
  - interract with favourites, reblogs and replies
  - block incoming actors and/or domains
  - broadcast/schedule activities to fediverse followers using a cron task
- For castopod, the podcast is the actor:
  - overwrite the activitypub library for castopod's specific needs
  - perform basic interactions administrating a podcast to interact with fediverse users:
    - create notes with episode attachment
    - favourite and share a note + reply
    - add specific castopod_namespaces for podcasts and episodes definitions
- overwrite CodeIgniter's Route service to include alternate-content option for
  activitystream requests
- update episode publication logic:
  - remove publication inputs in create / edit episode form
  - publish / schedule or unpublish an episode after creation
  - the podcaster publishes a note when publishing an episode
- Javascript / Typescript modules:
  - fix Dropdown.ts to keep dropdown menu in foreground
  - add Modal.ts for funding links modal
  - add Toggler.ts to toggle various css states in ui
- User Interface:
  - update tailwindcss to v2
  - use castopod's pine and rose colors
  - update public layout to a 3 column layout
  - add pages in public for podcast activity, episode list and notes
  - update episode page to include linked notes
  - remove previous and next episodes from episode pages
  - show different public views depending on whether user is authenticated or not
  - use Kumbh Sans and Montserrat fonts
- update CodeIgniter's config files
- with CodeIgniter's new requirements, update docker environments are now based on
  php v7.3 image
- move Image entity to Libraries
- update composer and npm packages to latest versions

closes #69 #65 #85, fixes #51 #91 #92 #88
2021-04-02 17:20:02 +00:00
semantic-release-bot
dd3ac9b4ab chore(release): 1.0.0-alpha.41 [skip ci]
# [1.0.0-alpha.41](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.40...v1.0.0-alpha.41) (2021-03-30)

### Features

* **partner:** add link and image in episode description ([ad07bb9](ad07bb9330))
2021-03-30 16:25:05 +00:00
Benjamin Bellamy
ad07bb9330 feat(partner): add link and image in episode description 2021-03-30 16:21:00 +00:00
semantic-release-bot
62bae1eb70 chore(release): 1.0.0-alpha.40 [skip ci]
# [1.0.0-alpha.40](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.39...v1.0.0-alpha.40) (2021-03-19)

### Features

* **custom-rss:** add custom xml tag injection in rss feed for ❬channel❭ and ❬item❭ ([6ecdaad](6ecdaad911))
2021-03-19 16:17:09 +00:00
Benjamin Bellamy
6ecdaad911 feat(custom-rss): add custom xml tag injection in rss feed for ❬channel❭ and ❬item❭ 2021-03-19 16:12:36 +00:00
semantic-release-bot
ea5383643c chore(release): 1.0.0-alpha.39 [skip ci]
# [1.0.0-alpha.39](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.38...v1.0.0-alpha.39) (2021-03-01)

### Bug Fixes

* **embeddable-player:** enable any ancestor when X-Frame-Options is set on server ([44a4962](44a4962e0b))
2021-03-01 15:08:05 +00:00
Benjamin Bellamy
44a4962e0b fix(embeddable-player): enable any ancestor when X-Frame-Options is set on server 2021-03-01 15:59:07 +01:00
semantic-release-bot
4e5b11ba5f chore(release): 1.0.0-alpha.38 [skip ci]
# [1.0.0-alpha.38](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.37...v1.0.0-alpha.38) (2021-02-27)

### Features

* **embeddable-player:**  add embeddable player widget ([141788f](141788fa08))
2021-02-27 21:25:23 +00:00
Benjamin Bellamy
141788fa08 feat(embeddable-player): add embeddable player widget 2021-02-27 21:21:26 +00:00
semantic-release-bot
526809ef28 chore(release): 1.0.0-alpha.37 [skip ci]
# [1.0.0-alpha.37](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.36...v1.0.0-alpha.37) (2021-02-17)

### Bug Fixes

* **import:** remove query string from files url ([109c4aa](109c4aa1af))
2021-02-17 10:55:08 +00:00
Benjamin Bellamy
109c4aa1af fix(import): remove query string from files url 2021-02-17 10:46:20 +01:00
semantic-release-bot
6a7d7c3021 chore(release): 1.0.0-alpha.36 [skip ci]
# [1.0.0-alpha.36](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.35...v1.0.0-alpha.36) (2021-02-16)

### Features

* **platforms:** add pod.link ([3d7a232](3d7a2320dd))
2021-02-16 13:34:15 +00:00
Benjamin Bellamy
3d7a2320dd feat(platforms): add pod.link 2021-02-15 13:35:54 +01:00
semantic-release-bot
3ad98c6a6a chore(release): 1.0.0-alpha.35 [skip ci]
# [1.0.0-alpha.35](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.34...v1.0.0-alpha.35) (2021-02-12)

### Bug Fixes

* **admin:** save block and lock switches ([b66c0af](b66c0afc8f))
2021-02-12 09:53:36 +00:00
Benjamin Bellamy
b66c0afc8f fix(admin): save block and lock switches 2021-02-11 19:07:30 +01:00
semantic-release-bot
b3a34983fb chore(release): 1.0.0-alpha.34 [skip ci]
# [1.0.0-alpha.34](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.33...v1.0.0-alpha.34) (2021-02-11)

### Bug Fixes

* **rss-import:** add Castopod user-agent, handle redirects for downloaded files, add Content namespace ([214243b](214243b3fe))
2021-02-11 17:45:16 +00:00
Benjamin Bellamy
214243b3fe fix(rss-import): add Castopod user-agent, handle redirects for downloaded files, add Content namespace 2021-02-11 17:41:20 +00:00
semantic-release-bot
3eecb82de8 chore(release): 1.0.0-alpha.33 [skip ci]
# [1.0.0-alpha.33](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.32...v1.0.0-alpha.33) (2021-02-10)

### Features

* **platforms:** add helloasso ([16cb993](16cb993ee6))
2021-02-10 17:13:50 +00:00
Benjamin Bellamy
16cb993ee6 feat(platforms): add helloasso 2021-02-10 17:52:51 +01:00
semantic-release-bot
64d9100f7c chore(release): 1.0.0-alpha.32 [skip ci]
# [1.0.0-alpha.32](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.31...v1.0.0-alpha.32) (2021-02-10)

### Features

* **person:** add podcastindex.org namespace person tag ([8acd011](8acd011f13))
2021-02-10 16:24:03 +00:00
Benjamin Bellamy
8acd011f13 feat(person): add podcastindex.org namespace person tag 2021-02-10 16:20:01 +00:00
semantic-release-bot
17e1e94a50 chore(release): 1.0.0-alpha.31 [skip ci]
# [1.0.0-alpha.31](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.30...v1.0.0-alpha.31) (2020-12-23)

### Features

* **rss:** add podcast:location tag ([c0a2282](c0a22829bd))
2020-12-23 14:15:38 +00:00
Benjamin Bellamy
c0a22829bd feat(rss): add podcast:location tag 2020-12-23 14:11:38 +00:00
semantic-release-bot
ba088649d2 chore(release): 1.0.0-alpha.30 [skip ci]
# [1.0.0-alpha.30](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.29...v1.0.0-alpha.30) (2020-12-21)

### Features

* **rss:** update monetization tag so that it meets PodcastIndex requirements ([4c7ecbe](4c7ecbee83))
2020-12-21 16:12:26 +00:00
Benjamin Bellamy
4c7ecbee83 feat(rss): update monetization tag so that it meets PodcastIndex requirements 2020-12-20 12:31:40 +01:00
semantic-release-bot
81c1c038c4 chore(release): 1.0.0-alpha.29 [skip ci]
# [1.0.0-alpha.29](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.28...v1.0.0-alpha.29) (2020-12-10)

### Bug Fixes

* **episodes:** add publication status + set publication date to null when none has been set ([d882981](d882981b3a)), closes [#70](https://code.podlibre.org/podlibre/castopod/issues/70)

### Reverts

* **soundbites:** remove soundbite table from episode's public page ([5dc0f19](5dc0f19656))
2020-12-10 10:47:59 +00:00
Yassine Doghri
d882981b3a fix(episodes): add publication status + set publication date to null when none has been set
- replace $is_published attribute by $publication_status to better handle episode's publication
state
- update publication date datepicker to include a clear button

fixes #70
2020-12-09 17:56:58 +00:00
Yassine Doghri
5dc0f19656 revert(soundbites): remove soundbite table from episode's public page
Soundbites are a mean to tease the episode, putting them in the episode page is unnecessary.
2020-12-08 10:14:24 +00:00
semantic-release-bot
6d6747afa3 chore(release): 1.0.0-alpha.28 [skip ci]
# [1.0.0-alpha.28](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.27...v1.0.0-alpha.28) (2020-12-07)

### Features

* **rss:** add soundbites according to the podcastindex specs ([6b34617](6b34617d07)), closes [#83](https://code.podlibre.org/podlibre/castopod/issues/83)
2020-12-07 20:17:41 +00:00
Benjamin Bellamy
6b34617d07 feat(rss): add soundbites according to the podcastindex specs
Closes #83
2020-12-07 20:13:46 +00:00
semantic-release-bot
0571a075da chore(release): 1.0.0-alpha.27 [skip ci]
# [1.0.0-alpha.27](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.26...v1.0.0-alpha.27) (2020-12-07)

### Features

* **platforms:** add AntennaPod ([53e9cfd](53e9cfd61c))
2020-12-07 20:00:29 +00:00
Benjamin Bellamy
53e9cfd61c feat(platforms): add AntennaPod 2020-12-07 15:58:07 +01:00
semantic-release-bot
6d39beef91 chore(release): 1.0.0-alpha.26 [skip ci]
# [1.0.0-alpha.26](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.25...v1.0.0-alpha.26) (2020-11-30)

### Bug Fixes

* **analytics:** update service management so that it works with new OPAWG slug values ([7fe9d42](7fe9d42500))
2020-11-30 11:49:45 +00:00
Benjamin Bellamy
7fe9d42500 fix(analytics): update service management so that it works with new OPAWG slug values 2020-11-30 11:45:41 +00:00
semantic-release-bot
8b3c689f86 chore(release): 1.0.0-alpha.25 [skip ci]
# [1.0.0-alpha.25](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.24...v1.0.0-alpha.25) (2020-11-30)

### Features

* **platforms:** add podfriend ([9fdc8d3](9fdc8d3293))
2020-11-30 11:16:55 +00:00
Benjamin Bellamy
9fdc8d3293 feat(platforms): add podfriend 2020-11-28 18:32:36 +01:00
semantic-release-bot
74759dae14 chore(release): 1.0.0-alpha.24 [skip ci]
# [1.0.0-alpha.24](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.23...v1.0.0-alpha.24) (2020-11-26)

### Features

* **monetization:** add Web Monetization support ([96a6026](96a6026f1d))
2020-11-26 18:58:02 +00:00
Benjamin Bellamy
96a6026f1d feat(monetization): add Web Monetization support 2020-11-26 18:53:52 +00:00
semantic-release-bot
e8771755b7 chore(release): 1.0.0-alpha.23 [skip ci]
# [1.0.0-alpha.23](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.22...v1.0.0-alpha.23) (2020-11-24)

### Bug Fixes

* define podcastNamespaceLink value ([0d744d2](0d744d212d))
2020-11-24 21:10:20 +00:00
Benjamin Bellamy
0d744d212d fix: define podcastNamespaceLink value 2020-11-24 21:48:26 +01:00
semantic-release-bot
674ffd1cfb chore(release): 1.0.0-alpha.22 [skip ci]
# [1.0.0-alpha.22](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.21...v1.0.0-alpha.22) (2020-11-24)

### Features

* **rss:** add transcript and chapters support ([e769d83](e769d83a93)), closes [#72](https://code.podlibre.org/podlibre/castopod/issues/72) [#82](https://code.podlibre.org/podlibre/castopod/issues/82)
2020-11-24 20:21:59 +00:00
Benjamin Bellamy
e769d83a93 feat(rss): add transcript and chapters support
Close #72, #82
2020-11-24 20:18:08 +00:00
semantic-release-bot
b9c8008062 chore(release): 1.0.0-alpha.21 [skip ci]
# [1.0.0-alpha.21](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.20...v1.0.0-alpha.21) (2020-11-24)

### Features

* **platforms:** add Fediverse and some funding platforms, add link on logo ([afc3d50](afc3d50289))
2020-11-24 18:25:10 +00:00
Benjamin Bellamy
afc3d50289 feat(platforms): add Fediverse and some funding platforms, add link on logo 2020-11-24 18:21:02 +00:00
semantic-release-bot
e6e21ddc3f chore(release): 1.0.0-alpha.20 [skip ci]
# [1.0.0-alpha.20](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.19...v1.0.0-alpha.20) (2020-11-24)

### Bug Fixes

* **import:** use <image><url> tag when no <itunes:image> is present ([20e607a](20e607afb7))

### Features

* **rss:** add podcast-namespace tags for platforms + previousUrl tag ([dbba8dc](dbba8dc581)), closes [#73](https://code.podlibre.org/podlibre/castopod/issues/73) [#75](https://code.podlibre.org/podlibre/castopod/issues/75) [#76](https://code.podlibre.org/podlibre/castopod/issues/76) [#80](https://code.podlibre.org/podlibre/castopod/issues/80)
2020-11-24 16:50:21 +00:00
Benjamin Bellamy
20e607afb7 fix(import): use <image><url> tag when no <itunes:image> is present 2020-11-24 16:40:35 +00:00
Benjamin Bellamy
dbba8dc581 feat(rss): add podcast-namespace tags for platforms + previousUrl tag
- add podcast:id tag
- add podcast:funding tag
- add podcast:social tag
- add podcast:previousUrl tag
- add missing platforms with icons
- update platforms table to include social and funding platforms
- rename platform_links table to podcasts_platforms
- move podcast import methods from podcast controller
- update import functionality to insert platforms from rss

closes #73, #75, #76, #80
2020-11-19 10:44:54 +00:00
semantic-release-bot
7ee579d054 chore(release): 1.0.0-alpha.19 [skip ci]
# [1.0.0-alpha.19](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.18...v1.0.0-alpha.19) (2020-11-13)

### Bug Fixes

* handle HEAD requests on podcast_feed route ([74b2640](74b2640f2a)), closes [#79](https://code.podlibre.org/podlibre/castopod/issues/79)
2020-11-13 16:10:23 +00:00
Benjamin Bellamy
74b2640f2a fix: handle HEAD requests on podcast_feed route
Fixes #79
2020-11-13 17:01:34 +01:00
semantic-release-bot
b619e6d88f chore(release): 1.0.0-alpha.18 [skip ci]
# [1.0.0-alpha.18](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.17...v1.0.0-alpha.18) (2020-11-09)

### Features

* **platforms:** add Podcast Index ([ad52b1c](ad52b1cc2b))
2020-11-09 17:17:51 +00:00
Benjamin Bellamy
ad52b1cc2b feat(platforms): add Podcast Index 2020-11-09 17:13:52 +00:00
semantic-release-bot
d65f26e80a chore(release): 1.0.0-alpha.17 [skip ci]
# [1.0.0-alpha.17](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.16...v1.0.0-alpha.17) (2020-11-05)

### Bug Fixes

* **open-graph:** replace non existant episode description to podcast description in podcast page ([b02584e](b02584ee60))
2020-11-05 19:04:14 +00:00
Yassine Doghri
b02584ee60 fix(open-graph): replace non existant episode description to podcast description in podcast page 2020-11-05 18:55:50 +00:00
semantic-release-bot
50b52f904e chore(release): 1.0.0-alpha.16 [skip ci]
# [1.0.0-alpha.16](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.15...v1.0.0-alpha.16) (2020-11-04)

### Features

* add Open Graph and Twitter meta tags ([af970b8](af970b8bac)), closes [#41](https://code.podlibre.org/podlibre/castopod/issues/41)
2020-11-04 17:07:18 +00:00
Benjamin Bellamy
af970b8bac feat: add Open Graph and Twitter meta tags
fix: #41
2020-11-04 17:03:20 +00:00
semantic-release-bot
0e38dcca4a chore(release): 1.0.0-alpha.15 [skip ci]
# [1.0.0-alpha.15](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.14...v1.0.0-alpha.15) (2020-11-03)

### Features

* **analytics:** add 'other' group to pie charts in order to display more accurate data ([73acef9](73acef933f))
2020-11-03 14:18:26 +00:00
Benjamin Bellamy
73acef933f feat(analytics): add 'other' group to pie charts in order to display more accurate data 2020-11-03 14:14:30 +00:00
semantic-release-bot
ba89fd590d chore(release): 1.0.0-alpha.14 [skip ci]
# [1.0.0-alpha.14](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.13...v1.0.0-alpha.14) (2020-11-02)

### Features

* **analytics:** add weekday and hour bar charts ([8ab3132](8ab313296b))
2020-11-02 18:19:13 +00:00
Benjamin Bellamy
8ab313296b feat(analytics): add weekday and hour bar charts 2020-11-02 18:15:19 +00:00
semantic-release-bot
79a20a3bc8 chore(release): 1.0.0-alpha.13 [skip ci]
# [1.0.0-alpha.13](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.12...v1.0.0-alpha.13) (2020-10-29)

### Bug Fixes

* **episodes-table:** set descriptions to be not null ([6774ec1](6774ec10fa))

### Features

* add episode_numbering() component helper to display episode and season numbers ([3f4a6bd](3f4a6bd0b9))
* **episodes:** replace all audio file URL parameters with base64 encoded data ([e1f65cd](e1f65cd3b5))
2020-10-29 17:56:08 +00:00
Yassine Doghri
6774ec10fa fix(episodes-table): set descriptions to be not null 2020-10-29 17:44:14 +00:00
Yassine Doghri
3f4a6bd0b9 feat: add episode_numbering() component helper to display episode and season numbers 2020-10-29 17:25:15 +00:00
Benjamin Bellamy
e1f65cd3b5 feat(episodes): replace all audio file URL parameters with base64 encoded data 2020-10-29 17:27:16 +01:00
Yassine Doghri
391c349daa refactor(database): add / update fields to optimize storage
- harmonize field types and use explicit names
- store html value alongside markdown descriptions for better performance
- add duration and bandwidth to podcast analytics
- add new analytics table for podcast hits by hour
- replace visible MAXMIND_LICENCE_KEY with variable
2020-10-29 15:45:19 +00:00
semantic-release-bot
21da91eb9d chore(release): 1.0.0-alpha.12 [skip ci]
# [1.0.0-alpha.12](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.11...v1.0.0-alpha.12) (2020-10-26)

### Bug Fixes

* replace getWebEnclosureUrl with getEnclosureWebUrl ([8122cea](8122ceaf8a))
2020-10-26 17:30:40 +00:00
Benjamin Bellamy
8122ceaf8a fix: replace getWebEnclosureUrl with getEnclosureWebUrl 2020-10-26 17:26:41 +00:00
semantic-release-bot
0683ea94d8 chore(release): 1.0.0-alpha.11 [skip ci]
# [1.0.0-alpha.11](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.10...v1.0.0-alpha.11) (2020-10-26)

### Features

* add CDN url ([972bcbf](972bcbf65e)), closes [#37](https://code.podlibre.org/podlibre/castopod/issues/37)
2020-10-26 16:17:35 +00:00
Benjamin Bellamy
972bcbf65e feat: add CDN url
feat: rename ?s to ?_from to match podcastindex recommendation
feat: adust map height
feat: display pie chart on 1 column for small and medium screens
feat: handle empty rss user agent
fix: correct bug when importing episode with empty image
fix: add service to FakePodcastsAnalyticsSeeder, resize pie charts so that all lines fit
fix: set page title to ->title when it exists
fix: replace %20 with +

closes #37
2020-10-26 16:13:43 +00:00
semantic-release-bot
384b6b27a3 chore(release): 1.0.0-alpha.10 [skip ci]
# [1.0.0-alpha.10](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.9...v1.0.0-alpha.10) (2020-10-26)

### Bug Fixes

* **install:** redirect to host_url install route on instanceConfig validation error ([99250b1](99250b1868))
2020-10-26 15:29:29 +00:00
Yassine Doghri
99250b1868 fix(install): redirect to host_url install route on instanceConfig validation error 2020-10-26 15:21:21 +00:00
semantic-release-bot
414b23a3b7 chore(release): 1.0.0-alpha.9 [skip ci]
# [1.0.0-alpha.9](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.8...v1.0.0-alpha.9) (2020-10-26)

### Features

* display castopod version in admin footer ([9f2574e](9f2574e6fb)), closes [#68](https://code.podlibre.org/podlibre/castopod/issues/68)
2020-10-26 14:20:19 +00:00
Yassine Doghri
9f2574e6fb feat: display castopod version in admin footer
add CP_VERSION constant in app/Config/Constants.php that updates upon release through
prepare-release.sh script

closes #68
2020-10-26 11:48:17 +00:00
Yassine Doghri
4f1e773c0f feat(episodes): schedule episode with future publication_date by using cache expiration time
- merge publication date fields into one field instanciated with flatpickr datetime picker
- get user timezone to convert user publication_date input to UTC
- remove setPublishedAt() method from episode entity
- add publication pill component to display the episode publication date info
- clear cache after episode insert
- use CI is_really_writable() helper in install instead of is_writable()
- fix latest episodes layout
- update tsconfig to only include ts folders
- update DEPENDENCIES.md to include flatpickr
- add format_duration helper to format episode enclosure duration instead of translating it (causes
translation bug)
- add Time.ts module to convert UTC time to user localized time for episode publication dates
- fix some layout issues
- update php and js dependencies to latest versions

closes #47
2020-10-22 17:41:59 +00:00
Benjamin Bellamy
7202b9867b feat(analytics): add service name from rss user-agent
BREAKING CHANGE: analytics_podcasts_by_player table and analytics_podcasts procedure were updated
2020-10-21 16:04:18 +00:00
Yassine Doghri
9cec8a81cc fix(cache): add locale for podcast and episode pages + clear some persisting cache in models
fixes #42, #61
2020-10-20 15:39:20 +00:00
Benjamin Bellamy
72b301272e feat: add lock podcast according to the Podcastindex podcast-namespace to prevent unauthozized import 2020-10-20 13:46:00 +00:00
Benjamin Bellamy
78625c471b feat(analytics): add charts and data export 2020-10-20 09:32:03 +00:00
Benjamin Bellamy
1678794153 fix(analytics): remove charts empty values + remove useless language cache
fix(install): edit host_url helper and remove back() when create .env
2020-10-19 16:47:22 +00:00
Benjamin Bellamy
588b4d28da feat: add cumulative listening time charts 2020-10-19 10:33:23 +00:00
Yassine Doghri
50e32ff756 fix: replace website key for webpages in breadcrumb translate file 2020-10-15 20:22:33 +00:00
Yassine Doghri
96b39002eb chore: clean interactive rebase conflicts 2020-10-15 15:24:16 +00:00
Yassine Doghri
d5f22fbb38 revert: use basic input file for episodes audio files instead of button for better UX
replace platform visible checkbox with switch
2020-10-15 14:42:33 +00:00
Yassine Doghri
7661734ed2 fix: add where condition to get episode count without deleted episodes
contain podcast page header info within an md width

fixes #67
2020-10-15 14:42:32 +00:00
Yassine Doghri
e6197a4972 fix: comment all cache clean after page update to prevent analytics cache deletion 2020-10-15 14:42:31 +00:00
Yassine Doghri
eb70bb4f70 fix: update purgecss content path for php helper files
- fix overshooting podcast name when too long in podcast sidebar
- update npm packages to latest versions

fixes #59
2020-10-15 14:42:30 +00:00
Yassine Doghri
c39efc9489 fix: set episode duration translation to hardcoded english
- intl NumberFormatter doesn't work as it should with french language
- fix typo in episode french tranlation

fixes #64
2020-10-15 14:42:29 +00:00
Benjamin Bellamy
07eae83a00 feat: add map analytics, add episodes analytics, clean analytics page layout, translate countries 2020-10-15 14:42:28 +00:00
Benjamin Bellamy
196920d62f feat: add french translation 2020-10-15 14:42:25 +00:00
Yassine Doghri
93eb9e1056 style: update 404 and 500 error pages to use tailwindcss and Castopod mascot
- add back to previous page button to 404 page
- replace public/favicon.ico
2020-10-15 14:42:24 +00:00
Yassine Doghri
a83417180c fix: fix layout bugs in admin and update translation files
fixes #40
2020-10-15 14:42:23 +00:00
Yassine Doghri
e109df3004 fix: rename MyAccount controller file
Myaccount controller causes 404 page on certain systems

fixes #60
2020-10-15 14:42:22 +00:00
Yassine Doghri
6238a43863 fix: escape generated feed tag values and remove new lines from public pages meta description
fixes #57, #46
2020-10-15 14:42:21 +00:00
Yassine Doghri
ad8b153f2a fix: set episode guid upon episode creation
fixes #48
2020-10-15 14:42:19 +00:00
Yassine Doghri
2426af7de8 fix(install): redirect to input baseUrl after instance config
install was redirecting to default baseUrl because `redirect->back()` uses the `site_url()` function

fix #53
2020-10-15 14:42:17 +00:00
Yassine Doghri
1c4a50442b feat: set podcast / episode description in the pages description meta tag
strip html tags from description_html attributes to generate text only description

closes #44
2020-10-15 14:42:15 +00:00
Benjamin Bellamy
4d3e9c8c02 fix: correct chart data 2020-10-15 14:42:14 +00:00
Yassine Doghri
769ea469c9 refactor: update install logic and add missing cache config step
- add `.env.example` and `INSTALL.md` to castopod bundle for installation docs
- update seeders to be silent on insert errors
- update install layout
- add manual config instructions when .env file is not writable
- fix eslint error in Charts.ts module

closes #32
2020-10-15 14:42:13 +00:00
Benjamin Bellamy
35f633b4c7 fix: re-order graph values 2020-10-15 14:42:11 +00:00
Benjamin Bellamy
e53f819264 fix: correct percona compatibility issue 2020-10-15 14:42:10 +00:00
Benjamin Bellamy
3a4925816f feat: add unique listeners analytics
- add unique listener
- add some charts
- correct minor bugs
2020-10-15 14:42:09 +00:00
Benjamin Bellamy
9660aa97c8 fix: reorder fields as composite primary keys for analytics tables 2020-10-15 14:42:07 +00:00
Benjamin Bellamy
ed69b2f500 fix: correct referrer bug 2020-10-15 14:42:06 +00:00
Yassine Doghri
6e503c8d61 fix(platforms): display platform link only when visible is toggled on
add condition to podcast page

fix #39
2020-10-15 14:42:05 +00:00
Yassine Doghri
2f07992e55 feat: display legal disclaimer and warning on podcast import page
updated podcast import translations

closes #34
2020-10-15 14:42:04 +00:00
Yassine Doghri
a973c097d5 feat: add alternate rss feed link tag to podcast page head
update composer packages to latest versions

closes #35
2020-10-15 14:42:03 +00:00
Benjamin Bellamy
03e23a28bf feat: update analytics so to meet IABv2 requirements
- https://iabtechlab.com/wp-content/uploads/2017/12/Podcast_Measurement_v2-Dec-20-2017.pdf
  - no IP address is ever stored on the server. Only aggregate data is stored in the dababase.
  - rolling 24-hour window
  - castopod does not do pre-load
  - IP Blacklisting https://github.com/client9/ipcat
  - user-agent Filtering https://github.com/opawg/user-agents
  - ignores 2 bytes range "Range: 0-1" (performed by official Apple iOS Podcast app)
  - in case of partial content, adds up all requests to check >1mn was downloaded
  - identifying Uniques is done with a combination of IP Address and User Agent
- add AMcharts
- add some graphs
- add regions to analytics
- add ipcat blacklist
- enhance useragents performances
- add filesize and header size in order to calculate 1mn downloads
- update publisher ID3 field
- update castopod icon
- add disclaimer and warning import form translation
- update docs/setup-development.md

closes #10
2020-10-15 14:42:02 +00:00
Benjamin Bellamy
5417be0049 fix: remove required for other_categories field and add podcast_id to latest podcasts query 2020-10-15 14:41:57 +00:00