Merge remote-tracking branch 'calcms/master'

studios: remove google_calendar field
uac.pm: add admin permission
remove deprecated role model
Remove past recordings
fixup! category: remove
Configure event notification sender email address
This commit is contained in:
Milan
2023-03-22 00:14:31 +01:00
26 changed files with 81 additions and 246 deletions

View File

@@ -542,6 +542,7 @@ CREATE TABLE `calcms_roles` (
`studio_id` int unsigned NOT NULL,
`role` varchar(40) NOT NULL,
`level` tinyint unsigned NOT NULL DEFAULT '0',
`admin` INT(1) UNSIGNED NOT NULL DEFAULT 0,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`modified_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`read_role` tinyint unsigned DEFAULT NULL,
@@ -635,11 +636,11 @@ CREATE TABLE `calcms_roles` (
LOCK TABLES `calcms_roles` WRITE;
/*!40000 ALTER TABLE `calcms_roles` DISABLE KEYS */;
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (7,1,1,'Admin',7,NULL,'2023-02-19 21:32:32',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (3,1,1,'Studio Manager',6,NULL,'2023-02-19 21:32:32',1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,0,1,1,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (1,1,1,'Program Planing',4,NULL,'2023-02-19 21:32:32',1,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (2,1,1,'Editorial',2,NULL,'2023-02-19 21:32:32',0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (25,1,1,'Guest',1,NULL,'2023-02-19 21:32:32',0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `admin`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (7,1,1,'Admin',7,1,NULL,'2023-02-19 21:32:32',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `admin`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (3,1,1,'Studio Manager',6,0,NULL,'2023-02-19 21:32:32',1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,0,1,1,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `admin`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (1,1,1,'Program Planing',4,0,NULL,'2023-02-19 21:32:32',1,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `admin`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (2,1,1,'Editorial',2,0,NULL,'2023-02-19 21:32:32',0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1);
INSERT INTO `calcms_roles` (`id`, `project_id`, `studio_id`, `role`, `level`, `admin`, `created_at`, `modified_at`, `read_role`, `update_role`, `read_user_role`, `create_user`, `read_user`, `update_user`, `delete_user`, `update_user_role`, `disable_user`, `create_project`, `read_project`, `update_project`, `delete_project`, `assign_project_studio`, `create_studio`, `read_studio`, `update_studio`, `delete_studio`, `read_studio_timeslot_schedule`, `update_studio_timeslot_schedule`, `create_series`, `read_series`, `update_series`, `delete_series`, `update_series_template`, `assign_series_member`, `remove_series_member`, `scan_series_events`, `assign_series_events`, `read_schedule`, `update_schedule`, `delete_schedule`, `create_event`, `create_event_from_schedule`, `create_event_of_series`, `read_event`, `delete_event`, `update_event_of_series`, `update_event_of_others`, `update_event_time`, `update_event_after_week`, `update_event_field_title`, `update_event_field_title_extension`, `update_event_field_excerpt`, `update_event_field_content`, `update_event_field_content_format`, `update_event_field_description`, `update_event_field_topic`, `update_event_field_episode`, `update_event_field_excerpt_extension`, `update_event_field_image`, `update_event_field_podcast_url`, `update_event_field_archive_url`, `update_event_status_disable_event_sync`, `update_event_status_published`, `update_event_status_rerun`, `update_event_status_draft`, `update_event_status_live`, `update_event_status_playout`, `update_event_status_archived`, `create_image`, `update_image_own`, `read_image`, `delete_image_own`, `update_image_others`, `delete_image_others`, `read_changes`, `undo_changes`, `read_user_stats`, `read_comment`, `update_comment_status_lock`, `update_comment_status_read`, `upload_audio_recordings`, `delete_audio_recordings`, `read_playout`, `create_download`) VALUES (25,1,1,'Guest',1,0,NULL,'2023-02-19 21:32:32',0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
/*!40000 ALTER TABLE `calcms_roles` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1306,7 +1307,6 @@ CREATE TABLE `calcms_studios` (
`location` varchar(100) NOT NULL,
`stream` varchar(100) NOT NULL,
`image` varchar(200) NOT NULL,
`google_calendar` varchar(100) NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`modified_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE,
@@ -1322,7 +1322,7 @@ CREATE TABLE `calcms_studios` (
LOCK TABLES `calcms_studios` WRITE;
/*!40000 ALTER TABLE `calcms_studios` DISABLE KEYS */;
INSERT INTO `calcms_studios` (`id`, `name`, `description`, `location`, `stream`, `image`, `google_calendar`, `created_at`, `modified_at`) VALUES (1,'My Studio','My Radio Studio','studio','','','https://my-radio.org',NULL,'2023-02-19 21:17:18');
INSERT INTO `calcms_studios` (`id`, `name`, `description`, `location`, `stream`, `image`, `created_at`, `modified_at`) VALUES (1,'My Studio','My Radio Studio','studio','','',NULL,'2023-02-19 21:17:18');
/*!40000 ALTER TABLE `calcms_studios` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1770,7 +1770,7 @@ UNLOCK TABLES;
-- Dump completed on 2023-02-19 23:01:42
CREATE TABLE `coloradio`.`calcms_help_texts` (
CREATE TABLE `calcms_help_texts` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`project_id` INT UNSIGNED NOT NULL,
`studio_id` INT UNSIGNED NOT NULL,

View File

@@ -274,23 +274,22 @@ ADD COLUMN `listen_key` VARCHAR(100) NULL;
ALTER TABLE `calcms_audio_recordings`
ADD COLUMN `active` TINYINT(1) NOT NULL DEFAULT 0 AFTER `event_id`;
ALTER TABLE `calcms`.`calcms_audio_recordings`
ALTER TABLE `calcms_audio_recordings`
ADD INDEX `active_index` (`active`);
ALTER TABLE `calcms`.`calcms_events`
ALTER TABLE `calcms_events`
DROP COLUMN `category_count`,
DROP COLUMN `category`,
DROP INDEX `category` ;
;
ALTER TABLE `calcms`.`calcms_event_history`
ALTER TABLE `calcms_event_history`
DROP COLUMN `category_count`,
DROP COLUMN `category`,
DROP INDEX `category` ;
;
ALTER TABLE calcms_user_series DROP COLUMN active;
CREATE TABLE `coloradio`.`calcms_help_texts` (
CREATE TABLE `calcms_help_texts` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`project_id` INT UNSIGNED NOT NULL,
`studio_id` INT UNSIGNED NOT NULL,
@@ -301,3 +300,9 @@ CREATE TABLE `coloradio`.`calcms_help_texts` (
PRIMARY KEY (`id`));
ALTER TABLE `calcms_roles` ADD COLUMN `edit_help_texts` INT(1) UNSIGNED NOT NULL;
-- admin roles
ALTER TABLE `calcms_roles` ADD COLUMN `admin` INT(1) UNSIGNED NOT NULL DEFAULT 0 AFTER `level`;
update calcms_roles set admin=1 where role = 'Admin';
ALTER TABLE calcms_studios DROP COLUMN google_calendar;

View File

@@ -1841,3 +1841,4 @@ sub get_keys($) {
#do not delete last line!
1;

View File

@@ -1,162 +0,0 @@
package roles;
use strict;
use warnings;
no warnings 'redefine';
use Apache2::Reload();
use config();
#use base 'Exporter';
my @EXPORT_OK = qw(get_user get_user_permissions get_template_parameters get_jobs);
my $ROLES = {
'admin' => {
access_events => 1,
access_images => 1,
access_comments => 1,
access_sync => 1,
access_system => 1,
read_event_all => 1,
create_event => 1,
delete_event => 1,
update_comment => 1,
create_image => 1,
read_image_own => 1,
read_image_all => 1,
update_image_own => 1,
update_image_all => 1,
delete_image_own => 1,
delete_image_all => 1,
sync_own => 1,
sync_all => 1,
sync_select_range => 1,
upload_playlist => 1,
},
'dev' => {
access_events => 1,
access_images => 1,
access_comments => 1,
access_sync => 1,
access_system => 0,
read_event_all => 1,
create_event => 1,
delete_event => 1,
update_comment => 1,
create_image => 1,
read_image_own => 1,
read_image_all => 1,
update_image_own => 1,
update_image_all => 1,
delete_image_own => 1,
delete_image_all => 1,
sync_own => 0,
sync_all => 1,
sync_select_range => 1,
upload_playlist => 1,
},
'editor' => {
access_events => 1,
access_images => 1,
access_comments => 1,
access_sync => 1,
access_system => 0,
read_event_all => 0,
create_event => 1,
delete_event => 0,
update_comment => 0,
create_image => 1,
read_image_own => 1,
read_image_all => 1,
update_image_own => 1,
update_image_all => 0,
delete_image_own => 1,
delete_image_all => 0,
sync_own => 1,
sync_all => 0,
sync_select_range => 0,
upload_playlist => 1,
},
'nobody' => {
access_events => 0,
access_images => 0,
access_comments => 0,
access_sync => 0,
access_system => 0,
read_event_all => 0,
create_event => 0,
delete_event => 0,
update_comment => 0,
create_image => 0,
read_image_own => 0,
read_image_all => 0,
update_image_own => 0,
update_image_all => 0,
delete_image_own => 0,
delete_image_all => 0,
sync_own => 0,
sync_all => 0,
sync_select_range => 0,
upload_playlist => 0,
}
};
sub get_user($) {
my $config = shift;
my $user = $ENV{REMOTE_USER};
my $users = $config->{users};
return $user if defined $users->{$user};
return 'nobody';
}
sub get_user_permissions($) {
my $config = shift;
my $user = $ENV{REMOTE_USER} || '';
my $roles = $roles::ROLES;
return $roles->{nobody} unless $user =~ /\S/;
my $users = $config->{users};
if ( defined $users->{$user} ) {
my $role = $users->{$user};
return $roles->{$role} if defined $roles->{$role};
}
return $roles->{nobody};
}
sub get_user_jobs ($;$) {
my $config = shift;
my $user = $ENV{REMOTE_USER} || '';
return [] unless ( $user =~ /\S/ );
my $result = [];
my $jobs = $config->{jobs}->{job};
for my $job (@$jobs) {
for my $job_user ( split /\,/, $job->{users} ) {
push @$result, $job if ( $user eq $job_user );
}
}
return $result;
}
sub get_jobs($) {
my $config = shift;
return $config->{jobs}->{job};
}
sub get_template_parameters($$) {
my $config = shift;
my $user_permissions = shift;
$user_permissions = roles::get_user_permissions($config) unless defined $user_permissions;
my @user_permissions = ();
for my $usecase ( keys %$user_permissions ) {
push @user_permissions, $usecase if $user_permissions->{$usecase} eq '1';
}
return \@user_permissions;
}
return 1;

View File

@@ -18,7 +18,6 @@ use config();
use params();
use project();
use log();
use roles();
#use base 'Exporter';
our @EXPORT_OK = qw(check process exit_on_missing_permission clear_cache);
@@ -45,26 +44,6 @@ sub process($$$$) {
$params->{user} = $ENV{REMOTE_USER} unless defined $params->{user};
my $user_permissions = roles::get_user_permissions($config);
for my $permission ( keys %$user_permissions ) {
$params->{$permission} = $user_permissions->{$permission}
if ( $user_permissions->{$permission} eq '1' );
}
$params->{jobs} = roles::get_user_jobs($config);
if ( ( $filename =~ /json\-p/ ) || (params::isJson) ) {
my $header = "Content-type:application/json; charset=utf-8\n\n";
my $json = JSON->new->pretty(1)->canonical()->encode($params);
$json = $header . $params->{json_callback} . $json;
if ( ( defined $_[1] ) && ( $_[1] eq 'print' ) ) {
print $json. "\n";
} else {
$_[1] = $json . "\n";
}
return;
}
unless ( -r $filename ) {
log::error( $config, qq{template "$filename" does not exist} ) unless -e $filename;
log::error( $config, qq{missing permissions to read "$filename"} );
@@ -207,22 +186,5 @@ sub check($;$$) {
return $template;
}
#deprecated (for old admin only)
sub exit_on_missing_permission($$) {
my $config = shift;
my $permission = shift;
my $user_permissions = roles::get_user_permissions($config);
if ( $user_permissions->{$permission} ne '1' ) {
print STDERR "missing permission to $permission\n";
template::process(
$config, 'print',
template::check( $config, 'default.html' ),
{ error => 'sorry, missing permission!' }
);
die();
}
}
#do not delete last line!
1;

View File

@@ -456,7 +456,7 @@ sub get_admin_user_roles ($$) {
my $query = qq{
select distinct r.*, ur.studio_id, ur.project_id
from calcms_users u, calcms_user_roles ur, calcms_roles r
where ur.user_id=u.id and ur.role_id=r.id and r.role='Admin'
where ur.user_id=u.id and ur.role_id=r.id and r.admin=1
$conditions
limit 1
};
@@ -735,6 +735,11 @@ sub get_user_presets($$) {
my $permissions =
uac::get_user_permissions( $config, { user => $user, project_id => $project_id, studio_id => $studio_id } );
if ($permissions->{admin} == 1) {
for my $key (keys %$permissions) {
$permissions->{$key} = 1;
}
}
#only admin is allowed to select all projects
# if($permissions->{is_admin}==1){

View File

@@ -0,0 +1,42 @@
#! /usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
use List::Util qw();
use FindBin qw($Bin);
use lib "$Bin/../lib/calcms";
use config;
use time;
use db;
use File::Basename qw(basename);
my $config = config::get(pop @ARGV);
my $delete = grep {$_ eq "--delete"} @ARGV;
my $dbh = db::connect($config);
my $query = qq{
select start, path
from calcms_events e, calcms_audio_recordings r
where e.id = r.event_id
and e.start > date_add(now(), INTERVAL -14 DAY)
};
my $entries = db::get($dbh, $query);
my %paths = map {normalize($_->{path}) => $_->{start}} @$entries;
my $dir = $config->{locations}->{local_audio_recordings_dir};
for my $file (sort glob("$dir/*m4a")) {
next if -M $file < 14;
my $filename = normalize($file);
unless (exists $paths{$filename}) {
print " --- $filename\n";
unlink $file or die $! if $delete;
}
}
sub normalize {
my $s = shift;
$s = basename $s;
$s =~ s/\.master(\.\w+)$/$1/;
return $s;
}

View File

@@ -72,6 +72,7 @@ domain ${DOMAIN}
# multi language support
admin_pot_dir ${BASE_DIR}/agenda/planung/pot/
email info@${DOMAIN}
event_sender_email programm@${DOMAIN}
theme default
</locations>

View File

@@ -15,7 +15,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use project();
use studios();
use events();

View File

@@ -14,7 +14,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use project();
use studios();
use events();

View File

@@ -20,7 +20,6 @@ use template();
use calendar();
use auth();
use uac();
use roles();
use project();
use studios();
use events();

View File

@@ -20,7 +20,6 @@ use db();
use auth();
use uac();
#use roles;
use time();
use markup();
use project();

View File

@@ -14,7 +14,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use studios();
use markup();
use localization();

View File

@@ -202,12 +202,12 @@ sub getMail {
$event->{noRecipient} = 1;
return;
}
my $sender = $config->{location}->{event_sender_email};
my $mail = {
'From' => 'programm@radiopiloten.de',
'From' => $sender,
'To' => join( ', ', @$userMails ),
'Cc' => 'programm@radiopiloten.de',
'Reply-To' => 'programm@radiopiloten.de',
'Cc' => $sender,
'Reply-To' => $sender,
'Subject' => "$event->{start} - $event->{full_title}",
'Data' => "Hallo " . join( ' und ', @$userNames ) . ",\n\n"
};

View File

@@ -15,7 +15,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use project();
use studios();
use events();

View File

@@ -40,6 +40,3 @@ msgstr "Logo"
msgid "label_stream"
msgstr "Stream-URL"
msgid "label_google_calendar"
msgstr "Google Kalender"

View File

@@ -39,7 +39,3 @@ msgstr "image"
msgid "label_stream"
msgstr "stream"
msgid "label_google_calendar"
msgstr "google_calendar"

View File

@@ -12,7 +12,6 @@ use params();
use log();
use template();
use auth();
use roles();
use uac();
use studios();
use series();
@@ -26,7 +25,6 @@ my $config = config::get('../config/config.cgi');
my ( $user, $expires ) = auth::get_user( $config, $params, $cgi );
return if ( $user eq '' );
my $permissions = roles::get_user_permissions($config);
my $user_presets = uac::get_user_presets(
$config,
{

View File

@@ -12,7 +12,6 @@ use entry();
use log();
use template();
use auth();
use roles();
use uac();
use studios();
use localization();
@@ -152,8 +151,14 @@ sub save_roles {
}
} elsif ( $column eq 'role' ) {
$values->{$id}->{$column} = $value;
} elsif ( $column eq 'admin' ) {
if ( $permissions->{is_admin} ){
$values->{$id}->{$column} = $value;
} else {
uac::permissions_denied("set admin!");
return;
}
} elsif ( $column eq 'id' || $column eq 'project_id' || $column eq 'studio_id' ) {
#id and studio id will be set later
} else {
$values->{$id}->{$column} = 1 if ( $value =~ /^\d+$/ );
@@ -310,7 +315,6 @@ sub show_roles {
}
for my $role (@$roles) {
my $id = $role->{id} || '';
my $value = $role->{role} || '';
my $style = '';

View File

@@ -16,7 +16,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use project();
use studios();
use events();

View File

@@ -14,7 +14,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use project();
use studios();
use studio_timeslot_schedule();

View File

@@ -12,7 +12,6 @@ use params();
use log();
use template();
use auth();
use roles();
use uac();
use studios();
use series();
@@ -26,7 +25,6 @@ my $config = config::get('../config/config.cgi');
my ( $user, $expires ) = auth::get_user( $config, $params, $cgi );
return if ( $user eq '' );
my $permissions = roles::get_user_permissions($config);
my $user_presets = uac::get_user_presets(
$config,
{
@@ -220,7 +218,7 @@ sub check_params {
$checked->{action} = entry::element_of( $params->{action}, ['save', 'delete']);
entry::set_strings( $checked, $params, [
'name', 'description', 'location', 'stream', 'google_calendar', 'image', 'setImage' ]);
'name', 'description', 'location', 'stream', 'image', 'setImage' ]);
entry::set_numbers( $checked, $params, [
'project_id', 'studio_id', 'default_studio_id', 'id'

View File

@@ -13,7 +13,6 @@ use template();
use auth();
use entry();
use uac();
use roles();
use project();
use studios();
use params();

View File

@@ -12,7 +12,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use project();
use studios();
use params();

View File

@@ -12,7 +12,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use studios();
use params();
use localization();

View File

@@ -13,7 +13,6 @@ use log();
use template();
use auth();
use uac();
use roles();
use project();
use studios();
use work_schedule();