default = array( 'activate' => false, 'cache_type' => 'file', 'frontend' => 'false', 'wp-login' => 'cache', 'admin' => 'cache', 'file_cache_dir' => '', 'error_mes' => false, ); $this->setting = get_option( 'psta_settings', array() ); if ( ! $this->setting ) { $this->setting = array(); } $this->setting = array_merge( $this->default, $this->setting ); if ($this->setting['activate'] == true) { $this->check(); } } private function check() { $s =& $this->setting; if ( $s['cache_type'] == 'apc' ) { if ( ! function_exists( 'apc_store' ) ) { $this->error_mes( 'apc is not enable.' ); return false; } } if ( $s['cache_type'] == 'file' ) { if ( $s['file_cache_dir'] == '' ) { $dir = plugin_dir_path( __FILE__ ) . 'cache'; $dir = dirname( __FILE__ ); $dir = preg_replace( '/\\\\/', '/', $dir ); $dir = $dir . '/cache'; } else { $dir = $s['file_cache_dir']; } if ( ! file_exists( $dir ) || ! is_dir( $dir ) ) { $this->error_mes( 'file_cahce_dir is not exists.' ); return false; } if ( ! is_writable( $dir ) ) { $this->error_mes( 'file_cache_dir is not writable.' ); return false; } $this->file_cache_dir = $dir; } add_filter( 'override_load_textdomain', array( $this, 'load_textdomain' ), 10, 3 ); } public function update_psta_settings() { if ( isset( $_POST['psta_update'] ) ) { if ( isset( $_POST['cache_force_delete'] ) ) { switch ( $this->setting['cache_type'] ) { case 'apc' : if ( function_exists( 'apc_clear_cache' ) ) { apc_clear_cache( 'user' ); } break; case 'file' : $this->file_cache_dir; if ( $dh = opendir( $this->file_cache_dir ) ) { while ( ( $file = readdir( $dh ) ) !== false ) { if ( is_file( $this->file_cache_dir . '/' . $file ) ) { @unlink( $this->file_cache_dir . '/' . $file ); } } } } } $post_data = stripslashes_deep( $_POST ); check_admin_referer( 'prime_strategy_translate_accelerator' ); $setting = array(); foreach ( $this->default as $key => $def ) { if ( $key == 'activate' && ! isset( $post_data['activate'] ) ) { $post_data['activate'] = false; } if ( $key != 'error_mes' ) { $setting[$key] = $post_data[$key]; } } $this->setting = $setting; update_option( 'psta_settings', $setting ); } } public function load_plugin_textdomain() { load_plugin_textdomain( 'prime-strategy-transelate-accelerator', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' ); } private function error_mes($mes) { $s =& $this->setting; if ( is_admin() && $s['error_mes'] == true) { echo $mes . '
'; } } public function load_textdomain( $dum, $domain, $mofile ) { $s =& $this->setting; $segment = 'frontend'; if ( is_admin() ) { $segment = 'admin'; } elseif ( preg_match( '/wp-(login|signup|register)\.php/', $_SERVER['REQUEST_URI'] ) ) { $segment = 'wp-login'; } if ( $s[$segment] == 'cutoff' ) { return true; } elseif ($s[$segment] == 'cache' ) { if ( false !== $this->cache_control( $domain, $mofile ) ) { return true; } } return false; } private function cache_control( $domain, $mofile ) { global $l10n; $s =& $this->setting; do_action( 'load_textdomain', $domain, $mofile ); $mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain ); if ( ! is_readable( $mofile ) ) return false; $mo = new MO(); $cache = false; if ( $s['cache_type'] == 'apc' ) { $cache = apc_fetch( $mofile, $ret ); } elseif ( $s['cache_type'] == 'file' ) { $file = preg_replace( '/^.*?wp-content/', '', $mofile ); $file = preg_replace( '/\\\\|\//', '_', $file); $file = $this->file_cache_dir . '/' . $file; if ( file_exists( $file ) ) { $cache = file_get_contents( $file ); $cache = unserialize( $cache ); } } if ( is_object( $cache ) ) { $mo = $cache; } else { if ( !$mo->import_from_file( $mofile ) ) { return false; } $mo->_gettext_select_plural_form = null; if ($s['cache_type'] == 'apc') { apc_store($mofile, $mo); } elseif ($s['cache_type'] == 'file') { $cache = serialize($mo); file_put_contents( $file, $cache ); } } if ( isset( $l10n[$domain] ) ) { $mo->merge_with( $l10n[$domain] ); } $l10n[$domain] = &$mo; } public function psta_deactivation() { delete_option( 'psta_settings' ); } public function add_setting_menu() { add_options_page( 'Translate Accelerator', 'Translate Accelerator', 'manage_options', basename( __FILE__ ), array( &$this, 'setting_page' ) ); } public function setting_page() { $s = $this->setting; ?>

001 Prime Strategy Translate Accelerator


Powered by Prime Strategy
' . __( 'Settings' ) . ''; array_unshift( $links, $settings_link ); // before other links } return $links; } } // class end new Prime_Strategy_Translate_Accelerator;