Skip to content

Latest commit

 

History

History

_plugins

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

TCShare 模块开发

概述

目前TCShare支持三种模块:Provider(网盘)Rule(规则)View(主题)

使用插件

providerrule:将插件文件放置在_plugins目录下,执行composer install,配置文件的XS_KEY_<id>=XS_SEC_<priority>=填写类名,如someNamespace\DemoPlugin

Provider

provider包含两个类,需分别实现xyToki\xyShare\contentProviderxyToki\xyShare\authProvider接口。 其中,authProvider负责处理oAuth认证,如无需oauth(如用户名密码登录、填写cookie等),可不实现这个接口。 同时,还需要实现fileInfofolderInfo用于存储文件(夹)的信息。

abstractInfo

文件和文件夹共有接口。

interface abstractInfo{
    /* 文件名 */
    function name();
    /* 修改日期,date('T-m-d H:i:s') */
    function timeModified();
    /* 创建日期,date('T-m-d H:i:s') */
    function timeCreated();
    /* 是否文件夹,true/false */
    function isFolder();
}

fileInfo

文件信息接口,每个文件是一个对象

interface fileInfo extends abstractInfo{
    /* 下载地址,支持动态获取,参见和彩云 */
    function url();
    /* 文件大小 */
    function size();
    /* 后缀名,可实现为 TC::ext($this->name); */
    function extension();
    /* 缩略图地址 */
    function thumbnail();
    /* 预览地址,可以不实现 */
    //function preview();
}

folderInfo

interface folderInfo extends abstractInfo{
    /* 打包下载地址,可以不实现 */
    //function zipDownload();
}

contentProvider

编写中

contentProvider

编写中

Rule

rule是一个类,需实现xyToki\xyShare\Rules\abstractRule接口,静态暴露check函数。

interface abstractRule {
    static function check(String $path,Array $config,$file);
}

返回值为Int,表示跳过下面几条规则,也可以返回常量:

  • XS_RULE_HALT,即0,当前规则不通过,阻止程序运行。 请勿使用die()或者exit(),这会让程序在scf无法正常工作。
  • XS_RULE_PASS,即1,当前规则通过。
  • XS_RULE_SKIP,即INT_MAX,跳过所有规则。
  • 返回其他数字n,当前规则通过并跳过接下来的n-1条规则。

View

主题应放置于_app/views下以主题命名的文件夹中。

文件说明:

list.php: 必须,渲染文件列表。

参数:

  • $path:当前路径
  • $current: 当前文件夹的folderInfo对象。
  • $files:文件数组,元素为Provider提供的fileInfo对象。
  • $folders: 文件夹数组,元素为Provider提供的folderInfo对象。
  • $sort: 当前排序模式,asc or desc
  • $order: 当前排序参数,为fileInfo对象的函数名。
password.php: 可选,渲染密码保护页面。

参数参见_app/rules/password.php

config.json:必须,配置服务端文件预览

格式为"扩展名":"php文件名",例如以下:

{
    "mp4":"preview_video"
}
各格式预览文件。可选,需在上面提到的config.json配置

参数:

  • $file:当前预览文件的fileInfo对象。