class-simple-job-board-admin.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. /**
  3. * Simple_Job_Board_Admin Class
  4. *
  5. * The admin-specific functionality of the plugin. Defines the plugin name,
  6. * version and two examples hooks for how to enqueue the admin-specific
  7. * stylesheet and JavaScript.
  8. *
  9. * @link https://wordpress.org/plugins/simple-job-board
  10. * @since 1.0.0
  11. * @since 2.3.2 Admin Footer Text Branding
  12. * @since 2.4.0 Updated Outdated Scripts & Styles
  13. * @since 2.4.4 Added User Capability for Resume Download
  14. *
  15. * @package Simple_Job_Board
  16. * @subpackage Simple_Job_Board/admin
  17. * @author PressTigers <support@presstigers.com>
  18. */
  19. class Simple_Job_Board_Admin {
  20. /**
  21. * The ID of this plugin.
  22. *
  23. * @since 1.0.0
  24. * @access private
  25. * @var string $simple_job_board The ID of this plugin.
  26. */
  27. private $simple_job_board;
  28. /**
  29. * The version of this plugin.
  30. *
  31. * @since 1.0.0
  32. * @access private
  33. * @var string $version The current version of this plugin.
  34. */
  35. private $version;
  36. /**
  37. * Initialize the class and set its properties.
  38. *
  39. * @since 1.0.0
  40. * @param string $simple_job_board The name of this plugin.
  41. * @param string $version The version of this plugin.
  42. */
  43. public function __construct($simple_job_board, $version) {
  44. $this->simple_job_board = $simple_job_board;
  45. $this->version = $version;
  46. /**
  47. * The class responsible for defining all the meta options under custom post type in the admin area.
  48. */
  49. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/class-simple-job-board-admin-meta-boxes-init.php';
  50. /**
  51. * The class responsible for writing rules in htaccess file and to protect the file from direct link.
  52. */
  53. require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-simple-job-board-rewrite.php';
  54. /**
  55. * The class responsible for defining all the plugin settings that occur in the front end area.
  56. */
  57. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/class-simple-job-board-admin-settings-init.php';
  58. /**
  59. * The class responsible for Applicant's detail in the back end area.
  60. */
  61. require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-simple-job-board-applicants.php';
  62. /**
  63. * The class responsible for creating the job board shortcode generator functionality in TinyMCE through its button.
  64. */
  65. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/class-simple-job-board-admin-shortcode-generator.php';
  66. /**
  67. * The class responsible for creating the add-ons page in admin area.
  68. */
  69. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/class-simple-job-board-admin-add-ons.php';
  70. /**
  71. * The class responsible for handling resume download.
  72. */
  73. require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-simple-job-board-resume-download-handler.php';
  74. /**
  75. * The class responsible to add the SJB widgets in admin Widgets area.
  76. */
  77. require_once plugin_dir_path(dirname(__FILE__)) . 'admin/class-simple-job-board-widgets-init.php';
  78. /**
  79. * This class is responsible for integrating user data eraser implementation with core WP eraser.
  80. */
  81. require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-simple-job-board-privacy-eraser.php';
  82. /**
  83. * This class is responsible for integrating user data exporter implementation with core WP exporter.
  84. */
  85. require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-simple-job-board-privacy-exporter.php';
  86. // Filter -> Checks for User Certain apability.
  87. add_filter('user_has_cap', array($this, 'sjb_user_has_capability'), 10, 3);
  88. // Filter -> Footer Branding - with PressTigers Logo
  89. add_filter('admin_footer_text', array($this, 'sjb_powered_by'));
  90. }
  91. /**
  92. * Register the stylesheets for the admin area.
  93. *
  94. * @since 1.0.0
  95. */
  96. public function enqueue_styles() {
  97. if ( is_admin() && $this->is_sjb_admin_pages() ) {
  98. // Enqueue Core Admin Styles
  99. wp_enqueue_style($this->simple_job_board, plugin_dir_url(__FILE__) . 'css/simple-job-board-admin.css', array('wp-color-picker'), '1.1.0', 'all');
  100. }
  101. }
  102. /**
  103. * Register the JavaScript for the admin area.
  104. *
  105. * @since 1.0.0
  106. */
  107. public function enqueue_scripts() {
  108. if (is_admin()) {
  109. // Simple Job Board Admin Core JS File
  110. wp_enqueue_script( $this->simple_job_board . '-admin', plugin_dir_url(__FILE__) . 'js/simple-job-board-admin.js', array('jquery', 'jquery-ui-sortable', 'wp-color-picker'), '1.3.0', TRUE);
  111. // Localize Script for Making jQuery Stings Translation Ready
  112. wp_localize_script($this->simple_job_board . '-admin', 'application_form', array(
  113. 'settings_jquery_alerts' => array(
  114. 'delete' => esc_html__('Delete', 'simple-job-board'),
  115. 'required' => esc_html__('Required', 'simple-job-board'),
  116. 'field_name' => esc_html__('Field Name', 'simple-job-board'),
  117. 'empty_feature_name' => esc_html__('Please fill out job feature.', 'simple-job-board'),
  118. 'empty_field_name' => esc_html__('Please fill out application form field name.', 'simple-job-board'),
  119. 'applicant_listing_col' => esc_html__('Expose in Applicant Listing', 'simple-job-board'),
  120. ),
  121. )
  122. );
  123. // Register Alpha Color Picker Script
  124. wp_register_script('wp-color-picker-alpha', plugin_dir_url(__FILE__) . 'js/wp-color-picker-alpha.js', array(), '1.2.2', TRUE);
  125. }
  126. }
  127. /**
  128. * Checks if a user has a certain capability.
  129. *
  130. * @since 2.4.4
  131. *
  132. * @param array $allcaps User Capabilities
  133. * @param array $caps Actual capabilities for meta capability.
  134. * @param array $args Parameters passed to has_cap(),
  135. * @return array $allcaps Modified Capabilities along with Resume Download
  136. */
  137. public function sjb_user_has_capability( $allcaps, $caps, $args ) {
  138. if (isset($caps[0]) && 'download_resume' == $caps[0]) {
  139. if (array_key_exists('edit_others_posts', $allcaps)) {
  140. $allcaps['download_resume'] = TRUE;
  141. }
  142. }
  143. return $allcaps;
  144. }
  145. /**
  146. * Replace admin footer text with PressTigers branding.
  147. *
  148. * @since 2.3.2
  149. */
  150. public function sjb_powered_by($text) {
  151. if ( is_admin() && $this->is_sjb_admin_pages() ) {
  152. $text = '<a href="' . esc_url('http://www.presstigers.com/') . '" target="_blank"><img src="' . untrailingslashit(plugins_url(basename(plugin_dir_path(__DIR__)), basename(__DIR__))) . '/admin/images/powerByIcon.png" alt="Powered by PressTigers"></a>';
  153. }
  154. return $text;
  155. }
  156. /**
  157. * Is SJB Admin pages.
  158. *
  159. * @since 2.5.0
  160. */
  161. public function is_sjb_admin_pages() {
  162. $screen = get_current_screen();
  163. // SJB Admin Pages Ids
  164. $sjb_pages = array(
  165. 'jobpost_page_job-board-settings',
  166. 'jobpost_page_sjb-add-ons',
  167. 'edit-jobpost_applicants',
  168. 'jobpost_applicants',
  169. 'edit-jobpost',
  170. 'jobpost',
  171. 'edit-jobpost_category',
  172. 'edit-jobpost_job_type',
  173. 'edit-jobpost_location',
  174. );
  175. if ( in_array( $screen->id, apply_filters( 'sjb_pages', $sjb_pages ) ) ) {
  176. return TRUE;
  177. } else {
  178. return FALSE;
  179. }
  180. }
  181. }