class-simple-job-board-admin-settings-init.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php if (!defined('ABSPATH')) { exit; } // Exit if accessed directly
  2. /**
  3. * Simple_Job_Board_Settings_Init Class
  4. *
  5. * This is used to define job settings. This file contains following settings
  6. *
  7. * - General
  8. * - Appearance
  9. * - Job Features
  10. * - Application Form Fields
  11. * - Filters
  12. * - Email Notifications
  13. * - Upload File Extensions
  14. *
  15. * @link https://wordpress.org/plugins/simple-job-board
  16. * @since 2.2.3
  17. *
  18. * @package Simple_Job_Board
  19. * @subpackage Simple_Job_Board/admin
  20. * @author PressTigers <support@presstigers.com>
  21. */
  22. class Simple_Job_Board_Settings_Init {
  23. /**
  24. * Initialize the class and set its properties.
  25. *
  26. * @since 2.2.3
  27. */
  28. public function __construct() {
  29. /**
  30. * The class responsible for defining all the plugin general settings that occur in the frontend area.
  31. */
  32. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-general.php';
  33. // Check if General Settings Class Exists
  34. if (class_exists('Simple_Job_Board_Settings_General')) {
  35. // Initialize General Settings class
  36. new Simple_Job_Board_Settings_General();
  37. }
  38. /**
  39. * The class responsible for defining all the plugin appearance settings that occur in the frontend area.
  40. */
  41. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-appearance.php';
  42. // Check if Appearance Settings Class Exists
  43. if (class_exists('Simple_Job_Board_Settings_Appearance')) {
  44. // Initialize Appearance Settings Class
  45. new Simple_Job_Board_Settings_Appearance();
  46. }
  47. /**
  48. * The class responsible for defining all the plugin job features settings that occur in the admin area.
  49. */
  50. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-job-features.php';
  51. // Check if Job Features Settings Class Exists
  52. if (class_exists('Simple_Job_Board_Settings_Job_Features')) {
  53. // Initialize Job Features Class
  54. new Simple_Job_Board_Settings_Job_Features();
  55. }
  56. /**
  57. * The class responsible for defining all the plugin job application form settings that occur in the admin area.
  58. */
  59. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-application-form-fields.php';
  60. // Check if Job Application Form Settings Class Exists
  61. if (class_exists('Simple_Job_Board_Settings_Application_Form_Fields')) {
  62. // Initialize Job Application Form Settings Class
  63. new Simple_Job_Board_Settings_Application_Form_Fields();
  64. }
  65. /**
  66. * The class responsible for defining all the plugin job filters settings that occur in the frontend area.
  67. */
  68. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-filters.php';
  69. // Check if Job Filters Settings Class Exists
  70. if (class_exists('Simple_Job_Board_Settings_Filters')) {
  71. // Initialize Job Filters Settings Class
  72. new Simple_Job_Board_Settings_Filters();
  73. }
  74. /**
  75. * The class responsible for defining all the plugin email notifications settings that occur in the frontend area.
  76. */
  77. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-email-notifications.php';
  78. // Check if Email Notifications Settings Class Exists
  79. if (class_exists('Simple_Job_Board_Settings_Email_Notifications')) {
  80. // Initialize Email Notifications Settings Class
  81. new Simple_Job_Board_Settings_Email_Notifications();
  82. }
  83. /**
  84. * The class responsible for defining all the plugin uplaod file extensions settings that occur in the frontend area.
  85. */
  86. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-upload-file-extensions.php';
  87. // Check if Upload File Extension Settings Class Exists
  88. if (class_exists('Simple_Job_Board_Settings_Upload_File_Extensions')) {
  89. // Initialize Upload File Extension Settings Class
  90. new Simple_Job_Board_Settings_Upload_File_Extensions();
  91. }
  92. /**
  93. * The class responsible for defining all the plugin uplaod file extensions settings that occur in the frontend area.
  94. */
  95. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/settings/class-simple-job-board-settings-privacy.php';
  96. // Check if Simple_Job_Board_GDPR_Settings Class Exists
  97. if (class_exists('Simple_Job_Board_Privacy')) {
  98. // Initialize Simple_Job_Board_GDPR_Settings Class
  99. new Simple_Job_Board_Privacy();
  100. }
  101. // Action - Add Settings Menu
  102. add_action('admin_menu', array($this, 'sjb_admin_menu'), 12);
  103. // Action - Save Settings
  104. add_action('admin_notices', array($this, 'sjb_save_settings'));
  105. }
  106. /**
  107. * Add Settings Page Under Job Board Menu.
  108. *
  109. * @since 2.0.0
  110. */
  111. public function sjb_admin_menu() {
  112. add_submenu_page('edit.php?post_type=jobpost', esc_html__('Settings', 'simple-job-board'), esc_html__('Settings', 'simple-job-board'), 'manage_options', 'job-board-settings', array($this, 'sjb_settings_tab_menu'));
  113. }
  114. /**
  115. * Add Settings Tab Menu.
  116. *
  117. * @Since 2.0.0
  118. */
  119. public function sjb_settings_tab_menu() {
  120. ?>
  121. <div class="wrap">
  122. <h1><?php esc_html_e('Settings', 'simple-job-board'); ?></h1>
  123. <h2 class="nav-tab-wrapper">
  124. <?php
  125. /**
  126. * Filter the Settings Tab Menus.
  127. *
  128. * @since 2.2.0
  129. *
  130. * @param array (){
  131. * @type array Tab Id => Settings Tab Name
  132. * }
  133. */
  134. $settings_tabs = apply_filters('sjb_settings_tab_menus', array());
  135. $count = 1;
  136. foreach ($settings_tabs as $key => $tab_name) {
  137. $active_tab = ( 1 === $count ) ? 'nav-tab-active' : '';
  138. echo '<a href="#settings-' . sanitize_key($key) . '" class="nav-tab ' . sanitize_html_class($active_tab) . ' ">' . esc_attr($tab_name) . '</a>';
  139. $count++;
  140. }
  141. ?>
  142. </h2>
  143. <?php
  144. /**
  145. * Action -> Display Settings Sections.
  146. *
  147. * @since 2.2.3
  148. */
  149. do_action('sjb_settings_tab_section');
  150. ?>
  151. </div>
  152. <?php
  153. }
  154. /**
  155. * Save Settings.
  156. *
  157. * @since 2.2.3
  158. */
  159. public function sjb_save_settings() {
  160. /**
  161. * Action -> Save Setting Sections.
  162. *
  163. * @since 2.2.3
  164. */
  165. do_action('sjb_save_setting_sections');
  166. // Admin Notices
  167. if (( NULL != filter_input(INPUT_POST, 'admin_notices'))) {
  168. ?>
  169. <div class="updated">
  170. <p><?php echo apply_filters('sjb_saved_settings_notification', esc_html__('Settings have been saved.', 'simple-job-board')); ?></p>
  171. </div>
  172. <?php
  173. }
  174. }
  175. }
  176. new Simple_Job_Board_Settings_Init();