public function __construct()
 {
     /**
      * 어드민 화면에서 통지하는 기능은 WSKL_Plugins_React 를 참고.
      *
      * @see WSKL_Plugins_React::wp_members()
      */
     if (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) {
         return;
     }
     if (wskl_is_plugin_inactive(WP_MEMBERS_PLUGIN)) {
         return;
     }
     // 관리자 모듈
     if (WSKL()->is_request('admin')) {
         wskl_load_module('/includes/inactive-accounts/admin/class-wskl-inactive-accounts-admin.php');
         $this->admin = new WSKL_Inactive_Accounts_Admin();
     }
     /**
      * 사용자 로그인 시, 로그인 시각 기록
      *
      * @see wp-includes/user.php
      * @see wp_signon()
      */
     add_action('wp_login', array($this, 'set_login_data'), 10, 2);
     /**
      * 크론 스케쥴 확장 작업
      */
     add_filter('cron_schedules', array($this, 'add_cron_schedule'));
     if (wskl_debug_enabled()) {
         // 디버그 전용...
         add_filter('cron_request', array($this, 'add_xdebug_cookie_value'));
     }
     /**
      * 크론 스케쥴로 새성된 훅
      */
     add_action('wskl_inactive_accounts_check', array($this, 'do_interval_jobs'));
     /**
      * WP-Members 패스워드 초기화
      */
     add_action('wpmem_pwd_reset', array($this, 'recover_user_role'), 10, 1);
     // 나머지 모듈들
     wskl_load_module('/includes/inactive-accounts/class-wskl-inactive-accounts-email.php');
     wskl_load_module('/includes/inactive-accounts/admin/class-wskl-inactive-accounts-tinymce-buttons.php');
     wskl_load_module('/includes/inactive-accounts/class-wskl-inactive-accounts-shortcodes.php');
     $this->shortcodes = new WSKL_Inactive_Accounts_Shortcodes();
     if (wskl_debug_enabled()) {
         add_action('wp_ajax_inactive-accounts_test', array($this, 'test'));
     }
 }
 /**
  * initialization
  */
 public static function init()
 {
     if (wskl_is_plugin_inactive(WP_MEMBERS_PLUGIN)) {
         return;
     }
     if (is_admin()) {
         wskl_load_module('/includes/dabory-members/admin/class-wskl-dabory-members-admin.php', 'enable_dabory_members');
     }
     // 회원 등록 서브모듈
     wskl_load_module('/includes/dabory-members/class-wskl-dabory-members-registration.php');
     // 회원 탈퇴 서브모듈
     wskl_load_module('/includes/dabory-members/class-wskl-dabory-members-withdrawal.php', 'members_enable_withdrawal_shortcode');
     // tinymce 버튼 삽입 서브모듈
     wskl_load_module('/includes/dabory-members/class-wskl-dabory-members-tinymce-buttons.php');
     // 탈퇴한 회원의 로그인 방지
     add_filter('authenticate', array(__CLASS__, 'filter_authentication'), 100, 1);
     add_filter('woocommerce_product_tabs', array(__CLASS__, 'delivery_refund'));
     add_shortcode('dabory-members', array(__CLASS__, 'shortcode_dabory_members'));
 }
 public static function check_plugin_status()
 {
     foreach (static::$plugins as $p) {
         $plugin_file = $p[0];
         $trigger = $p[1];
         $callback = $p[2];
         if (empty($trigger) || !is_callable($callback)) {
             continue;
         }
         switch ($trigger) {
             case 'active':
                 if (wskl_is_plugin_active($plugin_file)) {
                     call_user_func_array($callback, array($plugin_file, $trigger));
                 }
                 break;
             case 'inactive':
                 if (wskl_is_plugin_inactive($plugin_file)) {
                     call_user_func_array($callback, array($plugin_file, $trigger));
                 }
                 break;
         }
     }
 }