/wp/wp-content/plugins/members/admin/settings.php

https://bitbucket.org/akeda/bmw-id-hris · PHP · 180 lines · 79 code · 37 blank · 64 comment · 8 complexity · 85a77ced4c5810a325fb3934669ac652 MD5 · raw file

  1. <?php
  2. /**
  3. * Creates and handles all of the functionality needed for the 'Members Settings' page in the WordPress admin.
  4. *
  5. * @package Members
  6. * @subpackage Admin
  7. */
  8. /* Set up the administration functionality. */
  9. add_action( 'admin_menu', 'members_settings_page_setup' );
  10. /**
  11. * Initializes and sets up the main plugin settings page.
  12. *
  13. * @since 0.2.0
  14. */
  15. function members_settings_page_setup() {
  16. global $members;
  17. /* If no settings are available, add the default settings to the database. */
  18. if ( false === get_option( 'members_settings' ) )
  19. add_option( 'members_settings', members_get_default_settings(), '', 'yes' );
  20. /* Register the plugin settings. */
  21. add_action( 'admin_init', 'members_register_settings' );
  22. /* Add Members settings page. */
  23. $members->settings_page = add_submenu_page( 'options-general.php', esc_attr__( 'Members Settings', 'members' ), esc_attr__( 'Members', 'members' ), apply_filters( 'members_settings_capability', 'manage_options' ), 'members-settings', 'members_settings_page' );
  24. /* Add media for the settings page. */
  25. add_action( 'admin_enqueue_scripts', 'members_admin_enqueue_style' );
  26. add_action( 'admin_enqueue_scripts', 'members_settings_page_media' );
  27. add_action( "admin_head-{$members->settings_page}", 'members_settings_page_scripts' );
  28. /* Load the meta boxes. */
  29. add_action( "load-{$members->settings_page}", 'members_settings_page_load_meta_boxes' );
  30. /* Create a hook for adding meta boxes. */
  31. add_action( "load-{$members->settings_page}", 'members_settings_page_add_meta_boxes' );
  32. }
  33. /**
  34. * Registers the Members plugin settings with WordPress.
  35. *
  36. * @since 0.2.0
  37. */
  38. function members_register_settings() {
  39. register_setting( 'members_settings', 'members_settings', 'members_validate_settings' );
  40. }
  41. /**
  42. * Executes the 'add_meta_boxes' action hook because WordPress doesn't fire this on custom admin pages.
  43. *
  44. * @since 0.2.0
  45. */
  46. function members_settings_page_add_meta_boxes() {
  47. global $members;
  48. $plugin_data = get_plugin_data( MEMBERS_DIR . 'members.php' );
  49. do_action( 'add_meta_boxes', $members->settings_page, $plugin_data );
  50. }
  51. /**
  52. * Loads the plugin settings page meta boxes.
  53. *
  54. * @since 0.2.0
  55. */
  56. function members_settings_page_load_meta_boxes() {
  57. require_once( MEMBERS_ADMIN . 'meta-box-plugin-settings.php' );
  58. }
  59. /**
  60. * Function for validating the settings input from the plugin settings page.
  61. *
  62. * @since 0.2.0
  63. */
  64. function members_validate_settings( $input ) {
  65. /* Check if the role manager is active. */
  66. $settings['role_manager'] = ( isset( $input['role_manager'] ) ? 1 : 0 );
  67. /* Check if the content permissions feature is active. */
  68. $settings['content_permissions'] = ( isset( $input['content_permissions'] ) ? 1 : 0 );
  69. /* Set the content permissions error text and kill evil scripts. */
  70. if ( current_user_can( 'unfiltered_html' ) && isset( $input['content_permissions_error'] ) )
  71. $settings['content_permissions_error'] = stripslashes( wp_filter_post_kses( addslashes( $input['content_permissions_error'] ) ) );
  72. elseif ( isset( $input['content_permissions_error'] ) )
  73. $settings['content_permissions_error'] = $input['content_permissions_error'];
  74. /* Check if the login form and users widgets are active. */
  75. $settings['login_form_widget'] = ( isset( $input['login_form_widget'] ) ? 1 : 0 );
  76. $settings['users_widget'] = ( isset( $input['users_widget'] ) ? 1 : 0 );
  77. /* Check if the private blog and private feed features are active. */
  78. $settings['private_blog'] = ( isset( $input['private_blog'] ) ? 1 : 0 );
  79. $settings['private_feed'] = ( isset( $input['private_feed'] ) ? 1 : 0 );
  80. /* Set the private feed error text and kill evil scripts. */
  81. if ( current_user_can( 'unfiltered_html' ) && isset( $input['private_feed_error'] ) )
  82. $settings['private_feed_error'] = stripslashes( wp_filter_post_kses( addslashes( $input['private_feed_error'] ) ) );
  83. elseif ( isset( $input['private_feed_error'] ) )
  84. $settings['private_feed_error'] = $input['private_feed_error'];
  85. /* Return the validated/sanitized settings. */
  86. return $settings;
  87. }
  88. /**
  89. * Displays the HTML and meta boxes for the plugin settings page.
  90. *
  91. * @since 0.2.0
  92. */
  93. function members_settings_page() {
  94. global $members; ?>
  95. <div class="wrap">
  96. <?php screen_icon(); ?>
  97. <h2><?php _e( 'Members Plugin Settings', 'members' ); ?></h2>
  98. <div id="poststuff">
  99. <form method="post" action="options.php">
  100. <?php settings_fields( 'members_settings' ); ?>
  101. <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
  102. <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
  103. <div class="metabox-holder">
  104. <div class="post-box-container column-1 normal"><?php do_meta_boxes( $members->settings_page, 'normal', null ); ?></div>
  105. <div class="post-box-container column-2 side"><?php do_meta_boxes( $members->settings_page, 'side', null ); ?></div>
  106. </div>
  107. <?php submit_button( esc_attr__( 'Update Settings', 'members' ) ); ?>
  108. </form>
  109. </div><!-- #poststuff -->
  110. </div><!-- .wrap --><?php
  111. }
  112. /**
  113. * Loads needed JavaScript files for handling the meta boxes on the settings page.
  114. *
  115. * @since 0.2.0
  116. * @param string $hook_suffix The hook for the current page in the admin.
  117. */
  118. function members_settings_page_media( $hook_suffix ) {
  119. global $members;
  120. if ( isset( $members->settings_page ) && $hook_suffix == $members->settings_page ) {
  121. wp_enqueue_script( 'common' );
  122. wp_enqueue_script( 'wp-lists' );
  123. wp_enqueue_script( 'postbox' );
  124. }
  125. }
  126. /**
  127. * Loads JavaScript for handling the open/closed state of each meta box.
  128. *
  129. * @since 0.2.0
  130. * @global $members The path of the settings page.
  131. */
  132. function members_settings_page_scripts() {
  133. global $members; ?>
  134. <script type="text/javascript">
  135. //<![CDATA[
  136. jQuery(document).ready( function($) {
  137. $('.if-js-closed').removeClass('if-js-closed').addClass('closed');
  138. postboxes.add_postbox_toggles( '<?php echo $members->settings_page; ?>' );
  139. });
  140. //]]>
  141. </script>
  142. <?php }
  143. ?>