XPressME Integration Kit

Trac

source: trunk/xpressme_integration_kit/include/xpress_render.php @ 438

Last change on this file since 438 was 432, checked in by toemon, 15 years ago

r422の処理でImpressCMSやXOOPS2.3.3でFatal errorが発生するバグ修正 Fixes #244

File size: 7.9 KB
Line 
1<?php
2
3//< style >< script >< link > tag is pulled out from the header of html contents.
4function get_mod_header($contents)
5{
6        global $xpress_config;
7       
8        $pattern = "<body[^>]*?>(.*)<\/body>";
9        $body_cut = preg_replace("/".$pattern."/s" , '' , $contents);
10
11
12        $pattern = "<head[^>]*?>(.*)<\/head>";
13        $head_str = '';
14        if (preg_match("/".$pattern."/s",  $body_cut, $head_matches)){
15                $head_str = $head_matches[1];
16        }
17        $pattern = '<head[^>]*?>';
18        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
19        $pattern = '<\/head>';
20        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
21        $pattern = '<\s*html\s+xmlns[^>]*?>';
22        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
23        $pattern = '<\s*head\s+profile[^>]*?>';
24        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
25        $pattern = '<\s*meta\s+http-equiv[^>]*?>';
26        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
27        $pattern = '<title[^>]*?>(.*)<\s*\/\s*title\s*>';
28        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
29
30        $head_str = meta_name_cut('robots',$head_str);
31        $head_str = meta_name_cut('keywords',$head_str);
32        $head_str = meta_name_cut('description',$head_str);
33        $head_str = meta_name_cut('rating',$head_str);
34        $head_str = meta_name_cut('author',$head_str);
35        $head_str = meta_name_cut('copyright',$head_str);
36        $head_str = meta_name_cut('generator',$head_str);
37
38        $head_str = preg_replace("/^(\s)*(\r|\n|\r\n)/m", "", $head_str);       
39        $head_str = $head_str . "\n<!-- credit " . xpress_credit('echo=0&no_link=1') . " -->\n";
40        return $head_str;
41}
42
43function meta_name_cut($name = '', $head_str)
44{
45        $pattern = '<\s*meta\s+name\s*=\s*["\']' . $name . '["\'][^>]*?>';
46        $head_str = preg_replace("/".$pattern."/i" , '' , $head_str);
47        return $head_str;
48}
49
50// for title reprace plugin (all in one seo pack)
51function get_xpress_title($contents)
52{
53        $pattern = '<title[^>]*?>(.*)<\s*\/\s*title\s*>';
54        $title_str = '';
55        if (preg_match("/".$pattern."/i",  $contents, $head_matches)){
56                $title_str = $head_matches[1];
57        }
58        return $title_str;
59}
60
61function get_xpress_meta_name($name = '',$contents)
62{
63        $pattern = '<\s*meta\s+name\s*=\s*["\']' . $name . '["\']\s*content\s*=\s*[\'"](.*)[\'"]\s*\/\s*>';
64        $meta = '';
65        if (preg_match("/".$pattern."/i",  $contents, $head_matches)){
66                $meta = @$head_matches[1];
67        }
68        return $meta;
69}
70
71// get sidebar rendaring
72function get_sidebar_rander($name = null)
73{
74        $templates = array();
75        if ( isset($name) )
76                $templates[] = "sidebar-{$name}.php";
77
78        $templates[] = "sidebar.php";
79
80        $link= locate_template($templates, false);
81        if ('' == $link)
82                $link =  get_theme_root() . '/default/sidebar.php';
83
84        ob_start();
85                require($link);
86                $sidebar = ob_get_contents();
87        ob_end_clean();
88        return $sidebar;
89}
90
91// < body > tag is pulled out from the header of html contents.
92function get_body($contents)
93{
94        $xpess_config = new XPressME_Class();
95        $pattern = "<body[^>]*?>(.*)<\/body>";
96        $body = '';
97        if(preg_match("/".$pattern."/s",  $contents, $body_matches)){
98                $body = $body_matches[1];
99        }
100        if (!$xpess_config->is_theme_sidebar_disp){
101                $side_panel = get_sidebar_rander();
102                        $body = str_replace($side_panel,'',$body);
103        }
104        return $body;
105}
106
107//Making of module header
108function get_xpress_module_header($contents)
109{
110        global $xoopsTpl;
111        if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
112                $preload_make_module_header = $xoopsTpl->get_template_vars('xoops_module_header');
113        } else {
114                $preload_make_module_header = '';
115        }
116       
117        if (! empty($preload_make_module_header)){
118        $preload_make_module_header = '<!-- preload added module header -->
119' . $preload_make_module_header . '
120';
121        }
122       
123        $wp_module_header = '<!-- wordpress  added module header -->
124' . get_mod_header($contents) . '
125<!-- end of wordpress  added module header -->';
126       
127        return $preload_make_module_header . $wp_module_header;
128}
129
130//PHP_SELF and GET are remake for the XOOPS event notification.
131function xpress_remake_global_for_permlink(){
132        global $wp_db,$wp_query;
133        $php_self = $_SERVER['PHP_SELF'];
134        $get = $_GET;
135
136        if (preg_match('/\/$/',$php_self) && !preg_match('/index.php/',$php_self)) {
137                $php_self = $php_self . 'index.php';
138                $_SERVER['PHP_SELF'] = $php_self;
139        }
140        if (empty($_GET)){
141                $query_vars = $wp_query->query_vars;
142                $post = $wp_query->post;
143                if ($wp_query->is_single) {
144                        $_GET = array('p'=>$post->ID);
145                } else if($wp_query->is_category){
146                        $_GET = array('cat'=>$query_vars['cat']);
147                } else if($wp_query->is_author){
148                        $_GET = array('author'=>$query_vars['author']);
149                }
150        }
151}
152
153//rendering for the module header and the body
154function xpress_render($contents){
155        global $xoops_config;
156        global $xoopsUser , $xoopsTpl,$xpress_config , $xoopsModule , $xoopsLogger, $xoopsConfig ; //for XOOPS
157       
158        require_once( ABSPATH .'/include/xpress_breadcrumbs.php' );
159        $xoops_breadcrumbs = get_breadcrumbs();
160
161        xpress_remake_global_for_permlink();
162        $mydirname = basename(dirname(dirname(__FILE__)));
163        include $xoops_config->xoops_root_path ."/header.php";
164        $xoopsTpl->assign('xoops_breadcrumbs', $xoops_breadcrumbs);
165        $xoopsTpl->assign('xoops_module_header', get_xpress_module_header($contents));
166        $page_title = $GLOBALS["xoopsModule"]->getVar("name"). ' &raquo;'. get_xpress_title($contents);
167        $xoopsTpl->assign('xoops_pagetitle', $page_title);
168       
169        $xoops_keywords = $xoopsTpl->get_template_vars('xoops_meta_keywords');
170        $wp_keyword = get_xpress_meta_name('keywords',$contents);
171        switch ($xpress_config->meta_keyword_type){
172                case 'xoops':
173                        break;
174                case 'wordpress':
175                        if (!empty($wp_keyword))
176                                $xoopsTpl->assign('xoops_meta_keywords', $wp_keyword);
177                        break;
178                case 'wordpress_xoops':
179                        if (!empty($wp_keyword)){
180                                if (!empty($xoops_keywords)){
181                                        $keywords = $wp_keyword . ', ' . $xoops_keywords;
182                                } else {
183                                        $keywords = $wp_keyword;
184                                }
185                                $xoopsTpl->assign('xoops_meta_keywords', $keywords);
186                        }
187                        break;
188                default :
189        }
190
191        $xoops_description = $xoopsTpl->get_template_vars('xoops_meta_description');
192        $wp_description = get_xpress_meta_name('description',$contents);
193        switch ($xpress_config->meta_description_type){
194                case 'xoops':
195                        break;
196                case 'wordpress':
197                        if (!empty($wp_description))
198                                $xoopsTpl->assign('xoops_meta_description', $wp_description);
199                        break;
200                case 'wordpress_xoops':
201                        if (!empty($wp_description)){
202                                if (!empty($xoops_description)){
203                                        $description = $wp_description . ' ' . $xoops_description;
204                                } else {
205                                        $description = $wp_description;
206                                }
207                                $xoopsTpl->assign('xoops_meta_description', $description);
208                        }
209                        break;
210                default :
211        }
212
213        $wp_robots = get_xpress_meta_name('robots',$contents);
214        switch ($xpress_config->meta_robot_type){
215                case 'xoops':
216                        break;
217                case 'wordpress':
218                        if (!empty($wp_robots))
219                                $xoopsTpl->assign('xoops_meta_robots', $wp_robots);
220                        break;
221                default :
222        }
223       
224        $xpress_data['body_contents'] = get_body($contents);
225        // used $GLOBALS. becose xpress_left_arrow_post_link() and xpress_right_arrow_post_link() is other loop in this position
226        $xpress_data['left_post_link'] = @$GLOBALS['left_arrow_post_link'];
227        $xpress_data['right_post_link'] = @$GLOBALS['right_arrow_post_link'];
228        $xpress_data['left_posts_link'] =  str_replace('&laquo;','',xpress_left_arrow_posts_link('echo=0'));
229        $xpress_data['right_posts_link'] = str_replace('&raquo;','',xpress_right_arrow_posts_link('echo=0'));
230        $xpress_data['now_user_level'] = xpress_now_user_level('echo=0');
231
232        //If notification_select.php is not executed in CMS other than XCL, the selector of in-line is not displayed.
233        if (is_object($xoopsModule) && $xoopsModule->getVar('hasnotification') == 1 && is_object($xoopsUser)) {
234                require_once $xoops_config->xoops_root_path . '/include/notification_select.php';
235        }
236       
237        $xoopsTpl->assign('xpress', $xpress_data);
238        $templates_file = 'db:'.$mydirname. '_index.html';
239        echo $xoopsTpl->fetch( $templates_file ) ;
240        include $xoops_config->xoops_root_path . '/footer.php';
241}
242
243?>
Note: See TracBrowser for help on using the repository browser.