Office Anywhere网络智能办公系统(以下简称通达OA),不仅是一套成熟的网络办公系统,同时也是一个完整、精巧的软件开发平台,不仅集成了Web开发的全套环境,并提供了管理架构、系统资源的开放性支持,是开发中小型管理应用系统的理想平台。
本文将从不同的技术层面向您揭示通达OA的二次开发细节,是主要针对专职程序设计人员、编程爱好者、软件产品技术支持人员编写的OA二次开发入门教程。
通过阅读本文,您将不仅可以了解通达OA的设计奥秘,也将能够运用本文所介绍的知识和技巧,轻松构建属于自己的应用系统或模块,文中将结合具体实例加以说明。
通达OA主要采用PHP语言开发,系统使用MySQL数据库。
在Windows平台下,通达OA主要注册了9个系统服务,可以通过控制面板-〉管理工具-〉服务,查看这9项服务,服务名分别是Office_Web、MySQL5_OA、Office_Redis、OfficeDaemon、OfficeIm、OfficeIndex、OfficeMail、OfficePOP3、OfficeTask,Office_Web是管理ngnix进程的服务,Office_Web是通达OA所使用的Web Server,通达OA也可以支持IIS作为Web Server,具体配置方法参见通达网站OA知识库相关文档。
关于PHP语言的使用,可参阅http://www.php.net,下载PHP手册,作为开发指导,PHP版本已升级至7.2,该版本中许多函数或方法有调整,使用时需要注意;关于MySQL数据库的管理与使用,将在第二章进行详细介绍。
通达OA的目录层次结构清晰,体现出对服务程序、应用程序、WEB页面的巧妙整合与组织,便于理解和扩充,下面对目录结构加以说明:
MYOA
├─attach OA附件文件存放目录
├─bak 数据库默认备份目录
├─bin PHP、Zend等主程序及配置文件,服务配置程序等
├─data5 MySQL数据库文件目录
│ ├─BUS 公交线路查询数据库
│ ├─TD_OA 通达OA主数据库
│ ├─crscell 报表数据库
│ ├─MySQL MySQL系统数据库
│ ├─TD_OA_ARCHIVE 通达OA归档数据库
│ ├─ib_logfile0 InnoDB引擎使用的日志文件
│ ├─ib_logfile1 InnoDB引擎使用的日志文件
│ └─ibdata1 InnoDB引擎存储数据与索引的数据文件
├─logs OA服务等的日志文件目录
├─MyAdmin 通达OA的MySQL管理工具
├─mysql5 MySQL主程序文件
├─nginx 高性能的通达Nginx Web应用服务
├─tmp 临时文件目录
└─webroot 通达OA的WEB根目录(PHP程序目录)
├─attachment 部分OA头像、各模块配置文件存放目录
├─general 主要模块目录,所有的应用模块都放在此目录
│ ├─ …… 一般模块目录(略)
│ ├─ipanel 主控面板,集成了菜单、短信箱等应用控制界面
│ ├─mytable 桌面模块程序
│ └─system 系统功能模块,下级目录略
├─inc 系统通用程序及函数目录
├─ispirit OA精灵页面
├─mobile OA移动界面
├─module 系统组件
│ ├─dept_select 部门选择组件
│ ├─editor 简易HTML编辑器组件
│ ├─OC Office 文档在线编辑与阅读
│ ├─OC_NETDISK 文档在线编辑与阅读-仅适用于网络硬盘
│ ├─save_file 文件转存组件
│ ├─user_select 用户多选组件
│ └─user_select_single 用户单选组件
├─portal 门户界面
└─static 系统通用程序及静态文件目录
├─common 通用css文件及其引用的图片文件
├─images 所有代码中的标签src引用的图片文件
├─templates 登录界面模版
├─theme 界面主题
├─wav 微讯提醒声音
├─js 界面主题
├─templates 登录界面模版
└─modules 所有模块非通用的css文件及其引用的图片文件等的目录
├─address 通讯簿非通用css文件及其引用的图片文件
├─ …… 部分模块目录(略)
└─workflow 工作流非通用css文件及其引用的图片文件
├─webservice webservice接口,不建议使用
注:上表中加粗标示的目录是备份数据时需要备份的,是OA的所有数据所存放的目录。
xxxxxxxxxxListen = 8266 //监听端口ProcessNumber = 10 //fastcgi进程数xxxxxxxxxxListen = 2367 //监听端口MemoryWarning= 100 // 非工作时间OfficeNginx.exe占用内存的最大值,单位为兆字节(MB)MemoryMax= 200 // 工作时间OfficeNginx.exe占用内存的最大值,单位为兆字节(MB)xxxxxxxxxxHOST= localhost //服务器地址PORT=3336 // 监听端口USER=root // 用户PASSWORD=xxxxxx // 密码(优先级低于webroot\inc\db_config.php)xxxxxxxxxxSERVERIP=0.0.0.0 // IPSERVERPORT=1188 // 监听端口HTTPLISTENIP=0.0.0.0 HTTPPORT=1189 CENTERMODE=0 xxxxxxxxxxAUTH=xxxxxx // 密码MemoryWarning= 100 // 非工作时间OfficeNginx.exe占用内存的最大值,单位为兆字节(MB)MemoryMax= 200 // 工作时间OfficeNginx.exe占用内存的最大值,单位为兆字节(MB)xxxxxxxxxxdisplay_errors = Off //是否显示PHP程序错误log_errors = On //是否记录错误日志error_log = D:\MYOA\logs\php_errors.log //错误日志记录文件max_execution_time = 1800 //程序最大执行时间,单位秒memory_limit = 1024M //单个程序占用内存上限post_max_size = 2000M //表单提交最大数据量,单位MBupload_max_filesize = 2000M //上传单个附件大小,单位MBxxxxxxxxxxbasedir=D:/MYOA/mysql5/ //MySQL主程序路径datadir=D:/MYOA/data5/ //MySQL数据库路径tmpdir=D:/MYOA/tmp/ //缓存路径character-set-server= utf8 //MySQL数据库字编码port=3336 //端口wait_timeout=30 //SQL语句执行结束后自动断开时间interactive_timeout=30 //运行SQL语句时段开时间skip-name-resolve=on //避免外部锁定(默认是ON) innodb_file_per_table=1 //启用独立表空间模式注:以上所有的配置选项修改后都需要重启相应服务才会生效。

OfficeWeb服务守护OfficeFPM进程和OfficeNginx。OfficeFPM进程启动多个(ProcessNumber)FastCGI进程。OfficeWeb根据配置参数(MemoryWarning和MemoryMax)定时检测OfficeNginx的内存占用情况,保证OfficeNginx时刻处于正常响应状态。
通达OA为满足用户数据安全,原则上所有的php页面执行都将包含auth.inc.php权限验证程序,其中包含session合法性验证、访问路径授权验证等;
例:
xxxxxxxxxxinclude_once("inc/auth.inc.php");为保证通达OA功能显示标准统一,需要使用标准统一的HTML解析模式对页面进行解析和渲染,在所有包含HTML代码输出的页面都需要包含header.inc.php程序,其中包括采用的HTML标准、页面字符集、页面标题、标准界面样式表(style.css)等;
例:
xxxxxxxxxx$HTML_PAGE_TITLE = _("页面标题");include_once("inc/header.inc.php");为了防止用户输入不安全数据等,通达OA为您提供了用户输入数据($GET、$POST、$_COOKIE)过滤和校验程序,原则上所有php页面文件都需要包含,但如果页面已经包含过auth.inc.php、header.inc.php或conn.php,则无需再单独包含。
例:
xxxxxxxxxxinclude_once("inc/auth.inc.php");为方便用户快速连接操作数据库,且对SQL语句安全验证,原则上在进行数据库操作的所有php页面都需要包含td.class.php程序,但如果页面已经包含auth.inc.php程序,则无需再单独包含;
例:
xxxxxxxxxxinclude_once("inc/td.class.php");通达OA采用php通用i18n方案gettext扩展。php文件中所有中文字符串需要用“_()”函数包裹。
例:
xxxxxxxxxx$HTML_PAGE_TITLE = _("新闻");MySQL的数据库管理工具很多,phpMyAdmin是使用PHP编写的免费MySQL数据库管理工具。由于OA的MySQL数据库出于安全考虑,被配置为仅能从本机访问,所以使用phpMyAdmin这样的B/S结构的管理工具,可实现数据库的远程管理。
第一步、下载程序包
phpMyAdmin程序可以从其官方网站https://www.phpmyadmin.net/files/4.2.13.3/下载,建议下载all-language版本。注意:只支持4.2及更低版本,更高的版本和我们OA的设置并不兼容。低版本有可能因为停止维护等原因存在安全性隐患,请使用后删除或使用诸如navicat、mysql workbench其他mysql管理工具。
第二步、解压缩
在MYOA\webroot目录下新建一个目录,如mysql369(为了防止他人利用该工具侵入数据库系统,可把目录名设为比较复杂的,如MySQL2345,避免目录名被猜测到。),将下载的程序包解压后拷贝至mysql369目录下。
第三步、修改配置文件
用文本编辑器,如记事本,打开MySQL管理工具目录,复制config.sample.inc.php文件并改名为confing.inc.php,打开后修改以下配置信息:
xxxxxxxxxx$cfg['blowfish_secret'] = ''; //随便输入一个字符串,加密Cookie等信息 $cfg['Servers'][$i]['auth_type'] = 'http'; //http,config,cookie,建议使用http$cfg['Servers'][$i]['host'] = 'localhost'; //数据库地址,默认为localhost$cfg['Servers'][$i]['port'] = '3336'; //数据库端口,默认为3336第四步、使用phpMyAdmin
MySQL管理工具地址:http://OA地址/mysql369,注意,进入后先选择中文界面(中文-Chinese simplified )。该管理工具的使用需具有一定数据库基础,请勿进行危险操作,以免导致数据丢失。
如果出现如下报错情况,请下载phpmyadmin4.2以下版本,更高的版本和我们OA的设置并不兼容。

phpMyAdmin主界面如下

在左侧选择TD数据库,可查看OA所有的数据表,如下图

点击左侧的表名,则右侧列出该表的数据,如下图

phpMyAdmin的具体使用教程方法可以参考 通达网站/OA知识库/Office Anywhere 高级应用技巧/OA数据库管理工具/mysql网页方式管理工具/phpMyAdmin的安装和使用.wmv 。
创建一个模块一般需要经过以下几个步骤:根据功能建立程序存放目录、创建菜单、分配菜单权限、编码、测试等。
在MYOA\webroot\general下建议一个目录new_module,作为自己开发模块的目录,将程序放置于该目录下,默认页面是index.php或index.html或index.htm
用管理员帐号进入OA,打开 系统管理->菜单设置,在相应的一级菜单后点击“下一级”链接,在右侧的界面上点击“增加子菜单项”按钮,如下图所示:

详细阅读上图界面中的说明信息,按界面上说明的要求定义好菜单:
上级菜单:根据自己的实际应用情况调整。
子菜单项代码:两位的数字或字母,作为排序之用。
子菜单名称:(简体中文)根据自己的实际应用自行填写。
注意:如果是国际版,菜单名称不只是简体中文,还会有英文等语言。
子菜单模块路径:该菜单对应的程序目录,应为上一个步骤创建的目录名称。
菜单图片命名规则:如果为new_module,则该菜单对应的菜单图片名称为MYOA\webroot\static\images\menu\new_module.gif,需要自己创建或拷贝new_module.gif拷贝至以上路径。
用系统管理员账号,在菜单创建完成后跳转界面直接可以给指定菜单分配权限(首次分配菜单权限时需要验证超级密码,与系统管理->组织机构设置->角色与权限管理中超级密码一致),如下图所示:


也可以使用传统方式给新建菜单分配权限,用管理员帐号进入OA,打开 系统管理->组织机构设置->角色与权限管理,给相关的角色分配刚创建的菜单的使用权限,则相关角色的人员就可以在OA界面左侧的菜单中看到并访问该菜单。

为便于用户开发自己的模块,通达科技在用户服务区提供了Office Anywhere部份模块源码的下载,供开发人员参考。
用户自行开发OA的功能模块,需要根据OA的相关规范进行开发,这样既可以使自行开发的模块和OA的界面效果一致,又可以保证自行开发的程序在OA安全框架的保护之下,这样不仅可以保证新模块数据的安全,又可以使开发人员集中精力投入到模块功能的开发上。
OA的各功能模块下的每个程序都需要包含OA的安全验证程序:inc/auth.inc.php。该程序包含了对用户登录信息、是否有权限访问该路径等的检查等。具体的语法为:include_once("inc/auth.inc.php");为更好兼容更多版本的浏览器,需要使用标准统一的HTML解析模式对页面进行解析和渲染,在所有包含HTML代码输出的页面,都需要包含:inc/header.inc.php,输出统一的HTML头信息,包括采用的HTML标准、页面字符集、页面标题、标准界面样式表(style.css)等。在没有HTML代码输出的页面,不需要包含该文件。OA数据库的所有表名、字段名称全部使用小写字母,名称中如果有多个单词,使用下划线“_”连接,新模块中字段名也建议与表名统一使用小写字母,开发过程请注意。
在开发自己的功能模块时可以参考现有OA模块,把功能相似的OA模块代码复制一份,然后在OA 代码的基础上修改。以下几个小节介绍OA系统变量和数据库的使用。
使用PHP自带方法调试
在程序开发过程中,会遇到各种各样的问题,大多数的问题可以通过查看变量的值来确定,PHP提供了几个输出变量值的方法,在开发过程中可以灵活运用。
xxxxxxxxxx<?include_once("inc/auth.inc.php"); $HTML_PAGE_TITLE = _("功能模块名称");echo $HTML_PAGE_TITLE; //输出$HTML_PAGE_TITLE的值
print_r($_SESSION); //输出数组的键值信息
var_dump($_SESSION); //输出变量的详细信息,相比print_r更详细,包含变量的类型、长度等信息
使用TD::log方法进行调试
OA提供了一个记录日志的方法TD:: log($data, $namespace = 'common'),使用此方法,可以方便的将多个变量记录为一组日志。此日志的存储地址默认为D:\MYOA\logs\oa\月份$namespace.log。使用方法如下:
xxxxxxxxxx<?include_once("inc/auth.inc.php");
$HTML_PAGE_TITLE = _("功能模块名称"); TD::log([$HTML_PAGE_TITLE, $_SESSION], "debug"); //将$HTML_PAGE_TITLE, $_SESSION变量记录到debug.log文件中
debug.log文件内容如下:

OA系统提供了多个通过SESSION保存的当前用户的会话变量,分别是:
xxxxxxxxxx$_SESSION["LOGIN_UID"] //用户数字ID$_SESSION["LOGIN_USER_ID"] //用户名,无意义$_SESSION["LOGIN_BYNAME"] //用户名,又叫用户别名,登录使用$_SESSION["LOGIN_USER_NAME"] //用户真实姓名$_SESSION["LOGIN_USER_PRIV"] //用户角色ID$_SESSION["LOGIN_USER_PRIV_OTHER"] //用户辅助角色ID$_SESSION["LOGIN_SYS_ADMIN"] //用户是否有系统管理员权限$_SESSION["LOGIN_DEPT_ID"] //用户部门ID$_SESSION["LOGIN_DEPT_ID_OTHER"] //用户辅助部门ID$_SESSION["LOGIN_AVATAR"] //用户头像$_SESSION["LOGIN_THEME"] //用户界面主题$_SESSION["LOGIN_THEME_COLOUR"] //用户界面配色$_SESSION["LOGIN_FUNC_STR"] //用户模块权限$_SESSION["LOGIN_NOT_VIEW_USER"] //用户禁止查看用户列表$_SESSION["LOGIN_ANOTHER"] //限制同一个账号在不同端使用,无效暂时保留$_SESSION["LOGIN_DEPT_ID_JUNIOR"] //用户所在部门和所属部门合集字符串$_SESSION["LOGIN_CLIENT"] //用户登录OA的设备类型$_SESSION["LOGIN_USER_SEX"] //用户性别$_SESSION["LOGIN_MOBILE_FONTSIZE"] //移动端字体大小,共small、medium、large三种
如需使用这些会话变量,程序需要包含auth.inc.php,如下代码:
xxxxxxxxxx<?phpinclude_once("inc/auth.inc.php");echo _("我的登录用户名是") . $_SESSION["LOGIN_BYNAME"]; //本句中的.表示字符串连接
也可以注册新的会话变量,可以看到,此变量是一个数组形式,直接按照数组的语法添加即可,如下代码:
xxxxxxxxxx<?include_once("inc/auth.inc.php"); $_SESSION["NEW_SESS"] = "new_sess";
以下是一段样例代码index.php,可放置于new_module目录下,可作为开发OA应用程序的模版。
xxxxxxxxxx<?include_once("inc/auth.inc.php"); // 如需登录验证则包含,未登录将退出//include_once("inc/conn.php"); // 如需要连接数据库则包含,如已包含auth.inc.php,则无须包含conn.php//include_once("inc/utility_all.php"); // 如需要使用公用函数则包含
$HTML_PAGE_TITLE = _("功能模块名称");include_once("inc/header.inc.php"); // 如有HTML代码输出则包含?><body class="bodycolor"><?echo _("当前登录的用户为:").$_SESSION["LOGIN_USER_NAME"]."," . _("用户名为:").$_SESSION["LOGIN_BYNAME"];?></body></html>
程序运行结果如下:

OA目前支持MySQL、达梦、人大金仓、神舟通用等数据库(目前其他数据库正在陆续兼容中,具体可咨询销售人员),为保持各数据库的查询统一,各模块均采用medoo框架读取数据库,为便于以后调整,我们在medoo的基础上另外封装了一层调用方法,其他的使用方法不变,具体可以参考medoo中文文档。
以下程序代码为读取admin用户所属部门的示例:
xxxxxxxxxx<?include_once("inc/auth.inc.php"); // 如需登录验证则包含,未登录将退出include_once("inc/utility_all.php"); // 如需要使用公用函数则包含$HTML_PAGE_TITLE = _("功能模块名称");include_once("inc/header.inc.php"); // 如有HTML代码输出则包含?><body class="bodycolor"><?/*TD::DB() 为OA包装的操作数据库的对象方法,所有操作数据库的操作都要从此方法执行TD::tableFix("TABLE_NAME") 为OA封装的表名处理函数,所有表名都要用此方法包裹select() 为medoo的查询方法,具体可以参考medoo操作手册$_SESSION['LOGIN_USER_ID'] 为保存的当前登录用户的ID,具体参考系统变量章节*/$row = TD::DB()->select( TD::tableFix("TD_USER"), //表名 ["DEPT_ID","USER_NAME"], //要查询的字段 ["USER_ID" => $_SESSION['LOGIN_USER_ID'], //查询条件]);
if($row){ foreach($row as $val){ $DEPT_ID = $val["DEPT_ID"]; $USER_NAME = $val["USER_NAME"];
echo "$USER_NAME" . "用户所在部门为:<u>" . dept_long_name($DEPT_ID) . "</u>"; }}
?></body></html>
执行效果如下图:

另外,如果查询语句比较复杂,系统还保留了原生SQL语句的执行能力,以下程序的执行效果和之前的是一样的,但如无特殊需求,不推荐使用。
xxxxxxxxxx$query = "SELECT DEPT_ID, USER_NAME FROM " . TD::tableFix("TD_USER") . " where USER_ID = 'admin'";$row =TD::DB()->prepareQuery($query);if($row){ foreach($row as $val){ $DEPT_ID =$val["DEPT_ID"]; $USER_NAME = $val["USER_NAME"];
echo "$USER_NAME" . "用户所在部门为:<u>" . dept_long_name($DEPT_ID) . "</u>"; }}
从这段程序可以看出,使用OA系统提供的系统头文件和函数,访问数据库将是一件很轻松的事,不用操心数据库的连接参数等问题,只需简单的写下SQL语句,执行它。
更多数据库操作,如下:
Insert

Update

Delete

Count

prepareQuery

debug

MySQL数据库的连接参数在 MYOA\webroot\inc\db_config.php文件中配置,如果自己安装MySQL数据库,可自行修改连接参数。
OA封装了写入缓存和读取缓存两个方法,在OA内可以直接通过这两个方法进行缓存操作。
xxxxxxxxxx//写入TD::set_cache('MY_PRIV_'.$_SESSION['LOGIN_UID'].'_'.$MODULE_ID_SET, $MY_PRIV, 0);//读取$WEATHER_ARRAY = TD::get_cache("WEATHER_CACHE_".bin2hex($WEATHER_CITY)."_O");
在OA中也封装了一套操作redis的方法,使用方法如下:
xxxxxxxxxx<?phprequire_once("inc/auth.inc.php");include_once('inc/TRedis/TRedis.php'); //操作redis必须引入此文件
//获取Redis对象$redis = TRedis::redis();
//写入$redis->hmset('sms_new:'.$UID, $sms_info);//读取$ret = $redis->hgetall("sms_new:".$_SESSION['LOGIN_UID']);
//批量操作$pipe = $redis->pipeline(); //redis批量操作对象
$pipe->hmset('login:user:'.base64_encode($byname), $login_arr); //设定值$pipe->exec(); //执行
xxxxxxxxxxDB()方法说明: 返回medoo对象,用于操作数据库。参数: 无返回值: Medoo对象 tableFix()方法说明: 返回处理后的数据库表名,用于对数据库的表名进行加工处理,比如统一加前缀、后缀等可以在这里处理。参数: $tableName 表名返回值: 处理后的表名
get_cache($id)方法说明: 获取缓存内容。参数:$id 缓存id键值返回值: 缓存内容set_cache($id, $data, $ttl = 60)方法说明: 更新缓存内容。参数:$id //缓存id键值$data //缓存内容$ttl //更新时间返回值: 无 delete_cache($id)方法说明: 删除指定缓存。参数:$id //缓存id键值返回值: 无
x
ExcelReader()方法说明: 初始化Excel对象。参数:$filepath //文件地址$fieldMap //字段名称映射$fieldAttr //字段数组返回值: 头数据信息数组
xxxxxxxxxxgetNextRow()方法说明: 获取Excel下一行数据。参数: 无 返回值: 行数据数组
x
引用说明:use \engine\TFlowEngine;include_once ("inc/flow_engine2.0/inc/engine/TFlowEngine.php");TFlowEngine::getRunIdByModuleKey()方法说明: 获取流水号参数: $moduleKeyArr 参数键值对; $flowId 流程ID(可选); $flowPrcs 流程设计步骤ID(可选)。 返回值: 流水号,即runId TFlowEngine::getModuleKeyByRunId()方法说明:获取参数参数: $runId 流水号返回值:参数键值对 TFlowEngine::getRunData()方法说明:获取字段数据参数:$flowId 流程ID $runId 流水号返回值:数据键值对 TFlowEngine::newWork()方法说明:新建工作参数:$flowId 流程ID; $preFix 工作名称前缀(可选); $postFix 工作名称后缀(可选); $runName 工作名称(可选)。返回值:错误返回值:-1 流程ID传参格式错误; -50 没有新建工作权限; -51 强制前缀时不能为空; -52 强制后缀时不能为空; -53 强制前缀和后缀时都不能为空; -54 工作名称不能为空; -55 工作名称重复; -56 自增编号重复; -57 新建工作失败; -59 工作名称前缀不正确; -60 工作名称后缀不正确。 正确返回值:流水号。 TFlowEngine::handleWork()方法说明:办理工作(接收工作,更新步骤状态)参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID; $userId 当前办理人ID。返回值:错误返回值:-1 流程ID传参格式错误; -2 流水号传参格式错误; -307 无办理权限。 TFlowEngine::prepareTurnWork()方法说明:获取下一步办理节点参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID; $prcsKeyId 工作步骤主键ID。返回值:错误返回值:-1 流程ID传参格式错误; -2 流水号传参格式错误; -3 流程设计步骤ID传参格式错误; -4 工作实际步骤ID传参格式错误; 条件工作表达式错误:****; 不符合条件公式:****。 正确返回值(固定流程):[ ‘defaultNextPrcs’ => { defaultNextPrcs },‘op_user_show_info’ => { op_user_show_info }, ‘prcs_type’ => { prcs_type }, ‘sync_deal’ => { sync_deal }, ‘turn_priv’ => { turn_priv }, ‘gather_node’ => { gather_node }, ‘view_priv’ => { view_priv }, ‘view_user’ => { view_user }, ‘view_user_name’ => { view_user_name }, ‘defaultNextPrcs’ => { defaultNextPrcs }, ‘prcsData’ => [ ‘prcs_num’ => { prcs_num }, ‘next_prcs_name’ => { next_prcs_name }, ‘top_flag’ => { top_flag }, ‘user_lock’ => { user_lock }, ‘time_out’ => { time_out }, ‘time_out_modify’ => { time_out_modify }, ‘gather_node_have_flag’ => { gather_node_have_flag }, ‘auto_type’ => { auto_type }, ‘prcs_in_condition’ => { prcs_in_condition }, ‘prcs_op_uid’ => { prcs_op_uid }, ‘prcs_op_uname’ => { prcs_op_uname }, ‘prcs_uid’ => { prcs_uid }, ‘prcs_uname’ => { prcs_uname }, ‘is_child_flow’ => { is_child_flow } ]] 正确返回值(自由流程):[ 0 => [‘free_preset’ => { free_preset }, ‘preset’ => { preset }, ‘defaultNextPrcs’ => { defaultNextPrcs }, ‘sync_deal’ => { sync_deal }, ‘turn_priv’ => { turn_priv }, ‘gather_node’ => { gather_node }, ‘prcsData’ => [ ‘prcs_num’ => { prcs_num }, ‘prcs_type’ => { prcs_type }, ‘top_flag’ => { top_flag }, ‘user_lock’ => { user_lock }, ‘time_out_modify’ => { time_out_modify }, ‘next_prcs_name’ => { next_prcs_name }, ‘auto_type’ => { auto_type }, ‘prcs_num_new’ => { prcs_num_new } ]],1 => [],…] TFlowEngine::turnWork()方法说明:工作转交
参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID; $prcsKeyId 工作步骤主键ID; $prcsTo 转交步骤信息; [ { flowPrcs1 }, { flowPrcs2 }, { flowPrcs3 }, …] $prcsToUser 转交人员信息; [ ‘flowPrcs1’ => [ ‘PRCS_OP_USER’ => { PRCS_OP_USER }, ‘PRCS_USER’ => {PRCS_USER}],‘flowPrcs2’ => [ ‘PRCS_OP_USER’ => { PRCS_OP_USER }, ‘PRCS_USER’ => {PRCS_USER}],‘flowPrcs3’ => [ ‘PRCS_OP_USER’ => { PRCS_OP_USER }, ‘PRCS_USER’ => {PRCS_USER}],…] $prcsToInfo 转交其他信息。 [ ‘mobileFlag’ => { mobileFlag }, //移动端操作标记 ‘SMS_CONTENT’ => { SMS_CONTENT }, //事务提醒内容 ‘info_str_arr’ => { 0|1, //事务提醒下一步经办人 0|1, //短信提醒下一步经办人 0|1, //internet邮件提醒下一步经办人 0|1, //事务提醒流程发起人 0|1, //短信提醒流程发起人 0|1, //internet邮件提醒流程发起人 0|1, //事务提醒全部经办人 0|1, //短信提醒全部经办人 0|1 //internet邮件提醒全部经办人} //事务类型]返回值:-1 流程ID传参格式错误; -2 流水号传参格式错误; -3 流程设计步骤ID传参格式错误; -4 工作实际步骤ID传参格式错误; -5 工作步骤主键ID传参格式错误; -24 转交信息传参格式错误; -307 无办理权限; -400 工作已转交。 TFlowEngine::rapidTurnWork()方法说明:一键转交参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID。返回值:-1 流程ID传参格式错误; -2 流水号传参格式错误; -3 流程设计步骤ID传参格式错误; -4 工作实际步骤ID传参格式错误; -307 无办理权限; -400 工作已转交。 TFlowEngine::intrustWork()方法说明: 工作委托参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID; $toUser 被委托人ID; $smsContent 委托提醒内容; $msgCheck 事务提醒被委托人; $mobileCheck 手机短信提醒被委托人; $fromUser 委托人ID(可选),为空表示当前操作人。返回值:1 委托成功; -1 流程ID传参格式错误; -2 流水号传参格式错误; -3 流程设计步骤ID传参格式错误; -4 工作实际步骤ID传参格式错误; -14 委托人传参格式错误; -15 被委托人传参格式错误; -130 委托工作失败; -300 无权限进行工作委托; -301 不能委托给自己; -302 不能委托给主办人; -303 不能委托给其他经办人 -310 不能委托给非当前步骤经办人; -311 不能委托给未定义的经办人; -312 流程属性定义中禁止了委托; -400 工作已转交。 TFlowEngine::prepareBackWork()方法说明:获得退回节点参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID。返回值:错误返回值:-1 流程ID传参格式错误; -2 流水号传参格式错误; -3 流程设计步骤ID传参格式错误; -4 工作实际步骤ID传参格式错误。 正确返回值:[ 0 => [‘prcs_key_id’ => { prcs_key_id }, ‘run_id’ => { run_id }, ‘flow_prcs’ => { flow_prcs }, ‘prcs_id’ => { prcs_id },‘run_prcs_name’ => { run_prcs_name }, ‘is_child_run’ => { is_child_run }, ‘prcs_name’ => { prcs_name }, ‘user_info’ => [ 0 => [ ‘USER_ID’ => { USER_ID }, ‘OP_FLAG’ => { OP_FLAG }, ‘TOP_FLAG’ => {TOP_FLAG}, ‘DELIVER_TIME’ => {DELIVER_TIME}, ‘USER_NAME’ => {USER_NAME} ] , 1 => […], 2 => […]]], 1 => […], 2 => […],…] TFlowEngine::backWork()方法说明:工作退回参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID; $toPrcs 退回步骤信息; [ [‘FLOW_PRCS’ => { FLOW_PRCS },‘PRCS_ID’ => { PRCS_ID }],…] $smsContent 退回提醒内容; $config 其他参数。 [ ‘mobile_flag’ => { mobile_flag }, //0|1 移动端操作标记 ‘message_flag’ => {message_flag}, //0|1 事务提醒退回办理人 ‘mobsms_flag’ => {mobsms_flag}, //0|1 手机短信提醒退回办理人 ‘email_flag’ => {email_flag} //0|1 internet邮件提醒退回办理人]返回值:-1 流程ID传参格式错误; -2 流水号传参格式错误; -3 流程设置步骤ID传参格式错误; -4 工作实际步骤ID传参格式错误; -16 工作退回意见传参格式错误; -17 工作退回步骤信息传参格式错误; -306 有人正在办理中,不允许退回。 TFlowEngine::saveWork()方法说明:保存工作参数:$flowId 流程ID; $runId 流水号; $flowPrcs 流程设计步骤ID; $prcsId 工作实际步骤ID; $prcsKeyID 工作步骤主键ID; $postArr 表单提交数据。 [ ‘data_m1’ => { data_m1 }, ‘data_m2’ => { data_m2 }, ‘data_m3 => { data_m3 }, …]返回值:错误返回值:-1 流程ID传参格式错误; -2 流水号传参格式错误; -3 流程设计步骤ID传参格式错误; -4 工作实际步骤ID传参格式错误; -5 工作步骤主键ID传参格式错误。 正确返回值: 1 保存成功。xxxxxxxxxx函数原型:Message($TITLE, $CONTENT, $STYLE="" , $BUTTONS=array())功能描述:输出一个信息提示框的HTML代码参数:$TITLE //信息框标题$CONTENT //信息框提示信息$STYLE //信息框样式,可选的值有error、warning、stop、forbidden、help、info$BUTTONS //操作按钮数组返回值:无
xxxxxxxxxx函数原型:Button_Back($HTML_CHARSET = '')功能描述:输出一个返回按钮的HTML代码参数:$HTML_CHARSET //解析编码返回值:无
xxxxxxxxxx函数原型:find_id($STRING, $ID)功能描述:在字符串$STRING中查找子串$ID参数:$STRING //以英文逗号(,)连接的N个ID值的一个字符串,如a,b,c,d$ID //要查找的子符串,如c返回值:找到则返回true,否则返回false,布尔值
xxxxxxxxxx函数原型:remove_id($STRING, $ID)功能描述:在字符串$STRING中删除子串$ID参数:$STRING //以英文逗号(,)连接的N个ID值的一个字符串,如a,b,c,d$ID //要查找的子符串,如c返回值:返回处理后的$STRING字符串
xxxxxxxxxx函数原型:get_client_ip()功能描述:获取用户的客户端IP地址参数:无返回值:用户的客户端IP地址字符串
xxxxxxxxxx函数原型:csubstr(&$str, $start=0, $long=0, $ltor=true, $cn_len=2)功能描述:截取中文字符串参数:$str //要截取的字符串$start //截取起始位置,默认从头开始$long //要截取的长度$ltor //系统保留$cn_len //系统保留返回值:截取后的中文字符串。
xxxxxxxxxx函数原型:is_ip($IP)功能描述:判断一个字符串是否是一个合法的IP地址参数:$IP //IP地址字符串返回值:如果$IP是一个IP地址则返回true,否则返回false。
xxxxxxxxxx函数原型:add_log($TYPE,$REMARK,$OPERATOR)功能描述:添加系统日志参数:$TYPE //日志类型代码,参考系统代码设置下的“系统日志类型”$REMARK //备注$OPERATOR //产生日志的用户的用户名,一般为当前用户返回值:无
xxxxxxxxxx函数原型:get_code_name($CODE_NO,$PARENT_NO)功能描述:获取系统代码的描述参数:$CODE_NO //系统代码的代码值,如果多个代码则用英文逗号串起来$PARENT_NO //父类型代码值返回值:对应代码值的文字描述示例代码:echo get_code_name('0',' ZHIBAN_TYPE'); //输出“个人短信”echo get_code_name('0,1','SMS_REMIND'); //输出“个人短信,公告通知”
xxxxxxxxxx函数原型:dept_long_name($DEPT_ID)功能描述:获取部门ID为$DEPT_ID的多级部门名称参数:$DEPT_ID //部门ID返回值:$DEPT_ID对应的部门长名称,如“系统处/OA开发组”
xxxxxxxxxx函数原型:get_sys_para($PARA_NAME_STR, $USE_CACHE = true)功能描述:获取系统参数设置的参数值并返回一个数组参数:$PARA_NAME_STR //系统参数名称字符串,多个的话用英文逗号隔开$USE_CACHE //是否从缓存中获取返回值:系统参数值的数组代码示例:$PARA_ARRAY=get_sys_para("MENU_DISPLAY,MENU_EXPAND_SINGLE");$PARA_ARRAY为array( "MENU_DISPLAY" => "1", "MENU_EXPAND_SINGLE" => "0");
xxxxxxxxxx函数原型:set_sys_para($PARA_ARRAY)功能描述:批量设置系统参数参数:$PARA_ARRAY //系统参数数组,数组键值为参数名,如array("MENU_DISPLAY"=>"1")返回值:无
xxxxxxxxxx函数原型:send_mail($FROM,$TO,$SUBJECT,$BODY,$SMTP_SERVER,$SMTP_USER,$SMTP_PASS,$SMTP_AUTH=true,$FROM_NAME="",$REPLY_TO="",$CC="",$BCC="",$ATTACHMENT="",$IS_HTML=true,$SMTP_PORT=25,$SMTPSecure='')功能描述:发送邮件参数:$FROM //发件人邮件地址$TO //外部收件人邮箱串$SUBJECT //邮件主题$BODY //邮件内容$SMTP_SERVER //发送服务器$SMTP_USER //验证用户$SMTP_PASS //验证密码$SMTP_AUTH=true //是否需要验证$FROM_NAME="" //发送人姓名$REPLY_TO="" $CC=""$BCC=""$ATTACHMENT="" //附件$IS_HTML=true //是否html格式$SMTP_PORT=25 //smtp端口$SMTPSecure='' //此服务器要求SSL安全连接(1-是,0-不是)返回值:发送成功返回true,否则返回错误信息
xxxxxxxxxx函数原型:is_dept_parent($DEPT_ID,$PARENT_ID)功能描述:判断一个部门是否是另外一个部门的上级部门参数:$DEPT_ID //要判断的部门ID$PARENT_ID //上级部门ID返回值: 是则返回true,否则返回false。
xxxxxxxxxx函数原型:top_dept($DEPT_ID)功能描述:获取部门ID为$DEPT_ID的部门的最上级部门的ID。参数:$DEPT_ID //部门ID返回值: 最上级部门的ID。
xxxxxxxxxx函数原型:GetDeptNameById($ID_STR)功能描述:获取N个部门的部门名称。参数:$ID_STR //N个部门的ID,用逗号串起来,如“1,2,”返回值: N个部门名称字符串,用逗号串起来,如“系统部,OA开发组”。
xxxxxxxxxx函数原型:GetPrivNameById($ID_STR)功能描述:获取N个角色的角色名称。参数:$ID_STR //N个角色的ID,用逗号串起来,如“1,2,”返回值: N个角色名称字符串,用逗号串起来,如“OA管理员,职员”。
xxxxxxxxxx函数原型:GetUserNameById($ID_STR)功能描述:获取N个用户的用户姓名。参数:$ID_STR //N个用户的用户名,用逗号串起来,如“admin,lqh,”返回值: N个用户的真实姓名字符串,用逗号串起来,如“系统管理员,刘清华”。
xxxxxxxxxx函数原型:GetUserNameByUid($ID_STR)功能描述:获取N个用户的用户姓名。参数:$ID_STR //N个用户的数字,用逗号串起来,如“1,2,”返回值: N个用户的真实姓名字符串,用逗号串起来,如“系统管理员,刘清华”。
xxxxxxxxxx函数原型:my_exclude_uid()功能描述:获取当前用户不能与之通讯的用户的数字ID(UID)。参数:无返回值: 当前用户不能与之通讯的用户的数字ID(UID)。
xxxxxxxxxx函数原型:GetUnionSetOfChildDeptId($DEPT_ID_STR)功能描述:获得下级部门的并集。参数:$DEPT_ID_STR //部门ID的字符串返回值: 查询部门的下级部门ID的并集
xxxxxxxxxx函数原型:GetfunmenuByuserID ($USER_ID)功能描述:获取用户拥有的菜单权限。参数:$USER_ID //用户的USER_ID返回值: 有权限的菜单ID的集合
xxxxxxxxxx函数原型:is_module_manager($module_id)功能描述:判断当前用户是否有指定模块的管理员角色。参数:$module_id //指定功能模块代号1-email,2-diary,3-notify,4-knowledge,5-hr,6-workflow返回值: True或false
xxxxxxxxxx函数原型:set_priv_menu_priv ($priv_id_str, $user_id_str="")功能描述:菜单权限设置,设置角色菜单权限时更新user_function表中菜单权限信息,批量修改用户辅助角色时也更新。参数:$priv_id_str //设置菜单的角色id串$user_id_str //设置菜单的用户名串
返回值: 无
xxxxxxxxxx函数原型:set_uid_menu_priv ($uid, $user_id, $priv_id_str)功能描述:新建/修改用户时角色变动时更新菜单权限设置user_function参数:$uid //用户uid$user_id //用户user_id$priv_id_str //用户角色id与辅助角色id合集串
返回值: 无
xxxxxxxxxx函数原型:del_user_menu_priv ($user_id_str)功能描述:删除用户时删除菜单权限设置user_function表中对应数据参数:$user_id_str //删除的用户名串返回值: 无
xxxxxxxxxx函数原型:GetUidByOther ($user_id_str="", $priv_id_str="", $dept_id_str="")功能描述:根据用户名串/角色ID串/部门ID串获取对应UID参数:$user_id_str //用户user_id串$priv_id_str //用户角色id与辅助角色id合集串$dept_id_str //用户部门id与辅助部门id合集串
返回值: 对应的用户uid串
xxxxxxxxxx函数原型:is_dept_priv($DEPT_ID,$POST_PRIV="",$POST_DEPT="",$USER_FLAG=false,$PRIV_FLAG="")功能描述:查看$DEPT_ID是否属于本人管理范围参数:$DEPT_ID //部门ID$POST_PRIV="" //管理范围$POST_DEPT="" //管理范围指定部门$USER_FLAG=false $PRIV_FLAG="" 返回值:1、 是2、 否
xxxxxxxxxx函数原型:send_sms($SEND_TIME,$FROM_ID,$TO_ID,$SMS_TYPE,$CONTENT,$REMIND_URL="")功能描述:发送内部短消息。参数:$SEND_TIME //发送时间字符串,如“2013-11-20 09:00:00”$FROM_ID //发送人用户名,如“admin”$TO_ID //接收人用户名用逗号串起来的字符串,如“lqh,lxq”$SMS_TYPE //短信类型代码,参考系统代码设置下的“内部短消息类型”$CONTENT //短信内容$REMIND_URL //点击短信提醒弹出窗口的“查看详情”打开的地址返回值: 无
xxxxxxxxxx函数原型:delete_sms($SMS_ID_STR,$DEL_TYPE)功能描述:删除内部短消息。参数:$SMS_ID_STR //要删除的短信ID串,用逗号串起来,如“1,2,3”$DEL_TYPE //DEL_TYPE=1 删除收到的短信,DEL_TYPE=2 删除发送的短信返回值: 无
xxxxxxxxxx函数原型:send_mobile_sms_user($SEND_TIME,$FROM_ID,$TO_ID,$CONTENT,$TYPE)功能描述:给OA用户发送手机短信。参数:$SEND_TIME //发送时间字符串,如“2013-11-20 09:00:00”$FROM_ID //发送人用户名,如“admin”$TO_ID //接收人用户名用逗号串起来的字符串,如“lqh,lxq”$CONTENT //短信内容$TYPE //短信类型代码,参考系统代码设置下的“内部短消息类型”返回值: 无
xxxxxxxxxx函数原型:send_mobile_sms($SEND_TIME,$FROM_ID,$PHONE,$CONTENT)功能描述:向指定号码发送手机短信。参数:$SEND_TIME //发送时间字符串,如“2013-11-20 09:00:00”$FROM_ID //发送人用户名,如“admin”$PHONE //接收手机号码字符串,如“138xxxxxxxx,139xxxxxxxx”$CONTENT //短信内容返回值: 无
xxxxxxxxxx函数原型:upload($PREFIX="ATTACHMENT",$MODULE="" , $OUTPUT=true)功能描述:上传附件,可以一次上传多个附件。参数:$PREFIX //表单File控件名称的前缀,一般为默认即可$MODULE //模块代码,如内部邮件为email,为空则根据程序路径自动判断$OUTPUT //参数判断返回值: 无
xxxxxxxxxx函数原型:delete_attach($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")功能描述:删除附件,可以一次删除多个附件。参数:$ATTACHMENT_ID //附件ID,多个附件ID用逗号隔开$ATTACHMENT_NAME //附件名称,多个附件名称用*号隔开$MODULE //模块代码,如内部邮件为email,为空则根据程序路径自动判断断返回值: 无
xxxxxxxxxx函数原型:attach_size($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")功能描述:获取附件大小。参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称$MODULE //模块代码,如内部邮件为email,为空则根据程序路径自动判断断返回值: 附件大小,单位字节。
xxxxxxxxxx函数原型:copy_attach($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE_SRC="",$MODULE_DESC="", $ID_IS_REAL = true)功能描述:拷贝一个或多个附件。参数:$ATTACHMENT_ID //附件ID,多个附件ID用逗号隔开$ATTACHMENT_NAME //附件名称,多个附件名称用*号隔开$MODULE_SRC //原附件所属模块代码,为空则根据程序路径自动判断断$MODULE_DESC //新附件所属模块代码,为空则根据程序路径自动判断断$ID_IS_REAL //$ATTACHMENT_ID是文件的真实ID,还是attach_id_decode过之后的,数据库中存的一般是真实的返回值: 新附件的附件ID串,多个附件的话用逗号隔开。
xxxxxxxxxx函数原型:is_uploadable($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否允许上传。参数:$FILE_NAME //要判断的文件名返回值: 允许上传则返回true,否则返回false。
xxxxxxxxxx函数原型:is_text($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否是文本文件。参数:$FILE_NAME //要判断的文件名返回值: 是文本文件则返回true,否则返回false。
xxxxxxxxxx函数原型:is_office($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否是Office文档。参数:$FILE_NAME //要判断的文件名返回值: 是Office文档则返回true,否则返回false。
xxxxxxxxxx函数原型:is_image($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否是图片。参数:$FILE_NAME //要判断的文件名返回值: 是图片则返回true,否则返回false。
xxxxxxxxxx函数原型:is_viewable($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否可以直接浏览,如htm、pdf、图片等。参数:$FILE_NAME //要判断的文件名返回值: 可以直接浏览则返回true,否则返回false。
xxxxxxxxxx函数原型:is_media($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否是媒体文件,如视频、音频文件等。参数:$FILE_NAME //要判断的文件名返回值: RealPlayer播放类型返回1,如rm、rmvb等MediaPlayer播放类型返回2,如wmv、mpeg等可直接在浏览器里打开的类型返回3,如图片、pdf、html等Flash播放类型返回4,如flv,fla等其它返回0
xxxxxxxxxx函数原型:dir_size($dir)功能描述:根据目录路径返回其下属子目录和文件的大小。参数:$dir //服务器目录路径,如D:/MYOA返回值: 目录大小,单位字节。
xxxxxxxxxx函数原型: delete_dir($DIR, $RECYCLE = true, $MODULE = "") 功能描述: 根据目录路径删除该目录及其所有下属子目录和文件。 参数: $DIR //服务器目录路径,如D:/MYOA $RECYCLE //删除目录和文件前,是否放到oa指定的回收目录,true放到回收目录 $MODULE //指定回收目录的模块代码返回值: 无
xxxxxxxxxx函数原型:attach_sub_dir()功能描述:根据程序路径判断其所属模块。参数:无返回值: 附件所属模块代码,如在/general/email/new/submit.php中调用该函数则返回email。
xxxxxxxxxx函数原型:attach_real_path($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")功能描述:根据附件的ID、名称等获取该附件在服务器上存储的物理路径。参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称$MODULE //附件所述模块代码返回值: 附件在服务器上的物理路径,如D:/MYOA/attach/email/1311/123456789.二次开发手册.doc。
xxxxxxxxxx函数原型:attach_id_encode($ATTACHMENT_ID,$ATTACHMENT_NAME)功能描述:根据附件的真实ID和名称获取在前台代码中显示的ID。参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称返回值: 经过加密处理的ID。
xxxxxxxxxx函数原型:attach_id_decode($ATTACHMENT_ID,$ATTACHMENT_NAME)功能描述:根据附件的加密ID和真实名称获取真实ID。参数:$ATTACHMENT_ID //附件加密ID$ATTACHMENT_NAME //附件真实名称返回值: 附件的真实ID。
xxxxxxxxxx函数原型:td_copy($source, $dest)功能描述:拷贝文件。参数:$source //要复制的文件$dest //复制文件的目标路径返回值: 成功则返回 true,否则返回 FALSE
xxxxxxxxxx函数原型:td_rename($oldname, $newname)功能描述:重命名文件或目录。参数:$oldname //要重命名的文件或目录$newname //文件或目录的新名称返回值: 成功则返回 true,否则返回 FALSE
xxxxxxxxxx函数原型:td_move_uploaded_file($filename, $destination)功能描述:将上传的文件移动到新位置。参数:$filename //要移动的文件$destination //文件的新位置返回值: 成功则返回 true,否则返回 false
xxxxxxxxxx函数原型:td_file_put_contents($filename, $data, $flag = FALSE)功能描述:把一个字符串写入文件中。参数:$filename //要写入数据的文件$data //要写入的数据$flag //如何打开/写入文件,一般为默认即可返回值: 写入到文件内数据的字节数
xxxxxxxxxx函数原型:add_attach_module($MODULE , $MODULE_NAME="")功能描述:在数据库attachment_module表中增加一条模块记录。参数:$MODULE //附件所属模块代码$MODULE_NAME //附件所属模块名称返回值: 无
xxxxxxxxxx函数原型:attach_module_id($MODULE)功能描述:根据模块名称取得attachment_module表中模块的id参数:$MODULE //附件所属模块代码返回值: attachment_module表中模块的id
xxxxxxxxxx函数原型:attach_sign_key($ATTACHMENT_ID, $ATTACHMENT_NAME, $ID_IS_REAL = false)功能描述:获取office文档的签章的密钥参数:$ATTACHMENT_ID //附件的ID$ATTACHMENT_NAME //附件的名称$ID_IS_REAL //$ATTACHMENT_ID是否是真实ID返回值: Office文档返回签章密钥,其他文件返回 0
xxxxxxxxxx函数原型:attach_sign_key_netdisk($FILE_PATH)功能描述:通过网络硬盘信息,获取office文档的签章的密钥参数:$FILE_PATH //通过网路硬盘信息获得的附件在服务器上存储的物理路径 返回值: Office文档返回签章密钥,其他文件返回 0
xxxxxxxxxx函数原型:attach_real_path_netdisk($DISK_ID, $ATTACH_DIR, $ATTACH_NAME = "")功能描述:通过网络硬盘获取附件在服务器上存储的物理路径参数:$DISK_ID //对应网络硬盘表中DISK_ID值$ATTACH_DIR //附件的路径$ATTACH_NAME //附件名称
返回值: 附件在服务器上存储的物理路径
xxxxxxxxxx函数原型:cache_attach_para()功能描述:更新附件参数缓存参数:无返回值: 无
xxxxxxxxxx函数原型:attach_url($ATTACHMENT_ID, $ATTACHMENT_NAME, $MODULE, $OTHER=array())功能描述:根据附件信息获得附件的相关链接地址,如下载、查看、阅读、编辑等参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称$MODULE //附件所属模块代码$OTHER //office文档操作权限,默认不填返回值: 附件链接地址数组,$URL_ARRAY = array( ‘down’=> xxx, //下载 ‘rename’=> xxx,//重命名 调用ReNameFile(attachment_id, attachment_name) ‘delete’=> xxx,//删除,调用delete_attach(attachment_id, attachment_name) ‘office_read’=> xxx,//阅读 ‘office_edit’=> xxx,//编辑 ‘office_preview’=> xxx,//Excel文件在线预览 ‘view’=> xxx,//图片等直接查看 ‘save’=> xxx,//转存,调用SaveFile(attachment_id, attachment_name)); 标准附件显示方式可以直接调用attach_link函数实现相关链接输出显示,如果需要直接获取附件的下载路径等信息,可调用attach_url函数获取相关链接地址数组。
xxxxxxxxxx函数原型:attach_url_pda($ATTACHMENT_ID, $ATTACHMENT_NAME, $P, $MODULE)功能描述:根据附件信息获得附件操作时的跳转路径,pda访问时参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称$P //密钥$MODULE //模块所属模块代码返回值: 附件链接地址数组,pda访问时URL_ARRAY = array( ‘down’=> xxx, //下载);
xxxxxxxxxx函数原型:attach_link($ATTACHMENT_ID,$ATTACHMENT_NAME,$SHOW_SIZE=0,$DOWN_PRIV=1,$DOWN_PRIV_OFFICE=1,$EDIT_PRIV=0,$DELETE_PRIV=0,$NEW_LINE=1,$SAVE_FILE=1,$CREATE_IMAGE=0,$MODULE="",$IS_UTF8=false,$FORMAT=0)功能描述:附件的操作权限参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称$SHOW_SIZE //是否显示文件大小$DOWN_PRIV //是否可以下载$DOWN_PRIV_OFFICE //office文档是否可以下载$EDIT_PRIV //是否可以编辑$DELETE_PRIV //文件是否可以删除,文件柜中文件时候可以重命名$NEW_LINE //操作按钮是否换行,默认1$SAVE_FILE //文件是否可以转存$CREATE_IMAGE //图片是否可以插入正文$MODULE //原附件所属模块代码,为空则根据程序路径自动判断断$IS_UTF8 //是否是UTF8编码返回值: 文件操作集合组成的按钮
xxxxxxxxxx函数原型:attach_link_pda($ATTACHMENT_ID,$ATTACHMENT_NAME,$P,$MODULE="",$SHOW_SIZE=1,$DOWN_PRIV=1,$NEW_LINE=0)功能描述:pda访问时,附件的操作权限参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称$P // $MODULE //原附件所属模块代码,为空则根据程序路径自动判断断$SHOW_SIZE //是否显示文件大小$DOWN_PRIV //文件是否可以下载$NEW_LINE //操作按钮是否换行,默认0 返回值: pda访问时的文件操作集合组成的按钮
xxxxxxxxxx函数原型:attach_url_old($ATTACHMENT_ID, $ATTACHMENT_NAME)功能描述:根据附件信息获得附件操作时的跳转路径参数:$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称返回值: 同attach_url,但只适用于webroot/attachment目录下存储的URL_ARRAY = array( ‘down’=> xxx, //下载 ‘view’=> xxx, //查看);
xxxxxxxxxx函数原型:upload_old($ATTACHMENT,$ATTACHMENT_NAME)功能描述:上传附件。存储在webroot\attachment目录下的附件参数:$ATTACHMENT //表单File控件名称的前缀,一般为默认即可$ATTACHMENT_NAME //附件名称返回值: 一个随机生成数,即附件的ID
xxxxxxxxxx函数原型:add_attach_old($SOURCE_FILE, $ATTACHMENT_ID, $ATTACHMENT_NAME)功能描述:添加附件(webroot\attachment目录下的附件)参数:$SOURCE_FILE //附件文件$ATTACHMENT_ID //附件ID$ATTACHMENT_NAME //附件名称返回值: 成功返回ture,失败返回false
xxxxxxxxxx函数原型:delete_attach_old($ATTACHMENT_ID,$ATTACHMENT_NAME)功能描述:删除附件,可以一次删除多个附件。删除的是webroot\attachment目录下的附件参数:$ATTACHMENT_ID //附件ID,多个附件ID用逗号隔开$ATTACHMENT_NAME //附件名称,多个附件名称用*号隔开返回值: 无
xxxxxxxxxx函数原型:add_attach($SOURCE_FILE, $ATTACH_NAME, $MODULE="", $YM="", $ATTACH_SIGN=0, $ATTACH_ID="")功能描述:将附件转存,返回转存后得到的附件的新id参数:$SOURCE_FILE //附件文件$ATTACH_NAME //附件名称$MODULE //附件所属模块代码$YM //年月信息$ATTACH_SIGN //office文档签章的密钥$ATTACH_ID //附件ID返回值: 新的附件的新ID
xxxxxxxxxx函数原型:copy_attach_netdisk($ATTACH_DIR,$ATTACH_NAME,$DISK_ID,$MODULE="")功能描述:通过网络硬盘方式复制一个或多个附件参数:$ATTACH_DIR //附件目录$ATTACH_NAME //附件名称$DISK_ID //网络硬盘ID$MODULE //附件所属模块代码返回值: 新的附件新ID组成的串,用逗号连接
xxxxxxxxxx函数原型:copy_sel_attach($ATTACH_NAME,$ATTACH_DIR,$DISK_ID)功能描述:复制一个或多个附件参数:$ATTACH_NAME //附件名称$ATTACH_DIR //附件目录$DISK_ID //网络硬盘ID返回值: 新的附件新ID组成的串,用逗号连接
xxxxxxxxxx函数原型:office_attach($NEW_TYPE,$NEW_NAME,$MODULE="")功能描述:创建Office附件参数:$NEW_TYPE //文档类型$NEW_NAME //文件名称,无后缀$MODULE //附件所属模块代码返回值: 新的附件的新ID
xxxxxxxxxx函数原型:create_attach($NAME,$CONTENT,$MODULE="")功能描述:创建一个附件参数:$NAME //文件名$CONTENT //文件内容$MODULE //附件所属模块代码返回值: 新的附件的新ID
xxxxxxxxxx函数原型:is_editable($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否可以编辑参数:$FILE_NAME //要判断的文件名返回值: 可以编辑则返回true,否则返回false。
xxxxxxxxxx函数原型:is_wps($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否是wps类型参数:$FILE_NAME //要判断的文件名返回值: 是wps则返回true,否则返回false。
xxxxxxxxxx函数原型:is_ppt_xls($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否ppt或excel文档。参数:$FILE_NAME //要判断的文件名返回值: 是ppt或excel文档则返回true,否则返回false。
xxxxxxxxxx函数原型:is_thumbable($FILE_NAME)功能描述:根据附件名称判断该类型的文件是否是网页图片。(jpg,jpeg,png,gif中的一种)参数:$FILE_NAME //要判断的文件名返回值: 是网页图片则返回true,否则返回false。
xxxxxxxxxx函数原型:image_mimetype($fichier)功能描述:根据文件类型取得文件的图标参数:$fichier //文件名返回值: 对应的图片名称
xxxxxxxxxx函数原型:file_type($file_name)功能描述:判断文件是不是系统文件(.db)参数:$file_name //文件名返回值: 如果是系统文件返回true,否则返回false。
xxxxxxxxxx函数原型:file_type($file_name)功能描述:取得文件类型参数:$file_name //文件名返回值: 文件类型
xxxxxxxxxx函数原型:mime_type($file_name)功能描述:取得文件HTTP协议Content-Type参数:$file_name //文件名返回值: 文件HTTP协议Content-Type
xxxxxxxxxx函数原型:trim_office_attach($ATTACHMENT_ID, $ATTACHMENT_NAME)功能描述:从传入的附件中过滤掉offcie文档附件参数:$ATTACHMENT_ID //附件ID,多个用“,”连接$ATTACHMENT_NAME //附件名称,多个用“*”连接返回值: 过滤掉office文档之后的附件数组
xxxxxxxxxx函数原型:dir_file_nums($dir)功能描述:取得目录下的文件数量参数:$dir //目录路径返回值: 目录下文件数量
xxxxxxxxxx函数原型:CreateThumb($file,$maxwdt,$maxhgt, $dest, $quality=1)功能描述:创建图片的缩略图参数:$file //图片文件$maxwdt //最大宽度$maxhgt //最大高度$dest //创建图片的保存位置 $quality //图片质量返回值: 创建成功返回true,否则返回 false。
xxxxxxxxxx函数原型:ReplaceImageSrc($CONTENT, $ATTACHMENTS=array(), $MODULE="")功能描述:将附件中的图片显示在正文里参数:$CONTENT //正文内容$ATTACHMENTS //表单中提交的附件内容$MODULE //附件所属模块代码返回值: 包含了图片的正文内容
xxxxxxxxxx函数原型:trim_inserted_image($CONTENT, $ATTACHMENT_ID, $ATTACHMENT_NAME)功能描述:获取排除掉已经插入到正文中的图片,剩下的附件参数:$CONTENT //正文内容$ATTACHMENT_ID //附件ID,多个附件ID用逗号隔开$ATTACHMENT_NAME //附件名称,多个附件名称用*号隔开返回值: 剩余附件的数量,附件ID (多个用逗号连接),附件名称(多个用*连接)组成的数组
xxxxxxxxxx函数原型:backup_file($FILE_SRC)功能描述:根据附件在服务器上存储的物理路径备份文件参数:$FILE_SRC //附件在服务器上存储的物理路径返回值: 由路径,经过处理时间,文件名组成的字符串
无函数原型:oc_log($ATTACH_ID, $ATTACH_NAME, $LOG_TYPE="2", $BACKUP_FILE="")功能描述:记录备份日志参数:$ATTACH_ID //附件ID$ATTACH_NAME //附件名称$LOG_TYPE //普通附件:1 阅读,2 编辑保存,4 编辑,3 下载// 网络硬盘:5 下载(阅读),6 编辑保存$BACKUP_FILE //经过backup_file()方法得到的文件名字符串信息返回值: 无
函数原型:attach_id_explode($ATTACHMENT_ID)功能描述:根据附件ID,拆分获得附件在附件表中的基本信息参数:$ATTACHMENT_ID //附件ID返回值: 附件表中id,附件id,年月信息,签章的密钥组成的数组
xxxxxxxxxx函数原型:attach_id_implode($AID, $YM, $ATTACHMENT_ID, $SIGN_KEY = 0)功能描述:根据附件在附件表中的基本信息,取得附件新ID参数:$AID //附件表中id$YM //年月信息$ATTACHMENT_ID //附件表中的附件id$SIGN_KEY //签章的密钥返回值: 返回 id,年月信息,签章的密钥这些组成的附件id
xxxxxxxxxx函数原型:GetWebMailNumByUid ($UID)功能描述:判断是否禁用internet邮箱参数:$UID //用户UID 返回值: 返回可使用Internet邮箱数量,0为不限制
xxxxxxxxxx$ USER_ID_STR //用户user_id串函数原型:GetSentMailNum ($USER_ID_STR="",$BEGIN_TIME="",$END_TIME="")功能描述:获取发送邮件的数量参数:$USER_ID_STR //用户user_id串$BEGIN_TIME //开始时间$END_TIME //结束时间返回值: 返回发件人总数数组
xxxxxxxxxx$ TO_STR //用户user_id串函数原型:trim_notlogin ($TO_STR)功能描述:过滤掉离职人员参数:$TO_STR //用户user_id串返回值: 过滤以后的user_id串
xxxxxxxxxx函数原型:insert_to_address ($TO_WEBMAIL)功能描述:增加WEB邮箱联系人到通讯簿参数:$TO_WEBMAIL //外部邮箱地址串返回值: 无
xxxxxxxxxx$ FIELD //排序字段函数原型:get_email_data ($FIELD,$ASC_DESC,$BOX_ID,$WHERE_STR,$PAGE_ZISE,$TIMESTAMP,$CURNUM,$IS_WEBMAILBOX,$IS_MAIN,$BOXNAME,$list_view)功能描述:获取邮件数据参数:$FIELD //排序字段$ASC_DESC //正序或倒序$BOX_ID //邮箱ID$WHERE_STR //查询条件$PAGE_ZISE //每页显示数$TIMESTAMP //当前时间戳$CURNUM //当前分页数$IS_WEBMAILBOX //是否有有外部邮件权限$IS_MAIN //主服务查询参数$BOXNAME //当年邮箱类别(inbox, delbox)$list_view //分页参数返回值: 邮件数据数组
xxxxxxxxxx$ tobox //邮箱主体ID函数原型:remove_email($tobox,$email_str)功能描述:移动邮件参数:$tobox //邮箱主体ID$email_str //EMAIL邮件ID串返回值: ok或error
x
$ FIELD //排序字段函数原型:get_sentbox_data ($FIELD,$ASC_DESC,$WHERE_STR,$PAGE_ZISE,$TIMESTAMP,$CURNUM,$IS_WEBMAILBOX,$IS_MAIN,$list_view)功能描述:获取已发送中的数据参数:$FIELD //排序字段$ASC_DESC //正序或倒序$WHERE_STR //查询条件$PAGE_ZISE //每页显示数$TIMESTAMP //当前时间戳$CURNUM //当前分页数$IS_WEBMAILBOX //是否有有外部邮件权限$IS_MAIN //主服务查询参数$list_view //分页参数返回值: 邮件数据数组
xxxxxxxxxx函数原型:delete_email ($email_str)功能描述:删除邮件参数:$email_str // EMAIL_ID串返回值: Ok或error
xxxxxxxxxx函数原型:destroy_email ($email_str)功能描述:删除邮件参数:$email_str // EMAIL_ID串返回值: Ok或error
xxxxxxxxxx函数原型:get_time ($SEND_TIME_U)功能描述:时间转换参数:$SEND_TIME_U // 时间戳返回值: 与当前时间对比后的字符串
xxxxxxxxxx函数原型:email_count ($BOX_NAME,$BOX_ID="")功能描述:查询邮件数量参数:$BOX_NAME // 邮箱主体名称(inbox, outbox, sentbox, delbox, waitbox, backbox)$BOX_ID // 邮箱ID返回值: 返回总数
xxxxxxxxxx函数原型:get_outbox_data ($FIELD,$ASC_DESC,$WHERE_STR,$PAGE_ZISE,$TIMESTAMP,$CURNUM,$IS_MAIN)功能描述:获取草稿箱数据参数:$FIELD // 排序条件$ASC_DESC // 正序或倒序$WHERE_STR // 查询条件$PAGE_ZISE // 分页显示数$TIMESTAMP // 当前时间戳$CURNUM // 当前分页数$IS_MAIN // 主服务查询参数返回值: 返回数据数组
xxxxxxxxxx函数原型:delete_outbox_email ($email_str)功能描述:删除草稿箱邮件参数:$BOX_NAME // 邮箱ID串返回值: Ok或error
xxxxxxxxxx函数原型:insert_taskcenter ($CAL_ID)功能描述:新增事务或周期性事务转成一般事务则插入taskcenter表参数:$CAL_ID // 日程ID返回值: 无
xxxxxxxxxx函数原型:add_calendar ($CAL_ARRAY,$IS_REMIND,$IS_REMIND2)功能描述:新增事务或周期性事务转成一般事务则插入taskcenter表参数:$CAL_ARRAY // 插入日程数据的数组$IS_REMIND // 事务提醒$IS_REMIND2 // 短息提醒返回值: 日程状态数组cal_id:日程ID,status: success\error
xxxxxxxxxx函数原型:update_calendar ($CAL_ARRAY,$CAL_ID,$IS_REMIND=0,$IS_REMIND2=0,$get_repeat)功能描述:修改日程参数:$CAL_ARRAY // 修改日程数据的数组$CAL_ID // 事务提醒$IS_REMIND // 短息提醒$IS_REMIND2 // 短息提醒$get_repeat // 短息提醒返回值: 日程状态数组cal_id:日程ID,status: success\error
xxxxxxxxxx函数原型:get_list_data ($view,$begin_date,$end_date,$CONDITION_STR="",$IS_MAIN="")功能描述:获取日程数据参数:$view // 视图状态(agendaWeek, agendaDay, month)$begin_date // 开始时间$end_date // 结束时间$CONDITION_STR // 查询条件$IS_MAIN // 主服务查询参数返回值: 日程数组信息
xxxxxxxxxx函数原型:delete_calendar ($CAL_ID)功能描述:删除日程参数:$CAL_ID // 日程ID返回值:success 或error
公用组件为JavaScript脚本的前台代码,目的是为了简化前端程序的二次开发,开发出和OA结合更紧密、更一致的功能。
x
函数原型:SelectUser($FUNC_ID, $MODULE_ID, $TO_ID, $TO_NAME, $MANAGE_FLAG, $FORM_NAME, $USE_UID)功能描述:弹出一个人员多选窗口加载文件:/static/js/module.js参数:$FUNC_ID //子菜单项ID$MODULE_ID //模块ID,系统保留,传递空值即可$TO_ID //存放已选人员用户名的字段名,多个用户名用英文逗号隔开$TO_NAME //存放已选人员用户真实姓名的字段名,多个姓名用英文逗号隔开$MANAGE_FLAG //是否显示不允许登录OA人员,默认为0$FORM_NAME //表单名称,默认为“form1”$USE_UID //是否使用UID,默认为空则使用USER_ID返回值:无
示例代码:
<script src="/static/js/module.js"></script><form action="add.php" method="post" name="form1"><input type="hidden" name="TO_ID" value=""><textarea cols=40 name="TO_NAME" rows=2 wrap="yes" readonly></textarea><a href="javascript:;" onClick="SelectUser('','TO_ID', 'TO_NAME')">添加</a><a href="javascript:;" onClick="ClearUser('TO_ID', 'TO_NAME')">清空</a></form>
xxxxxxxxxx函数原型:SelectUserSingle($FUNC_ID, $MODULE_ID, $TO_ID, $TO_NAME, $MANAGE_FLAG, $FORM_NAME, $USE_UID)功能描述:弹出一个人员单选窗口加载文件:/static/js/module.js参数:$FUNC_ID //子菜单项ID$MODULE_ID //模块ID,系统保留,传递空值即可$TO_ID //存放已选人员用户名的字段名$TO_NAME //存放已选人员用户真实姓名的字段名$MANAGE_FLAG //是否显示不允许登录OA人员,默认为0$FORM_NAME //表单名称,默认为“form1”$USE_UID //是否使用UID,默认为空则使用USER_ID返回值:无
示例代码:
xxxxxxxxxx<script src="/static/js/module.js"></script><form action="add.php" method="post" name="form1"><input type="hidden" name="TO_ID" value=""><textarea cols=40 name="TO_NAME" rows=2 wrap="yes" readonly></textarea><a href="javascript:;" onClick="SelectUserSingle('','TO_ID', 'TO_NAME')">添加</a><a href="javascript:;" onClick="ClearUser('TO_ID', 'TO_NAME')">清空</a></form>
x
函数原型:SelectDept($MODULE_ID, $TO_ID, $TO_NAME, $PRIV_OP, $FORM_NAME)功能描述:弹出一个部门多选窗口加载文件:/static/js/module.js参数:$MODULE_ID //模块ID,系统保留,传递空值即可$TO_ID //存放已选部门ID的字段名,多个ID用英文逗号隔开$TO_NAME //存放已选部门名称的字段名,多个名称用英文逗号隔开$PRIV_OP //选择部门的范围,0所有部门,1用户管理范围内的部门$FORM_NAME //表单名称,默认为“form1”返回值:无
示例代码:
xxxxxxxxxx<script src="/static/js/module.js"></script><form action="add.php" method="post" name="form1"><input type="hidden" name="TO_ID" value=""><textarea cols=40 name="TO_NAME" rows=2 wrap="yes" readonly></textarea><a href="javascript:;" onClick="SelectDept('','TO_ID', 'TO_NAME')">添加</a><a href="javascript:;" onClick="ClearUser('TO_ID', 'TO_NAME')">清空</a></form>
x
函数原型:SelectDeptSingle($MODULE_ID, $TO_ID, $TO_NAME, $PRIV_OP, $FORM_NAME)功能描述:弹出一个部门单选窗口加载文件:/static/js/module.js参数:$MODULE_ID //模块ID,系统保留,传递空值即可$TO_ID //存放已选部门ID的字段名$TO_NAME //存放已选部门名称的字段名$PRIV_OP //选择部门的范围,0所有部门,1用户管理范围内的部门$FORM_NAME //表单名称,默认为“form1”返回值:无
示例代码:
xxxxxxxxxx<script src="/static/js/module.js"></script><form action="add.php" method="post" name="form1"><input type="hidden" name="TO_ID" value=""><textarea cols=40 name="TO_NAME" rows=2 wrap="yes" readonly></textarea><a href="javascript:;" onClick="SelectDeptSingle('','TO_ID', 'TO_NAME')">添加</a><a href="javascript:;" onClick="ClearUser('TO_ID', 'TO_NAME')">清空</a></form>
xxxxxxxxxx函数原型:SelectPriv($MODULE_ID, $TO_ID, $TO_NAME, $PRIV_OP, $FORM_NAME)功能描述:弹出一个角色多选窗口加载文件:/static/js/module.js参数:$MODULE_ID //模块ID,系统保留,传递空值即可$TO_ID //存放已选角色ID的字段名,多个ID用英文逗号隔开$TO_NAME //存放已选角色名称的字段名,多个名称用英文逗号隔开$PRIV_OP //默认0,如果当前用户非OA管理员且该参数为1,则不列出OA管理员$FORM_NAME //表单名称,默认为“form1”返回值:无
示例代码:
xxxxxxxxxx<script src="/static/js/module.js"></script><form action="add.php" method="post" name="form1"><input type="hidden" name="TO_ID" value=""><textarea cols=40 name="TO_NAME" rows=2 wrap="yes" readonly></textarea><a href="javascript:;" onClick="SelectPriv('','TO_ID', 'TO_NAME')">添加</a><a href="javascript:;" onClick="ClearUser('TO_ID', 'TO_NAME')">清空</a></form>
x
函数原型:SelectPrivSingle($MODULE_ID, $TO_ID, $TO_NAME, $PRIV_OP, $FORM_NAME, $FUNC_ID)功能描述:弹出一个角色单选窗口加载文件:/static/js/module.js参数:$MODULE_ID //模块ID,系统保留,传递空值即可$TO_ID //存放已选角色ID的字段名,多个ID用英文逗号隔开$TO_NAME //存放已选角色名称的字段名,多个名称用英文逗号隔开$PRIV_OP //默认0,如果当前用户非OA管理员且该参数为1,则不列出OA管理员$FORM_NAME //表单名称,默认为“form1”返回值:无
示例代码:
xxxxxxxxxx<script src="/static/js/module.js"></script><form action="add.php" method="post" name="form1"><input type="hidden" name="TO_ID" value=""><textarea cols=40 name="TO_NAME" rows=2 wrap="yes" readonly></textarea><a href="javascript:;" onClick="SelectPriv('','TO_ID', 'TO_NAME')">添加</a><a href="javascript:;" onClick="ClearUser('TO_ID', 'TO_NAME')">清空</a></form>
由于之前版本中用户名(USER_ID)字段在新建用户时赋值,可以为任意类型的数据,包括汉字等,且绝大部分模块中直接与用户名(USER_ID)直接关联,直接影响各个模块的效率及可能出现的编码问题。为解决此问题,我们将之前使用比较冷门的别名(BYNAME)在新建/编辑用户时替代之前用户名成为新一代的用户名(BYNAME),在新建/编辑用户及控制面板中均可以进行修改,也可以在系统管理->系统参数设置中设置不允许修改,且作为唯一登陆OA的用户名;之前的USER_ID,我们在新建用户时自动赋值为数字型数据,从而在各个模块的使用过程中效率提升且不存在编码问题。
建议开发人员在新增模块/数据库表结构时直接考虑使用UID字段进行关联。
为进一步保证OA登录时账号及密码安全,在PC端、精灵、移动版等登录OA时,均提供了对密码base64加密措施。
调用js文件:
xxxxxxxxxx<script src="'.MYOA_JS_SERVER.'/static/js/base64/base64.min.js"></script>调用文件后即可使用方法对密码加密,如:
document.form1.PASSWORD.value = Base64.encode(psw);登录页面提交后,再使用php自带base64解密方法处理即可,如:
xxxxxxxxxx$PASSWORD = base64_decode($PASSWORD);为兼容用户历史数据,可以新增字段encode_type进行判断,只有当encode_type=1时才进行解密,如:
xxxxxxxxxx$PASSWORD = ($encode_type==1 ? base64_decode($PASSWORD) : $PASSWORD);为避免每次访问页面或用户经常用的数据等,在OA系统中采用了缓存机制,很好的解决了由于每次访问都需要重新操作数据库或计算导致系统访问速度慢的问题。比如在新建模块实例中,获取部门信息时,就可以直接从缓存中获取,获取方式如下(以部门C_DEPT为例):
获取部门缓存内容:
xxxxxxxxxx$sys_cache = TD::get_cache("C_DEPT"); //参考第四章TD类更新缓存内容
xxxxxxxxxxTD::set_cache("C_DEPT", $cache_data, 0); //参考第四章TD类删除缓存条目
xxxxxxxxxxTD::delete_cache("C_DEPT"); //参考第四章TD类