default_settings(); update_option( 'powered_cache_settings', $settings ); } return apply_filters( 'powered_cache_get_settings', $settings ); } /** * Get single settings item of plugin * * @since 1.0 * @param string $key * @param bool|false $default * * @return mixed|void */ function powered_cache_get_option( $key = '', $default = false ) { global $powered_cache_options; $value = ! empty( $powered_cache_options[ $key ] ) ? $powered_cache_options[ $key ] : $default; $value = apply_filters( 'powered_cache_get_option', $value, $key, $default ); return apply_filters( 'powered_cache_get_option_' . $key, $value, $key, $default ); } /** * Flush object cache and clean cache directory * * @since 1.0 */ function powered_cache_flush() { if ( function_exists( 'wp_cache_flush' ) ) { wp_cache_flush(); } powered_cache_clean_page_cache_dir(); do_action( 'powered_cache_flushed' ); } /** * Save powered cache settings, update global settings variable and write to file * * @since 1.0 * * @param $old_settings array * @param $new_settings array * * @return bool depends on writing settings to file */ function powered_cache_save_settings( $old_settings, $new_settings ) { global $powered_cache_options; $settings = array_merge( $old_settings, $new_settings ); $powered_cache_options = $settings; $changed_settings = array_diff_assoc( array_map( 'serialize', $settings ), array_map( 'serialize', $old_settings ) ); update_option( 'powered_cache_settings', $settings ); if ( isset( $changed_settings['object_cache'] ) && function_exists( 'wp_cache_flush' ) ) { wp_cache_flush(); } if ( isset( $changed_settings['enable_page_caching'] ) ) { powered_cache_clean_site_cache_dir(); } Powered_Cache_Config::factory()->setup_object_cache( $settings['object_cache'] ); Powered_Cache_Config::factory()->setup_page_cache( $settings['enable_page_caching'] ); do_action( 'powered_cache_settings_saved', $settings ); unset( $settings['extension_settings'] ); return Powered_Cache_Config::factory()->save_to_file( $settings ); } /** * Prepare regex string for browser detetch * * @since 1.0 * @return mixed|void */ function powered_cache_mobile_browsers_regex(){ $browsers = powered_cache_mobile_browsers(); $regex_str = addcslashes( implode( '|', explode( ',', $browsers ) ),' '); return apply_filters( 'powered_cache_mobile_browsers_regex', $regex_str, $browsers ); } /** * Prepare regex string for mobile prefix * * @since 1.0 * @return mixed|void */ function powered_cache_mobile_prefixes_regex(){ $prefixes = powered_cache_mobile_prefixes(); $regex_str = addcslashes( implode( '|', explode( ',', $prefixes ) ),' '); return apply_filters( 'powered_cache_mobile_prefixes_regex', $regex_str, $prefixes ); } /** * Supported mobile browsers * * @since 1.0 * @return mixed|void */ function powered_cache_mobile_browsers() { $mobile_browsers = '2.0 MMP, 240x320, 400X240, AvantGo, BlackBerry, Blazer, Cellphone, Danger, DoCoMo, Elaine/3.0, EudoraWeb, Googlebot-Mobile, hiptop, IEMobile, KYOCERA/WX310K, LG/U990, MIDP-2., MMEF20, MOT-V, NetFront, Newt, Nintendo Wii, Nitro, Nokia, Opera Mini, Palm, PlayStation Portable, portalmmm, Proxinet, ProxiNet, SHARP-TQ-GX10, SHG-i900, Small, SonyEricsson, Symbian OS, SymbianOS, TS21i-10, UP.Browser, UP.Link, webOS, Windows CE, WinWAP, YahooSeeker/M1A1-R2D2, iPhone, iPod, Android, BlackBerry9530, LG-TU915 Obigo, LGE VX, webOS, Nokia5800'; return apply_filters( 'powered_cache_mobile_browsers', $mobile_browsers ); } /** * Supported mobile prefixes * * @since 1.0 * @return mixed|void */ function powered_cache_mobile_prefixes() { $mobile_prefixes = 'w3c , w3c-, acs-, alav, alca, amoi, audi, avan, benq, bird, blac, blaz, brew, cell, cldc, cmd-, dang, doco, eric, hipt, htc_, inno, ipaq, ipod, jigs, kddi, keji, leno, lg-c, lg-d, lg-g, lge-, lg/u, maui, maxo, midp, mits, mmef, mobi, mot-, moto, mwbp, nec-, newt, noki, palm, pana, pant, phil, play, port, prox, qwap, sage, sams, sany, sch-, sec-, send, seri, sgh-, shar, sie-, siem, smal, smar, sony, sph-, symb, t-mo, teli, tim-, tosh, tsm-, upg1, upsi, vk-v, voda, wap-, wapa, wapi, wapp, wapr, webc, winw, winw, xda , xda-'; return apply_filters( 'powered_cache_mobile_prefixes', $mobile_prefixes ); } /** * Prepare cdn addresses with hostname + zone * * @since 1.0 * @return mixed|void */ function powered_cache_cdn_addresses() { global $powered_cache_options; $hostnames = $powered_cache_options['cdn_hostname']; $zones = $powered_cache_options['cdn_zone']; $cdn_addresses = array(); foreach ( $hostnames as $host_key => $host ) { if ( ! empty( $host ) ) { $cdn_addresses[ $zones[ $host_key ] ][] = $host; } } return apply_filters( 'powered_cache_cdn_addresses', $cdn_addresses ); } /** * Check premium version running * This is just simple helper function, our premium checks are more strict than your thoughts :) * * @since 1.0 * @return bool */ function powered_cache_is_premium() { if ( defined( 'POWERED_CACHE_PREMIUM' ) && true === POWERED_CACHE_PREMIUM ) { return true; } return false; } function powered_cache_maybe_require_premium_html() { if ( ! powered_cache_is_premium() ) {?>