新版是指使用Libreoffice5.0以後的版本作為的樣板,預設不預先解壓縮,使用tbszip.php這組class, 舊樣板指2.x以前的版本作為的樣板,預先解壓縮,使用sxsooo_class.php這組class處理樣板。
首先讓ooo.zip和ooo.tbszip分別繼承原來的類別,然後協調出底下五個函數:
change_temp
load_temp
download
replace
add
這樣就可以讓使用時使用相同的函數解決問題
從$ooo_path判斷新舊樣板
如果是一個目錄且存在content.xml就是舊樣板, 否則是一個odt檔就是新樣板
$newver=false;
if (file_exists($ooo_path.'/content.xml')) {
include_once XOOPS_ROOT_PATH."/modules/x_base/lib/ooo.zip.php"; //使用舊版本
$ttt = new oooZip;
} elseif (file_exists($ooo_path.".odt")) {
include_once XOOPS_ROOT_PATH."/modules/x_base/lib/ooo.tbszip.php"; //使用新版本
$ttt = new oooTbsZip;
$newver=true;
}
讀取content.xml 就用
$data = $ttt->load_temp($ooo_path);
$file_extname=$ttt->file_extname;
樣版分析先照舊
樣板替換使用$ttt->change_temp($temp_arr,$loop_data);
替換content.xml
$ttt->replace("content.xml",$replace_data);
產生 zip 檔輸出
$ttt->download($filename);
沒有留言:
張貼留言