晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/home/bolconlineco/public_html/combine/cms/ckfinder/core/connector/php/php5/Core/ |
| Current File : /home/bolconlineco/public_html/combine/cms/ckfinder/core/connector/php/php5/Core/Hooks.php |
<?php
/*
* CKFinder
* ========
* http://ckfinder.com
* Copyright (C) 2007-2010, CKSource - Frederico Knabben. All rights reserved.
*
* The software, this file and its contents are subject to the CKFinder
* License. Please read the license.txt file before using, installing, copying,
* modifying or distribute this file or part of its contents. The contents of
* this file is part of the Source Code of CKFinder.
*/
if (!defined('IN_CKFINDER')) exit;
/**
* @package CKFinder
* @subpackage Core
* @copyright CKSource - Frederico Knabben
*/
class CKFinder_Connector_Core_Hooks
{
/**
* Run user defined hooks
*
* @param string $event
* @param object $errorHandler
* @param array $args
* @return boolean (true to continue processing, false otherwise)
*/
public static function run($event, $args = array())
{
$config = $GLOBALS['config'];
if (!isset($config['Hooks'])) {
return true;
}
$hooks =& $config['Hooks'];
if (!is_array($hooks) || !array_key_exists($event, $hooks) || !is_array($hooks[$event])) {
return true;
}
$errorHandler = $GLOBALS['connector']->getErrorHandler();
foreach ($hooks[$event] as $i => $hook) {
$object = NULL;
$method = NULL;
$function = NULL;
$data = NULL;
$passData = false;
/* $hook can be: a function, an object, an array of $functiontion and $data,
* an array of just a function, an array of object and method, or an
* array of object, method, and data.
*/
//function
if (is_string($hook)) {
$function = $hook;
}
//object
else if (is_object($hook)) {
$object = $hooks[$event][$i];
$method = "on" . $event;
}
//array of...
else if (is_array($hook)) {
$count = count($hook);
if ($count) {
//...object
if (is_object($hook[0])) {
$object = $hooks[$event][$i][0];
if ($count < 2) {
$method = "on" . $event;
} else {
//...object and method
$method = $hook[1];
if (count($hook) > 2) {
//...object, method and data
$passData = true;
$data = $hook[2];
}
}
}
//...function
else if (is_string($hook[0])) {
$function = $hook[0];
if ($count > 1) {
//...function with data
$passData = true;
$data = $hook[1];
}
}
}
}
/* If defined, add data to the arguments array */
if ($passData) {
$args = array_merge(array($data), $args);
}
if (isset($object)) {
$callback = array($object, $method);
}
else if (false !== ($pos = strpos($function, '::'))) {
$callback = array(substr($function, 0, $pos), substr($function, $pos + 2));
}
else {
$callback = $function;
}
if (is_callable($callback)) {
$ret = call_user_func_array($callback, $args);
}
else {
$functionName = CKFinder_Connector_Core_Hooks::_printCallback($callback);
$errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_CUSTOM_ERROR,
"CKFinder failed to call a hook: " . $functionName);
return false;
}
//String return is a custom error
if (is_string($ret)) {
$errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_CUSTOM_ERROR, $ret);
return false;
}
//hook returned an error code, user error codes start from 50000
//error codes are important because this way it is possible to create multilanguage extensions
//TODO: two custom extensions may be popular and return the same error codes
//recomendation: create a function that calculates the error codes starting number
//for an extension, a pool of 100 error codes for each extension should be safe enough
else if (is_int($ret)) {
$errorHandler->throwError($ret);
return false;
}
//no value returned
else if( $ret === null ) {
$functionName = CKFinder_Connector_Core_Hooks::_printCallback($callback);
$errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_CUSTOM_ERROR,
"CKFinder extension returned an invalid value (null)." .
"Hook " . $functionName . " should return a value.");
return false;
}
else if (!$ret) {
return false;
}
}
return true;
}
/**
* Print user friendly name of a callback
*
* @param mixed $callback
* @return string
*/
public static function _printCallback($callback)
{
if (is_array($callback)) {
if (is_object($callback[0])) {
$className = get_class($callback[0]);
} else {
$className = strval($callback[0]);
}
$functionName = $className . '::' . strval($callback[1]);
}
else {
$functionName = strval($callback);
}
return $functionName;
}
}
|