晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/rainic/www/oldTZh/wp-content/plugins/wordpress-seo/src/routes/ |
Upload File : |
<?php
namespace Yoast\WP\SEO\Routes;
use Exception;
use WP_Error;
use WP_REST_Response;
use Yoast\WP\SEO\Actions\Importing\Importing_Action_Interface;
use Yoast\WP\SEO\Conditionals\No_Conditionals;
use Yoast\WP\SEO\Exceptions\Importing\Aioseo_Validation_Exception;
use Yoast\WP\SEO\Main;
use Yoast\WP\SEO\Services\Importing\Importable_Detector_Service;
/**
* Importing_Route class.
*
* Importing route for importing from other SEO plugins.
*/
class Importing_Route extends Abstract_Action_Route {
use No_Conditionals;
/**
* The import route constant.
*
* @var string
*/
public const ROUTE = '/import/(?P<plugin>[\w-]+)/(?P<type>[\w-]+)';
/**
* List of available importers.
*
* @var Importing_Action_Interface[]
*/
protected $importers = [];
/**
* The importable detector service.
*
* @var Importable_Detector_Service
*/
protected $importable_detector;
/**
* Importing_Route constructor.
*
* @param Importable_Detector_Service $importable_detector The importable detector service.
* @param Importing_Action_Interface ...$importers All available importers.
*/
public function __construct(
Importable_Detector_Service $importable_detector,
Importing_Action_Interface ...$importers
) {
$this->importable_detector = $importable_detector;
$this->importers = $importers;
}
/**
* Registers routes with WordPress.
*
* @return void
*/
public function register_routes() {
\register_rest_route(
Main::API_V1_NAMESPACE,
self::ROUTE,
[
'callback' => [ $this, 'execute' ],
'permission_callback' => [ $this, 'is_user_permitted_to_import' ],
'methods' => [ 'POST' ],
]
);
}
/**
* Executes the rest request, but only if the respective action is enabled.
*
* @param mixed $data The request parameters.
*
* @return WP_REST_Response|false Response or false on non-existent route.
*/
public function execute( $data ) {
$plugin = (string) $data['plugin'];
$type = (string) $data['type'];
$next_url = $this->get_endpoint( $plugin, $type );
try {
$importer = $this->get_importer( $plugin, $type );
if ( $importer === false || ! $importer->is_enabled() ) {
return new WP_Error(
'rest_no_route',
'Requested importer not found',
[
'status' => 404,
]
);
}
$result = $importer->index();
if ( $result === false || \count( $result ) === 0 ) {
$next_url = false;
}
return $this->respond_with(
$result,
$next_url
);
} catch ( Exception $exception ) {
if ( $exception instanceof Aioseo_Validation_Exception ) {
return new WP_Error(
'wpseo_error_validation',
$exception->getMessage(),
[ 'stackTrace' => $exception->getTraceAsString() ]
);
}
return new WP_Error(
'wpseo_error_indexing',
$exception->getMessage(),
[ 'stackTrace' => $exception->getTraceAsString() ]
);
}
}
/**
* Gets the right importer for the given arguments.
*
* @param string $plugin The plugin to import from.
* @param string $type The type of entity to import.
*
* @return Importing_Action_Interface|false The importer, or false if no importer was found.
*/
protected function get_importer( $plugin, $type ) {
$importers = $this->importable_detector->filter_actions( $this->importers, $plugin, $type );
if ( \count( $importers ) !== 1 ) {
return false;
}
return \current( $importers );
}
/**
* Gets the right endpoint for the given arguments.
*
* @param string $plugin The plugin to import from.
* @param string $type The type of entity to import.
*
* @return string|false The endpoint for the given action or false on failure of finding the one.
*/
public function get_endpoint( $plugin, $type ) {
if ( empty( $plugin ) || empty( $type ) ) {
return false;
}
return Main::API_V1_NAMESPACE . "/import/{$plugin}/{$type}";
}
/**
* Whether or not the current user is allowed to import.
*
* @return bool Whether or not the current user is allowed to import.
*/
public function is_user_permitted_to_import() {
return \current_user_can( 'activate_plugins' );
}
}