更换编辑器
This commit is contained in:
260
public/static/plugins/NKeditor/php/JsonResult.php
Normal file
260
public/static/plugins/NKeditor/php/JsonResult.php
Normal file
@@ -0,0 +1,260 @@
|
||||
<?php
|
||||
/**
|
||||
* json result vo
|
||||
* ---------------------------------------------------------------------
|
||||
* @author yangjian<yangjian102621@gmail.com>
|
||||
* @since v1.2.1
|
||||
*/
|
||||
|
||||
class JsonResult {
|
||||
|
||||
const CODE_SUCCESS = "000";
|
||||
const CODE_FAIL = "001";
|
||||
|
||||
/**
|
||||
* 数据载体
|
||||
* @var array
|
||||
*/
|
||||
private $data;
|
||||
|
||||
/**
|
||||
* 列表数据条数
|
||||
* @var int
|
||||
*/
|
||||
private $count;
|
||||
|
||||
/**
|
||||
* 当前数据页码
|
||||
* @var int
|
||||
*/
|
||||
private $page;
|
||||
|
||||
/**
|
||||
* 每页显示数据条数
|
||||
* @var int
|
||||
*/
|
||||
private $pagesize;
|
||||
|
||||
/**
|
||||
* 附带数据
|
||||
* @var mixed
|
||||
*/
|
||||
private $extra;
|
||||
/**
|
||||
* 错误代码
|
||||
* @var string
|
||||
*/
|
||||
private $code = self::CODE_SUCCESS;
|
||||
|
||||
/**
|
||||
* 状态码信息
|
||||
* @var array
|
||||
*/
|
||||
private static $_CODE_STATUS = [
|
||||
self::CODE_SUCCESS => '操作成功.',
|
||||
self::CODE_FAIL => '系统开了小差.',
|
||||
];
|
||||
|
||||
/**
|
||||
* 消息
|
||||
* @var string
|
||||
*/
|
||||
private $message;
|
||||
|
||||
/**
|
||||
* JsonResult constructor.
|
||||
* @param $code
|
||||
* @param $message
|
||||
*/
|
||||
public function __construct($code=null, $message=null){
|
||||
$this->setCode($code);
|
||||
$this->setMessage($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建 JsonResult 实例, 并输出
|
||||
* @param $code
|
||||
* @param $message
|
||||
* @return JsonResult
|
||||
*/
|
||||
public static function result($code, $message) {
|
||||
$result = new self($code, $message);
|
||||
$result->output();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回一个成功的 result vo
|
||||
* @param string $message
|
||||
* @return JsonResult
|
||||
*/
|
||||
public static function success($message='操作成功') {
|
||||
$result = new self(self::CODE_SUCCESS, $message);
|
||||
$result->output();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回一个失败的 result vo
|
||||
* @param string $message
|
||||
* @return JsonResult
|
||||
*/
|
||||
public static function fail($message='系统开了小差') {
|
||||
$result = new self(self::CODE_FAIL, $message);
|
||||
$result->output();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回jsonp数据格式
|
||||
* @param $code
|
||||
* @param $message
|
||||
* @param $callback
|
||||
*/
|
||||
public static function jsonp($code, $message, $callback){
|
||||
$result = new self($code, $message);
|
||||
die($callback. "(". $result .")");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCode()
|
||||
{
|
||||
return $this->code;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $code
|
||||
*/
|
||||
public function setCode($code)
|
||||
{
|
||||
$this->code = $code;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the $message
|
||||
*/
|
||||
public function getMessage() {
|
||||
return $this->message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $message
|
||||
*/
|
||||
public function setMessage($message) {
|
||||
$this->message = $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getData()
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*/
|
||||
public function setData($data)
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getCount()
|
||||
{
|
||||
return $this->count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $count
|
||||
*/
|
||||
public function setCount($count)
|
||||
{
|
||||
$this->count = $count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getPage()
|
||||
{
|
||||
return $this->page;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $page
|
||||
*/
|
||||
public function setPage($page)
|
||||
{
|
||||
$this->page = $page;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getPagesize()
|
||||
{
|
||||
return $this->pagesize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $pagesize
|
||||
*/
|
||||
public function setPagesize($pagesize)
|
||||
{
|
||||
$this->pagesize = $pagesize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getExtra()
|
||||
{
|
||||
return $this->extra;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $extra
|
||||
*/
|
||||
public function setExtra($extra)
|
||||
{
|
||||
$this->extra = $extra;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否成功
|
||||
* @return bool
|
||||
*/
|
||||
public function isSucess() {
|
||||
return $this->code == self::CODE_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换字符串
|
||||
* @return string
|
||||
*/
|
||||
public function __toString() {
|
||||
if ( !$this->getMessage() ) {
|
||||
$this->setMessage(self::$_CODE_STATUS[$this->code]);
|
||||
}
|
||||
return json_encode(array(
|
||||
'code'=>$this->getCode(),
|
||||
'message'=>$this->getMessage(),
|
||||
'count'=>$this->getCount(),
|
||||
'page'=>$this->getPage(),
|
||||
'pagesize'=>$this->getPagesize(),
|
||||
'extra'=>$this->getExtra(),
|
||||
'data'=>$this->getData()), JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 以json格式输出
|
||||
*/
|
||||
public function output() {
|
||||
header('Content-type: application/json;charset=utf-8');
|
||||
echo $this;
|
||||
die();
|
||||
}
|
||||
}
|
||||
1
public/static/plugins/NKeditor/php/default/cache.tmp
Normal file
1
public/static/plugins/NKeditor/php/default/cache.tmp
Normal file
@@ -0,0 +1 @@
|
||||
1508678800
|
||||
116
public/static/plugins/NKeditor/php/default/db/SimpleDB.php
Normal file
116
public/static/plugins/NKeditor/php/default/db/SimpleDB.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
/****************************************************
|
||||
* NKeditor PHP
|
||||
* 本PHP程序是演示程序,建议不要直接在实际项目中使用。
|
||||
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
|
||||
* **************************************************
|
||||
* 简易数据库, 单表 100w 条数据,查询一页数据在 0.015 秒左右
|
||||
* 缺陷,无法排序,如果要排序的话,那么不适合使用 SimpleDB, 请使用 mysql 或者 mongdb
|
||||
* User: yangjian
|
||||
* Date: 17-10-14
|
||||
* Time: 下午5:15
|
||||
*/
|
||||
|
||||
class SimpleDB {
|
||||
|
||||
/**
|
||||
* 文件资源
|
||||
* @var null|resource
|
||||
*/
|
||||
private $handler = null;
|
||||
|
||||
/**
|
||||
* 初始化,打开文件
|
||||
* SimpleDB constructor.
|
||||
* @param $dbname
|
||||
*/
|
||||
public function __construct($dbname)
|
||||
{
|
||||
$dataDir = __DIR__."/data/";
|
||||
if (!file_exists($dataDir)) {
|
||||
mkdir($dataDir);
|
||||
}
|
||||
$this->handler = fopen($dataDir.$dbname.'.db', 'a+');
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入一行数据
|
||||
* @return bool
|
||||
*/
|
||||
public function putLine($data) {
|
||||
|
||||
if ($this->handler != null) {
|
||||
fwrite($this->handler, $this->seralize($data));
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页获取数据列表
|
||||
* @param $key
|
||||
* @return array|null
|
||||
*/
|
||||
public function getDataList($page, $pagesize) {
|
||||
|
||||
if($page <= 0) {
|
||||
$page = 1;
|
||||
}
|
||||
$offset = ($page - 1) * $pagesize;
|
||||
//循环读取数据
|
||||
$datas = [];
|
||||
$counter = 0;
|
||||
while (!feof($this->handler)) {
|
||||
if ($counter < $offset) {
|
||||
fgets($this->handler); //移动指针到下一行
|
||||
$counter++;
|
||||
continue;
|
||||
}
|
||||
if (count($datas) == $pagesize) {
|
||||
break;
|
||||
}
|
||||
$line = fgets($this->handler);
|
||||
if (!empty($line)) {
|
||||
$datas[] = $this->unseralize($line);
|
||||
}
|
||||
}
|
||||
|
||||
return $datas;
|
||||
}
|
||||
|
||||
/**
|
||||
* 序列化数据
|
||||
* @param $data
|
||||
* @return string
|
||||
*/
|
||||
private function seralize($data) {
|
||||
|
||||
$break = "\n"; //换行符
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
||||
$break = "\r\n";
|
||||
}
|
||||
return json_encode($data, JSON_UNESCAPED_UNICODE).$break;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 反序列化
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
private function unseralize($data) {
|
||||
|
||||
return json_decode($data, true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭文件
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
if ($this->handler != null) {
|
||||
fclose($this->handler);
|
||||
}
|
||||
}
|
||||
}
|
||||
18
public/static/plugins/NKeditor/php/default/db/test.php
Normal file
18
public/static/plugins/NKeditor/php/default/db/test.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: yangjian
|
||||
* Date: 17-10-14
|
||||
* Time: 下午5:28
|
||||
*/
|
||||
require_once "SimpleDB.php";
|
||||
|
||||
$db = new SimpleDB("test");
|
||||
$t = 100000000;
|
||||
for($i = 0; $i < 1000000; $i++) {
|
||||
$db->putLine($t+$i);
|
||||
}
|
||||
printf("数据插入完毕!\n");
|
||||
$items = $db->getDataList(2, 10);
|
||||
print_r($items);
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/****************************************************
|
||||
* NKeditor PHP
|
||||
* 本PHP程序是演示程序,建议不要直接在实际项目中使用。
|
||||
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
|
||||
* **************************************************
|
||||
* 获取图片服务器上已上传的图片列表
|
||||
* @author yangjian<yangjian102621@gmail.com>
|
||||
*/
|
||||
error_reporting(0);
|
||||
require_once '../JsonResult.php';
|
||||
require_once '../functions.php';
|
||||
require_once "db/SimpleDB.php";
|
||||
|
||||
usleep(500000);
|
||||
$page = intval($_GET["page"]);
|
||||
$fileType = trim($_GET['fileType']);
|
||||
$pagesize = 15;
|
||||
//读取文件数据
|
||||
$db = new SimpleDB($fileType);
|
||||
$files = $db->getDataList($page, $pagesize);
|
||||
$result = new JsonResult();
|
||||
if (!empty($files)) {
|
||||
$result->setCode(JsonResult::CODE_SUCCESS);
|
||||
$result->setData($files);
|
||||
} else {
|
||||
$result->setCode(JsonResult::CODE_FAIL);
|
||||
}
|
||||
$result->output();
|
||||
77
public/static/plugins/NKeditor/php/default/import.php
Normal file
77
public/static/plugins/NKeditor/php/default/import.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
/**
|
||||
* 从老版本的 kindeditor 升级到 NKeditor,你可能需要把之前的文件初始化插入数据库。
|
||||
* 考虑到你可能更改了之前的老版本的文件上传代码,比如存储路径的风格,这里就只个给出一个参考思路:
|
||||
* 1. 遍历你的附件存储根目录, 并根据不同的文件类型 image, flash, file, media 分别创建4个数据库;
|
||||
* 2. 分别递归遍历这4个文件夹,把数据文件的 url 插入到各自的 SimpleDB 数据库.
|
||||
* ----------------------
|
||||
* 重建文件索引, 请使用命令行运行 php import.php
|
||||
* @author yangjian
|
||||
*/
|
||||
error_reporting(0);
|
||||
require_once "db/SimpleDB.php";
|
||||
require_once "../functions.php";
|
||||
|
||||
// 文件上传的根目录,请根据自己的实际情况修改
|
||||
$root = $basePath = dirname(dirname(__DIR__)) . "/uploads/";
|
||||
// 图片上传的根url,请根据实际项目修改
|
||||
$baseUrl = "/editor/nkeditor/uploads/";
|
||||
|
||||
//如果数据库已经存在,则先删除
|
||||
$datadir = __DIR__.'/db/data';
|
||||
file_exists($datadir) && deldir($datadir);
|
||||
|
||||
chdir($root);
|
||||
$dirs = glob("*");
|
||||
foreach ($dirs as $dir) {
|
||||
$db = new SimpleDB($dir);
|
||||
walkDir($root.$dir, $db, $dir);
|
||||
}
|
||||
|
||||
tprint("数据导入完毕!");
|
||||
|
||||
/**
|
||||
* 遍历目录,建立路径索引
|
||||
* @param $dir
|
||||
* @param SimpleDB $db
|
||||
* @param $fileType
|
||||
*/
|
||||
function walkDir($dir, $db, $fileType) {
|
||||
$handler = opendir($dir);
|
||||
global $root;
|
||||
global $baseUrl;
|
||||
while (($filename = readdir($handler)) !== false) {
|
||||
if ($filename != '.' && $filename != '..') {
|
||||
$filePath = $dir.'/'.$filename;
|
||||
if (is_dir($filePath)) {
|
||||
walkDir($filePath, $db, $fileType);
|
||||
continue;
|
||||
}
|
||||
$filesize = filesize($filePath);
|
||||
//如果是图片则获取尺寸
|
||||
if ($fileType == "image") {
|
||||
$size = getimagesize($filePath);
|
||||
}
|
||||
$fileUrl = $baseUrl.str_replace('\\', '/', str_replace($root, '', $filePath));
|
||||
$data = [
|
||||
"thumbURL" => $fileUrl,
|
||||
"oriURL" => $fileUrl,
|
||||
"filesize" => $filesize,
|
||||
"width" => intval($size[0]),
|
||||
"height" => intval($size[1])
|
||||
];
|
||||
$db->putLine($data);
|
||||
tprint("添加路径: {$fileUrl}");
|
||||
}
|
||||
}
|
||||
|
||||
closedir($handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* 终端打印函数
|
||||
* @param $message
|
||||
*/
|
||||
function tprint($message) {
|
||||
printf("\033[32m\033[1m{$message}\033[0m\n");
|
||||
}
|
||||
152
public/static/plugins/NKeditor/php/default/upload_json.php
Normal file
152
public/static/plugins/NKeditor/php/default/upload_json.php
Normal file
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
/****************************************************
|
||||
* NKeditor PHP
|
||||
* 本PHP程序是演示程序,建议不要直接在实际项目中使用。
|
||||
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
|
||||
* **************************************************
|
||||
* @author yangjian<yangjian102621@gmail.com>
|
||||
* 文件上传程序
|
||||
*/
|
||||
error_reporting(0);
|
||||
require_once '../JsonResult.php';
|
||||
require_once '../functions.php';
|
||||
require_once "db/SimpleDB.php";
|
||||
|
||||
$fileType = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
|
||||
//文件保存目录路径
|
||||
$basePath = BASE_PATH."{$fileType}/".UPLOAD_PREFIX;
|
||||
//文件保存目录URL
|
||||
$baseUrl = BASE_URL . "{$fileType}/".UPLOAD_PREFIX;
|
||||
//定义允许上传的文件扩展名
|
||||
$allowExtesions = array(
|
||||
'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),
|
||||
'flash' => array('swf', 'flv'),
|
||||
'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
|
||||
'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'),
|
||||
);
|
||||
//最大文件大小 2MB
|
||||
$maxSize = 2*1024*1024;
|
||||
if (!file_exists($basePath)) {
|
||||
mkdirs($basePath);
|
||||
}
|
||||
//PHP上传失败
|
||||
if (!empty($_FILES['imgFile']['error'])) {
|
||||
switch($_FILES['imgFile']['error']){
|
||||
case '1':
|
||||
$error = '超过php.ini允许的大小。';
|
||||
break;
|
||||
case '2':
|
||||
$error = '超过表单允许的大小。';
|
||||
break;
|
||||
case '3':
|
||||
$error = '图片只有部分被上传。';
|
||||
break;
|
||||
case '4':
|
||||
$error = '请选择图片。';
|
||||
break;
|
||||
case '6':
|
||||
$error = '找不到临时目录。';
|
||||
break;
|
||||
case '7':
|
||||
$error = '写文件到硬盘出错。';
|
||||
break;
|
||||
case '8':
|
||||
$error = 'File upload stopped by extension。';
|
||||
break;
|
||||
case '999':
|
||||
default:
|
||||
$error = '未知错误。';
|
||||
}
|
||||
alert($error);
|
||||
}
|
||||
|
||||
//base64 文件上传
|
||||
$base64 = trim($_POST['base64']);
|
||||
if ($base64) {
|
||||
$imgData = $_POST['img_base64_data'];
|
||||
|
||||
$json = new JsonResult();
|
||||
if ($imgData && preg_match('/^(data:\s*image\/(\w+);base64,)/', $imgData, $match)){
|
||||
$type = $match[2];
|
||||
$filename = date("YmdHis") . '_' . rand(10000, 99999) . '.png';
|
||||
if (file_put_contents($basePath.$filename, base64_decode(str_replace($match[1], '', $imgData)))){
|
||||
$json->setCode(JsonResult::CODE_SUCCESS);
|
||||
$json->setData(array('url' => $baseUrl.$filename));
|
||||
$json->output();
|
||||
}
|
||||
}
|
||||
$json->setCode(JsonResult::CODE_FAIL);
|
||||
$json->setMessage("涂鸦保存失败.");
|
||||
$json->output();
|
||||
}
|
||||
|
||||
// input 文件上传
|
||||
if (empty($_FILES) == false) {
|
||||
//原文件名
|
||||
$filename = $_FILES['imgFile']['name'];
|
||||
//服务器上临时文件名
|
||||
$tmpName = $_FILES['imgFile']['tmp_name'];
|
||||
//文件大小
|
||||
$filesize = $_FILES['imgFile']['size'];
|
||||
//检查文件名
|
||||
if (!$filename) {
|
||||
alert("请选择文件。");
|
||||
}
|
||||
//检查目录
|
||||
if (@is_dir($basePath) === false) {
|
||||
alert("上传目录不存在。");
|
||||
}
|
||||
//检查目录写权限
|
||||
if (@is_writable($basePath) === false) {
|
||||
alert("上传目录没有写权限。");
|
||||
}
|
||||
//检查是否已上传
|
||||
if (@is_uploaded_file($tmpName) === false) {
|
||||
alert("上传失败。");
|
||||
}
|
||||
//检查文件大小
|
||||
if ($filesize > $maxSize) {
|
||||
alert("上传文件大小超过限制。");
|
||||
}
|
||||
|
||||
//获得文件扩展名
|
||||
$extesion = getFileExt($filename);
|
||||
//检查扩展名
|
||||
if (in_array($extesion, $allowExtesions[$fileType]) === false) {
|
||||
alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $allowExtesions[$fileType]) . "格式。");
|
||||
}
|
||||
//新文件名
|
||||
$newFileName = genNewFilename($filename);
|
||||
//移动文件
|
||||
$filePath = $basePath . $newFileName;
|
||||
if (move_uploaded_file($tmpName, $filePath) === false) {
|
||||
alert("上传文件失败。");
|
||||
}
|
||||
@chmod($filePath, 0644);
|
||||
$fileUrl = $baseUrl . $newFileName;
|
||||
|
||||
$json = new JsonResult(JsonResult::CODE_SUCCESS, "上传成功");
|
||||
$json->setData(array('url' => $fileUrl));
|
||||
|
||||
//保存文件地址到数据库
|
||||
$db = new SimpleDB($fileType);
|
||||
//过滤掉非图片文件
|
||||
if ($fileType == "image") {
|
||||
$size = getimagesize($filePath);
|
||||
}
|
||||
$data = [
|
||||
"thumbURL" => $fileUrl,
|
||||
"oriURL" => $fileUrl,
|
||||
"filesize" => $filesize,
|
||||
"width" => intval($size[0]),
|
||||
"height" => intval($size[1])
|
||||
];
|
||||
$db->putLine($data);
|
||||
|
||||
$json->output();
|
||||
}
|
||||
|
||||
function alert($msg) {
|
||||
$json = new JsonResult(JsonResult::CODE_FAIL, $msg);
|
||||
$json->output();
|
||||
}
|
||||
109
public/static/plugins/NKeditor/php/functions.php
Normal file
109
public/static/plugins/NKeditor/php/functions.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
/**
|
||||
* 全局函数
|
||||
* @author yangjian<yangjian102621@gmail.com>
|
||||
*/
|
||||
|
||||
// 文件上传的根路径
|
||||
define('BASE_PATH', dirname(__DIR__)."/uploads/");
|
||||
// 文件上传路径前缀
|
||||
define('UPLOAD_PREFIX', date('Ym').'/'.date('d').'/');
|
||||
// 文件上传的根 url
|
||||
define('BASE_URL', dirname(dirname(dirname($_SERVER['PHP_SELF'])))."/uploads/");
|
||||
|
||||
/**
|
||||
* 创建多级目录
|
||||
* @param $dir
|
||||
*/
|
||||
function mkdirs($path) {
|
||||
$files = preg_split('/[\/|\\\]/s', $path);
|
||||
$_dir = '';
|
||||
foreach ($files as $value) {
|
||||
$_dir .= $value.DIRECTORY_SEPARATOR;
|
||||
if ( !file_exists($_dir) ) {
|
||||
mkdir($_dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件后缀名
|
||||
* @param $filename
|
||||
* @return string
|
||||
*/
|
||||
function getFileExt($filename) {
|
||||
$temp_arr = explode(".", $filename);
|
||||
$file_ext = array_pop($temp_arr);
|
||||
return strtolower(trim($file_ext));
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示图片
|
||||
* @param $image
|
||||
* @param $img_url
|
||||
*/
|
||||
function show_image($image, $img_url) {
|
||||
|
||||
$info = pathinfo($img_url);
|
||||
switch ( strtolower($info["extension"]) ) {
|
||||
case "jpg":
|
||||
case "jpeg":
|
||||
header('content-type:image/jpg;');
|
||||
imagejpeg($image);
|
||||
break;
|
||||
|
||||
case "gif":
|
||||
header('content-type:image/gif;');
|
||||
imagegif($image);
|
||||
break;
|
||||
|
||||
case "png":
|
||||
header('content-type:image/png;');
|
||||
imagepng($image);
|
||||
break;
|
||||
|
||||
default:
|
||||
header('content-type:image/wbmp;');
|
||||
image2wbmp($image);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成新的文件名
|
||||
* @param $file
|
||||
* @return string
|
||||
*/
|
||||
function genNewFilename($file) {
|
||||
$extesion = getFileExt($file);
|
||||
return date("YmdHis") . '_' . rand(10000, 99999) . '.' . $extesion;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空目录
|
||||
* @param $dirName
|
||||
* @return bool
|
||||
*/
|
||||
function deldir($dirName) {
|
||||
//节省资源,每天清理一次
|
||||
$file = "cache.tmp";
|
||||
$t = @file_get_contents($file);
|
||||
$now = time();
|
||||
if ($now - intval($t) < 60*60*24) {
|
||||
return false;
|
||||
}
|
||||
file_put_contents($file, $now);
|
||||
|
||||
if(file_exists($dirName) && $handle=opendir($dirName)){
|
||||
while(false!==($item = readdir($handle))){
|
||||
if($item!= "." && $item != ".."){
|
||||
if(file_exists($dirName.'/'.$item) && is_dir($dirName.'/'.$item)){
|
||||
delFile($dirName.'/'.$item);
|
||||
}else{
|
||||
@unlink($dirName.'/'.$item);
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir( $handle);
|
||||
}
|
||||
}
|
||||
1
public/static/plugins/NKeditor/php/qiniu/cache.tmp
Normal file
1
public/static/plugins/NKeditor/php/qiniu/cache.tmp
Normal file
@@ -0,0 +1 @@
|
||||
1508682572
|
||||
15
public/static/plugins/NKeditor/php/qiniu/composer.json
Normal file
15
public/static/plugins/NKeditor/php/qiniu/composer.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "demo/myapp",
|
||||
"description": "just a test",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"qiniu/php-sdk": "7.2.1"
|
||||
},
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "yangjian",
|
||||
"email": "yangjian102621@gmail.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
61
public/static/plugins/NKeditor/php/qiniu/config.php
Normal file
61
public/static/plugins/NKeditor/php/qiniu/config.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* 七牛服务器配置信息
|
||||
* User: yangjian
|
||||
* Date: 17-9-14
|
||||
* Time: 上午11:29
|
||||
*/
|
||||
define("QINIU_ACCESS_KEY", "_-BMslq1mPL_zY0KN2iLD1-ym4TcHhQUi0_dDFPB");
|
||||
define("QINIU_SECRET_KEY", "J_As9ApfpyCpk31l3hOAZe3QQTc8iYlEfdd6-5an");
|
||||
define("QINIU_TEST_BUCKET", "kindeditor");
|
||||
define("QINIU_BUCKET_DOMAIN", "http://nk.img.r9it.com/");
|
||||
error_reporting(0); //关闭报错输出,以免打乱 json 数据格式
|
||||
|
||||
/**
|
||||
* 获取图片尺寸
|
||||
* @param $filename
|
||||
* @return mixed
|
||||
*/
|
||||
function getImgSize($filename) {
|
||||
$json = file_get_contents(QINIU_BUCKET_DOMAIN."{$filename}?imageInfo");
|
||||
return json_decode($json, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传 base64 图片
|
||||
* @param $data
|
||||
* @param $filename
|
||||
* @param $upToken
|
||||
* @return bool|mixed
|
||||
*/
|
||||
function base64Upload($data, $filename, $upToken)
|
||||
{
|
||||
|
||||
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $data, $match)) {
|
||||
|
||||
$imgData = str_replace($match[1], '', $data); //去掉图片的声明前缀
|
||||
|
||||
/**
|
||||
* upload.qiniu.com 上传域名适用于华东空间。华北空间使用 upload-z1.qiniu.com,
|
||||
* 华南空间使用 upload-z2.qiniu.com,北美空间使用 upload-na0.qiniu.com。
|
||||
*/
|
||||
$url = "http://upload-z2.qiniu.com/putb64/-1/key/".base64_encode($filename);
|
||||
$headers = array();
|
||||
$headers[] = 'Content-Type:image/png';
|
||||
$headers[] = 'Authorization:UpToken ' . $upToken;
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
//curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
//curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $imgData);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
||||
$data = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $data;
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
namespace qiniu\upload;
|
||||
/****************************************************
|
||||
* NKeditor PHP
|
||||
* 本PHP程序是演示程序,建议不要直接在实际项目中使用。
|
||||
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
|
||||
* **************************************************
|
||||
* 获取图片服务器上已上传的图片列表
|
||||
* @author yangjian<yangjian102621@gmail.com>
|
||||
*/
|
||||
|
||||
use Qiniu\Auth;
|
||||
use Qiniu\Storage\BucketManager;
|
||||
|
||||
require_once "vendor/autoload.php";
|
||||
require_once "../JsonResult.php";
|
||||
require_once "config.php";
|
||||
require_once "../functions.php";
|
||||
|
||||
$page = intval($_GET["page"]);
|
||||
$fileType = trim($_GET['fileType']);
|
||||
if ($fileType == '') {
|
||||
$fileType = "image";
|
||||
}
|
||||
$marker = trim($_GET['marker']); //上次列举返回的位置标记,作为本次列举的起点信息。
|
||||
|
||||
if ($marker == "no_records") {
|
||||
\JsonResult::fail("没有更多的文件了");
|
||||
}
|
||||
|
||||
// 构建鉴权对象
|
||||
$auth = new Auth(QINIU_ACCESS_KEY, QINIU_SECRET_KEY);
|
||||
$bucketManager = new BucketManager($auth);
|
||||
|
||||
// 要列取文件的公共前缀
|
||||
$prefix = $fileType."-";
|
||||
|
||||
// 本次列举的条目数
|
||||
$limit = 15;
|
||||
$delimiter = '/';
|
||||
list($ret, $err) = $bucketManager->listFiles(QINIU_TEST_BUCKET, $prefix, $marker, $limit, $delimiter);
|
||||
$result = new \JsonResult();
|
||||
if ($err !== null) {
|
||||
$result->setCode(\JsonResult::CODE_FAIL);
|
||||
$result->setMessage($err);
|
||||
} else {
|
||||
$files = array();
|
||||
$result->setCode(\JsonResult::CODE_SUCCESS);
|
||||
foreach($ret["items"] as $value) {
|
||||
$filename = $value['key'];
|
||||
if (strpos($value['mimeType'], 'image') !== false) { //如果是图片则获取尺寸
|
||||
$imgSize = getImgSize($value['key']);
|
||||
}
|
||||
array_push($files, array(
|
||||
"thumbURL" => QINIU_BUCKET_DOMAIN.$filename,
|
||||
"oriURL" => QINIU_BUCKET_DOMAIN.$filename,
|
||||
"filesize" => $value['fsize'],
|
||||
"width" => intval($imgSize["width"]),
|
||||
"height" => intval($imgSize["height"])));
|
||||
}
|
||||
$result->setData($files);
|
||||
if (array_key_exists('marker', $ret)) {
|
||||
$result->setExtra($ret['marker']);
|
||||
} else {
|
||||
$result->setExtra("no_records");
|
||||
}
|
||||
}
|
||||
$result->output();
|
||||
92
public/static/plugins/NKeditor/php/qiniu/upload_json.php
Normal file
92
public/static/plugins/NKeditor/php/qiniu/upload_json.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
namespace qiniu\upload;
|
||||
/****************************************************
|
||||
* NKeditor PHP
|
||||
* 本PHP程序是演示程序,建议不要直接在实际项目中使用。
|
||||
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
|
||||
* **************************************************
|
||||
* @author yangjian<yangjian102621@gmail.com>
|
||||
* 文件上传程序
|
||||
*/
|
||||
|
||||
error_reporting(0);
|
||||
|
||||
use Qiniu\Auth;
|
||||
use Qiniu\Storage\UploadManager;
|
||||
|
||||
require_once "vendor/autoload.php";
|
||||
require_once "../JsonResult.php";
|
||||
require_once "config.php";
|
||||
require_once "../functions.php";
|
||||
|
||||
$fileType = trim($_GET['fileType']);
|
||||
if (empty($fileType)) {
|
||||
$fileType = "image";
|
||||
}
|
||||
// 构建鉴权对象
|
||||
$auth = new Auth(QINIU_ACCESS_KEY, QINIU_SECRET_KEY);
|
||||
// 生成上传 Token
|
||||
$token = $auth->uploadToken(QINIU_TEST_BUCKET);
|
||||
|
||||
// 要上传文件的本地路径
|
||||
//$filePath = './php-logo.png';
|
||||
$base64 = trim($_POST['base64']);
|
||||
if ($base64) {
|
||||
$data = $_POST['img_base64_data'];
|
||||
$filename = "{$fileType}-".time().".png";
|
||||
$res = base64Upload($data, $filename, $token);
|
||||
$json = new \JsonResult();
|
||||
if ($res) {
|
||||
$res = json_decode($res, true);
|
||||
$json->setCode(\JsonResult::CODE_SUCCESS);
|
||||
$json->setData(array('url' => QINIU_BUCKET_DOMAIN.$res['key']));
|
||||
} else {
|
||||
$json->setCode(\JsonResult::CODE_FAIL);
|
||||
$json->setMessage("上传涂鸦失败!");
|
||||
}
|
||||
$json->output();
|
||||
} else {
|
||||
$filePath = $_FILES['imgFile']['tmp_name'];
|
||||
$fileExt = getFileExt($_FILES['imgFile']['name']);
|
||||
|
||||
// 返回结果
|
||||
$json = new \JsonResult();
|
||||
//定义允许上传的文件扩展名
|
||||
$extArr = array(
|
||||
'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),
|
||||
'flash' => array('swf', 'flv'),
|
||||
'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
|
||||
'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'),
|
||||
);
|
||||
//最大文件大小 2MB
|
||||
$maxSize = 2*1024*1024;
|
||||
if (!in_array($fileExt, $extArr[$fileType])) {
|
||||
$json->setCode(\JsonResult::CODE_FAIL);
|
||||
$json->setMessage("非法的文件后缀名.");
|
||||
$json->output();
|
||||
}
|
||||
if (filesize($filePath) > $maxSize) {
|
||||
$json->setCode(\JsonResult::CODE_FAIL);
|
||||
$json->setMessage("文件大小超出限制 2MB.");
|
||||
$json->output();
|
||||
}
|
||||
|
||||
// 上传到七牛后保存的文件名
|
||||
$key = $fileType . "-" . time() . mt_rand(1000, 9999) . ".{$fileExt}";
|
||||
|
||||
// 初始化 UploadManager 对象并进行文件的上传。
|
||||
$uploadMgr = new UploadManager();
|
||||
|
||||
// 调用 UploadManager 的 putFile 方法进行文件的上传。
|
||||
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
|
||||
if ($err !== null) {
|
||||
$json->setCode(\JsonResult::CODE_FAIL);
|
||||
$json->setMessage("上传失败.");
|
||||
} else {
|
||||
$json->setCode(\JsonResult::CODE_SUCCESS);
|
||||
$json->setMessage("上传成功.".$_POST['name']);
|
||||
$json->setData(array('url' => QINIU_BUCKET_DOMAIN . $ret['key']));
|
||||
}
|
||||
$json->output();
|
||||
}
|
||||
|
||||
7
public/static/plugins/NKeditor/php/qiniu/vendor/autoload.php
vendored
Normal file
7
public/static/plugins/NKeditor/php/qiniu/vendor/autoload.php
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitd54131a8e41e2a2e6c26ad98ddf3c990::getLoader();
|
||||
413
public/static/plugins/NKeditor/php/qiniu/vendor/composer/ClassLoader.php
vendored
Normal file
413
public/static/plugins/NKeditor/php/qiniu/vendor/composer/ClassLoader.php
vendored
Normal file
@@ -0,0 +1,413 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see http://www.php-fig.org/psr/psr-0/
|
||||
* @see http://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
private $prefixesPsr0 = array();
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
private $useIncludePath = false;
|
||||
private $classMap = array();
|
||||
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $classMap Class to filename map
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return bool|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
|
||||
if ('\\' == $class[0]) {
|
||||
$class = substr($class, 1);
|
||||
}
|
||||
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if ($file === null && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if ($file === null) {
|
||||
// Remember that this class does not exist.
|
||||
return $this->classMap[$class] = false;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
||||
21
public/static/plugins/NKeditor/php/qiniu/vendor/composer/LICENSE
vendored
Normal file
21
public/static/plugins/NKeditor/php/qiniu/vendor/composer/LICENSE
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
Copyright (c) 2016 Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
9
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_classmap.php
vendored
Normal file
9
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_classmap.php
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
||||
10
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_files.php
vendored
Normal file
10
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_files.php
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'841780ea2e1d6545ea3a253239d59c05' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/functions.php',
|
||||
);
|
||||
9
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_namespaces.php
vendored
Normal file
9
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_namespaces.php
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
||||
10
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_psr4.php
vendored
Normal file
10
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_psr4.php
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Qiniu\\' => array($vendorDir . '/qiniu/php-sdk/src/Qiniu'),
|
||||
);
|
||||
70
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_real.php
vendored
Normal file
70
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_real.php
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInitd54131a8e41e2a2e6c26ad98ddf3c990
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInitd54131a8e41e2a2e6c26ad98ddf3c990', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitd54131a8e41e2a2e6c26ad98ddf3c990', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
|
||||
if ($useStaticLoader) {
|
||||
require_once __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInitd54131a8e41e2a2e6c26ad98ddf3c990::getInitializer($loader));
|
||||
} else {
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
if ($useStaticLoader) {
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInitd54131a8e41e2a2e6c26ad98ddf3c990::$files;
|
||||
} else {
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
}
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequired54131a8e41e2a2e6c26ad98ddf3c990($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequired54131a8e41e2a2e6c26ad98ddf3c990($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
require $file;
|
||||
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
}
|
||||
}
|
||||
35
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_static.php
vendored
Normal file
35
public/static/plugins/NKeditor/php/qiniu/vendor/composer/autoload_static.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInitd54131a8e41e2a2e6c26ad98ddf3c990
|
||||
{
|
||||
public static $files = array (
|
||||
'841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'Q' =>
|
||||
array (
|
||||
'Qiniu\\' => 6,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'Qiniu\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu',
|
||||
),
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInitd54131a8e41e2a2e6c26ad98ddf3c990::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInitd54131a8e41e2a2e6c26ad98ddf3c990::$prefixDirsPsr4;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
||||
55
public/static/plugins/NKeditor/php/qiniu/vendor/composer/installed.json
vendored
Normal file
55
public/static/plugins/NKeditor/php/qiniu/vendor/composer/installed.json
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
[
|
||||
{
|
||||
"name": "qiniu/php-sdk",
|
||||
"version": "v7.2.1",
|
||||
"version_normalized": "7.2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/qiniu/php-sdk.git",
|
||||
"reference": "8c7ba738bd4443ee3569a07441913b07c4b2c4a2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/qiniu/php-sdk/zipball/8c7ba738bd4443ee3569a07441913b07c4b2c4a2",
|
||||
"reference": "8c7ba738bd4443ee3569a07441913b07c4b2c4a2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.0",
|
||||
"squizlabs/php_codesniffer": "~2.3"
|
||||
},
|
||||
"time": "2017-08-26 00:46:11",
|
||||
"type": "library",
|
||||
"installation-source": "source",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Qiniu\\": "src/Qiniu"
|
||||
},
|
||||
"files": [
|
||||
"src/Qiniu/functions.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Qiniu",
|
||||
"email": "sdk@qiniu.com",
|
||||
"homepage": "http://www.qiniu.com"
|
||||
}
|
||||
],
|
||||
"description": "Qiniu Resource (Cloud) Storage SDK for PHP",
|
||||
"homepage": "http://developer.qiniu.com/",
|
||||
"keywords": [
|
||||
"cloud",
|
||||
"qiniu",
|
||||
"sdk",
|
||||
"storage"
|
||||
]
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user