#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?U)(?<!\$)(\b\S+?\b)"
Local $sString = "<?php" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"/* Quit */" & @CRLF & _
"defined('ABSPATH') OR exit;" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"/**" & @CRLF & _
"* Cachify" & @CRLF & _
"*/" & @CRLF & _
"" & @CRLF & _
"final class Cachify {" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Plugin-Optionen" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0" & @CRLF & _
" * @var array" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static $options;" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Cache-Methode" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0" & @CRLF & _
" * @var object" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static $method;" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Method settings" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.9" & @CRLF & _
" * @var integer" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" const METHOD_DB = 0;" & @CRLF & _
" const METHOD_APC = 1;" & @CRLF & _
" const METHOD_HDD = 2;" & @CRLF & _
" const METHOD_MMC = 3;" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Minify settings" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.9" & @CRLF & _
" * @var integer" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" const MINIFY_DISABLED = 0;" & @CRLF & _
" const MINIFY_HTML_ONLY = 1;" & @CRLF & _
" const MINIFY_HTML_JS = 2;" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Pseudo-Konstruktor der Klasse" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.5" & @CRLF & _
" * @change 2.0.5" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function instance()" & @CRLF & _
" {" & @CRLF & _
" new self();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Konstruktor der Klasse" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0.0" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public function __construct()" & @CRLF & _
" {" & @CRLF & _
" /* Filter */" & @CRLF & _
" if ( ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) OR ( defined('DONOTCACHEPAGE') && DONOTCACHEPAGE ) ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Set defaults */" & @CRLF & _
" self::_set_default_vars();" & @CRLF & _
"" & @CRLF & _
" /* Publish-Hooks */" & @CRLF & _
" self::_register_publish_hooks();" & @CRLF & _
"" & @CRLF & _
" /* Flush Hook */" & @CRLF & _
" add_action(" & @CRLF & _
" 'cachify_flush_cache'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'flush_total_cache'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" '_core_updated_successfully'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'flush_total_cache'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'switch_theme'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'flush_total_cache'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Backend */" & @CRLF & _
" if ( is_admin() ) {" & @CRLF & _
" add_action(" & @CRLF & _
" 'wpmu_new_blog'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'install_later'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'delete_blog'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'uninstall_later'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" add_action(" & @CRLF & _
" 'admin_init'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'register_textdomain'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'admin_init'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'register_settings'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'admin_init'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'process_flush_request'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'admin_menu'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'add_page'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'admin_enqueue_scripts'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'add_admin_resources'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" add_action(" & @CRLF & _
" 'transition_comment_status'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'touch_comment'" & @CRLF & _
" )," & @CRLF & _
" 10," & @CRLF & _
" 3" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'edit_comment'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'edit_comment'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'admin_bar_menu'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'add_flush_icon'" & @CRLF & _
" )," & @CRLF & _
" 90" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'dashboard_glance_items'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'add_dashboard_count'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'post_submitbox_misc_actions'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'print_flush_dropdown'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" add_filter(" & @CRLF & _
" 'plugin_row_meta'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'row_meta'" & @CRLF & _
" )," & @CRLF & _
" 10," & @CRLF & _
" 2" & @CRLF & _
" );" & @CRLF & _
" add_filter(" & @CRLF & _
" 'plugin_action_links_' .CACHIFY_BASE," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'action_links'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Frontend */" & @CRLF & _
" } else {" & @CRLF & _
" add_action(" & @CRLF & _
" 'pre_comment_approved'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'pre_comment'" & @CRLF & _
" )," & @CRLF & _
" 99," & @CRLF & _
" 2" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'template_redirect'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'manage_cache'" & @CRLF & _
" )," & @CRLF & _
" 0" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'robots_txt'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'robots_txt'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Deactivation hook" & @CRLF & _
" *" & @CRLF & _
" * @since 2.1.0" & @CRLF & _
" * @change 2.1.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function on_deactivation()" & @CRLF & _
" {" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Activation hook" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 2.1.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function on_activation()" & @CRLF & _
" {" & @CRLF & _
" /* Multisite & Network */" & @CRLF & _
" if ( is_multisite() && ! empty($_GET['networkwide']) ) {" & @CRLF & _
" /* Blog-IDs */" & @CRLF & _
" $ids = self::_get_blog_ids();" & @CRLF & _
"" & @CRLF & _
" /* Loopen */" & @CRLF & _
" foreach ($ids as $id) {" & @CRLF & _
" switch_to_blog( (int)$id );" & @CRLF & _
" self::_install_backend();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Wechsel zurück */" & @CRLF & _
" restore_current_blog();" & @CRLF & _
"" & @CRLF & _
" } else {" & @CRLF & _
" self::_install_backend();" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Plugin-Installation bei neuen MU-Blogs" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 1.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function install_later($id) {" & @CRLF & _
" /* Kein Netzwerk-Plugin */" & @CRLF & _
" if ( ! is_plugin_active_for_network(CACHIFY_BASE) ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Wechsel */" & @CRLF & _
" switch_to_blog( (int)$id );" & @CRLF & _
"" & @CRLF & _
" /* Installieren */" & @CRLF & _
" self::_install_backend();" & @CRLF & _
"" & @CRLF & _
" /* Wechsel zurück */" & @CRLF & _
" restore_current_blog();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Eigentliche Installation der Optionen" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 2.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _install_backend()" & @CRLF & _
" {" & @CRLF & _
" add_option(" & @CRLF & _
" 'cachify'," & @CRLF & _
" array()" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Flush */" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Deinstallation des Plugins pro MU-Blog" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 2.1.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function on_uninstall()" & @CRLF & _
" {" & @CRLF & _
" /* Global */" & @CRLF & _
" global $wpdb;" & @CRLF & _
"" & @CRLF & _
" /* Multisite & Network */" & @CRLF & _
" if ( is_multisite() && !empty($_GET['networkwide']) ) {" & @CRLF & _
" /* Alter Blog */" & @CRLF & _
" $old = $wpdb->blogid;" & @CRLF & _
"" & @CRLF & _
" /* Blog-IDs */" & @CRLF & _
" $ids = self::_get_blog_ids();" & @CRLF & _
"" & @CRLF & _
" /* Loopen */" & @CRLF & _
" foreach ($ids as $id) {" & @CRLF & _
" switch_to_blog($id);" & @CRLF & _
" self::_uninstall_backend();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Wechsel zurück */" & @CRLF & _
" switch_to_blog($old);" & @CRLF & _
" } else {" & @CRLF & _
" self::_uninstall_backend();" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Deinstallation des Plugins bei MU & Network" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 1.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function uninstall_later($id)" & @CRLF & _
" {" & @CRLF & _
" /* Kein Netzwerk-Plugin */" & @CRLF & _
" if ( ! is_plugin_active_for_network(CACHIFY_BASE) ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Wechsel */" & @CRLF & _
" switch_to_blog( (int)$id );" & @CRLF & _
"" & @CRLF & _
" /* Installieren */" & @CRLF & _
" self::_uninstall_backend();" & @CRLF & _
"" & @CRLF & _
" /* Wechsel zurück */" & @CRLF & _
" restore_current_blog();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Eigentliche Deinstallation des Plugins" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 1.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _uninstall_backend()" & @CRLF & _
" {" & @CRLF & _
" /* Option */" & @CRLF & _
" delete_option('cachify');" & @CRLF & _
"" & @CRLF & _
" /* Cache leeren */" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Rückgabe der IDs installierter Blogs" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 1.0" & @CRLF & _
" *" & @CRLF & _
" * @return array Blog-IDs" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _get_blog_ids()" & @CRLF & _
" {" & @CRLF & _
" /* Global */" & @CRLF & _
" global $wpdb;" & @CRLF & _
"" & @CRLF & _
" return $wpdb->get_col("SELECT blog_id FROM `$wpdb->blogs`");" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Eigenschaften des Objekts" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0" & @CRLF & _
" * @change 2.0.7" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _set_default_vars()" & @CRLF & _
" {" & @CRLF & _
" /* Optionen */" & @CRLF & _
" self::$options = self::_get_options();" & @CRLF & _
"" & @CRLF & _
" /* APC */" & @CRLF & _
" if ( self::$options['use_apc'] === self::METHOD_APC && Cachify_APC::is_available() ) {" & @CRLF & _
" self::$method = new Cachify_APC;" & @CRLF & _
"" & @CRLF & _
" /* HDD */" & @CRLF & _
" } else if ( self::$options['use_apc'] === self::METHOD_HDD && Cachify_HDD::is_available() ) {" & @CRLF & _
" self::$method = new Cachify_HDD;" & @CRLF & _
"" & @CRLF & _
" /* MEMCACHED */" & @CRLF & _
" } else if ( self::$options['use_apc'] === self::METHOD_MMC && Cachify_MEMCACHED::is_available() ) {" & @CRLF & _
" self::$method = new Cachify_MEMCACHED;" & @CRLF & _
"" & @CRLF & _
" /* DB */" & @CRLF & _
" } else {" & @CRLF & _
" self::$method = new Cachify_DB;" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Rückgabe der Optionen" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0" & @CRLF & _
" * @change 2.1.2" & @CRLF & _
" *" & @CRLF & _
" * @return array $diff Array mit Werten" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _get_options()" & @CRLF & _
" {" & @CRLF & _
" return wp_parse_args(" & @CRLF & _
" get_option('cachify')," & @CRLF & _
" array(" & @CRLF & _
" 'only_guests' => 1," & @CRLF & _
" 'compress_html' => self::MINIFY_DISABLED," & @CRLF & _
" 'cache_expires' => 12," & @CRLF & _
" 'without_ids' => ''," & @CRLF & _
" 'without_agents' => ''," & @CRLF & _
" 'use_apc' => self::METHOD_DB," & @CRLF & _
" 'reset_on_comment' => 0" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Hinzufügen der Action-Links" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 2.0.2" & @CRLF & _
" *" & @CRLF & _
" * @param string $data Ursprungsinhalt der dynamischen robots.txt" & @CRLF & _
" * @return string $data Modifizierter Inhalt der robots.txt" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function robots_txt($data)" & @CRLF & _
" {" & @CRLF & _
" /* HDD only */" & @CRLF & _
" if ( self::$options['use_apc'] !== self::METHOD_HDD ) {" & @CRLF & _
" return $data;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Pfad */" & @CRLF & _
" $path = parse_url(site_url(), PHP_URL_PATH);" & @CRLF & _
"" & @CRLF & _
" /* Ausgabe */" & @CRLF & _
" $data .= sprintf(" & @CRLF & _
" 'Disallow: %s/wp-content/cache/%s'," & @CRLF & _
" ( empty($path) ? '' : $path )," & @CRLF & _
" "\n"" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" return $data;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Hinzufügen der Action-Links" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 1.0" & @CRLF & _
" *" & @CRLF & _
" * @param array $data Bereits existente Links" & @CRLF & _
" * @return array $data Erweitertes Array mit Links" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function action_links($data)" & @CRLF & _
" {" & @CRLF & _
" /* Rechte? */" & @CRLF & _
" if ( ! current_user_can('manage_options') ) {" & @CRLF & _
" return $data;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" return array_merge(" & @CRLF & _
" $data," & @CRLF & _
" array(" & @CRLF & _
" sprintf(" & @CRLF & _
" '<a href="%s">%s</a>'," & @CRLF & _
" add_query_arg(" & @CRLF & _
" array(" & @CRLF & _
" 'page' => 'cachify'" & @CRLF & _
" )," & @CRLF & _
" admin_url('options-general.php')" & @CRLF & _
" )," & @CRLF & _
" __('Settings')" & @CRLF & _
" )" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Meta-Links des Plugins" & @CRLF & _
" *" & @CRLF & _
" * @since 0.5" & @CRLF & _
" * @change 2.0.5" & @CRLF & _
" *" & @CRLF & _
" * @param array $input Bereits vorhandene Links" & @CRLF & _
" * @param string $page Aktuelle Seite" & @CRLF & _
" * @return array $data Modifizierte Links" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function row_meta($input, $page)" & @CRLF & _
" {" & @CRLF & _
" /* Rechte */" & @CRLF & _
" if ( $page != CACHIFY_BASE ) {" & @CRLF & _
" return $input;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" return array_merge(" & @CRLF & _
" $input," & @CRLF & _
" array(" & @CRLF & _
" '<a href="https://flattr.com/t/1327625" target="_blank">Flattr</a>'," & @CRLF & _
" '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RDDW9FEHGLG6" target="_blank">PayPal</a>'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Hinzufügen eines Admin-Bar-Menüs" & @CRLF & _
" *" & @CRLF & _
" * @since 1.2" & @CRLF & _
" * @change 2.1.4" & @CRLF & _
" *" & @CRLF & _
" * @param object Objekt mit Menü-Eigenschaften" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function add_flush_icon($wp_admin_bar)" & @CRLF & _
" {" & @CRLF & _
" /* Aussteigen */" & @CRLF & _
" if ( ! is_admin_bar_showing() OR ! is_super_admin() ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Hinzufügen */" & @CRLF & _
" $wp_admin_bar->add_menu(" & @CRLF & _
" array(" & @CRLF & _
" 'id' => 'cachify'," & @CRLF & _
" 'href' => add_query_arg('_cachify', 'flush')," & @CRLF & _
" 'parent' => 'top-secondary'," & @CRLF & _
" 'title' => '<span class="ab-icon dashicons dashicons-post-trash" style="top:2px;margin:0"></span>'," & @CRLF & _
" 'meta' => array( 'title' => __('Flush the cachify cache', 'cachify') )" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Anzeige des Spam-Counters auf dem Dashboard" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.0" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function add_dashboard_count()" & @CRLF & _
" {" & @CRLF & _
" /* Cache size */" & @CRLF & _
" $size = self::get_cache_size();" & @CRLF & _
"" & @CRLF & _
" /* Caching method */" & @CRLF & _
" $method = call_user_func(" & @CRLF & _
" array(" & @CRLF & _
" self::$method," & @CRLF & _
" 'stringify‎_method'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Print the link */" & @CRLF & _
" echo sprintf(" & @CRLF & _
" '<li>" & @CRLF & _
" <a href="%s" class="cachify-icon cachify-icon--%s" title="%s: %s">" & @CRLF & _
" %s Cache" & @CRLF & _
" </a>" & @CRLF & _
" </li>'," & @CRLF & _
" add_query_arg(" & @CRLF & _
" array(" & @CRLF & _
" 'page' => 'cachify'" & @CRLF & _
" )," & @CRLF & _
" admin_url('options-general.php')" & @CRLF & _
" )," & @CRLF & _
" esc_attr(strtolower($method))," & @CRLF & _
" __('Caching method', 'cachify')," & @CRLF & _
" esc_attr($method)," & @CRLF & _
" ( empty($size) ? __('Empty', 'cachify') : size_format($size) )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Rückgabe der Cache-Größe" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.6" & @CRLF & _
" * @change 2.0.6" & @CRLF & _
" *" & @CRLF & _
" * @param integer $size Cache-Größe in Bytes" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function get_cache_size()" & @CRLF & _
" {" & @CRLF & _
" if ( ! $size = get_transient('cachify_cache_size') ) {" & @CRLF & _
" /* Auslesen */" & @CRLF & _
" $size = (int) call_user_func(" & @CRLF & _
" array(" & @CRLF & _
" self::$method," & @CRLF & _
" 'get_stats'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Speichern */" & @CRLF & _
" set_transient(" & @CRLF & _
" 'cachify_cache_size'," & @CRLF & _
" $size," & @CRLF & _
" 60 * 15" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" return $size;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Verarbeitung der Plugin-Meta-Aktionen" & @CRLF & _
" *" & @CRLF & _
" * @since 0.5" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" *" & @CRLF & _
" * @param array $data Metadaten der Plugins" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function process_flush_request($data)" & @CRLF & _
" {" & @CRLF & _
" /* Leer? */" & @CRLF & _
" if ( empty($_GET['_cachify']) OR $_GET['_cachify'] !== 'flush' OR ! is_super_admin() ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Global */" & @CRLF & _
" global $wpdb;" & @CRLF & _
"" & @CRLF & _
" /* Multisite & Network */" & @CRLF & _
" if ( is_multisite() && is_plugin_active_for_network(CACHIFY_BASE) ) {" & @CRLF & _
" /* Alter Blog */" & @CRLF & _
" $old = $wpdb->blogid;" & @CRLF & _
"" & @CRLF & _
" /* Blog-IDs */" & @CRLF & _
" $ids = self::_get_blog_ids();" & @CRLF & _
"" & @CRLF & _
" /* Loopen */" & @CRLF & _
" foreach ($ids as $id) {" & @CRLF & _
" switch_to_blog($id);" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Wechsel zurück */" & @CRLF & _
" switch_to_blog($old);" & @CRLF & _
"" & @CRLF & _
" /* Notiz */" & @CRLF & _
" add_action(" & @CRLF & _
" 'network_admin_notices'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'flush_notice'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" } else {" & @CRLF & _
" /* Leeren */" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
"" & @CRLF & _
" /* Notiz */" & @CRLF & _
" add_action(" & @CRLF & _
" 'admin_notices'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'flush_notice'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Hinweis nach erfolgreichem Cache-Leeren" & @CRLF & _
" *" & @CRLF & _
" * @since 1.2" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function flush_notice()" & @CRLF & _
" {" & @CRLF & _
" /* Kein Admin */" & @CRLF & _
" if ( ! is_super_admin() ) {" & @CRLF & _
" return false;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" echo sprintf(" & @CRLF & _
" '<div id="message" class="updated"><p><strong>%s</strong></p></div>'," & @CRLF & _
" __('Cachify cache is flushed.', 'cachify')" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Löschung des Cache beim Kommentar-Editieren" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1.0" & @CRLF & _
" * @change 2.1.2" & @CRLF & _
" *" & @CRLF & _
" * @param integer $id ID des Kommentars" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function edit_comment($id)" & @CRLF & _
" {" & @CRLF & _
" if ( self::$options['reset_on_comment'] ) {" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" } else {" & @CRLF & _
" self::remove_page_cache_by_post_id(" & @CRLF & _
" get_comment($id)->comment_post_ID" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Löschung des Cache beim neuen Kommentar" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1.0" & @CRLF & _
" * @change 2.1.2" & @CRLF & _
" *" & @CRLF & _
" * @param mixed $approved Kommentar-Status" & @CRLF & _
" * @param array $comment Array mit Eigenschaften" & @CRLF & _
" * @return mixed $approved Kommentar-Status" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function pre_comment($approved, $comment)" & @CRLF & _
" {" & @CRLF & _
" /* Approved comment? */" & @CRLF & _
" if ( $approved === 1 ) {" & @CRLF & _
" if ( self::$options['reset_on_comment'] ) {" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" } else {" & @CRLF & _
" self::remove_page_cache_by_post_id( $comment['comment_post_ID'] );" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" return $approved;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Löschung des Cache beim Editieren der Kommentare" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1" & @CRLF & _
" * @change 2.1.2" & @CRLF & _
" *" & @CRLF & _
" * @param string $new_status Neuer Status" & @CRLF & _
" * @param string $old_status Alter Status" & @CRLF & _
" * @param object $comment Array mit Eigenschaften" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function touch_comment($new_status, $old_status, $comment)" & @CRLF & _
" {" & @CRLF & _
" if ( $new_status != $old_status ) {" & @CRLF & _
" if ( self::$options['reset_on_comment'] ) {" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" } else {" & @CRLF & _
" self::remove_page_cache_by_post_id( $comment->comment_post_ID );" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Generierung von Publish-Hooks für Custom Post Types" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.3" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _register_publish_hooks() {" & @CRLF & _
" /* Available post types */" & @CRLF & _
" $post_types = get_post_types(" & @CRLF & _
" array('public' => true)" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Empty data? */" & @CRLF & _
" if ( empty($post_types) ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Loopen */" & @CRLF & _
" foreach ( $post_types as $post_type ) {" & @CRLF & _
" add_action(" & @CRLF & _
" 'publish_' .$post_type," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'publish_post_types'" & @CRLF & _
" )," & @CRLF & _
" 10," & @CRLF & _
" 2" & @CRLF & _
" );" & @CRLF & _
" add_action(" & @CRLF & _
" 'publish_future_' .$post_type," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'flush_total_cache'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Removes the post type cache on updates" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.3" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" *" & @CRLF & _
" * @param integer $post_ID Post ID" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function publish_post_types($post_ID, $post) {" & @CRLF & _
" /* No Post_ID? */" & @CRLF & _
" if ( empty($post_ID) OR empty($post) ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Post status check */" & @CRLF & _
" if ( ! in_array( $post->post_status, array('publish', 'future') ) ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Check for post var AND flush */" & @CRLF & _
" if ( ! isset($_POST['_cachify_remove_post_type_cache_on_update']) ) {" & @CRLF & _
" return self::flush_total_cache();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Security */" & @CRLF & _
" check_admin_referer(CACHIFY_BASE, '_cachify_status_nonce');" & @CRLF & _
"" & @CRLF & _
" /* Save as var */" & @CRLF & _
" $remove_post_type_cache = (int)$_POST['_cachify_remove_post_type_cache_on_update'];" & @CRLF & _
"" & @CRLF & _
" /* Save as user meta */" & @CRLF & _
" update_user_meta(" & @CRLF & _
" get_current_user_id()," & @CRLF & _
" '_cachify_remove_post_type_cache_on_update'," & @CRLF & _
" $remove_post_type_cache" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Remove cache OR flush */" & @CRLF & _
" if ( $remove_post_type_cache ) {" & @CRLF & _
" self::remove_page_cache_by_post_id( $post_ID );" & @CRLF & _
" } else {" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Removes a page id from cache" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.3" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" *" & @CRLF & _
" * @param integer $post_ID Post ID" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function remove_page_cache_by_post_id($post_ID)" & @CRLF & _
" {" & @CRLF & _
" self::remove_page_cache_by_url(" & @CRLF & _
" get_permalink( $post_ID )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Removes a page url from cache" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" *" & @CRLF & _
" * @param string $url Page URL" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function remove_page_cache_by_url($url)" & @CRLF & _
" {" & @CRLF & _
" call_user_func(" & @CRLF & _
" array(" & @CRLF & _
" self::$method," & @CRLF & _
" 'delete_item'" & @CRLF & _
" )," & @CRLF & _
" self::_cache_hash( $url )," & @CRLF & _
" $url" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Rückgabe der Cache-Gültigkeit" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0" & @CRLF & _
" * @change 2.0" & @CRLF & _
" *" & @CRLF & _
" * @return intval Gültigkeit in Sekunden" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _cache_expires()" & @CRLF & _
" {" & @CRLF & _
" return 60 * 60 * self::$options['cache_expires'];" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Rückgabe des Cache-Hash-Wertes" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1" & @CRLF & _
" * @change 2.0" & @CRLF & _
" *" & @CRLF & _
" * @param string $url URL für den Hash-Wert [optional]" & @CRLF & _
" * @return string Cachify-Hash-Wert" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _cache_hash($url = '')" & @CRLF & _
" {" & @CRLF & _
" return md5(" & @CRLF & _
" empty($url) ? ( $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ) : ( parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH) )" & @CRLF & _
" ) . '.cachify';" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Splittung nach Komma" & @CRLF & _
" *" & @CRLF & _
" * @since 0.9.1" & @CRLF & _
" * @change 1.0" & @CRLF & _
" *" & @CRLF & _
" * @param string $input Zu splittende Zeichenkette" & @CRLF & _
" * @return array Konvertierter Array" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _preg_split($input)" & @CRLF & _
" {" & @CRLF & _
" return (array)preg_split('/,/', $input, -1, PREG_SPLIT_NO_EMPTY);" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Prüfung auf Index" & @CRLF & _
" *" & @CRLF & _
" * @since 0.6" & @CRLF & _
" * @change 1.0" & @CRLF & _
" *" & @CRLF & _
" * @return boolean TRUE bei Index" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _is_index()" & @CRLF & _
" {" & @CRLF & _
" return basename($_SERVER['SCRIPT_NAME']) != 'index.php';" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Prüfung auf Mobile Devices" & @CRLF & _
" *" & @CRLF & _
" * @since 0.9.1" & @CRLF & _
" * @change 2.0.7" & @CRLF & _
" *" & @CRLF & _
" * @return boolean TRUE bei Mobile" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _is_mobile()" & @CRLF & _
" {" & @CRLF & _
" return ( strpos(TEMPLATEPATH, 'wptouch') or strpos(TEMPLATEPATH, 'carrington') or strpos(TEMPLATEPATH, 'jetpack') or strpos(TEMPLATEPATH, 'handheld') );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Prüfung auf eingeloggte und kommentierte Nutzer" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.0" & @CRLF & _
" * @change 2.0.5" & @CRLF & _
" *" & @CRLF & _
" * @return boolean $diff TRUE bei "vermerkten" Nutzern" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _is_logged_in()" & @CRLF & _
" {" & @CRLF & _
" /* Eingeloggt */" & @CRLF & _
" if ( is_user_logged_in() ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Cookie? */" & @CRLF & _
" if ( empty($_COOKIE) ) {" & @CRLF & _
" return false;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Loopen */" & @CRLF & _
" foreach ( $_COOKIE as $k => $v) {" & @CRLF & _
" if ( preg_match('/^(wp-postpass|wordpress_logged_in|comment_author)_/', $k) ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Definition der Ausnahmen für den Cache" & @CRLF & _
" *" & @CRLF & _
" * @since 0.2" & @CRLF & _
" * @change 2.1.1" & @CRLF & _
" *" & @CRLF & _
" * @return boolean TRUE bei Ausnahmen" & @CRLF & _
" *" & @CRLF & _
" * @hook boolean cachify_skip_cache" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _skip_cache()" & @CRLF & _
" {" & @CRLF & _
" /* No cache hook */" & @CRLF & _
" if ( apply_filters('cachify_skip_cache', false) ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Conditional Tags */" & @CRLF & _
" if ( self::_is_index() or is_search() or is_404() or is_feed() or is_trackback() or is_robots() or is_preview() or post_password_required() ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Plugin options */" & @CRLF & _
" $options = self::$options;" & @CRLF & _
"" & @CRLF & _
" /* Request vars */" & @CRLF & _
" if ( !empty($_POST) OR (!empty($_GET) && get_option('permalink_structure')) ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Logged in */" & @CRLF & _
" if ( $options['only_guests'] && self::_is_logged_in() ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Mobile request */" & @CRLF & _
" if ( self::_is_mobile() ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Post IDs */" & @CRLF & _
" if ( $options['without_ids'] && is_singular() ) {" & @CRLF & _
" if ( in_array( $GLOBALS['wp_query']->get_queried_object_id(), self::_preg_split($options['without_ids']) ) ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* User Agents */" & @CRLF & _
" if ( $options['without_agents'] && isset($_SERVER['HTTP_USER_AGENT']) ) {" & @CRLF & _
" if ( array_filter( self::_preg_split($options['without_agents']), create_function('$a', 'return strpos($_SERVER["HTTP_USER_AGENT"], $a);') ) ) {" & @CRLF & _
" return true;" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" return false;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Minimierung des HTML-Codes" & @CRLF & _
" *" & @CRLF & _
" * @since 0.9.2" & @CRLF & _
" * @change 2.0.9" & @CRLF & _
" *" & @CRLF & _
" * @param string $data Zu minimierender Datensatz" & @CRLF & _
" * @return string $data Minimierter Datensatz" & @CRLF & _
" *" & @CRLF & _
" * @hook array cachify_minify_ignore_tags" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _minify_cache($data) {" & @CRLF & _
" /* Disabled? */" & @CRLF & _
" if ( ! self::$options['compress_html'] ) {" & @CRLF & _
" return($data);" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Ignore this html tags */" & @CRLF & _
" $ignore_tags = (array)apply_filters(" & @CRLF & _
" 'cachify_minify_ignore_tags'," & @CRLF & _
" array(" & @CRLF & _
" 'textarea'," & @CRLF & _
" 'pre'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Add the script tag */" & @CRLF & _
" if ( self::$options['compress_html'] !== self::MINIFY_HTML_JS ) {" & @CRLF & _
" $ignore_tags[] = 'script';" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Empty blacklist? |Â TODO: Make better */" & @CRLF & _
" if ( ! $ignore_tags ) {" & @CRLF & _
" return($data);" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Convert to string */" & @CRLF & _
" $ignore_regex = implode('|', $ignore_tags);" & @CRLF & _
"" & @CRLF & _
" /* Minify */" & @CRLF & _
" $cleaned = preg_replace(" & @CRLF & _
" array(" & @CRLF & _
" '/<!--[^\[><](.*?)-->/s'," & @CRLF & _
" '#(?ix)(?>[^\S ]\s*|\s{2,})(?=(?:(?:[^<]++|<(?!/?(?:' .$ignore_regex. ')\b))*+)(?:<(?>' .$ignore_regex. ')\b|\z))#'" & @CRLF & _
" )," & @CRLF & _
" array(" & @CRLF & _
" ''," & @CRLF & _
" ' '" & @CRLF & _
" )," & @CRLF & _
" (string) $data" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Fault */" & @CRLF & _
" if ( strlen($cleaned) <= 1 ) {" & @CRLF & _
" return($data);" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" return $cleaned;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Zurücksetzen des kompletten Cache" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1" & @CRLF & _
" * @change 2.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function flush_total_cache()" & @CRLF & _
" {" & @CRLF & _
" /* DB */" & @CRLF & _
" Cachify_DB::clear_cache();" & @CRLF & _
"" & @CRLF & _
" /* APC */" & @CRLF & _
" Cachify_APC::clear_cache();" & @CRLF & _
"" & @CRLF & _
" /* HDD */" & @CRLF & _
" Cachify_HDD::clear_cache();" & @CRLF & _
"" & @CRLF & _
" /* MEMCACHED */" & @CRLF & _
" Cachify_MEMCACHED::clear_cache();" & @CRLF & _
"" & @CRLF & _
" /* Transient */" & @CRLF & _
" delete_transient('cachify_cache_size');" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Zuweisung des Cache" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1" & @CRLF & _
" * @change 2.0" & @CRLF & _
" *" & @CRLF & _
" * @param string $data Inhalt der Seite" & @CRLF & _
" * @return string $data Inhalt der Seite" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function set_cache($data)" & @CRLF & _
" {" & @CRLF & _
" /* Leer? */" & @CRLF & _
" if ( empty($data) ) {" & @CRLF & _
" return '';" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Speicherung */" & @CRLF & _
" call_user_func(" & @CRLF & _
" array(" & @CRLF & _
" self::$method," & @CRLF & _
" 'store_item'" & @CRLF & _
" )," & @CRLF & _
" self::_cache_hash()," & @CRLF & _
" self::_minify_cache($data)," & @CRLF & _
" self::_cache_expires()" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" return $data;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Verwaltung des Cache" & @CRLF & _
" *" & @CRLF & _
" * @since 0.1" & @CRLF & _
" * @change 2.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function manage_cache()" & @CRLF & _
" {" & @CRLF & _
" /* Kein Caching? */" & @CRLF & _
" if ( self::_skip_cache() ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Daten im Cache */" & @CRLF & _
" $cache = call_user_func(" & @CRLF & _
" array(" & @CRLF & _
" self::$method," & @CRLF & _
" 'get_item'" & @CRLF & _
" )," & @CRLF & _
" self::_cache_hash()" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Kein Cache? */" & @CRLF & _
" if ( empty($cache) ) {" & @CRLF & _
" ob_start('Cachify::set_cache');" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Cache verarbeiten */" & @CRLF & _
" call_user_func(" & @CRLF & _
" array(" & @CRLF & _
" self::$method," & @CRLF & _
" 'print_cache'" & @CRLF & _
" )," & @CRLF & _
" $cache" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Einbindung von CSS" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function add_admin_resources($hook)" & @CRLF & _
" {" & @CRLF & _
" /* Hooks check */" & @CRLF & _
" if ( $hook !== 'index.php' AND $hook !== 'post.php' ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Plugin data */" & @CRLF & _
" $plugin_data = get_plugin_data(CACHIFY_FILE);" & @CRLF & _
"" & @CRLF & _
" /* Register css */" & @CRLF & _
" switch($hook) {" & @CRLF & _
" case 'index.php':" & @CRLF & _
" wp_enqueue_style(" & @CRLF & _
" 'cachify-dashboard'," & @CRLF & _
" plugins_url('css/dashboard.min.css', CACHIFY_FILE)," & @CRLF & _
" array()," & @CRLF & _
" $plugin_data['Version']" & @CRLF & _
" );" & @CRLF & _
" break;" & @CRLF & _
"" & @CRLF & _
" case 'post.php':" & @CRLF & _
" wp_enqueue_script(" & @CRLF & _
" 'cachify-post'," & @CRLF & _
" plugins_url('js/post.min.js', CACHIFY_FILE)," & @CRLF & _
" array('jquery')," & @CRLF & _
" $plugin_data['Version']," & @CRLF & _
" true" & @CRLF & _
" );" & @CRLF & _
" break;" & @CRLF & _
"" & @CRLF & _
" default:" & @CRLF & _
" break;" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Display a combo select on post publish box" & @CRLF & _
" *" & @CRLF & _
" * @since 2.1.3" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function print_flush_dropdown()" & @CRLF & _
" {" & @CRLF & _
" /* Post page only */" & @CRLF & _
" if ( empty($GLOBALS['pagenow']) OR $GLOBALS['pagenow'] !== 'post.php' ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Published posts only */" & @CRLF & _
" if ( empty($GLOBALS['post']) OR ! is_object($GLOBALS['post']) OR $GLOBALS['post']->post_status !== 'publish' ) {" & @CRLF & _
" return;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Security */" & @CRLF & _
" wp_nonce_field(CACHIFY_BASE, '_cachify_status_nonce');" & @CRLF & _
"" & @CRLF & _
" /* Already saved? */" & @CRLF & _
" $current_action = (int)get_user_meta(" & @CRLF & _
" get_current_user_id()," & @CRLF & _
" '_cachify_remove_post_type_cache_on_update'," & @CRLF & _
" true" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* Init vars */" & @CRLF & _
" $dropdown_options = '';" & @CRLF & _
" $available_options = array(__('Total cache', 'cachify'), __('Page cache', 'cachify'));" & @CRLF & _
"" & @CRLF & _
" /* Select options */" & @CRLF & _
" foreach( $available_options as $key => $value ) {" & @CRLF & _
" $dropdown_options .= sprintf(" & @CRLF & _
" '<option value="%1$d" %3$s>%2$s</option>'," & @CRLF & _
" $key," & @CRLF & _
" $value," & @CRLF & _
" selected($key, $current_action, false)" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Output */" & @CRLF & _
" echo sprintf(" & @CRLF & _
" '<div class="misc-pub-section" style="border-top:1px solid #eee">" & @CRLF & _
" <label for="cachify_status">" & @CRLF & _
" %1$s: <span id="output-cachify-status">%2$s</span>" & @CRLF & _
" </label>" & @CRLF & _
" <a href="#" class="edit-cachify-status hide-if-no-js">%3$s</a>" & @CRLF & _
"" & @CRLF & _
" <div class="hide-if-js">" & @CRLF & _
" <select name="_cachify_remove_post_type_cache_on_update" id="cachify_status">" & @CRLF & _
" %4$s" & @CRLF & _
" </select>" & @CRLF & _
"" & @CRLF & _
" <a href="#" class="save-cachify-status hide-if-no-js button">%5$s</a>" & @CRLF & _
" <a href="#" class="cancel-cachify-status hide-if-no-js button-cancel">%6$s</a>" & @CRLF & _
" </div>" & @CRLF & _
" </div>'," & @CRLF & _
" __('Remove', 'cachify')," & @CRLF & _
" $available_options[$current_action]," & @CRLF & _
" __('Edit')," & @CRLF & _
" $dropdown_options," & @CRLF & _
" __('OK')," & @CRLF & _
" __('Cancel')" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Einfügen der Optionsseite" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 2.0.2" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function add_page()" & @CRLF & _
" {" & @CRLF & _
" $page = add_options_page(" & @CRLF & _
" 'Cachify'," & @CRLF & _
" 'Cachify'," & @CRLF & _
" 'manage_options'," & @CRLF & _
" 'cachify'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'options_page'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Verfügbare Cache-Methoden" & @CRLF & _
" *" & @CRLF & _
" * @since 2.0.0" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" *" & @CRLF & _
" * @param array $methods Array mit verfügbaren Arten" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _method_select()" & @CRLF & _
" {" & @CRLF & _
" /* Defaults */" & @CRLF & _
" $methods = array(" & @CRLF & _
" self::METHOD_DB => __('Database', 'cachify')," & @CRLF & _
" self::METHOD_APC => 'APC'," & @CRLF & _
" self::METHOD_HDD => __('Hard disk', 'cachify')," & @CRLF & _
" self::METHOD_MMC => 'Memcached'" & @CRLF & _
" );" & @CRLF & _
"" & @CRLF & _
" /* APC */" & @CRLF & _
" if ( ! Cachify_APC::is_available() ) {" & @CRLF & _
" unset($methods[1]);" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Memcached? */" & @CRLF & _
" if ( ! Cachify_MEMCACHED::is_available() ) {" & @CRLF & _
" unset($methods[3]);" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* HDD */" & @CRLF & _
" if ( ! Cachify_HDD::is_available() ) {" & @CRLF & _
" unset($methods[2]);" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" return $methods;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Minify cache dropdown" & @CRLF & _
" *" & @CRLF & _
" * @since 2.1.3" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" *" & @CRLF & _
" * @return array Key => value array" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" private static function _minify_select()" & @CRLF & _
" {" & @CRLF & _
" return array(" & @CRLF & _
" self::MINIFY_DISABLED => __('No minify', 'cachify')," & @CRLF & _
" self::MINIFY_HTML_ONLY => 'HTML'," & @CRLF & _
" self::MINIFY_HTML_JS => 'HTML + Inline JavaScript'" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Register the language file" & @CRLF & _
" *" & @CRLF & _
" * @since 2.1.3" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function register_textdomain()" & @CRLF & _
" {" & @CRLF & _
" load_plugin_textdomain(" & @CRLF & _
" 'cachify'," & @CRLF & _
" false," & @CRLF & _
" 'cachify/lang'" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Registrierung der Settings" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 1.0" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function register_settings()" & @CRLF & _
" {" & @CRLF & _
" register_setting(" & @CRLF & _
" 'cachify'," & @CRLF & _
" 'cachify'," & @CRLF & _
" array(" & @CRLF & _
" __CLASS__," & @CRLF & _
" 'validate_options'" & @CRLF & _
" )" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Valisierung der Optionsseite" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0.0" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" *" & @CRLF & _
" * @param array $data Array mit Formularwerten" & @CRLF & _
" * @return array Array mit geprüften Werten" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function validate_options($data)" & @CRLF & _
" {" & @CRLF & _
" /* Cache leeren */" & @CRLF & _
" self::flush_total_cache();" & @CRLF & _
"" & @CRLF & _
" /* Hinweis */" & @CRLF & _
" if ( self::$options['use_apc'] != $data['use_apc'] && $data['use_apc'] >= self::METHOD_APC ) {" & @CRLF & _
" add_settings_error(" & @CRLF & _
" 'cachify_method_tip'," & @CRLF & _
" 'cachify_method_tip'," & @CRLF & _
" sprintf(" & @CRLF & _
" '%s [<a href="http://playground.ebiene.de/cachify-wordpress-cache/" target="_blank">?</a>]'," & @CRLF & _
" __('The server configuration file (e.g. .htaccess) needs to be adjusted', 'cachify')" & @CRLF & _
" )," & @CRLF & _
" 'updated'" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" /* Rückgabe */" & @CRLF & _
" return array(" & @CRLF & _
" 'only_guests' => (int)(!empty($data['only_guests']))," & @CRLF & _
" 'compress_html' => (int)$data['compress_html']," & @CRLF & _
" 'cache_expires' => (int)(@$data['cache_expires'])," & @CRLF & _
" 'without_ids' => (string)sanitize_text_field(@$data['without_ids'])," & @CRLF & _
" 'without_agents' => (string)sanitize_text_field(@$data['without_agents'])," & @CRLF & _
" 'use_apc' => (int)$data['use_apc']," & @CRLF & _
" 'reset_on_comment' => (int)(!empty($data['reset_on_comment']))" & @CRLF & _
" );" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
" /**" & @CRLF & _
" * Darstellung der Optionsseite" & @CRLF & _
" *" & @CRLF & _
" * @since 1.0" & @CRLF & _
" * @change 2.1.3" & @CRLF & _
" */" & @CRLF & _
"" & @CRLF & _
" public static function options_page()" & @CRLF & _
" { ?>" & @CRLF & _
" <style>" & @CRLF & _
" #cachify_settings input[type="text"]," & @CRLF & _
" #cachify_settings input[type="number"] {" & @CRLF & _
" height: 30px;" & @CRLF & _
" }" & @CRLF & _
" </style>" & @CRLF & _
"" & @CRLF & _
" <div class="wrap" id="cachify_settings">" & @CRLF & _
" <h2>" & @CRLF & _
" Cachify" & @CRLF & _
" </h2>" & @CRLF & _
"" & @CRLF & _
" <form method="post" action="options.php">" & @CRLF & _
" <?php settings_fields('cachify') ?>" & @CRLF & _
"" & @CRLF & _
" <?php $options = self::_get_options() ?>" & @CRLF & _
"" & @CRLF & _
" <table class="form-table">" & @CRLF & _
" <tr valign="top">" & @CRLF & _
" <th scope="row">" & @CRLF & _
" <?php _e('Cache method', 'cachify') ?>" & @CRLF & _
" </th>" & @CRLF & _
" <td>" & @CRLF & _
" <label for="cachify_cache_method">" & @CRLF & _
" <select name="cachify[use_apc]" id="cachify_cache_method">" & @CRLF & _
" <?php foreach( self::_method_select() as $k => $v ) { ?>" & @CRLF & _
" <option value="<?php echo esc_attr($k) ?>" <?php selected($options['use_apc'], $k); ?>><?php echo esc_html($v) ?></option>" & @CRLF & _
" <?php } ?>" & @CRLF & _
" </select>" & @CRLF & _
" </label>" & @CRLF & _
" </td>" & @CRLF & _
" </tr>" & @CRLF & _
"" & @CRLF & _
" <tr valign="top">" & @CRLF & _
" <th scope="row">" & @CRLF & _
" <?php _e('Cache validity', 'cachify') ?>" & @CRLF & _
" </th>" & @CRLF & _
" <td>" & @CRLF & _
" <label for="cachify_cache_expires">" & @CRLF & _
" <input type="number" min="0" step="1" name="cachify[cache_expires]" id="cachify_cache_expires" value="<?php echo $options['cache_expires'] ?>" class="small-text" />" & @CRLF & _
" <?php _e('Hours', 'cachify') ?>" & @CRLF & _
" </label>" & @CRLF & _
" </td>" & @CRLF & _
" </tr>" & @CRLF & _
"" & @CRLF & _
" <tr valign="top">" & @CRLF & _
" <th scope="row">" & @CRLF & _
" <?php _e('Cache generation', 'cachify') ?>" & @CRLF & _
" </th>" & @CRLF & _
" <td>" & @CRLF & _
" <fieldset>" & @CRLF & _
" <label for="cachify_only_guests">" & @CRLF & _
" <input type="checkbox" name="cachify[only_guests]" id="cachify_only_guests" value="1" <?php checked('1', $options['only_guests']); ?> />" & @CRLF & _
" <?php _e('No cache generation by logged in users', 'cachify') ?>" & @CRLF & _
" </label>" & @CRLF & _
"" & @CRLF & _
" <br />" & @CRLF & _
"" & @CRLF & _
" <label for="cachify_reset_on_comment">" & @CRLF & _
" <input type="checkbox" name="cachify[reset_on_comment]" id="cachify_reset_on_comment" value="1" <?php checked('1', $options['reset_on_comment']); ?> />" & @CRLF & _
" <?php _e('Flush the cache at new comments', 'cachify') ?>" & @CRLF & _
" </label>" & @CRLF & _
" </fieldset>" & @CRLF & _
" </td>" & @CRLF & _
" </tr>" & @CRLF & _
"" & @CRLF & _
" <tr valign="top">" & @CRLF & _
" <th scope="row">" & @CRLF & _
" <?php _e('Cache exceptions', 'cachify') ?>" & @CRLF & _
" </th>" & @CRLF & _
" <td>" & @CRLF & _
" <fieldset>" & @CRLF & _
" <label for="cachify_without_ids">" & @CRLF & _
" <input type="text" name="cachify[without_ids]" id="cachify_without_ids" value="<?php echo $options['without_ids'] ?>" />" & @CRLF & _
" Post/Pages-IDs" & @CRLF & _
" </label>" & @CRLF & _
"" & @CRLF & _
" <br />" & @CRLF & _
"" & @CRLF & _
" <label for="cachify_without_agents">" & @CRLF & _
" <input type="text" name="cachify[without_agents]" id="cachify_without_agents" value="<?php echo $options['without_agents'] ?>" />" & @CRLF & _
" Browser User-Agents" & @CRLF & _
" </label>" & @CRLF & _
" </fieldset>" & @CRLF & _
" </td>" & @CRLF & _
" </tr>" & @CRLF & _
"" & @CRLF & _
" <tr valign="top">" & @CRLF & _
" <th scope="row">" & @CRLF & _
" <?php _e('Cache minify', 'cachify') ?>" & @CRLF & _
" </th>" & @CRLF & _
" <td>" & @CRLF & _
" <label for="cachify_compress_html">" & @CRLF & _
" <select name="cachify[compress_html]" id="cachify_compress_html">" & @CRLF & _
" <?php foreach( self::_minify_select() as $k => $v ) { ?>" & @CRLF & _
" <option value="<?php echo esc_attr($k) ?>" <?php selected($options['compress_html'], $k); ?>>" & @CRLF & _
" <?php echo esc_html($v) ?>" & @CRLF & _
" </option>" & @CRLF & _
" <?php } ?>" & @CRLF & _
" </select>" & @CRLF & _
" </label>" & @CRLF & _
" </td>" & @CRLF & _
" </tr>" & @CRLF & _
"" & @CRLF & _
" <tr valign="top">" & @CRLF & _
" <th scope="row">" & @CRLF & _
" <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />" & @CRLF & _
" </th>" & @CRLF & _
" <td>" & @CRLF & _
" <a href="http://playground.ebiene.de/cachify-wordpress-cache/" target="_blank"><?php _e('Manual', 'cachify') ?></a> • <a href="http://playground.ebiene.de/cachify-wordpress-cache/#book" target="_blank"><?php _e('Books', 'cachify') ?></a> • <a href="https://flattr.com/t/1327625" target="_blank">Flattr</a> • <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RDDW9FEHGLG6" target="_blank">PayPal</a>" & @CRLF & _
" </td>" & @CRLF & _
" </tr>" & @CRLF & _
" </table>" & @CRLF & _
" </form>" & @CRLF & _
" </div><?php" & @CRLF & _
" }" & @CRLF & _
"}"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm