1. 程式人生 > >通達OA二次開發手冊

通達OA二次開發手冊

前 言

Office Anywhere網路智慧辦公系統(以下簡稱通達OA),不僅是一套成熟的網路辦公系統,同時也是一個完整、精巧的軟體開發平臺,不僅集成了Web開發的全套環境,並提供了管理架構、系統資源的開放性支援,是開發中小型管理應用系統的理想平臺。

本文將從不同的技術層面向您揭示通達OA的二次開發細節,是主要針對專職程式設計人員、程式設計愛好者、軟體產品技術支援人員編寫的OA二次開發入門教程。

通過閱讀本文,您將不僅可以瞭解通達OA的設計奧祕,也將能夠運用本文所介紹的知識和技巧,輕鬆構建屬於自己的應用系統或模組,文中將結合具體例項加以說明。

第一章 軟體開發環境簡介

1.1 程式設計環境

通達OA主要採用PHP語言開發,系統使用MySQL資料庫。

在Windows平臺下,通達OA主要註冊了9個系統服務,可以通過控制面板-〉管理工具-〉服務,檢視這9項服務,服務名分別是Office_Anywhere、MySQL5_OA、memcached Server、OfficeDaemon、OfficeIm、OfficeIndex、OfficeMail、OfficePOP3、OfficeTask,Office_Anywhere服務實際是集成了PHP模組的Apache服務,Apache是通達OA所使用的Web Server,通達OA也可以支援IIS作為Web Server,具體配置方法參見通達網站OA知識庫相關文件。

關於PHP語言的使用,可參閱,下載PHP手冊,作為開發指導;關於MySQL資料庫的管理與使用,將在第二章進行詳細介紹。

1.2目錄層次結構

通達OA的目錄層次結構清晰,體現出對服務程式、應用程式、WEB頁面的巧妙整合與組織,便於理解和擴充,下面對目錄結構加以說明:

MYOA

├─attach                    OA附件檔案存放目錄

├─bin                        Apache、PHP、Zend等主程式及配置檔案,服務配置程式等

├─conf                    Apache配置檔案

├─data5                    MySQL資料庫檔案目錄

│ ├─BUS                    公交線路查詢資料庫

│ ├─TD_OA                通達OA主資料庫

│ ├─MySQL                MySQL系統資料庫

│ ├─TD_OA_ARCHIVE        通達OA歸檔資料庫

│ ├─ib_logfile0            InnoDB引擎使用的日誌檔案

│ ├─ib_logfile1            InnoDB引擎使用的日誌檔案

│ └─ibdata1                InnoDB引擎儲存資料與索引的資料檔案

├─logs                    Apache等日誌檔案目錄

├─modules                    Apache的模組檔案

├─MyAdmin                    通達OA的MySQL管理工具

├─mysql5                    MySQL主程式檔案

├─nginx                    高效能的通達Nginx Web應用服務

├─tmp                        臨時檔案目錄

└─webroot                    通達OA的WEB根目錄(PHP程式目錄)

├─attachment            部分OA附件檔案存放目錄

  │ ├─hrms_pic        人事檔案照片目錄

  │ ├─product_pic        銷售管理產品照片存放目錄

│ ├─new_sms            新短訊息提醒狀態檔案

│ ├─……            部分附件目錄(略)

  │ ├─rss                今日資訊資訊快取檔案

│ ├─update            系統升級,該資料夾下如存在1.php會被自動執行並刪除

│ ├─weather            天氣預報快取檔案

  │ └─wm                外部郵件儲存目錄

  ├─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            所有程式碼中的<img>標籤src引用的圖片檔案

├─templates            登入介面模版

├─theme            介面主題

├─wav                微訊提醒聲音

├─js                介面主題

├─templates            登入介面模版

    └─modules            所有模組非通用的css檔案及其引用的圖片檔案等的目錄

        ├─address        通訊簿非通用css檔案及其引用的圖片檔案

        ├─ ……        部分模組目錄(略)

        └─workflow    工作流非通用css檔案及其引用的圖片檔案

注:上表中紅色顏色標示的目錄是備份資料時需要備份的,是OA的所有資料所存放的目錄。

1.3引數配置

1.3.1 Apache配置

(MYOA\conf\httpd.conf)

Timeout 300                        //連線超時,單位秒

ServerTokens Prod                    //Apache資訊,Full,OS,Minor,Minimal,Major,Prod

ErrorDocument                    //錯誤文件

ErrorLog logs/error.log                //錯誤日誌

CustomLog logs/access.log combined    //訪問日誌

1.3.2 PHP配置

(MYOA\bin\php.ini)

display_errors = Off                //是否顯示PHP程式錯誤

log_errors = Off                    //是否記錄錯誤日誌

error_log = filename                //錯誤日誌記錄檔案

max_execution_time = 1200            //程式最大執行時間,單位秒

memory_limit = 256M                //單個程式佔用記憶體上限

post_max_size = 1000M                //表單提交最大資料量,單位MB

upload_max_filesize = 200M            //上傳單個附件大小,單位MB

1.3.2 MySQL配置

(MYOA\mysql5\my.ini)

basedir=D:/MYOA/mysql5/                //MySQL主程式路徑

datadir=D:/MYOA/data5/                //MySQL資料庫路徑

tmpdir=D:/MYOA/tmp/                    //快取路徑

character-set-server=gbk                    //MySQL資料庫字編碼

port=3336                            //埠

wait_timeout=30                        //SQL語句執行結束後自動斷開時間

interactive_timeout=30                    //執行SQL語句時段開時間

skip-name-resolve                        //避免外部鎖定(預設是ON)

bind-address=0.0.0.0                    //允許遠端連線

innodb_file_per_table=1                    //啟用獨立表空間模式

innodb_file_format=Barracuda            //InnoDB資料壓縮

注:以上所有的配置選項修改後都需要重啟服務才會生效。

第二章 資料庫管理

2.1 phpMyAdmin的安裝

MySQL的資料庫管理工具很多,phpMyAdmin是使用PHP編寫的免費MySQL資料庫管理工具。由於OA的MySQL資料庫出於安全考慮,被配置為僅能從本機訪問,所以使用phpMyAdmin這樣的B/S結構的管理工具,可實現資料庫的遠端管理。

第一步、下載程式包

phpMyAdmin程式可以從其官方網站http://www.phpmyadmin.net下載,建議下載最新的all-language版本。

第二步、解壓縮

    在MYOA\webroot目錄下新建一個目錄,如mysql369(為了防止他人利用該工具侵入資料庫系統,可把目錄名設為比較複雜的,如MySQL2345,避免目錄名被猜測到。),將下載的程式包解壓後拷貝至mysql369目錄下。

第三步、修改配置檔案

用文字編輯器,如記事本,開啟MySQL管理工具目錄,複製config.sample.inc.php檔案並改名為confing.inc.php,開啟後修改以下配置資訊:

$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

$cfg['Servers'][$i]['user'] = 'root';        //資料庫使用者名稱,預設為root

$cfg['Servers'][$i]['password'] = '';        //資料庫密碼,預設為myoa888

第四步、使用phpMyAdmin

MySQL管理工具地址:http://OA地址/mysql,注意,進入後先選擇中文介面(中文-Chinese simplified )。該管理工具的使用需具有一定資料庫基礎,請勿進行危險操作,以免導致資料丟失。

2.2 phpMyAdmin的使用

phpMyAdmin主介面如下

在左側選擇TD資料庫,可檢視OA所有的資料表,如下圖

點選左側的表名,則右側列出該表的結構和欄位、索引、記錄數等資訊,如下圖

phpMyAdmin的具體使用教程方法可以參考 通達網站/OA知識庫/Office Anywhere 高階應用技巧/OA資料庫管理工具/mysql網頁方式管理工具/phpMyAdmin的安裝和使用.wmv

第三章 如何建立一個模組

建立一個模組一般需要經過以下幾個步驟:根據功能建立程式存放目錄、建立選單、分配選單許可權、編碼、測試等。

3.1建立模組目錄

在MYOA\webroot\general下建議一個目錄abc,作為自己開發模組的目錄,將程式放置於該目錄下,預設頁面是index.php或index.html或index.htm

3.2 建立選單

用管理員帳號進入OA,開啟 系統管理->選單設定,在相應的一級選單後點擊"下一級"連結,在右側的介面上點選"增加子選單項"按鈕,如下圖所示:

詳細閱讀上圖介面中的說明資訊,按介面上說明的要求定義好選單:

子選單項ID:系統自動生成,無須調整

上級選單:根據自己的實際應用情況調整

子選單項程式碼:兩位的數字或字母,作為排序之用

子選單項名稱:根據自己的實際應用自行填寫

子選單模組路徑:該選單對應的程式目錄,應為上一個步驟建立的目錄名稱。如果為abc,則該選單對應的選單圖片名稱為MYOA\webroot\static\images\menu\abc.gif,需要自己建立或拷貝abc.gif拷貝至MYOA\webroot\static\images\menu下.

3.3 分配選單許可權

用管理員帳號進入OA,開啟 系統管理->組織機構設定->角色與許可權管理,給相關的角色分配剛建立的選單的使用許可權,則相關角色的人員就可以在OA介面左側的選單中看到並訪問該選單。

3.4 編碼和測試

為便於使用者開發自己的模組,通達科技在使用者服務區提供了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系統變數和資料庫的使用。

3.4.1 系統變數

OA系統提供了16個通過SESSION儲存的當前使用者的系統變數,分別是

$_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_FUNC_STR"]            //使用者模組許可權

$_SESSION["LOGIN_NOT_VIEW_USER"]    //使用者禁止檢視使用者列表

$_SESSION["LOGIN_DEPT_ID_JUNIOR"]    //使用者所在部門和所屬部門合集字串

$_SESSION["LOGIN_CLIENT"]            //使用者登入OA的裝置型別

$_SESSION["LOGIN_USER_SEX"]            //使用者性別

如需使用這些系統變數,程式需要包含auth.inc.php,如下程式碼:

<?

include_once("inc/auth.inc.php");

echo "我的登入使用者ID是".$_SESSION["LOGIN_USER_ID"]; //本句中的.表示字串連線

?>

3.4.2 PHP程式碼樣例

以下是一段樣例程式碼index.php,可放置於abc目錄下,可作為開發OA應用程式的模版。//或/*…*/是PHP的註釋語句。

<?

include_once("inc/auth.inc.php");            // 如需登入驗證則包含,未登入將退出

//include_once("inc/conn.php");                // 如需要連線資料庫則包含

//include_once("inc/utility_all.php");        // 如需要使用公用函式則包含

//include_once("inc/check_type.php");        // 如需要使用型別檢驗函式則包含

$HTML_PAGE_TITLE = _("功能模組名稱");

include_once("inc/header.inc.php");            // 如有HTML程式碼輸出則包含

//如已包含auth.inc.php,則無須包含conn.php

?>

<body class="bodycolor">

<?

echo "當前登入的使用者為:".$_SESSION["LOGIN_USER_NAME"].",使用者名稱為:".$_SESSION["LOGIN_USER_ID"];

?>

</body>

</html>

程式執行結果如下:

3.4.3 連線資料庫程式碼

以下程式程式碼為讀取admin使用者所屬部門的示例:

<?

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">

<?

$query = "SELECT * from USER where USER_ID='admin'";

$cursor= exequery(TD::conn(),$query);

/*

exequery 是OA系統inc/conn.php包裝的SQL語句執行函式,TD::conn()n是資料庫的連線識別符號

*/

if($ROW=MySQL_fetch_array($cursor))

$DEPT_ID=$ROW["DEPT_ID"];

echo "admin使用者所在部門為:<u>".dept_long_name($DEPT_ID)."</u>";

?>

</body>

</html>

執行效果如下圖:

從這段程式可以看出,使用OA系統提供的系統標頭檔案和函式,訪問資料庫將是一件很輕鬆的事,不用操心資料庫的連線引數等問題,只需簡單的寫下SQL語句,執行它。

MySQL資料庫的連線引數在 MYOA\webroot\inc\oa_config.php檔案中配置,如果自己安裝MySQL資料庫,可自行修改連線引數。

第四章 內建函式參考

4.1 utility.php

4.1.1 Message

函式原型:

Message($TITLE, $CONTENT, $STYLE="", $BUTTONS=array())

功能描述:

輸出一個資訊提示框的HTML程式碼

引數:

$TITLE        //資訊框標題

$CONTENT    //資訊框提示資訊

$STYLE        //資訊框樣式,可選的值有error、warning、stop、forbidden、help、info

$BUTTONS    //操作按鈕陣列

返回值:

4.1.2 Button_Back

函式原型:

Button_Back($HTML_CHARSET = '')

功能描述:

輸出一個返回按鈕的HTML程式碼

引數:

$HTML_CHARSET        //解析編碼

返回值:

4.1.3 find_id

函式原型:

find_id($STRING, $ID)

功能描述:

在字串$STRING中查詢子串$ID

引數:

$STRING        //以英文逗號(,)連線的N個ID值的一個字串,如a,b,c,d

$ID            //要查詢的子符串,如c

返回值:

找到則返回true,否則返回false,布林值

4.1.4 get_client_ip

函式原型:

get_client_ip()

功能描述:

獲取使用者的客戶端IP地址

引數:

返回值:

使用者的客戶端IP地址字串

4.2 utility_all.php

4.2.1 csubstr

函式原型:

csubstr(&$str, $start=0, $long=0, $ltor=true, $cn_len=2)

功能描述:

擷取中文字串

引數:

$str        //要擷取的字串

$start        //擷取起始位置,預設從頭開始

$long        //要擷取的長度

$ltor        //系統保留

$cn_len        //系統保留

返回值:

擷取後的中文字串。

4.2.2 is_ip

函式原型:

is_ip($IP)

功能描述:

判斷一個字串是否是一個合法的IP地址

引數:

$IP            //IP地址字串

返回值:

如果$IP是一個IP地址則返回true,否則返回false。

4.2.3 add_log

函式原型:

add_log($TYPE,$REMARK,$OPERATOR)

功能描述:

新增系統日誌

引數:

$TYPE        //日誌型別程式碼,參考系統程式碼設定下的"系統日誌型別"

$REMARK        //備註

$OPERATOR    //產生日誌的使用者的使用者名稱,一般為當前使用者

返回值:

4.2.4 get_code_name

函式原型:

get_code_name($CODE_NO,$PARENT_NO)

功能描述:

獲取系統程式碼的描述

引數:

$CODE_NO        //系統程式碼的程式碼值,如果多個程式碼則用英文逗號串起來

$PARENT_NO        //父型別程式碼值

返回值:

對應程式碼值的文字描述

示例程式碼:

echo get_code_name('0','SMS_REMIND');    //輸出"個人簡訊"

echo get_code_name('0,1','SMS_REMIND');    //輸出"個人簡訊,公告通知"

4.2.5 dept_long_name

函式原型:

dept_long_name($DEPT_ID)

功能描述:

獲取部門ID為$DEPT_ID的多級部門名稱

引數:

$DEPT_ID    //部門ID

返回值:

$DEPT_ID對應的部門長名稱,如"系統處/OA開發組"

4.2.6 get_sys_para

函式原型:

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");

4.2.7 set_sys_para

函式原型:

set_sys_para($PARA_ARRAY)

功能描述:

批量設定系統引數

引數:

$PARA_ARRAY    //系統引數陣列,陣列鍵值為引數名,如array("MENU_DISPLAY"=>"1")

返回值:

4.3 utility_org.php

4.3.1 is_dept_parent

函式原型:

is_dept_parent($DEPT_ID,$PARENT_ID)

功能描述:

判斷一個部門是否是另外一個部門的上級部門

引數:

$DEPT_ID    //要判斷的部門ID

$PARENT_ID    //上級部門ID

返回值:

    是則返回true,否則返回false。

4.3.2 top_dept

函式原型:

top_dept($DEPT_ID)

功能描述:

獲取部門ID為$DEPT_ID的部門的最上級部門的ID。

引數:

$DEPT_ID    //部門ID

返回值:

    最上級部門的ID。

4.3.3 GetDeptNameById

函式原型:

GetDeptNameById($ID_STR)

功能描述:

獲取N個部門的部門名稱。

引數:

$ID_STR    //N個部門的ID,用逗號串起來,如"1,2,"

返回值:

    N個部門名稱字串,用逗號串起來,如"系統部,OA開發組"。

4.3.4 GetPrivNameById

函式原型:

GetPrivNameById($ID_STR)

功能描述:

獲取N個角色的角色名稱。

引數:

$ID_STR    //N個角色的ID,用逗號串起來,如"1,2,"

返回值:

    N個角色名稱字串,用逗號串起來,如"OA管理員,職員"。

4.3.5 GetUserNameById

函式原型:

GetUserNameById($ID_STR)

功能描述:

獲取N個使用者的使用者姓名。

引數:

$ID_STR    //N個使用者的使用者名稱,用逗號串起來,如"admin,lqh,"

返回值:

    N個使用者的真實姓名字串,用逗號串起來,如"系統管理員,劉清華"。

4.3.6 GetUserNameByUid

函式原型:

GetUserNameByUid($ID_STR)

功能描述:

獲取N個使用者的使用者姓名。

引數:

$ID_STR    //N個使用者的數字,用逗號串起來,如"1,2,"

返回值:

    N個使用者的真實姓名字串,用逗號串起來,如"系統管理員,劉清華"。

4.3.7 my_exclude_uid

函式原型:

my_exclude_uid()

功能描述:

獲取當前使用者不能與之通訊的使用者的數字ID(UID)。

引數:

返回值:

    當前使用者不能與之通訊的使用者的數字ID(UID)。

4.4 utility_sms1.php

4.4.1 send_sms

函式原型:

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        //點選簡訊提醒彈出視窗的"檢視詳情"開啟的地址

返回值:

    無

4.4.2 delete_sms

函式原型:

delete_sms($SMS_ID_STR,$DEL_TYPE)

功能描述:

刪除內部短訊息。

引數:

$SMS_ID_STR        //要刪除的簡訊ID串,用逗號串起來,如"1,2,3"

$DEL_TYPE        //DEL_TYPE=1 刪除收到的簡訊,DEL_TYPE=2 刪除傳送的簡訊

返回值:

    無

4.5 utility_sms2.php

4.5.1 send_mobile_sms_user

函式原型:

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            //簡訊型別程式碼,參考系統程式碼設定下的"內部短訊息型別"

返回值:

    無

4.5.2 send_mobile_sms

函式原型:

send_mobile_sms($SEND_TIME,$FROM_ID,$PHONE,$CONTENT)

功能描述:

向指定號碼傳送手機簡訊。

引數:

$SEND_TIME        //傳送時間字串,如"2013-11-20 09:00:00"

$FROM_ID        //傳送人使用者名稱,如"admin"

$PHONE            //接收手機號碼字串,如"138xxxxxxxx,139xxxxxxxx"

$CONTENT        //簡訊內容

返回值:

    無

4.6 utility_file.php

4.6.1 upload

函式原型:

upload($PREFIX="ATTACHMENT",$MODULE="", $OUTPUT=true)

功能描述:

上傳附件,可以一次上傳多個附件。

引數:

$PREFIX        //表單File控制元件名稱的字首,一般為預設即可

$MODULE        //模組程式碼,如內部郵件為email,為空則根據程式路徑自動判斷

$OUTPUT        //引數判斷

返回值:

    無

4.6.2 delete_attach

函式原型:

delete_attach($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")

功能描述:

刪除附件,可以一次刪除多個附件。

引數:

$ATTACHMENT_ID        //附件ID,多個附件ID用逗號隔開

$ATTACHMENT_NAME    //附件名稱,多個附件名稱用*號隔開

$MODULE            //模組程式碼,如內部郵件為email,為空則根據程式路徑自動判斷斷

返回值:

    無

4.6.3 attach_size

函式原型:

attach_size($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")

功能描述:

獲取附件大小。

引數:

$ATTACHMENT_ID        //附件ID

$ATTACHMENT_NAME    //附件名稱

$MODULE            //模組程式碼,如內部郵件為email,為空則根據程式路徑自動判斷斷

返回值:

    附件大小,單位位元組。

4.6.4 copy_attach

函式原型:

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串,多個附件的話用逗號隔開。

4.6.5 is_uploadable

函式原型:

is_uploadable($FILE_NAME)

功能描述:

根據附件名稱判斷該型別的檔案是否允許上傳。

引數:

$FILE_NAME        //要判斷的檔名

返回值:

    允許上傳則返回true,否則返回false。

4.6.6 is_text

函式原型:

is_text($FILE_NAME)

功能描述:

根據附件名稱判斷該型別的檔案是否是文字檔案。

引數:

$FILE_NAME        //要判斷的檔名

返回值:

    是文字檔案則返回true,否則返回false。

4.6.7 is_office

函式原型:

is_office($FILE_NAME)

功能描述:

根據附件名稱判斷該型別的檔案是否是Office文件。

引數:

$FILE_NAME        //要判斷的檔名

返回值:

    是Office文件則返回true,否則返回false。

4.6.8 is_image

函式原型:

is_image($FILE_NAME)

功能描述:

根據附件名稱判斷該型別的檔案是否是圖片。

引數:

$FILE_NAME        //要判斷的檔名

返回值:

    是圖片則返回true,否則返回false。

4.6.9 is_viewable

函式原型:

is_viewable($FILE_NAME)

功能描述:

根據附件名稱判斷該型別的檔案是否可以直接瀏覽,如htm、pdf、圖片等。

引數:

$FILE_NAME        //要判斷的檔名

返回值:

    可以直接瀏覽則返回true,否則返回false。

4.6.10 is_media

函式原型:

is_media($FILE_NAME)

功能描述:

根據附件名稱判斷該型別的檔案是否是媒體檔案,如視訊、音訊檔案等。

引數:

$FILE_NAME        //要判斷的檔名

返回值:

    RealPlayer播放型別返回1,如rm、rmvb等

MediaPlayer播放型別返回2,如wmv、mpeg等

可直接在瀏覽器裡開啟的型別返回3,如圖片、pdf、html等

Flash播放型別返回4,如flv,fla等

其它返回0

4.6.11 dir_size

函式原型:

dir_size($dir)

功能描述:

根據目錄路徑返回其下屬子目錄和檔案的大小。

引數:

$dir        //伺服器目錄路徑,如D:/MYOA

返回值:

    目錄大小,單位位元組。

4.6.12 delete_dir

函式原型:
delete_dir($DIR, $RECYCLE = true, $MODULE = "")

功能描述:

根據目錄路徑刪除該目錄及其所有下屬子目錄和檔案。

引數:

$DIR //伺服器目錄路徑,如D:/MYOA

$RECYCLE        //刪除目錄和檔案前,是否放到oa指定的回收目錄,true放到回收目錄

$MODULE         //指定回收目錄的模組程式碼

返回值:

    無

4.6.13 attach_sub_dir

函式原型:

attach_sub_dir()

功能描述:

根據程式路徑判斷其所屬模組。

引數:

返回值:

    附件所屬模組程式碼,如在/general/email/new/submit.php中呼叫該函式則返回email。

4.6.14 attach_real_path

函式原型:

attach_real_path($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")

功能描述:

根據附件的ID、名稱等獲取該附件在伺服器上儲存的物理路徑。

引數:

$ATTACHMENT_ID        //附件ID

$ATTACHMENT_NAME    //附件名稱

$MODULE                //附件所述模組程式碼

返回值:

    附件在伺服器上的物理路徑,如D:/MYOA/attach/email/1311/123456789.二次開發手冊.doc。

4.6.15 attach_id_encode

函式原型:

attach_id_encode($ATTACHMENT_ID,$ATTACHMENT_NAME)

功能描述:

根據附件的真實ID和名稱獲取在前臺程式碼中顯示的ID。

引數:

$ATTACHMENT_ID        //附件ID

$ATTACHMENT_NAME    //附件名稱

返回值:

    經過加密處理的ID。

4.6.16 attach_id_decode

函式原型:

attach_id_decode($ATTACHMENT_ID,$ATTACHMENT_NAME)

功能描述:

根據附件的加密ID和真實名稱獲取真實ID。

引數:

$ATTACHMENT_ID        //附件加密ID

$ATTACHMENT_NAME    //附件真實名稱

返回值:

    附件的真實ID。

4.6.17 td_copy

函式原型:

td_copy($source, $dest)

功能描述:

拷貝檔案。

引數:

$source         //要複製的檔案

$dest     //複製檔案的目標路徑

返回值:

    成功則返回 true,否則返回 FALSE

4.6.18 td_rename

函式原型:

td_rename($oldname, $newname)

功能描述:

重新命名檔案或目錄。

引數:

$oldname         //要重新命名的檔案或目錄

$newname     //檔案或目錄的新名稱

返回值:

    成功則返回 true,否則返回 FALSE

4.6.19 td_move_uploaded_file

函式原型:

td_move_uploaded_file($filename, $destination)

功能描述:

將上傳的檔案移動到新位置。

引數:

$filename         //要移動的檔案

$destination     //檔案的新位置

返回值:

    成功則返回 true,否則返回 false

4.6.20 td_file_put_contents

函式原型:

td_file_put_contents($filename, $data, $flag = FALSE)

功能描述:

把一個字串寫入檔案中。

引數:

$filename         //要寫入資料的檔案

$data     //要寫入的資料

$flag //如何開啟/寫入檔案,一般為預設即可

返回值:

    寫入到檔案內資料的位元組數

4.6.21 add_attach_module

函式原型:

add_attach_module($MODULE , $MODULE_NAME="")

功能描述:

在資料庫attachment_module表中增加一條模組記錄。

引數:

$MODULE         //附件所屬模組程式碼

$MODULE_NAME    //附件所屬模組名稱

返回值:

    無

4.6.22 attach_module_id

函式原型:

attach_module_id($MODULE)

功能描述:

根據模組名稱取得attachment_module表中模組的id

引數:

$MODULE         //附件所屬模組程式碼

返回值:

    attachment_module表中模組的id

4.6.23 attach_sign_key

函式原型:

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

4.6.24 attach_sign_key_netdisk

函式原型:

attach_sign_key_netdisk($FILE_PATH)

功能描述:<