通達(dá)OA二次開(kāi)發(fā)手冊(cè).doc
《通達(dá)OA二次開(kāi)發(fā)手冊(cè).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《通達(dá)OA二次開(kāi)發(fā)手冊(cè).doc(76頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
Office Anywhere 網(wǎng)絡(luò)智能辦公系統(tǒng) 二次開(kāi)發(fā)手冊(cè) V8.1.150425(2015版) 通達(dá)信科 中國(guó)兵器工業(yè)信息中心 http://www.tongda2000.com 目 錄 目 錄 1 前 言 1 第一章 軟件開(kāi)發(fā)環(huán)境簡(jiǎn)介 2 1.1 編程環(huán)境 2 1.3參數(shù)配置 4 1.3.1 OfficeFPM配置 4 1.3.2 OfficWeb配置 4 1.3.3 PHP配置 4 1.3.4 MySQL配置 4 1.3.5 OfficWeb、OfficeFPM和PHP的關(guān)系 4 1.4核心文件 5 1.4.1 auth.inc.php (MYOA\webroot\inc\) 5 1.4.2 header.inc.php (MYOA\webroot\inc\) 5 1.4.3 common.inc.php (MYOA\webroot\inc\) 5 1.4.4 conn.php (MYOA\webroot\inc\) 6 第二章 數(shù)據(jù)庫(kù)管理 7 2.1 phpMyAdmin的安裝 7 2.2 phpMyAdmin的使用 7 第三章 如何創(chuàng)建一個(gè)模塊 10 3.1建立模塊目錄 10 3.2 創(chuàng)建菜單 10 3.3 分配菜單權(quán)限 11 3.4 編碼和測(cè)試 11 3.4.1 系統(tǒng)變量 12 3.4.2 PHP代碼樣例 12 3.4.3 連接數(shù)據(jù)庫(kù)代碼 13 第四章 內(nèi)置類庫(kù)參考 14 4.1 TD類 14 4.1.1 成員函數(shù) 14 4.2 PortalData類 15 4.2.1 成員函數(shù) 15 4.3 ExcelReader類 18 4.3.1 成員函數(shù) 18 4.4 Workflow相關(guān)類 19 4.4.1 TworkForm類的成員函數(shù) 19 4.4.2 TworkRun類的成員函數(shù) 20 第五章 內(nèi)置函數(shù)參考 25 5.1 utility.php 25 5.1.1 Message 25 5.1.2 Button_Back 25 5.1.3 find_id 26 5.1.4 get_client_ip 26 5.2 utility_all.php 26 5.2.1 csubstr 26 5.2.2 is_ip 27 5.2.3 add_log 27 5.2.4 get_code_name 28 5.2.5 dept_long_name 28 5.2.6 get_sys_para 28 5.2.7 set_sys_para 29 5.3 utility_org.php 29 5.3.1 is_dept_parent 29 5.3.2 top_dept 30 5.3.3 GetDeptNameById 30 5.3.4 GetPrivNameById 30 5.3.5 GetUserNameById 31 5.3.6 GetUserNameByUid 31 5.3.7 my_exclude_uid 31 5.3.8 GetUnionSetOfChildDeptId 32 5.3.9 GetfunmenuByuserID 32 5.3.10 is_module_manager 32 5.3.11 set_priv_menu_priv 33 5.3.12 set_uid_menu_priv 33 5.3.12 del_user_menu_priv 34 5.3.13 GetUidByOther 34 5.4 utility_sms1.php 34 5.4.1 send_sms 34 5.4.2 delete_sms 35 5.5 utility_sms2.php 35 5.5.1 send_mobile_sms_user 35 5.5.2 send_mobile_sms 36 5.6 utility_file.php 36 5.6.1 upload 36 5.6.2 delete_attach 37 5.6.3 attach_size 37 5.6.4 copy_attach 37 5.6.5 is_uploadable 38 5.6.6 is_text 38 5.6.7 is_office 39 5.6.8 is_image 39 5.6.9 is_viewable 39 5.6.10 is_media 40 5.6.11 dir_size 40 5.6.12 delete_dir 40 5.6.13 attach_sub_dir 41 5.6.14 attach_real_path 41 5.6.15 attach_id_encode 42 5.6.16 attach_id_decode 42 5.6.17 td_copy 42 5.6.18 td_rename 43 5.6.19 td_move_uploaded_file 43 5.6.20 td_file_put_contents 43 5.6.21 add_attach_module 44 5.6.22 attach_module_id 44 5.6.23 attach_sign_key 44 5.6.24 attach_sign_key_netdisk 45 5.6.25 attach_real_path_netdisk 45 5.6.26 cache_attach_para 46 5.6.27 attach_url 46 5.6.28 attach_url_pda 47 5.6.29 attach_link 47 5.6. 30 attach_link_pda 48 5.6.31 attach_url_old 48 5.6.32 upload_old 49 5.6.33 add_attach_old 49 5.6.34 delete_attach_old 50 5.6.35 add_attach 50 5.6.36 copy_attach_netdisk 50 5.6.37 copy_sel_attach 51 5.6.38 office_attach 51 5.6.39 create_attach 52 5.6.40 is_editable 52 5.6.41 is_wps 52 5.6.42 is_ppt_xls 53 5.6.43 is_thumbable 53 5.6.44 image_mimetype 53 5.6.45 Is_SysFile 54 5.6.46 file_type 54 5.6.47 mime_type 54 5.6.48 trim_office_attach 55 5.6.49 dir_file_nums 55 5.6.50 CreateThumb 55 5.6.51 ReplaceImageSrc 56 5.6.52 trim_inserted_image 56 5.6.53 backup_file 56 5.6.54 oc_log 57 5.6.55 attach_id_explode 57 5.6.56 attach_id_implode 57 5.7 utility_email.php 58 5.7.1 GetWebMailNumByUid 58 5.7.2 GetSentMailNum 58 5.7.3 trim_notlogin 59 5.7.4 insert_to_address 59 5.7.5 get_email_data 59 5.7.6 remove_email 60 5.7.7 get_sentbox_data 60 5.7.8 delete_email 61 5.7.9 destroy_email 61 5.7.10 get_time 61 5.7.11 email_count 62 5.7.12 get_outbox_data 62 5.7.13 delete_outbox_email 62 5.8 utility_calendar.php 63 5.8.1 insert_taskcenter 63 5.8.2 add_calendar 63 5.8.3 update_calendar 63 5.8.4 get_list_data 64 5.8.5 delete_calendar 64 第六章 公用組件參考 65 6.1 人員多選 65 6.2 人員單選 65 6.3 部門多選 66 6.4 部門單選 67 6.5 角色多選 68 第七章 典型功能簡(jiǎn)析 68 7.1 用戶名相關(guān) 69 7.2 登錄密碼加密 69 7.3 系統(tǒng)緩存機(jī)制 69 7.4 OA升級(jí)產(chǎn)生的變化 70 7.4.1 2013版升級(jí)到2013增強(qiáng)版 70 7.4.2 2013增強(qiáng)版升級(jí)到2015版 71 前 言 Office Anywhere網(wǎng)絡(luò)智能辦公系統(tǒng)(以下簡(jiǎn)稱通達(dá)OA),不僅是一套成熟的網(wǎng)絡(luò)辦公系統(tǒng),同時(shí)也是一個(gè)完整、精巧的軟件開(kāi)發(fā)平臺(tái),不僅集成了Web開(kāi)發(fā)的全套環(huán)境,并提供了管理架構(gòu)、系統(tǒng)資源的開(kāi)放性支持,是開(kāi)發(fā)中小型管理應(yīng)用系統(tǒng)的理想平臺(tái)。 本文將從不同的技術(shù)層面向您揭示通達(dá)OA的二次開(kāi)發(fā)細(xì)節(jié),是主要針對(duì)專職程序設(shè)計(jì)人員、編程愛(ài)好者、軟件產(chǎn)品技術(shù)支持人員編寫的OA二次開(kāi)發(fā)入門教程。 通過(guò)閱讀本文,您將不僅可以了解通達(dá)OA的設(shè)計(jì)奧秘,也將能夠運(yùn)用本文所介紹的知識(shí)和技巧,輕松構(gòu)建屬于自己的應(yīng)用系統(tǒng)或模塊,文中將結(jié)合具體實(shí)例加以說(shuō)明。 第一章 軟件開(kāi)發(fā)環(huán)境簡(jiǎn)介 1.1 編程環(huán)境 通達(dá)OA主要采用PHP語(yǔ)言開(kāi)發(fā),系統(tǒng)使用MySQL數(shù)據(jù)庫(kù)。 在Windows平臺(tái)下,通達(dá)OA主要注冊(cè)了9個(gè)系統(tǒng)服務(wù),可以通過(guò)控制面板-〉管理工具-〉服務(wù),查看這9項(xiàng)服務(wù),服務(wù)名分別是Office_Web、MySQL5_OA、Office_Redis、OfficeDaemon、OfficeIm、OfficeIndex、OfficeMail、OfficePOP3、OfficeTask,Office_Web是管理ngnix進(jìn)程的服務(wù),Office_Web是通達(dá)OA所使用的Web Server,通達(dá)OA也可以支持IIS作為Web Server,具體配置方法參見(jiàn)通達(dá)網(wǎng)站OA知識(shí)庫(kù)相關(guān)文檔。 關(guān)于PHP語(yǔ)言的使用,可參閱http://www.php.net,下載PHP手冊(cè),作為開(kāi)發(fā)指導(dǎo),PHP版本已升級(jí)至5.3,該版本中許多函數(shù)或方法有調(diào)整,使用時(shí)需要注意;關(guān)于MySQL數(shù)據(jù)庫(kù)的管理與使用,將在第二章進(jìn)行詳細(xì)介紹。 1.2目錄層次結(jié)構(gòu) 通達(dá)OA的目錄層次結(jié)構(gòu)清晰,體現(xiàn)出對(duì)服務(wù)程序、應(yīng)用程序、WEB頁(yè)面的巧妙整合與組織,便于理解和擴(kuò)充,下面對(duì)目錄結(jié)構(gòu)加以說(shuō)明: MYOA ├─attach OA附件文件存放目錄 ├─bin PHP、Zend等主程序及配置文件,服務(wù)配置程序等 ├─data5 MySQL數(shù)據(jù)庫(kù)文件目錄 │ ├─BUS 公交線路查詢數(shù)據(jù)庫(kù) │ ├─TD_OA 通達(dá)OA主數(shù)據(jù)庫(kù) │ ├─crscell 報(bào)表數(shù)據(jù)庫(kù) │ ├─MySQL MySQL系統(tǒng)數(shù)據(jù)庫(kù) │ ├─TD_OA_ARCHIVE 通達(dá)OA歸檔數(shù)據(jù)庫(kù) │ ├─ib_logfile0 InnoDB引擎使用的日志文件 │ ├─ib_logfile1 InnoDB引擎使用的日志文件 │ └─ibdata1 InnoDB引擎存儲(chǔ)數(shù)據(jù)與索引的數(shù)據(jù)文件 ├─logs OA服務(wù)等的日志文件目錄 ├─MyAdmin 通達(dá)OA的MySQL管理工具 ├─mysql5 MySQL主程序文件 ├─nginx 高性能的通達(dá)Nginx Web應(yīng)用服務(wù) ├─tmp 臨時(shí)文件目錄 └─webroot 通達(dá)OA的WEB根目錄(PHP程序目錄) ├─attachment 部分OA附件文件存放目錄 │ ├─hrms_pic 人事檔案照片目錄 │ ├─product_pic 銷售管理產(chǎn)品照片存放目錄 │ ├─new_sms 新短消息提醒狀態(tài)文件 │ ├─…… 部分附件目錄(略) │ ├─rss 今日資訊信息緩存文件 │ ├─update 系統(tǒng)升級(jí),該文件夾下如存在1.php會(huì)被自動(dòng)執(zhí)行并刪除 │ ├─weather 天氣預(yù)報(bào)緩存文件 │ └─wm 外部郵件存儲(chǔ)目錄 ├─general 主要模塊目錄 │ ├─ …… 一般模塊目錄(略) │ ├─ipanel 主控面板,集成了菜單、短信箱等應(yīng)用控制界面 │ ├─mytable 桌面模塊程序 │ └─system 系統(tǒng)功能模塊,下級(jí)目錄略 ├─inc 系統(tǒng)通用程序及函數(shù)目錄 ├─ispirit OA精靈頁(yè)面 ├─mobile OA移動(dòng)界面 ├─module 系統(tǒng)組件 │ ├─dept_select 部門選擇組件 │ ├─editor 簡(jiǎn)易HTML編輯器組件 │ ├─OC Office 文檔在線編輯與閱讀 │ ├─OC_NETDISK 文檔在線編輯與閱讀-僅適用于網(wǎng)絡(luò)硬盤 │ ├─save_file 文件轉(zhuǎn)存組件 │ ├─user_select 用戶多選組件 │ └─user_select_single 用戶單選組件 ├─portal 門戶界面 └─static 系統(tǒng)通用程序及靜態(tài)文件目錄 ├─common 通用css文件及其引用的圖片文件 ├─images 所有代碼中的標(biāo)簽src引用的圖片文件 ├─templates 登錄界面模版 ├─theme 界面主題 ├─wav 微訊提醒聲音 ├─js 界面主題 ├─templates 登錄界面模版 └─modules 所有模塊非通用的css文件及其引用的圖片文件等的目錄 ├─address 通訊簿非通用css文件及其引用的圖片文件 ├─ …… 部分模塊目錄(略) └─workflow 工作流非通用css文件及其引用的圖片文件 注:上表中紅色顏色標(biāo)示的目錄是備份數(shù)據(jù)時(shí)需要備份的,是OA的所有數(shù)據(jù)所存放的目錄。 1.3參數(shù)配置 1.3.1 OfficeFPM配置(MYOA\bin\service.ini) Listen = 8266 //監(jiān)聽(tīng)端口 ProcessNumber = 10 //fastcgi進(jìn)程數(shù) 1.3.2 OfficWeb配置(MYOA\bin\service.ini) Listen = 2367 //監(jiān)聽(tīng)端口 MemoryWarning= 100 // 非工作時(shí)間OfficeNginx.exe占用內(nèi)存的最大值,單位為兆字節(jié)(MB) MemoryMax= 200 // 工作時(shí)間OfficeNginx.exe占用內(nèi)存的最大值,單位為兆字節(jié)(MB) 1.3.3 PHP配置(MYOA\bin\php.ini) display_errors = Off //是否顯示PHP程序錯(cuò)誤 log_errors = Off //是否記錄錯(cuò)誤日志 error_log = filename //錯(cuò)誤日志記錄文件 max_execution_time = 1200 //程序最大執(zhí)行時(shí)間,單位秒 memory_limit = 256M //單個(gè)程序占用內(nèi)存上限 post_max_size = 1000M //表單提交最大數(shù)據(jù)量,單位MB upload_max_filesize = 200M //上傳單個(gè)附件大小,單位MB 1.3.4 MySQL配置(MYOA\mysql5\my.ini) basedir=D:/MYOA/mysql5/ //MySQL主程序路徑 datadir=D:/MYOA/data5/ //MySQL數(shù)據(jù)庫(kù)路徑 tmpdir=D:/MYOA/tmp/ //緩存路徑 character-set-server=gbk //MySQL數(shù)據(jù)庫(kù)字編碼 port=3336 //端口 wait_timeout=30 //SQL語(yǔ)句執(zhí)行結(jié)束后自動(dòng)斷開(kāi)時(shí)間 interactive_timeout=30 //運(yùn)行SQL語(yǔ)句時(shí)段開(kāi)時(shí)間 skip-name-resolve //避免外部鎖定(默認(rèn)是ON) bind-address=0.0.0.0 //允許遠(yuǎn)程連接 innodb_file_per_table=1 //啟用獨(dú)立表空間模式 innodb_file_format=Barracuda //InnoDB數(shù)據(jù)壓縮 注:以上所有的配置選項(xiàng)修改后都需要重啟服務(wù)才會(huì)生效。 1.3.5 OfficWeb、OfficeFPM和PHP的關(guān)系 OfficeWeb服務(wù)守護(hù)OfficeFPM進(jìn)程和OfficeNginx。OfficeFPM進(jìn)程啟動(dòng)多個(gè)(ProcessNumber)FastCGI進(jìn)程。OfficeWeb根據(jù)配置參數(shù)(MemoryWarning和MemoryMax)定時(shí)檢測(cè)OfficeNginx的內(nèi)存占用情況,保證OfficeNginx時(shí)刻處于正常響應(yīng)狀態(tài)。 1.4核心文件 1.4.1 auth.inc.php (MYOA\webroot\inc\) 通達(dá)OA為滿足用戶數(shù)據(jù)安全,原則上所有的php頁(yè)面執(zhí)行都將包含auth.inc.php權(quán)限驗(yàn)證程序,其中包含session合法性驗(yàn)證、訪問(wèn)路徑授權(quán)驗(yàn)證等; 例:include_once("inc/auth.inc.php"); 1.4.2 header.inc.php (MYOA\webroot\inc\) 為保證通達(dá)OA功能顯示標(biāo)準(zhǔn)統(tǒng)一,需要使用標(biāo)準(zhǔn)統(tǒng)一的HTML解析模式對(duì)頁(yè)面進(jìn)行解析和渲染,在所有包含HTML代碼輸出的頁(yè)面都需要包含header.inc.php程序,其中包括采用的HTML標(biāo)準(zhǔn)、頁(yè)面字符集、頁(yè)面標(biāo)題、標(biāo)準(zhǔn)界面樣式表(style.css)等; 例:$HTML_PAGE_TITLE = _("頁(yè)面標(biāo)題"); include_once("inc/header.inc.php"); 1.4.3 common.inc.php (MYOA\webroot\inc\) 為了防止用戶輸入不安全數(shù)據(jù)等,通達(dá)OA為您提供了用戶輸入數(shù)據(jù)($_GET、$_POST、$_COOKIE)過(guò)濾和校驗(yàn)程序,原則上所有php頁(yè)面文件都需要包含,但如果頁(yè)面已經(jīng)包含過(guò)auth.inc.php、header.inc.php或conn.php,則無(wú)需再單獨(dú)包含。 例:include_once("inc/auth.inc.php"); 1.4.4 conn.php (MYOA\webroot\inc\) 為方便用戶快速連接操作數(shù)據(jù)庫(kù),且對(duì)SQL語(yǔ)句安全驗(yàn)證,原則上在進(jìn)行數(shù)據(jù)庫(kù)操作的所有php頁(yè)面都需要包含conn.php程序,但如果頁(yè)面已經(jīng)包含auth.inc.php程序,則無(wú)需再單獨(dú)包含; 例:include_once("inc/conn.php"); 第二章 數(shù)據(jù)庫(kù)管理 2.1 phpMyAdmin的安裝 MySQL的數(shù)據(jù)庫(kù)管理工具很多,phpMyAdmin是使用PHP編寫的免費(fèi)MySQL數(shù)據(jù)庫(kù)管理工具。由于OA的MySQL數(shù)據(jù)庫(kù)出于安全考慮,被配置為僅能從本機(jī)訪問(wèn),所以使用phpMyAdmin這樣的B/S結(jié)構(gòu)的管理工具,可實(shí)現(xiàn)數(shù)據(jù)庫(kù)的遠(yuǎn)程管理。 第一步、下載程序包 phpMyAdmin程序可以從其官方網(wǎng)站http://www.phpmyadmin.net下載,建議下載最新的all-language版本。 第二步、解壓縮 在MYOA\webroot目錄下新建一個(gè)目錄,如mysql369(為了防止他人利用該工具侵入數(shù)據(jù)庫(kù)系統(tǒng),可把目錄名設(shè)為比較復(fù)雜的,如MySQL2345,避免目錄名被猜測(cè)到。),將下載的程序包解壓后拷貝至mysql369目錄下。 第三步、修改配置文件 用文本編輯器,如記事本,打開(kāi)MySQL管理工具目錄,復(fù)制config.sample.inc.php文件并改名為confing.inc.php,打開(kāi)后修改以下配置信息: $cfg[blowfish_secret] = ; //隨便輸入一個(gè)字符串,加密Cookie等信息 $cfg[Servers][$i][auth_type] = http; //http,config,cookie,建議使用http $cfg[Servers][$i][host] = localhost; //數(shù)據(jù)庫(kù)地址,默認(rèn)為localhost $cfg[Servers][$i][port] = 3336; //數(shù)據(jù)庫(kù)端口,默認(rèn)為3336 $cfg[Servers][$i][user] = root; //數(shù)據(jù)庫(kù)用戶名,默認(rèn)為root $cfg[Servers][$i][password] = ; //數(shù)據(jù)庫(kù)密碼,默認(rèn)為myoa888 第四步、使用phpMyAdmin MySQL管理工具地址:http://OA地址/mysql,注意,進(jìn)入后先選擇中文界面(中文-Chinese simplified )。該管理工具的使用需具有一定數(shù)據(jù)庫(kù)基礎(chǔ),請(qǐng)勿進(jìn)行危險(xiǎn)操作,以免導(dǎo)致數(shù)據(jù)丟失。 2.2 phpMyAdmin的使用 phpMyAdmin主界面如下 在左側(cè)選擇TD數(shù)據(jù)庫(kù),可查看OA所有的數(shù)據(jù)表,如下圖 點(diǎn)擊左側(cè)的表名,則右側(cè)列出該表的結(jié)構(gòu)和字段、索引、記錄數(shù)等信息,如下圖 phpMyAdmin的具體使用教程方法可以參考 通達(dá)網(wǎng)站/OA知識(shí)庫(kù)/Office Anywhere 高級(jí)應(yīng)用技巧/OA數(shù)據(jù)庫(kù)管理工具/mysql網(wǎng)頁(yè)方式管理工具/phpMyAdmin的安裝和使用.wmv 。 第三章 如何創(chuàng)建一個(gè)模塊 創(chuàng)建一個(gè)模塊一般需要經(jīng)過(guò)以下幾個(gè)步驟:根據(jù)功能建立程序存放目錄、創(chuàng)建菜單、分配菜單權(quán)限、編碼、測(cè)試等。 3.1建立模塊目錄 在MYOA\webroot\general下建議一個(gè)目錄new_module,作為自己開(kāi)發(fā)模塊的目錄,將程序放置于該目錄下,默認(rèn)頁(yè)面是index.php或index.html或index.htm 3.2 創(chuàng)建菜單 用管理員帳號(hào)進(jìn)入OA,打開(kāi) 系統(tǒng)管理->菜單設(shè)置,在相應(yīng)的一級(jí)菜單后點(diǎn)擊“下一級(jí)”鏈接,在右側(cè)的界面上點(diǎn)擊“增加子菜單項(xiàng)”按鈕,如下圖所示: 詳細(xì)閱讀上圖界面中的說(shuō)明信息,按界面上說(shuō)明的要求定義好菜單: 子菜單項(xiàng)ID:系統(tǒng)自動(dòng)生成,無(wú)須調(diào)整 上級(jí)菜單:根據(jù)自己的實(shí)際應(yīng)用情況調(diào)整 子菜單項(xiàng)代碼:兩位的數(shù)字或字母,作為排序之用 子菜單項(xiàng)名稱:根據(jù)自己的實(shí)際應(yīng)用自行填寫 子菜單模塊路徑:該菜單對(duì)應(yīng)的程序目錄,應(yīng)為上一個(gè)步驟創(chuàng)建的目錄名稱。如果為new_module,則該菜單對(duì)應(yīng)的菜單圖片名稱為MYOA\webroot\static\images\menu\new_mod ule.gif,需要自己創(chuàng)建或拷貝new_module.gif拷貝至MYOA\webroot\static\images\menu下。 3.3 分配菜單權(quán)限 用系統(tǒng)管理員賬號(hào),在菜單創(chuàng)建完成后跳轉(zhuǎn)界面直接可以給指定菜單分配權(quán)限(首次分配菜單權(quán)限時(shí)需要驗(yàn)證超級(jí)密碼,與系統(tǒng)管理->組織機(jī)構(gòu)設(shè)置->角色與權(quán)限管理中超級(jí)密碼一致),如下圖所示: 也可以使用傳統(tǒng)方式給新建菜單分配權(quán)限,用管理員帳號(hào)進(jìn)入OA,打開(kāi) 系統(tǒng)管理->組織機(jī)構(gòu)設(shè)置->角色與權(quán)限管理,給相關(guān)的角色分配剛創(chuàng)建的菜單的使用權(quán)限,則相關(guān)角色的人員就可以在OA界面左側(cè)的菜單中看到并訪問(wèn)該菜單。 3.4 編碼和測(cè)試 為便于用戶開(kāi)發(fā)自己的模塊,通達(dá)科技在用戶服務(wù)區(qū)提供了Office Anywhere部份模塊源碼的下載,供開(kāi)發(fā)人員參考。 用戶自行開(kāi)發(fā)OA的功能模塊,需要根據(jù)OA的相關(guān)規(guī)范進(jìn)行開(kāi)發(fā),這樣既可以使自行開(kāi)發(fā)的模塊和OA的界面效果一致,又可以保證自行開(kāi)發(fā)的程序在OA安全框架的保護(hù)之下,這樣不僅可以保證新模塊數(shù)據(jù)的安全,又可以使開(kāi)發(fā)人員集中精力投入到模塊功能的開(kāi)發(fā)上。 OA的各功能模塊下的每個(gè)程序都需要包含OA的安全驗(yàn)證程序:inc/auth.inc.php。該程序包含了對(duì)用戶登錄信息、是否有權(quán)限訪問(wèn)該路徑等的檢查等。具體的語(yǔ)法為:include_once("inc/auth.inc.php");為更好兼容更多版本的瀏覽器,需要使用標(biāo)準(zhǔn)統(tǒng)一的HTML解析模式對(duì)頁(yè)面進(jìn)行解析和渲染,在所有包含HTML代碼輸出的頁(yè)面,都需要包含:inc/header.inc.php,輸出統(tǒng)一的HTML頭信息,包括采用的HTML標(biāo)準(zhǔn)、頁(yè)面字符集、頁(yè)面標(biāo)題、標(biāo)準(zhǔn)界面樣式表(style.css)等。在沒(méi)有HTML代碼輸出的頁(yè)面,不需要包含該文件。OA數(shù)據(jù)庫(kù)的所有表名全部使用小寫字母,字段名稱全部使用大寫字母,新模塊中字段名也建議與表名統(tǒng)一使用小寫字母,開(kāi)發(fā)過(guò)程請(qǐng)注意。 在開(kāi)發(fā)自己的功能模塊時(shí)可以參考現(xiàn)有OA模塊,把功能相似的OA模塊代碼復(fù)制一份,然后在OA 代碼的基礎(chǔ)上修改。以下幾個(gè)小節(jié)介紹OA系統(tǒng)變量和數(shù)據(jù)庫(kù)的使用。 3.4.1 系統(tǒng)變量 OA系統(tǒng)提供了多個(gè)通過(guò)SESSION保存的當(dāng)前用戶的系統(tǒng)變量,分別是 $_SESSION["LOGIN_UID"] //用戶數(shù)字ID $_SESSION["LOGIN_USER_ID"] //用戶名,無(wú)意義 $_SESSION["LOGIN_BYNAME"] //用戶名,又叫用戶別名,登錄使用 $_SESSION["LOGIN_USER_NAME"] //用戶真實(shí)姓名 $_SESSION["LOGIN_USER_PRIV"] //用戶角色I(xiàn)D $_SESSION["LOGIN_USER_PRIV_OTHER"] //用戶輔助角色I(xiàn)D $_SESSION["LOGIN_SYS_ADMIN"] //用戶是否有系統(tǒng)管理員權(quán)限 $_SESSION["LOGIN_DEPT_ID"] //用戶部門ID $_SESSION["LOGIN_DEPT_ID_OTHER"] //用戶輔助部門ID $_SESSION["LOGIN_AVATAR"] //用戶頭像 $_SESSION["LOGIN_THEME"] //用戶界面主題 $_SESSION["LOGIN_FUNC_STR"] //用戶模塊權(quán)限 $_SESSION["LOGIN_NOT_VIEW_USER"] //用戶禁止查看用戶列表 $_SESSION["LOGIN_DEPT_ID_JUNIOR"] //用戶所在部門和所屬部門合集字符串 $_SESSION["LOGIN_CLIENT"] //用戶登錄OA的設(shè)備類型 $_SESSION["LOGIN_USER_SEX"] //用戶性別 如需使用這些系統(tǒng)變量,程序需要包含auth.inc.php,如下代碼: include_once("inc/auth.inc.php"); echo "我的登錄用戶名是".$_SESSION["LOGIN_BYNAME"]; //本句中的.表示字符串連接 ?> 3.4.2 PHP代碼樣例 以下是一段樣例代碼index.php,可放置于new_module目錄下,可作為開(kāi)發(fā)OA應(yīng)用程序的模版。//或/*…*/是PHP的注釋語(yǔ)句。 include_once("inc/auth.inc.php"); // 如需登錄驗(yàn)證則包含,未登錄將退出 //include_once("inc/conn.php"); // 如需要連接數(shù)據(jù)庫(kù)則包含 //如已包含auth.inc.php,則無(wú)須包含conn.php //include_once("inc/utility_all.php"); // 如需要使用公用函數(shù)則包含 //include_once("inc/check_type.php"); // 如需要使用類型檢驗(yàn)函數(shù)則包含 $HTML_PAGE_TITLE = _("功能模塊名稱"); include_once("inc/header.inc.php"); // 如有HTML代碼輸出則包含 ?> echo "當(dāng)前登錄的用戶為:".$_SESSION["LOGIN_USER_NAME"].",用戶名為:".$_SESSION["LOGIN_BYNAME"]; ?>