wp_login_timeout_options = get_option('wp_login_timeout_options'); $this->user_level = array('level_0', 'level_1', 'level_2', 'level_3', 'level_4', 'level_5', 'level_6', 'level_7', 'level_8', 'level_9', 'level_10'); $roles = get_role('administrator'); $roles = $roles->capabilities; $roles = array_keys($roles); foreach($roles as $capabilitie) { if(!in_array($capabilitie, $this->user_level)) { $this->capabilities_list[] = $capabilitie; } } sort($this->capabilities_list); // Default install settings register_activation_hook(__FILE__, array(&$this, 'wp_login_timeout_settings_install')); // Languages load_plugin_textdomain('wp-login-timeout-settings', false, 'wp-login-timeout-settings/languages'); add_filter('auth_cookie_expiration', array(&$this, 'login_timeout_filter'), 99, 3); add_action('init', array(&$this, 'wp_login_timeout_settings_init')); add_action('admin_init', array(&$this, 'wp_login_timeout_settings_admin_init')); } function wp_login_timeout_settings_install() { if($this->wp_login_timeout_options === false) { $wp_login_timeout_options = array( 'default_timeout' => 2, 'default_timeout_unit', 3600, 'rememberme_timeout' => 14, 'rememberme_timeout_unit', 3600, 'selected_capabilities_timeout' => 'edit_posts', 'capabilities_default_timeout' => 2, 'capabilities_timeout_unit', 3600, 'capabilities_rememberme_timeout' => 14, 'capabilities_rememberme_timeout_unit', 3600, 'version' => self::VERSION ); } else if(!isset($this->wp_login_timeout_options['version']) || $this->wp_login_timeout_options['version'] < self::VERSION) { // Update 1.1.0 and + if( version_compare($wpus_options['version'], '1.1.0', '<') ) { // $wp_login_timeout_options['auto_core_update_send_email'] = 1; } $wp_login_timeout_options['version'] = self::VERSION; } update_option('wp_login_timeout_options', $wp_login_timeout_options); } function login_timeout_filter($seconds, $user_id, $remember) { if(isset($this->wp_login_timeout_options['activate_capabilities_timeout']) && $this->wp_login_timeout_options['activate_capabilities_timeout'] == 1 && user_can($user_id, $this->wp_login_timeout_options['selected_capabilities_timeout'])) { //if "remember me" is checked; if ($remember) { //WP defaults to 2 weeks; $expiration = $this->wp_login_timeout_options['capabilities_rememberme_timeout'] * $this->wp_login_timeout_options['capabilities_rememberme_timeout_unit']; } else { //WP defaults to 48 hrs/2 days; $expiration = $this->wp_login_timeout_options['capabilities_timeout'] * $this->wp_login_timeout_options['capabilities_timeout_unit']; } } else { if ($remember) { //WP defaults to 2 weeks; $expiration = $this->wp_login_timeout_options['rememberme_timeout'] * $this->wp_login_timeout_options['rememberme_timeout_unit']; } else { //WP defaults to 48 hrs/2 days; $expiration = $this->wp_login_timeout_options['default_timeout'] * $this->wp_login_timeout_options['default_timeout_unit']; } } //http://en.wikipedia.org/wiki/Year_2038_problem if (PHP_INT_MAX - time() < $expiration) { //Fix to a little bit earlier! $expiration = PHP_INT_MAX - time() - 5; } return $expiration; } function add_action_link($links, $file) { static $this_plugin; if (!$this_plugin) $this_plugin = plugin_basename(__FILE__); if ($file == $this_plugin){ $settings_link = '' . __('Settings', 'wp-login-timeout-settings') . ''; array_unshift($links, $settings_link); } return $links; } // Init settings menu function wp_login_timeout_settings_init() { add_action('admin_menu', array(&$this, 'register_login_timeout_settings_menu_page')); // Give the plugin a settings link in the plugin overview add_filter('plugin_action_links', array(&$this, 'add_action_link'), 10, 2); } function register_login_timeout_settings_menu_page(){ $this->wp_login_timeout_admin_page = add_options_page(__('Login timeout', 'wp-login-timeout-settings'), __('Login timeout', 'wp-login-timeout-settings'), 'manage_options', __FILE__, array(&$this, 'wp_login_timeout_settings_menu_page')); add_action('load-'.$this->wp_login_timeout_admin_page, array(&$this, 'wp_login_timeout_add_help_tab')); } function wp_login_timeout_settings_menu_page() { wp_enqueue_style('wp-login-timeout-settings', plugins_url( 'css/style.css', __FILE__ ), array(), self::VERSION); ?>
' . __('For more information:', 'wp-login-timeout-settings') . '
' . '' . '' . __('Visit plugin page', 'wp-login-timeout-settings') . '' . '
'); } function wp_login_timeout_settings_admin_init() { register_setting('wp_login_timeout_options', 'wp_login_timeout_options', array(&$this, 'wp_login_timeout_options')); add_settings_section('wp_login_timeout_default_options', __('Timeout settings', 'wp-login-timeout-settings'), array(&$this, 'wp_login_timeout_section_text'), 'wp_login_timeout_options_sections'); add_settings_field('wp_default_timeout', __('Default timeout (default: 2 days)', 'wp-login-timeout-settings'), array(&$this, 'wp_default_timeout_input'), 'wp_login_timeout_options_sections', 'wp_login_timeout_default_options'); add_settings_field('wp_remember_me_timeout', __('Remember me timeout (default: 14 days)', 'wp-login-timeout-settings'), array(&$this, 'wp_remember_me_timeout_input'), 'wp_login_timeout_options_sections', 'wp_login_timeout_default_options'); add_settings_section('wp_login_capabilities_timeout_options', __('Special timeout settings based on user\'s capability', 'wp-login-timeout-settings'), array(&$this, 'wp_login_timeout_capabilities_section_text'), 'wp_login_timeout_options_sections'); add_settings_field('wp_activate_capabilities_timeout', __('Activate special timeout settings', 'wp-login-timeout-settings'), array(&$this, 'wp_activate_capabilities_timeout_input'), 'wp_login_timeout_options_sections', 'wp_login_capabilities_timeout_options'); add_settings_field('wp_select_capabilities_timeout', __('Select user capabilitie activating the special timeout (default: edit_posts)', 'wp-login-timeout-settings'), array(&$this, 'wp_select_capabilities_timeout_input'), 'wp_login_timeout_options_sections', 'wp_login_capabilities_timeout_options'); add_settings_field('wp_capabilities_timeout', __('Special timeout (default: 2 days)', 'wp-login-timeout-settings'), array(&$this, 'wp_capabilities_timeout_input'), 'wp_login_timeout_options_sections', 'wp_login_capabilities_timeout_options'); add_settings_field('wp_remember_me_capabilities_timeout', __('Special Remember me timeout (default: 14 days)', 'wp-login-timeout-settings'), array(&$this, 'wp_capabilities_remember_me_timeout_input'), 'wp_login_timeout_options_sections', 'wp_login_capabilities_timeout_options'); } function wp_login_timeout_section_text(){ _e('By default, the authentication cookies remembering is 2 days. When "Remember me" is set, the cookies will be kept for 14 days. This panel allows you to change these settings.', 'wp-login-timeout-settings'); } function wp_default_timeout_input() { $options = $this->wp_login_timeout_options; $option_value = isset($options['default_timeout']) ? $options['default_timeout'] : 2; $option_value_unit = isset($options['default_timeout_unit']) ? $options['default_timeout_unit'] : 3600; echo ''; echo ''; } function wp_remember_me_timeout_input() { $options = $this->wp_login_timeout_options; $option_value = isset($options['rememberme_timeout']) ? $options['rememberme_timeout'] : 14; $option_value_unit = isset($options['rememberme_timeout_unit']) ? $options['rememberme_timeout_unit'] : 3600; echo ''; echo ''; } function wp_login_timeout_capabilities_section_text() { _e('You can set a different login timeout to Users with a specific capability.', 'wp-login-timeout-settings'); echo '