通達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)
功能描述:<