config = $config; } public function prepare_output( $content, $app_type ) { $content = preg_replace_callback( '/(]*>)(.+)(config->theme_url ) { $head_content .= ''; } return $matches[1] . $head_content . $matches[3]; }, $content, 1 ); $content = preg_replace_callback( '/]*>/i', function( $matches ) { return str_replace( array( '../externals/', ), array( 'adminer/externals/', ), $matches[0] ); }, $content ); $content = preg_replace_callback( '/]*>/i', function( $matches ) { return str_replace( array( '../adminer/static/', ), array( 'adminer/adminer/static/', ), $matches[0] ); }, $content ); $content = preg_replace_callback( '/]*?(href[\s]?=[\s\"\']*(.*?)[\"\'])*.*?>([^<]+|.*?)?<\/a>/i', function( $matches ) { $url = $matches[2]; if ( false !== strpos( $url, '__wp_nonce' ) ) { return $matches[0]; } $insertPos = strpos( $url, '?' ); $insertAmp = strpos( $url, '&' ) !== false; if ( false === $insertPos ) { $insertPos = strpos( $url, '#' ); if ( false === $insertPos ) { $url .= '?'; $insertPos = strlen( $url ); } } else { $insertAmp = true; $insertPos += 1; } $url = substr( $url, 0, $insertPos) . '__wp_nonce=' . $this->config->nonce . ( $insertAmp ? '&' : '' ) . substr( $url, $insertPos ); return str_replace( $matches[1], 'href="' . $url . '"', $matches[0] ); }, $content ); return $content; } static public function is_ajax_request() { return ( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && 'XMLHttpRequest' == $_SERVER['HTTP_X_REQUESTED_WITH'] ); } static public function is_resource_request() { $is_post = ! empty( $_POST ); return Request::exists( 'file' ) || ( $is_post && isset( $_GET['dump'] ) ) || ( $is_post && isset( $_GET['select'] ) && isset( $_POST['export'] ) ) || ( $is_post && isset( $_GET['sql'] ) && isset( $_POST['export'] ) ); } static public function get_terminated_message( $login_url ) { $login_url = self::sanitize_url( $login_url ); $message = null; if ( $login_url ) { $message = sprintf( 'Your session has been terminated. Run the application again from WordPress.', $login_url ); } else { $message = 'Your session has been terminated. Run the application again from WordPress.'; } return $message; } static public function sanitize_url( $url ) { $root_url = Request::root_url(); if ( empty( $root_url ) || empty( $url ) || strpos( $url, $root_url ) !== 0 ) return ''; return $url; } static protected function ensure_session_start() { if ( ! session_id() ) @session_start(); } static public function set_shared_param( $key, $val ) { self::ensure_session_start(); if ( ! isset( $_SESSION[ARIADMINER_BRIDGE_SESSION_KEY] ) || ! is_array( $_SESSION[ARIADMINER_BRIDGE_SESSION_KEY] ) ) $_SESSION[ARIADMINER_BRIDGE_SESSION_KEY] = array(); $_SESSION[ARIADMINER_BRIDGE_SESSION_KEY][$key] = $val; } static public function get_shared_param( $key, $default_val = null ) { self::ensure_session_start(); return isset( $_SESSION[ARIADMINER_BRIDGE_SESSION_KEY][$key] ) ? $_SESSION[ARIADMINER_BRIDGE_SESSION_KEY][$key] : $default_val; } }