晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/www/wp-content/plugins/js_composer/include/classes/updaters/ |
Upload File : |
<?php
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
/**
* WPBakery WPBakery Page Builder updater
*
* @package WPBakeryPageBuilder
*
*/
/**
* Vc updating manager.
*/
class Vc_Updater {
/**
* @var string
*/
protected $version_url = 'http://updates.wpbakery.com/';
/**
* Proxy URL that returns real download link
*
* @var string
*/
protected $download_link_url = 'http://support.wpbakery.com/updates/download-link';
/**
* @var bool
*/
protected $auto_updater;
public function init() {
add_filter( 'upgrader_pre_download', array(
$this,
'preUpgradeFilter',
), 10, 4 );
}
/**
* Setter for manager updater.
*
* @param Vc_Updating_Manager $updater
*/
public function setUpdateManager( Vc_Updating_Manager $updater ) {
$this->auto_updater = $updater;
}
/**
* Getter for manager updater.
*
* @return Vc_Updating_Manager|bool
*/
public function updateManager() {
return $this->auto_updater;
}
/**
* Get url for version validation
* @return string
*/
public function versionUrl() {
return $this->version_url;
}
/**
* Get unique, short-lived download link
*
* @return array|boolean JSON response or false if request failed
*/
public function getDownloadUrl() {
$url = $this->getUrl();
// FIX SSL SNI
$filter_add = true;
if ( function_exists( 'curl_version' ) ) {
$version = curl_version();
if ( version_compare( $version['version'], '7.18', '>=' ) ) {
$filter_add = false;
}
}
if ( $filter_add ) {
add_filter( 'https_ssl_verify', '__return_false' );
}
$response = wp_remote_get( $url, array( 'timeout' => 30 ) );
if ( $filter_add ) {
remove_filter( 'https_ssl_verify', '__return_false' );
}
if ( is_wp_error( $response ) ) {
return false;
}
return json_decode( $response['body'], true );
}
/**
* @return string
*/
protected function getUrl() {
$host = esc_url( vc_license()->getSiteUrl() );
$key = rawurlencode( vc_license()->getLicenseKey() );
$url = $this->download_link_url . '?product=vc&url=' . $host . '&key=' . $key . '&version=' . WPB_VC_VERSION;
return $url;
}
/**
* @return string|void
*/
public static function getUpdaterUrl() {
return vc_is_network_plugin() ? network_admin_url( 'admin.php?page=vc-updater' ) : admin_url( 'admin.php?page=vc-updater' );
}
/**
* Get link to newest VC
*
* @param $reply
* @param $package
* @param WP_Upgrader $updater
*
* @return mixed|string|WP_Error
*/
public function preUpgradeFilter( $reply, $package, $updater ) {
$condition1 = isset( $updater->skin->plugin ) && vc_plugin_name() === $updater->skin->plugin;
// Must use I18N otherwise France or other languages will not work
$condition2 = isset( $updater->skin->plugin_info ) && __( 'WPBakery Page Builder', 'js_composer' ) === $updater->skin->plugin_info['Name'];
if ( ! $condition1 && ! $condition2 ) {
return $reply;
}
$res = $updater->fs_connect( array( WP_CONTENT_DIR ) );
if ( ! $res ) {
return new WP_Error( 'no_credentials', esc_html__( "Error! Can't connect to filesystem", 'js_composer' ) );
}
if ( ! vc_license()->isActivated() ) {
if ( vc_is_as_theme() && vc_get_param( 'action' ) !== 'update-selected' ) {
return false;
}
$url = self::getUpdaterUrl();
return new WP_Error( 'no_credentials', sprintf( esc_html__( 'To receive automatic updates license activation is required. Please visit %sSettings%s to activate your WPBakery Page Builder.', 'js_composer' ), '<a href="' . esc_url( $url ) . '" target="_blank">', '</a>' ) . ' ' . sprintf( ' <a href="https://go.wpbakery.com/faq-update-in-theme" target="_blank">%s</a>', esc_html__( 'Got WPBakery Page Builder in theme?', 'js_composer' ) ) );
}
$updater->strings['downloading_package_url'] = esc_html__( 'Getting download link...', 'js_composer' );
$updater->skin->feedback( 'downloading_package_url' );
$response = $this->getDownloadUrl();
if ( ! $response ) {
return new WP_Error( 'no_credentials', esc_html__( 'Download link could not be retrieved', 'js_composer' ) );
}
if ( ! $response['status'] ) {
return new WP_Error( 'no_credentials', $response['error'] );
}
$updater->strings['downloading_package'] = esc_html__( 'Downloading package...', 'js_composer' );
$updater->skin->feedback( 'downloading_package' );
$downloaded_archive = download_url( $response['url'] );
if ( is_wp_error( $downloaded_archive ) ) {
return $downloaded_archive;
}
$plugin_directory_name = dirname( vc_plugin_name() );
// WP will use same name for plugin directory as archive name, so we have to rename it
if ( basename( $downloaded_archive, '.zip' ) !== $plugin_directory_name ) {
$new_archive_name = dirname( $downloaded_archive ) . '/' . $plugin_directory_name . time() . '.zip';
if ( rename( $downloaded_archive, $new_archive_name ) ) {
$downloaded_archive = $new_archive_name;
}
}
return $downloaded_archive;
}
}