|
本帖最后由 cgft 于 2014-8-27 14:13 编辑
首先,把升级(安装)程序所用到的所有程序文件(PHP文件、JS文件、CSS文件及各类图像、音频等文件),按实际运行时的目录结构存放。
然后,系统菜单的新建或修改、系统参数的设置或修改、数据库和数据库表的新建或修改,以及其他的一些系统初始化的工作,均交由安装程序去完成。安装程序写好以后,按下述要求准确保存:
1. 升级或模块安装程序,以数字命名,如命名为1.PHP或命名为2.PHP。
2. 假设OA安装在服务器的D盘的MYOA根目录下,则升级或模块安装程序的保存路径为:D:MYOA\webroot\attachment\update
以上工作完成后,使用WinRAR软件将其打包成一个自解压的压缩包,即可发布和分发了。
用户得到该压缩包后,使用方法就和我们通常使用通达提供的软件升级包一样。
下面以一个实际脚本为例,介绍自行二开后,如何编写安装程序。
- <?
- // ---------- 程序按需要初始化,其中必须有include_once('inc/conn.php') ------------
- set_time_limit(0);
- include_once('inc/conn.php');
- include_once('inc/oa_type.php');
- include_once('inc/utility_update.php');
- // ---------- 检查OA版本 ------------
- if ($VERSION_INFO_MAJOR != 7) {
- echo sprintf("当前版本号:%s,因当前版本非2013增强版,升级程序将不会执行。", $VERSION_INFO);
- update_lock(MYOA_ATTACH_PATH."update/lock.txt", FALSE);
- exit();
- }
- // ---------- 在系统菜单表中建立主菜单 ------------
- // 菜单排序号:26;菜单名:低值易耗品管理;
- // 菜单图标:ftc.gif,存放在MYOA\webroot\static\images\menu目录
- if(!sys_menu_exists(array("mid" => "26"))) {
- $sql= "INSERT INTO sys_menu(MENU_ID,MENU_NAME,IMAGE,MENU_EXT) VALUES ('26','低值易耗品管理','ftc','')";
- exequery(TD::conn(), $sql, TRUE);
- }
- // ---------- 在系统菜单表中建立子菜单 ------------
- // 从1070始,建立子菜单。
- // 命令中各项含义,可参见OA导航条菜单的“系统管理/菜单设置”中“编辑子菜单项”的说明
- if(!sys_func_exists(array("fid" => "1070"))) {
- $sql= "INSERT INTO sys_function (FUNC_ID,MENU_ID,FUNC_NAME,FUNC_CODE,FUNC_EXT) VALUES
- (1070, '2605', '库存物品查询', 'ftdzyh_Product/query', ''),
- (1071, '2610', '领料单据填报', 'ftdzyh_Product/personal', ''),
- (1072, '2615', '采购入库登记', 'ftdzyh_Product/procurement', ''),
- (1073, '2620', '单据查询导出', 'ftdzyh_Product/statistics', ''),
- (1074, '2625', '部门领导审批', 'ftdzyh_Product/dept_approval', ''),
- (1075, '2630', '业务主管审批', 'ftdzyh_Product/Warehouse_App', ''),
- (1076, '2635', '保管员记账', 'ftdzyh_Product/grant', ''),
- (1077, '2640', '仓储业务管理', '@manage', ''),
- (1078, '264010', '物品管理', 'ftdzyh_Product/Product', ''),
- (1079, '264020', '统计报表', 'ftdzyh_Product/report', ''),
- (1080, '264030', '存货盘点', 'ftdzyh_Product/manage', ''),
- (1081, '2645', '系统功能定制', 'ftdzyh_Product/setsyspar', '')";
- exequery(TD::conn(), $sql, TRUE);
- }
- // ---------- 在系统参数表中建立子系统参数值 ------------
- $query= "SELECT PARA_NAME FROM sys_para WHERE PARA_NAME='FTDZYH_PRODUCT'";
- $cursor= exequery(TD::conn(), $query);
- if(mysql_num_rows($cursor)==0){
- $sql= "INSERT INTO sys_para(PARA_NAME,PARA_VALUE) VALUES
- ('FTDZYH_PRODUCT','AllowFastSign,tzkgcs, ……略…… ,PurchaseAudit,|1,|1,|1,')";
- exequery(TD::conn(),$sql, TRUE);
- }
- // ---------- 在系统代码设置表中添加记录 ------------
- $query= "SELECT CODE_NO FROM sys_code WHERE CODE_NO='FTDZYH_PRODUCT' AND CODE_NAME='低值易耗品管理'";
- $cursor= exequery(TD::conn(), $query);
- if(mysql_num_rows($cursor)==0){
- $sql= "INSERT INTO sys_code(CODE_NO,CODE_NAME,CODE_ORDER,PARENT_NO,CODE_FLAG) VALUES
- ('wprkqs', '物品采购入库签收 ', '90', 'SMS_REMIND', '1'),
- ('qqbmsp', '请求审查签批物品申报单', '91', 'SMS_REMIND', '1'),
- //…… 略 ……
- ('SingleLevelApp', '单层级审批调账报废/向采购开放价格参考', '17', 'FTDZYH_PRODUCT', '1'),
- ('PurchaseAudit', '采购入库须部门审核/向采购开放供应商参考', '18', 'FTDZYH_PRODUCT', '1')";
- exequery(TD::conn(), $sql, TRUE);
- }
- // ---------- 建立数据库表 ------------
- // 这里仅以建立一个名为ftdzyh_storage的数据表为例,该表的全部参
- // 数可参见:http://club.tongda2000.com/forum.php?mod=redirect&goto=findpost&ptid=15932&pid=53500&fromuid=4288
- // 帖中的ftdzyh_storage.sql附件。(下载后,用记事本打开阅读,可领会捷径和技巧)
- if(!table_exists("ftdzyh_storage")) {
- $sql= "CREATE TABLE IF NOT EXISTS `ftdzyh_storage` (
- `STG_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '唯一自增ID',
- `STG_NO` int(11) NOT NULL DEFAULT '0' COMMENT '入库单号',
- `PRO_ID` int(11) NOT NULL DEFAULT '0' COMMENT '物品ID',
- `SRO_NAME` varchar(50) NOT NULL COMMENT '物品名称',
- `SRO_DESC` varchar(50) NOT NULL COMMENT '规格型号',
- `STG_UNIT` varchar(10) NOT NULL COMMENT '计量单位',
- `STG_QTY` decimal(10,3) NOT NULL DEFAULT '0.000' COMMENT '采购数量',
- `STR_PRICE` decimal(10,3) NOT NULL DEFAULT '0.000' COMMENT '物品价格',
- `REMARK` text NOT NULL COMMENT '备注',
- `STR_DATE` date NOT NULL DEFAULT '0000-00-00' COMMENT '制单日期',
- `STR_DOCR` varchar(12) NOT NULL COMMENT '经手人',
- `STR_AMOUNT` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '物品金额',
- `REASON` text NOT NULL COMMENT '拒签理由',
- `COMPANY` varchar(40) NOT NULL COMMENT '厂家',
- `BAND` varchar(20) NOT NULL COMMENT '品牌',
- `DEPT_ID` int(11) NOT NULL COMMENT '部门ID',
- `DEPT_MANAGER` varchar(12) NOT NULL COMMENT '部门审批人',
- `DEPT_STATUS` int(1) NOT NULL COMMENT '部门审核状态(0-待审核,1-同意,2-不同意)',
- `DEPT_DATE` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '部门审批时间',
- `GRANTOR` varchar(12) NOT NULL COMMENT '库房签收人',
- `GRAT_STATUS` int(1) NOT NULL DEFAULT '0' COMMENT '签收状态标志(0-待签收,1-已签收,2-退回)',
- `GRAT_DATE` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '库房签收时间',
- `ORIGINAL_NUM` varchar(25) NOT NULL COMMENT '采购凭证号',
- `TRANS_ID` int(11) NOT NULL DEFAULT '0' COMMENT '物料收发凭证表关联指针',
- PRIMARY KEY (`STG_ID`)
- ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='采购签收表' AUTO_INCREMENT=1 ;";
- exequery(TD::conn(), $sql, TRUE);
- }
- // ---------- 根据不同的实际需要而编写的善后处理语句
- include_once("inc/utility_all.php");
- include_once("inc/utility_file.php");
- include_once("inc/utility_org.php");
- include_once("inc/utility_cache.php");
- include_once("inc/utility_flow.php");
- clear_online_status();
- cache_menu();
- cache_censor_words();
- cache_censor_module();
- cache_sys_para();
- cache_interface();
- cache_unit();
- cache_version();
- cache_department();
- rebuildusercache();
- rebuildprivcache();
- cache_attach_para();
- cache_workflow_all();
- include_once("inc/utility_cache.php");
- cache_menu();
- // 安装完成,结束
- $UPDATE_TIPS= "<div class="update_tips">"._("2013增强版低值易耗品模块安装完成!")."</div>";
- ob_end_clean();
- ?>
复制代码
|
|