PageRenderTime 47ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/all-in-one-seo-pack/aioseop_module_manager.php

https://bitbucket.org/theshipswakecreative/psw
PHP | 124 lines | 106 code | 5 blank | 13 comment | 64 complexity | 9feb0a845f1b10d723555ddd9081606b MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0
  1. <?php
  2. /**
  3. * @package All-in-One-SEO-Pack
  4. */
  5. /**
  6. * The Module Manager.
  7. */
  8. if ( !class_exists( 'All_in_One_SEO_Pack_Module_Manager' ) ) {
  9. class All_in_One_SEO_Pack_Module_Manager {
  10. protected $modules = Array();
  11. protected $settings_update = false;
  12. protected $settings_reset = false;
  13. protected $settings_reset_all = false;
  14. protected $module_settings_update = false;
  15. // initialize module list
  16. function All_in_One_SEO_Pack_Module_Manager( $mod ) {
  17. $this->modules['feature_manager'] = null;
  18. foreach ( $mod as $m ) $this->modules[$m] = null;
  19. $reset = false;
  20. $reset_all = ( isset( $_POST['Submit_All_Default'] ) && $_POST['Submit_All_Default']!='' );
  21. $reset = ( ( isset( $_POST['Submit_Default'] ) && $_POST['Submit_Default']!='' ) || $reset_all );
  22. $update = ( isset($_POST['action']) && $_POST['action']
  23. && ( ( isset( $_POST['Submit'] ) && $_POST['Submit']!='' ) || $reset )
  24. );
  25. if ( $update ) {
  26. if ( $reset ) $this->settings_reset = true;
  27. if ( $reset_all ) $this->settings_reset_all = true;
  28. if ( $_POST['action'] == 'aiosp_update' ) $this->settings_update = true;
  29. if ( $_POST['action'] == 'aiosp_update_module' ) $this->module_settings_update = true;
  30. }
  31. $this->do_load_module( 'feature_manager', $mod );
  32. }
  33. function return_module( $class ) {
  34. global $aiosp;
  35. if ( $class == get_class( $aiosp ) ) return $aiosp;
  36. if ( $class == get_class( $this ) ) return $this;
  37. foreach( $this->modules as $m )
  38. if ( is_object( $m ) && ( $class == get_class( $m ) ) )
  39. return $m;
  40. return false;
  41. }
  42. function get_loaded_module_list() {
  43. $module_list = Array();
  44. if ( !empty( $this->modules ) ) {
  45. foreach( $this->modules as $k => $v )
  46. if ( !empty( $v ) )
  47. $module_list[$k] = get_class( $v );
  48. }
  49. return $module_list;
  50. }
  51. // Module name is used for these automatic settings:
  52. // The aiosp_enable_$module settings - whether each plugin is active or not
  53. // The name of the .php file containing the module - aioseop_$module.php
  54. // The name of the class - All_in_One_SEO_Pack_$Module
  55. // The global $aioseop_$module
  56. // $this->modules[$module]
  57. function do_load_module( $mod, $args = null ) {
  58. $mod_path = apply_filters( "aioseop_include_$mod", AIOSEOP_PLUGIN_DIR . "aioseop_$mod.php" );
  59. if ( !empty( $mod_path ) )
  60. require_once( $mod_path );
  61. $ref = "aioseop_$mod";
  62. $classname = "All_in_One_SEO_Pack_" . strtr( ucwords( strtr( $mod, '_', ' ' ) ), ' ', '_' );
  63. $classname = apply_filters( "aioseop_class_$mod", $classname );
  64. $module_class = new $classname( $args );
  65. $GLOBALS[$ref] = $module_class;
  66. $this->modules[$mod] = $module_class;
  67. if ( is_user_logged_in() && function_exists( 'is_admin_bar_showing' ) && is_admin_bar_showing() && current_user_can( 'manage_options' ) )
  68. add_action( 'admin_bar_menu', array( $module_class, 'add_admin_bar_submenu' ), 1001 + $module_class->menu_order() );
  69. if ( is_admin() ) {
  70. add_action( 'aioseop_modules_add_menus', Array( $module_class, 'add_menu' ), $module_class->menu_order() );
  71. add_action( 'aiosoep_options_reset', Array( $module_class, 'reset_options' ) );
  72. add_filter( 'aioseop_export_settings', Array( $module_class, 'settings_export' ) );
  73. }
  74. return true;
  75. }
  76. function load_module( $mod ) {
  77. static $feature_options = null;
  78. static $feature_prefix = null;
  79. if ( !is_array( $this->modules ) ) return false;
  80. $v = $this->modules[ $mod ];
  81. if ( $v !== null ) return false; // already loaded
  82. if ( $mod == 'performance' && !is_super_admin() ) return false;
  83. if ( ( $mod == 'file_editor' || $mod == 'robots' )
  84. && ( ( ( defined( 'DISALLOW_FILE_EDIT' ) && DISALLOW_FILE_EDIT )
  85. || ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS )
  86. || !is_super_admin() ) ) )
  87. return false;
  88. $mod_enable = false;
  89. $fm_page = ( $this->module_settings_update && wp_verify_nonce( $_POST['nonce-aioseop'], 'aioseop-nonce' ) &&
  90. isset($_REQUEST['page']) && $_REQUEST['page'] == trailingslashit( AIOSEOP_PLUGIN_DIRNAME ) . 'aioseop_feature_manager.php' );
  91. if ( $fm_page && !$this->settings_reset ) {
  92. if ( isset( $_POST["aiosp_feature_manager_enable_$mod"] ) )
  93. $mod_enable = $_POST["aiosp_feature_manager_enable_$mod"];
  94. else
  95. $mod_enable = false;
  96. } else {
  97. if ( $feature_prefix == null )
  98. $feature_prefix = $this->modules['feature_manager']->get_prefix();
  99. if ( $fm_page && $this->settings_reset )
  100. $feature_options = $this->modules['feature_manager']->default_options();
  101. if ( $feature_options == null ) {
  102. if ( $this->module_settings_update && wp_verify_nonce( $_POST['nonce-aioseop'], 'aioseop-nonce' ) && $this->settings_reset_all )
  103. $feature_options = $this->modules['feature_manager']->default_options();
  104. else
  105. $feature_options = $this->modules['feature_manager']->get_current_options();
  106. }
  107. if ( isset( $feature_options["{$feature_prefix}enable_$mod"] ) )
  108. $mod_enable = $feature_options["{$feature_prefix}enable_$mod"];
  109. }
  110. if ( $mod_enable ) return $this->do_load_module( $mod );
  111. return false;
  112. }
  113. function load_modules() {
  114. if ( is_array( $this->modules ) )
  115. foreach( $this->modules as $k => $v )
  116. $this->load_module( $k );
  117. }
  118. }
  119. }