XPressME Integration Kit

Trac

source: trunk/xpressme_integration_kit/include/xpress_templates_make.php @ 462

Last change on this file since 462 was 462, checked in by toemon, 14 years ago

XPressME アップデート時のtemplatesフォルダーを整理 Fixes #253
XPressME Ver1.Xからのアップデート時templatesフォルダー内のsourceディレクトリとindex.phpを残し後はすべて削除した後、テンプレートを作成するようにする。
Ver2.X以降からのアップデート時は、不要ディレクトリと不要ファイル(ファイルのプレフィックスが異なるファイルを削除

File size: 5.4 KB
Line 
1<?php
2
3function xpress_templates_make($mid,$mydirname)
4{
5        $msgs = array();
6        // TEMPLATES
7        $tplfile_handler =& xoops_gethandler( 'tplfile' ) ;
8        $tpl_path = XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/templates' ;
9       
10        //copy  template file from source
11        if( $handler = @opendir( $tpl_path . '/source/' ) ) {
12                while( ( $file = readdir( $handler ) ) !== false ) {
13                        if( substr( $file , 0 , 1 ) == '.' ) continue ;
14                        if(!is_template($file)) continue ;
15                        $file_path = $tpl_path . '/source/' . $file ;
16                        if( is_file( $file_path ) ) {
17                                $target_file_name = $mydirname . '_' . $file;
18                                $target_file_path = $tpl_path . '/'.$target_file_name;
19                                $rcd = @unlink($target_file_path);
20                                if ($mydirname != 'xpress') {           //old version file delete
21                                        $rcd = @unlink($tpl_path . '/xpress'.$file);
22                                }
23//                              $rcd = rename($file_path, $target_file_path);
24                                $rcd = copy($file_path, $target_file_path);
25                                if ($rcd){
26                                        $msgs[] = 'Template <b>'.htmlspecialchars($target_file_path).'</b> copy from ' . htmlspecialchars($file) . '<br />';
27                                } else {
28                                        $msgs[] = '<span style="color:#ff0000;">ERROR: Could not copy template <b>'.htmlspecialchars($target_file_name).'</b> from ' . htmlspecialchars($file). '(check templates directory permision (777))</span><br />';
29                                }                                       
30                        }
31                }
32                closedir( $handler ) ;
33        }
34       
35        // template added to the database.
36        if( $handler = @opendir( $tpl_path . '/' ) ) {
37                while( ( $file = readdir( $handler ) ) !== false ) {
38                        if( substr( $file , 0 , 1 ) == '.' ) continue ;
39                        $file_path = $tpl_path . '/' . $file ;
40                        $file_name = $file ;
41                        $pattern = '^' . $mydirname . '_';
42                        if (preg_match('/' . $pattern . '/' , $file_name, $match)){
43                                if( is_file( $file_path ) ) {
44                                        $msgs[] = xpress_create_db_template($file_name,$file_path,$mydirname,$mid);
45                                }
46                        }
47                }
48                closedir( $handler ) ;
49        }
50       
51        include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
52        include_once XOOPS_ROOT_PATH.'/class/template.php' ;
53        xoops_template_clear_module_cache( $mid ) ;
54
55        return $msgs;
56}
57
58function xpress_create_db_template($file_name,$file_path,$mydirname,$mid){
59        if( is_file( $file_path ) ) {
60                $tplfile_handler =& xoops_gethandler( 'tplfile' ) ;
61                $tplfile =& $tplfile_handler->create() ;
62                $mtime = intval( @filemtime( $file_path ) ) ;
63                $tplfile->setVar( 'tpl_source' , file_get_contents( $file_path ) , true ) ;
64                $tplfile->setVar( 'tpl_refid' , $mid ) ;
65                $tplfile->setVar( 'tpl_tplset' , 'default' ) ;
66                $tplfile->setVar( 'tpl_file' ,  $file_name ) ;
67                $tplfile->setVar( 'tpl_desc' , '' , true ) ;
68                $tplfile->setVar( 'tpl_module' , $mydirname ) ;
69                $tplfile->setVar( 'tpl_lastmodified' , $mtime ) ;
70                $tplfile->setVar( 'tpl_lastimported' , 0 ) ;
71                $tplfile->setVar( 'tpl_type' , 'module' ) ;
72                if( ! $tplfile_handler->insert( $tplfile ) ) {
73                        $msg = '<span style="color:#ff0000;">ERROR: Template Could not added to the database. <b>'.htmlspecialchars($file_name).'</b> to the database.</span><br />';
74                } else {
75                        $tplid = $tplfile->getVar( 'tpl_id' ) ;
76                        $msg = 'Template <b>'.htmlspecialchars($file_name) .'</b> added to the database. (ID: <b>'.$tplid.'</b>)<br />';
77                        // generate compiled file
78                        include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
79                        include_once XOOPS_ROOT_PATH.'/class/template.php' ;
80                        if( ! xoops_template_touch( $tplid ) ) {
81                                $msg = '<span style="color:#ff0000;">ERROR: Failed compiling template <b>'.htmlspecialchars($file_name).'</b>.</span><br />';
82                        } else {
83                                $msg = 'Template <b>'.htmlspecialchars($file_name).'</b> compiled.</span><br />';
84                        }
85                }
86        }
87        return $msg;
88}
89
90function is_template($file_name){
91        if (empty($file_name)) return false;
92       
93        $temp_list = array(
94                'recent_comments_block.html',
95                'recent_posts_content_block.html',
96                'recent_posts_list_block.html',
97                'calender_block.html',
98                'popular_posts_block.html',
99                'archives_block.html',
100                'authors_block.html',
101                'page_block.html',
102                'search_block.html',
103                'tag_cloud_block.html',
104                'category_block.html',
105                'meta_block.html' ,
106                'sidebar_block.html' ,
107                'widget_block.html' ,
108                'enhanced_block.html' ,
109                'index.html',
110        );
111        foreach($temp_list as $ck_file){
112                if (strcmp($ck_file,$file_name) ==  0) return true;
113        }
114        return false;
115}
116
117function xpress_clean_templates_file($mydirname,$mod_version)
118{
119        $tpl_path = XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/templates/' ;
120        $msgs = array();
121        if( $handler = @opendir( $tpl_path) ) {
122                while( ( $file = readdir( $handler ) ) !== false ) {
123                        if( substr( $file , 0 , 1 ) == '.' ) continue ;
124                        if ( strcmp($file,'source')==0 ) continue ;
125                        if ( strcmp($file,'index.html')==0 ) continue ;
126                        $target_file_path = $tpl_path . $file;
127                        if (is_dir($target_file_path)){
128                                rmDirectory($target_file_path);
129                                $msgs[] = 'Template <b>'.htmlspecialchars($file).'</b> directory deleted.</span><br />';
130                        } else {
131                                if ($mod_version >= 200){
132                                        $pattern = '^' . $mydirname . '_';
133                                        if (preg_match('/' . $pattern . '/' , $file, $match))  continue ;
134                                }
135                                $rcd = @unlink($target_file_path);
136                                $msgs[] = 'Template <b>'.htmlspecialchars($file).'</b> file deleted.</span><br />';
137                        }
138                }
139                closedir( $handler ) ;
140        }
141        return $msgs;
142}
143
144function rmDirectory($dir){
145        if ($handle = opendir("$dir")){
146                while (false !== ($item = readdir($handle))){
147                        if ($item != "." && $item != ".."){
148                                if (is_dir("$dir/$item")){
149                                        rmDirectory("$dir/$item");
150                                }else{
151                                        unlink("$dir/$item");
152                                }
153                        }
154                }
155                closedir($handle);
156                rmdir($dir);
157        }
158}
159
160?>
Note: See TracBrowser for help on using the repository browser.