XPressME Integration Kit

Trac

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

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

MultiBlog用に人気記事リスト(全ブログ)を追加 Fixes#310

File size: 5.6 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                'blog_list_block.html' ,
110                'global_recent_posts_list_block.html' ,
111                'global_recent_comments_block.html',
112                'global_popular_posts_block.html',
113                'index.html',
114        );
115        foreach($temp_list as $ck_file){
116                if (strcmp($ck_file,$file_name) ==  0) return true;
117        }
118        return false;
119}
120
121function xpress_clean_templates_file($mydirname,$mod_version)
122{
123        $tpl_path = XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/templates/' ;
124        $msgs = array();
125        if( $handler = @opendir( $tpl_path) ) {
126                while( ( $file = readdir( $handler ) ) !== false ) {
127                        if( substr( $file , 0 , 1 ) == '.' ) continue ;
128                        if ( strcmp($file,'source')==0 ) continue ;
129                        if ( strcmp($file,'index.html')==0 ) continue ;
130                        $target_file_path = $tpl_path . $file;
131                        if (is_dir($target_file_path)){
132                                rmDirectory($target_file_path);
133                                $msgs[] = 'Template <b>'.htmlspecialchars($file).'</b> directory deleted.</span><br />';
134                        } else {
135                                if ($mod_version >= 200){
136                                        $pattern = '^' . $mydirname . '_';
137                                        if (preg_match('/' . $pattern . '/' , $file, $match))  continue ;
138                                }
139                                $rcd = @unlink($target_file_path);
140                                $msgs[] = 'Template <b>'.htmlspecialchars($file).'</b> file deleted.</span><br />';
141                        }
142                }
143                closedir( $handler ) ;
144        }
145        return $msgs;
146}
147
148function rmDirectory($dir){
149        if ($handle = opendir("$dir")){
150                while (false !== ($item = readdir($handle))){
151                        if ($item != "." && $item != ".."){
152                                if (is_dir("$dir/$item")){
153                                        rmDirectory("$dir/$item");
154                                }else{
155                                        unlink("$dir/$item");
156                                }
157                        }
158                }
159                closedir($handle);
160                rmdir($dir);
161        }
162}
163
164?>
Note: See TracBrowser for help on using the repository browser.