Uname: Linux p3plzcpnl499967.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
Software: Apache
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 208.109.40.231
Your Ip: 216.73.216.26
User: nayff91c5tsx (10005085) | Group: nayff91c5tsx (10005085)
Safe Mode: OFF
Disable Function:
NONE

name : Generic_Faq.php
<?php
/**
 * File: Generic_Faq.php
 *
 * @package W3TC
 */

namespace W3TC;

/**
 * Class: Generic_Faq
 */
class Generic_Faq {
	/**
	 * Return FAQ section URLs.
	 *
	 * @return array
	 */
	public static function sections(): array {
		return array(
			'General'            => 'https://api.w3-edge.com/v1/faq/general',
			'Usage'              => 'https://api.w3-edge.com/v1/faq/usage',
			'Compatibility'      => 'https://api.w3-edge.com/v1/faq/compatibility',
			'Minification'       => 'https://api.w3-edge.com/v1/faq/minification',
			'CDN'                => 'https://api.w3-edge.com/v1/faq/cdn',
			'Browser Cache'      => 'https://api.w3-edge.com/v1/faq/browser-cache',
			'Errors / Debugging' => 'https://api.w3-edge.com/v1/faq/errors-debugging',
			'Requirements'       => 'https://api.w3-edge.com/v1/faq/requirements',
			'Developers'         => 'https://api.w3-edge.com/v1/faq/developers',
			'Extensions'         => 'https://api.w3-edge.com/v1/faq/extensions',
			'Installation'       => 'https://api.w3-edge.com/v1/faq/installation',
		);
	}

	/**
	 * Returns list of questions for section.
	 *
	 * @static
	 *
	 * @see self::sections()
	 *
	 * @param string $section Section.
	 * @return array|null
	 */
	public static function parse( string $section ): ?array {
		$sections = self::sections();

		if ( ! isset( $sections[ $section ] ) ) {
			return null;
		}

		$url      = $sections[ $section ];
		$response = wp_remote_get( $url );

		if ( is_wp_error( $response ) ) {
			return null;
		}

		$questions = array();
		$regexes   = array(
			'~<h1[^>]*>(.*?)</h1>.*?<a[^>]*href="(#[^"]+)"~mi',
			'~<li>.*?<a[^>]*href="/BoldGrid/w3-total-cache/wiki/FAQ([^"]+)"[^>]*>(.*?)</a>.*?</li>~mi',
		);

		foreach ( $regexes as $i => $regex ) {
			preg_match_all( $regex, $response['body'], $m );

			if ( is_array( $m ) && count( $m ) > 1 ) {
				$c = count( $m[1] );

				for ( $n = 0; $n < $c; $n++ ) {
					if ( 0 === $i ) {
						// Index 0 has the question first then the URL fragment.
						$questions[] = array(
							'q' => $m[1][ $n ],
							'a' => $url . $m[2][ $n ],
						);
					} else {
						// Index 1 has the URL fragment first then the name.  Just use the original URL.
						$questions[] = array(
							'q' => $m[2][ $n ],
							'a' => $url,
						);
					}
				}
			}
		}

		return $questions;
	}
}
© 2026 GrazzMean