XPressME Integration Kit

Trac

source: branches/XPressMU/xpressme_integration_kit/wp-content/plugins/xpressme/include/xpress_common_functions.php

Last change on this file was 488, checked in by toemon, 15 years ago

開発ベースにVer2.2をマージ

File size: 12.4 KB
Line 
1<?php
2global $xoops_config;
3if (!is_object($xoops_config)){ // is call other modules
4        require_once dirname(dirname(dirname(dirname(dirname( __FILE__ ))))) .'/class/config_from_xoops.class.php' ;
5        $xoops_config = new ConfigFromXoops;
6}
7
8function get_xoops_config($config_name,$module_dir){
9        global $xoops_db;
10       
11        $modules_db = get_xoops_prefix() . 'modules';
12        $config_db = get_xoops_prefix() . 'config';
13
14        $moduleID = $xoops_db->get_var("SELECT mid FROM $modules_db WHERE dirname = '$module_dir'");
15        if (empty($moduleID)) return null;
16        $conf_value = $xoops_db->get_var("SELECT conf_value FROM $config_db WHERE (conf_modid = $moduleID) AND (conf_name = '$config_name')");
17        if (empty($conf_value)) return null;
18        return  $conf_value;
19}
20
21// xoops db
22function get_xpress_dir_path()
23{
24        return ABSPATH;
25}
26
27function get_xpress_dir_name()
28{
29        return basename(ABSPATH);
30}
31
32function get_wp_prefix_only()
33{
34        $dir_name = get_xpress_dir_name();
35        $prefix = $dir_name;
36        if ($prefix == 'wordpress') $prefix = 'wp';
37       
38        $prefix = $prefix . '_';
39        return $prefix;
40}
41
42function get_xoops_prefix()
43{
44        global $xoops_config;
45        $ret =$xoops_config->xoops_db_prefix . '_';
46        return $ret;
47}
48
49function get_xoops_trust_path()
50{
51        global $xoops_config;
52        $ret =$xoops_config->xoops_trust_path;
53        return $ret;
54}
55
56function get_xoops_root_path()
57{
58        global $xoops_config;
59        $ret =$xoops_config->xoops_root_path;
60        return $ret;
61}
62
63function get_wp_prefix()
64{
65        $prefix = get_xoops_prefix() . get_wp_prefix_only();
66        return $prefix;
67}
68function get_xoops_url()
69{
70        global $xoops_config;
71        $ret =$xoops_config->xoops_url ;
72        return $ret;
73}
74
75function get_xpress_url()
76{
77        global $xoops_config;
78        $ret =$xoops_config->module_url ;
79        return $ret;
80}
81
82function get_xpress_modid()
83{
84        global $xoops_db;
85       
86        $modulename = get_xpress_dir_name();   
87        $sql = "SELECT mid FROM " . get_xoops_prefix() . "modules WHERE dirname = '$modulename'";
88        $mid = $xoops_db->get_var($sql);
89        return $mid;   
90}
91
92function get_xpress_db_version()
93{
94        include get_xpress_dir_path() . '/wp-includes/version.php';
95        return $wp_db_version;
96}
97
98function is_xpress_mobile()
99{
100        //ktai_style
101        if (function_exists('is_ktai')){
102                if (is_ktai()) {
103 //                     $file_path = $GLOBALS['xoopsModuleConfig']["ktai_style_tmpdir"] . '/comments.php';
104                        return true;
105                }
106        }
107       
108        //mobg
109        if (function_exists('is_mobile')) {
110                if (is_mobile()){
111                        return true;
112                }
113        }
114        if (
115          preg_match("/DoCoMo/", $_SERVER['HTTP_USER_AGENT']) ||
116          preg_match("/softbank/", $_SERVER['HTTP_USER_AGENT']) ||
117          preg_match("/vodafone/", $_SERVER['HTTP_USER_AGENT']) ||
118          preg_match("/J-PHONE/", $_SERVER['HTTP_USER_AGENT']) ||
119          preg_match("/UP\.Browser/", $_SERVER['HTTP_USER_AGENT']) ||
120          preg_match("/ASTEL/", $_SERVER['HTTP_USER_AGENT']) ||
121          preg_match("/PDXGW/", $_SERVER['HTTP_USER_AGENT'])
122        )
123        {
124                return true;
125        } else {
126                return false;
127        }
128}
129
130function block_cache_refresh()
131{
132        global $xoops_db;
133        $mid = get_xpress_modid();
134        $sql = "SELECT bid,options,func_file FROM " . get_xoops_prefix() . "newblocks WHERE mid = $mid";
135        $blocks = $xoops_db->get_results($sql);
136        $mydirname = get_xpress_dir_name();
137        require_once get_xpress_dir_path() . '/include/xpress_block_render.php';
138
139
140        foreach($blocks as $block){
141                $func_file = $block->func_file;
142                $call_theme_function_name = str_replace(".php", "", $func_file);
143                $inc_theme_file_name = str_replace(".php", "", $func_file) . '_theme.php';
144                $cache_title = str_replace(".php", "", $func_file);
145                $blockID = $block->bid;
146                $options = explode("|", $block->options);
147
148                $block_theme_file = get_block_file_path($mydirname,$inc_theme_file_name);
149                require_once $block_theme_file['file_path'];
150                $block_render = $call_theme_function_name($options);            //The block name and the called function name should be assumed to be the same name.                     
151                $xml['block'] = $block_render;
152                $xml['block']['options'] = $block->options;
153                xpress_block_cache_write($mydirname,$cache_title. $blockID, $xml);
154        }
155}
156function is_wordpress_style()
157{
158        global $xpress_config;
159       
160        if ($xpress_config->viewer_type == 'wordpress') return true;
161        if ($xpress_config->viewer_type == 'xoops') return false;
162       
163        // user select
164        $get_style = isset($_GET["style"]) ? $_GET["style"] : '';
165        $cookie_style = isset($_COOKIE["xpress_style"]) ? $_COOKIE["xpress_style"] : '';
166       
167        // set style
168        if (!empty($get_style)){
169                $style = $get_style;
170        } else {
171                if (!empty($cookie_style)){
172                        $style = $cookie_style;
173                } else {
174                        $style = 'x';
175                }
176        }
177       
178        // set cookie
179        if (empty($cookie_style)){
180                setcookie("xpress_style", $style);
181                $_COOKIE["xpress_style"] = $style;
182        } else {
183                if ($style != $cookie_style) {
184                        setcookie("xpress_style", $style);
185                        $_COOKIE["xpress_style"] = $style;
186                }
187        }
188        if ($style == 'w') {
189                return true;
190        } else {
191                return false;
192        }
193}
194
195function wp_meta_add_xpress_menu()
196{
197        global $xpress_config;
198        if ($xpress_config->viewer_type == 'user_select'){
199                echo disp_mode_set();
200        }
201        if (function_exists('wp_theme_switcher') ) {   
202                echo '<li>' . __('Themes') . ':';
203                wp_theme_switcher('dropdown');
204                echo '</li>';
205        }
206}
207
208function disp_mode_set(){
209        global $xpress_config;
210       
211        $select ="";
212        if ($xpress_config->viewer_type == 'user_select'){
213                $style = isset($_GET["style"]) ? $_GET["style"] : (isset($_COOKIE["xpress_style"]) ? $_COOKIE["xpress_style"] : "");
214
215                switch($style) {
216                case 'w':
217                        $select ='<li><a href="'.get_settings('siteurl').'/?style=x" title="'. __('Switch to XOOPS mode','xpressme').'">'.__('Switch to XOOPS mode','xpressme').'</a></li>';
218//                      $select.='<img src="'. get_settings('siteurl').'/images/external.png" alt="'.__('Switch to XOOPS mode','xpressme') . '"></a></li>';
219                        break;
220                case 'x':
221                        $select='<li><a href="'.get_settings('siteurl').'/?style=w" title="'.__('Switch to WordPress mode','xpressme').'">'.__('Switch to WordPress mode','xpressme').'</a></li>';
222                        break;
223                default:
224                        $select='<li><a href="'.get_settings('siteurl').'/?style=w" title="'.__('Switch to WordPress mode','xpressme').'">'.__('Switch to WordPress mode','xpressme').'</a></li>';
225                        break;
226                }
227        }
228        return $select;
229}
230
231function xpress_comment_count( $count ) {
232        global $id;
233        $post_comments =get_comments('status=approve&post_id=' . $id);
234        $comments_by_type = &separate_comments($post_comments);
235        return count($comments_by_type['comment']);
236}
237
238function xpress_set_author_cookie($query_vars)
239{
240        global $wp , $wpdb;
241       
242        if (is_admin()) return $query_vars;
243       
244        $author_cookie = 'select_' . get_xpress_dir_name() . "_author" ;
245        if(xpress_is_multi_user()){
246                if (!empty($_GET)){
247                        $auth = intval( @$_GET["author"] );
248                        if ($auth > 0){
249                                setcookie($author_cookie, $auth, time()+3600, COOKIEPATH);
250                                $_COOKIE[$author_cookie] = $auth;
251                        }
252                } else {
253                        if(xpress_is_wp_version('<','2.1')){  // Maybe, I think that it is ver2.1 or less.
254                                if (!empty($wp->matched_query) ){
255                                        if (strpos($wp->matched_query,'author_name') !== false ){
256                                                $pattern = "author_name\s*=\s*(.*)\s*";
257                                                if ( preg_match ( "/".$pattern."/i", $wp->matched_query, $match ) ){
258                                                        $author_name = "$match[1]";
259                                                        $auth = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_login = '$author_name'");
260
261                                                        setcookie($author_cookie, $auth, time()+3600, COOKIEPATH);
262                                                        $_COOKIE[$author_cookie] = $auth;
263                                                }
264                                        }
265                                } else {
266                                        setcookie($author_cookie, 0, time()+3600, COOKIEPATH);
267                                        $_COOKIE[$author_cookie] = 0;
268                                }
269                        } else {
270                                if (!empty($wp->query_vars) ){
271                                        if (!empty($wp->query_vars['author_name']) ){
272                                                $author_name = $wp->query_vars['author_name'];
273                                                $auth = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_login = '$author_name'");
274
275                                                setcookie($author_cookie, $auth, time()+3600, COOKIEPATH);
276                                                $_COOKIE[$author_cookie] = $auth;
277                                        }
278                                } else {
279                                        setcookie($author_cookie, 0, time()+3600, COOKIEPATH);
280                                        $_COOKIE[$author_cookie] = 0;
281                                }
282                        }
283                }
284        }else{
285        //      $GLOBALS["wp_xoops_author"] = null;
286                setcookie($author_cookie, 0, time()+3600, COOKIEPATH);
287                $_COOKIE[$author_cookie] = 0;
288        }
289        return $query_vars;
290}
291
292function xpress_query_filter($query)
293{
294        if (is_admin()) return $query;
295
296        $author_cookie = 'select_' . get_xpress_dir_name() . "_author" ;
297       
298        if (strpos($query,'SELECT') === false)  return $query;
299
300        $select_pattern = "SELECT(.*)post_author(.*)FROM";
301        if (preg_match ( "/".$select_pattern."/i", $query, $select_match ))
302                return $query;
303
304        $query = preg_replace('/\s\s+/', ' ', $query);
305        if (!empty($_COOKIE[$author_cookie])){
306                if(xpress_is_wp_version('<','2.1')){
307                        $pattern = "WHERE.*AND\s?\(*post_author\s*=";
308                        if ( preg_match ( "/".$pattern."/i", $query, $match ) ){
309                                return $query;
310                        }
311                        $pattern = "WHERE\s?post_author\s*="; // get_usernumposts()
312                        if ( preg_match ( "/".$pattern."/i", $query, $match ) ){
313                                return $query;
314                        }
315                        $pattern = "WHERE.*post_status\s*=\s*'publish'\s*\)?";
316                        if ( preg_match ( "/".$pattern."/i", $query, $match ) ){
317                               
318                                $where_str = "$match[0]";
319                                $where_arry = split(' ',$where_str);
320                                $post_prefix = '';
321                                foreach ($where_arry as $p){
322                                        if ( preg_match ( "/post_status/", $p, $match3 ) ){
323                                                $post_prefix = preg_replace("/post_status/", "", $p);
324                                                $post_prefix = preg_replace("/\(/", "", $post_prefix);
325                                                break;
326                                        }
327                                }
328                                $patern = 'WHERE';                             
329                                $replace = "WHERE {$post_prefix}post_author = " . intval($_COOKIE[$author_cookie]) . " AND ";
330                                $query = preg_replace("/$patern/", $replace, $query);
331                        }
332                } else {
333                        $pattern = "WHERE.*post_type\s*=\s*'post'\s*\)?";                       
334                        if ( preg_match ( "/".$pattern."/i", $query, $match ) ){
335                                $where_str = "$match[0]";
336                                $where_arry = split(' ',$where_str);
337                                $post_prefix = '';
338                                foreach ($where_arry as $p){
339                                        if ( preg_match ( "/post_type/", $p, $match3 ) ){
340                                                $post_prefix = preg_replace("/post_type/", "", $p);
341                                                $post_prefix = preg_replace("/\(/", "", $post_prefix);
342                                                break;
343                                        }
344                                }
345                                preg_match ( "/post_type(.*)/", $where_str, $p_match );
346                                $patern_s = $p_match[0];
347                                $patern = preg_replace('/\)/', '\)', $patern_s);
348                               
349                                $replace = $patern_s . " AND {$post_prefix}post_author = " . intval($_COOKIE[$author_cookie]) . " ";
350
351                                $query = preg_replace("/$patern/", $replace, $query);
352                        }
353                }
354        }
355//      xpress_show_sql_quary($query);
356        return $query;
357}
358
359function get_block_file_path($mydirname,$file_name)
360{
361        global $xoops_config, $xpress_config;
362        $mydirpath = $xoops_config->xoops_root_path . '/modules/' . $mydirname;
363        $select_theme = xpress_ThemeTemplate(get_xpress_theme_name($mydirname));
364        $xpress_default_theme = 'xpress_default';
365        $select_block = '/wp-content/themes/' . $select_theme . '/blocks/' . $file_name;
366        $default_block = '/wp-content/themes/xpress_default/blocks/' . $file_name;
367        $select_block_path = $mydirpath . $select_block;
368        $default_block_path =  $mydirpath . $default_block;
369
370        $block_file_data = array();
371        $block_file_data['file_path'] = $default_block_path;
372        $block_file_data['error'] = '';
373
374        if($select_theme != $xpress_default_theme){
375                if (file_exists($select_block_path)){
376                        $select_block_version = get_block_version($select_block_path);
377                        $default_block_version = get_block_version($default_block_path);
378                        if (version_compare($select_block_version,$default_block_version, "<")){
379                                $block_file_data['file_path'] = $default_block_path;
380                                if ($xpress_config->is_block_error_display){
381                                        $error_str = '<div style="color:red">';
382                                        $error_str .= sprintf(__('Block file %1$s is an old version %2$s.<br />used block file %3$s of new version %4$s.','xpressme'),$select_block,$select_block_version,$default_block,$default_block_version);
383                                        $error_str .= '</div>';
384                                        $block_file_data['error'] = $error_str;
385                                }
386                        } else {
387                                $block_file_data['file_path'] = $select_block_path;
388                                $block_file_data['error'] = '';
389                        }
390                }
391        }
392        return $block_file_data;
393}
394
395function get_block_version($file_path = ''){
396        $array_file = file($file_path);
397        $pattern = '^[\s|\/]*[B|b]lock\s+[V|v]ersion\s*[:|;]\s*([0-9|.]*)';
398        $version = '0.1';
399        if (empty($file_path)) return $version;
400        if (!file_exists($file_path)) return $version;
401        if (count($array_file) > 5) $file_count = 5; else $file_count = count($array_file);
402        for ($i = 0 ; $i < $file_count ; $i++){
403                if (preg_match('/' . $pattern . '/' ,$array_file[$i],$matchs)){
404                        $version = $matchs[1];
405                        break;
406                }
407        }
408        return $version;
409}
410
411?>
Note: See TracBrowser for help on using the repository browser.