summaryrefslogtreecommitdiffstats
path: root/includes/class-giglogadmin-plugin.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/class-giglogadmin-plugin.php')
-rw-r--r--includes/class-giglogadmin-plugin.php142
1 files changed, 142 insertions, 0 deletions
diff --git a/includes/class-giglogadmin-plugin.php b/includes/class-giglogadmin-plugin.php
new file mode 100644
index 0000000..a195ffa
--- /dev/null
+++ b/includes/class-giglogadmin-plugin.php
@@ -0,0 +1,142 @@
+<?php
+/**
+ * The main giglogadmin plugin code.
+ *
+ * @package giglogadmin
+ *
+ * SPDX-FileCopyrightText: 2021 Andrea Chirulescu <andrea.chirulescu@gmail.com>
+ * SPDX-FileCopyrightText: 2021 Harald Eilertsen <haraldei@anduin.net>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+if ( ! class_exists( 'GiglogAdmin_Plugin' ) ) {
+
+ class GiglogAdmin_Plugin
+ {
+ static public function init(): void {
+ if ( !defined('GIGLOGADMIN_UNIT_TEST') ) {
+ require_once __DIR__ . '/admin/register_db_tables.php';
+ }
+
+ require_once __DIR__ . '/class-giglogadmin-venue.php';
+ require_once __DIR__ . '/class-giglogadmin-concert.php';
+ require_once __DIR__ . '/class-giglogadmin-icalexport.php';
+ require_once __DIR__ . '/view-helpers/select_field.php';
+
+ if (is_admin()) {
+ require_once __DIR__ . '/admin/views/giglog_admin_page.php';
+ require_once __DIR__ . '/admin/views/giglog_import_gigs.php';
+ require_once __DIR__ . '/admin/helpfiles/instrunctions.php';
+ require_once __DIR__ . '/admin/helpfiles/instr_reviewers.php';
+ require_once __DIR__ . '/admin/helpfiles/instr_photog.php';
+
+ add_action( 'admin_menu', array( 'GiglogAdmin_Plugin', 'add_admin_pages' ));
+ add_action( 'admin_menu', array( 'GiglogAdmin_Plugin', 'add_help_pages' ));
+
+ add_filter( 'wp_nav_menu_args', array( 'GiglogAdmin_Plugin', 'nav_menu_args' ));
+ }
+ else {
+ require_once __DIR__ . '/admin/views/_concerts_table.php';
+ require_once __DIR__ . '/giglogadmin-shortcodes.php';
+ }
+ }
+
+ static function activate(): void {
+ }
+
+ static function deactivate(): void {
+ }
+
+ /**
+ * Adds the 'Giglog' top level menu to the left side WordPress admin
+ * menu. Other subpages will come later.
+ *
+ * @return void
+ */
+ static function add_admin_pages(): void {
+ if ( ! current_user_can( 'manage_options' ) ) {
+ return;
+ }
+ $top = add_menu_page(
+ "Giglog admin", // Page title
+ "Giglog", // Menu title
+ "upload_files", // Will show for users with this capability
+ "giglog", // menu slug
+ array( 'GiglogAdmin_AdminPage', 'render_html' ), // callable
+ 'dashicons-tickets-alt', // Icon url
+ 11); // Position, just below 'Media'
+
+ add_action( 'load-' . $top, array( 'GiglogAdmin_AdminPage', 'update' ) );
+
+ $import_hook = add_submenu_page(
+ "giglog", // parent slug
+ "Import gigs", // page title
+ "Import gigs", // menu title
+ "upload_files", // required capability
+ "giglog_import", // menu slug
+ array( 'GiglogAdmin_ImportGigsPage', 'render_html' )); // callable
+
+ if ($import_hook !== false) {
+ add_action(
+ 'load-' . $import_hook,
+ array( 'GiglogAdmin_ImportGigsPage', 'submit_form' ) );
+ }
+
+ wp_register_style( 'css_style', plugins_url( '/includes/css/main.css', __FILE__ ) );
+ wp_enqueue_style('css_style');
+ }
+
+ static function add_help_pages(): void {
+ if ( ! current_user_can( 'manage_options' ) ) {
+ return;
+ }
+ add_menu_page(
+ "Help for ET users", // Page title
+ "Help for ET users", // Menu title
+ "upload_files", // Will show for users with this capability
+ "helpfiles", // menu slug
+ array( 'Instructions_Page', 'render_instr_html' ), // callable
+ 'dashicons-tickets-alt', // Icon url
+ 10); // Position, just below 'Media'
+
+ add_submenu_page(
+ "helpfiles", // parent slug
+ "Reviewer help files", // page title
+ "Reviewer help files", // menu title
+ "upload_files", // required capability
+ "reviewer_help", // menu slug
+ array( 'Instructions_Reviewers', 'render_instr_rev_html' )); // callable
+
+ add_submenu_page(
+ "helpfiles", // parent slug
+ "Photogalleries help files", // page title
+ "Photogalleries help files", // menu title
+ "upload_files", // required capability
+ "photog_help", // menu slug
+ array( 'Instructions_Photogs', 'render_instr_photo_html' )); // callable
+ }
+
+ /*
+ * Show menus based on whether user is logged in or not.
+ *
+ * Giglog admin pages should only be visible for logged in users/can eventually
+ * be customized by role if needed
+ */
+ static function nav_menu_args( array $args = [] ) : array {
+ if ( is_user_logged_in() ) {
+ $args['menu'] = 'Loggedusers';
+ } else {
+ $args['menu'] = 'Notloggedusers';
+ }
+
+ return $args;
+ }
+
+ }
+
+ register_activation_hook( __FILE__, array( 'GiglogAdmin_Plugin', 'activate' ));
+ register_deactivation_hook( __FILE__, array( 'GiglogAdmin_Plugin', 'deactivate' ));
+
+ GiglogAdmin_Plugin::init();
+}
+