diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2023-01-19 20:17:55 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2023-01-19 20:17:55 +0100 |
commit | f499d9e657fe79e4413eec9e20ae13d616fac6f5 (patch) | |
tree | 616588346d0dc9337b2cd096cf2af7320dcc060f /includes/class-giglogadmin-plugin.php | |
parent | a5a9bb640306a69ec8f9a3c3701c49f34d3e7ebc (diff) | |
download | gigologadmin-f499d9e657fe79e4413eec9e20ae13d616fac6f5.tar.gz gigologadmin-f499d9e657fe79e4413eec9e20ae13d616fac6f5.tar.bz2 gigologadmin-f499d9e657fe79e4413eec9e20ae13d616fac6f5.zip |
Rename and restructure source files to conform to common namin schemes.
- Source files containing a class should only contain _one_ class.
- Source files containing a class should be names class-[name of the
class].php
- Use dashes instead of underscores in file names.
- Fix source file comments
- Some nitpicking...
Diffstat (limited to 'includes/class-giglogadmin-plugin.php')
-rw-r--r-- | includes/class-giglogadmin-plugin.php | 142 |
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(); +} + |