tab_slug = $slug; $this->tab_name = $name; self::$tabs[$slug] = $this; } /** * Getter - slug * * @since 4.0.0 * * @return string Tab slug */ public function getSlug() { return $this->tab_slug; } /** * Getter - name * * @since 4.0.0 * * @return string Tab name */ public function getName() { return $this->tab_name; } /** * Render settings section * * @since 4.0.0 */ public function render() { do_settings_sections( 'wp-fail2ban-' . $this->tab_slug ); } /** * Helper - tab * * @since 4.0.0 * * @param string $slug Tab slug * * @return Tab Tab */ public static function getTab( $slug ) { return self::$tabs[$slug]; } /** * Helper - current tab * * @since 4.0.0 * * @param string $default Default slug * * @return Tab Tab */ public static function getActiveTab( $default = null ) { if ( !empty(self::$active_tab) ) { return self::$active_tab; } return self::$active_tab = ( array_key_exists( @$_GET['tab'], self::$tabs ) ? self::$tabs[$_GET['tab']] : self::$tabs[$default] ); } /** * Helper - tab name * * @since 4.0.0 * * @param string $slug Tab slug * * @return string Tab name */ public static function getTabName( $slug ) { return self::getTab( $slug )->getName(); } /** * Link to documentation * * @since 4.2.0 * * @param string $define * @param string $name * * @return string */ public static function doc_link( $define, $name ) { static $wp_f2b_ver ; if ( empty($wp_f2b_ver) ) { $wp_f2b_ver = substr( WP_FAIL2BAN_VER, 0, strrpos( WP_FAIL2BAN_VER, '.' ) ); } return sprintf( ' %s', $wp_f2b_ver, $define, $name ); } /** * Helper - drop-down list of facilities * * @since 4.0.0 * * @param string $def Name of define for selected value * @param bool $_enabled Enabled? */ protected function getLogFacilities( $def, $_enabled = false ) { $enabled = false; $facilities = [ LOG_AUTH => 'LOG_AUTH', LOG_AUTHPRIV => 'LOG_AUTHPRIV', LOG_CRON => 'LOG_CRON', LOG_DAEMON => 'LOG_DAEMON', LOG_KERN => 'LOG_KERN', LOG_LOCAL0 => 'LOG_LOCAL0', LOG_LOCAL1 => 'LOG_LOCAL1', LOG_LOCAL2 => 'LOG_LOCAL2', LOG_LOCAL3 => 'LOG_LOCAL3', LOG_LOCAL4 => 'LOG_LOCAL4', LOG_LOCAL5 => 'LOG_LOCAL5', LOG_LOCAL6 => 'LOG_LOCAL6', LOG_LOCAL7 => 'LOG_LOCAL7', LOG_LPR => 'LOG_LPR', LOG_MAIL => 'LOG_MAIL', LOG_NEWS => 'LOG_NEWS', LOG_SYSLOG => 'LOG_SYSLOG', LOG_USER => 'LOG_USER', LOG_UUCP => 'LOG_UUCP', ]; $default = constant( "DEFAULT_{$def}" ); $value = ( defined( $def ) ? constant( $def ) : $default ); $str = ''; return $str; } /** * Log helper - enable/disable+facility * * @since 4.2.0 Moved to Tab * @since 4.0.0 * * @param string $define_name Name of define to enable logging * @param string $define_log Name of define for log facility * @param string $description Description * @param array $toggle Array of IDs to sync toggle state */ protected function log( $define_name, $define_log, $description = '', array $toggle = array() ) { $enabled = defined( $define_name ) && true === constant( $define_name ); $fmt = <<<___FMT___ ,
%s
___FMT___; $html = sprintf( $fmt, checked( $enabled, true, false ), $this->getLogFacilities( $define_log ), $description ); echo apply_filters( "wp_fail2ban_log_{$define_name}", $html, $define_name, $define_log ) ; } }