XPressME Integration Kit

Trac


Ignore:
Timestamp:
Oct 21, 2009, 8:24:59 PM (15 years ago)
Author:
toemon
Message:

WPMU使用時 XOOPS側からのサーチインターフェース(include/search.php)が存在しないテーブルを対象としてしまうバグを修正 Fixes #227

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/xpressme_integration_kit/include/search.php

    r261 r415  
    1313 
    1414if( ! function_exists( 'xpress_global_search_base' ) ) { 
     15        function xpress_global_search_base( $mydirname , $queryarray , $andor , $limit , $offset , $userid ){ 
     16                global $xoopsDB, $myts; 
     17                 
     18                require_once (XOOPS_ROOT_PATH . '/modules/'.$mydirname . '/include/general_functions.php'); 
    1519 
    16 function xpress_global_search_base( $mydirname , $queryarray , $andor , $limit , $offset , $userid ) 
    17 { 
    18         global $xoopsDB, $myts; 
    19          
    20         require_once (XOOPS_ROOT_PATH . '/modules/'.$mydirname . '/include/general_functions.php'); 
    21  
    22         $myts =& MyTextSanitizer::getInstance(); 
    23          
    24         $time_difference = get_time_difference($mydirname); 
    25         $now = date('Y-m-d H:i:s',(time() + ($time_difference * 3600))); 
    26         $where = "(post_status = 'publish') AND (post_date <= '".$now."')"; 
    27  
    28         if ( is_array($queryarray) && $count = count($queryarray) ) { 
    29                 $str_query = array(); 
    30                 for($i=0;$i<$count;$i++){ 
    31                         $str_query[] = "(post_title LIKE '%".$queryarray[$i]."%' OR post_content LIKE '%".$queryarray[$i]."%')"; 
     20                $myts =& MyTextSanitizer::getInstance(); 
     21                 
     22                $xp_prefix = $mydirname; 
     23                if ($xp_prefix == 'wordpress'){ 
     24                        $xp_prefix = 'wp'; 
    3225                } 
    33                 $where .= " AND ".implode(" $andor ", $str_query); 
    34         } 
    35         if ($userid) { 
    36                 $userid = xoops_uid_to_wp_uid(intval($userid),$mydirname); 
    37                 $where  .= " AND (post_author=".$userid.")"; 
    38         } 
    39          
    40         $xp_prefix = $mydirname; 
    41         if ($xp_prefix == 'wordpress'){ 
    42                 $xp_prefix = 'wp'; 
    43         } 
    44         $views_table = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_posts' ; 
    45          
    46         $request = "SELECT * FROM " . $views_table ." WHERE ".$where; 
    47         $request .= " ORDER BY post_date DESC"; 
    48         $result = $xoopsDB->query($request,$limit,$offset); 
    49  
    50         $ret = array(); 
    51         $i = 0; 
    52         while($myrow = $xoopsDB->fetchArray($result)){ 
    53                  
    54                  
    55 //              $ret[$i]['link'] = str_replace(get_settings('home')."/","",get_permalink(($myrow['ID']))); 
    56                 switch ($myrow['post_type']) { 
    57                 case 'page': 
    58                         $ret[$i]['link'] = '?page_id=' . $myrow['ID']; 
    59                         break; 
    60                 case 'post': 
    61                 case '': 
    62                         $ret[$i]['link'] = '?p=' . $myrow['ID']; 
     26                if ($userid) { 
     27                        $userid = xoops_uid_to_wp_uid(intval($userid),$mydirname); 
    6328                } 
    6429 
    65                 $ret[$i]['title'] = $myts->htmlSpecialChars($myrow['post_title']); 
    66                 $date_str = $myrow['post_date']; 
    67                 $yyyy = substr($date_str,0,4); 
    68                 $mm   = substr($date_str,5,2); 
    69                 $dd   = substr($date_str,8,2); 
    70                 $hh   = substr($date_str,11,2); 
    71                 $nn   = substr($date_str,14,2); 
    72                 $ss   = substr($date_str,17,2); 
    73                 $ret[$i]['time'] = mktime( $hh,$nn,$ss,$mm,$dd,$yyyy); 
    74                 $ret[$i]['uid'] = wp_uid_to_xoops_uid($myrow['post_author'],$mydirname); 
    75 //              $ret[$i]['page'] = $myts->htmlSpecialChars($myrow['post_title']); 
     30                $prefix= XOOPS_DB_PREFIX . '_' . $xp_prefix  ; 
     31                $posts_tables = get_table_list($prefix,'posts'); 
     32                $i = 0; 
     33                $ret = array(); 
     34                foreach( $posts_tables as $views_table){ 
     35                        $mid_prefix = get_multi_mid_prefix($prefix,'posts' , $views_table); 
     36                        $option_table = $prefix . $mid_prefix . 'options'; 
     37                        $time_difference = get_blog_option($option_table ,'gmt_offset'); 
     38                        $blog_url = get_blog_option($option_table , 'siteurl'); 
     39                        $pattern = '/.*' . $mydirname . '/'; 
     40                        $mid_url = preg_replace($pattern, '' , $blog_url); 
     41                        $mid_url = preg_replace('/\//' , '' , $mid_url); 
     42                        if (!empty($mid_url)) $mid_url = $mid_url . '/' ; 
     43                         
     44                        $blog_name = get_blog_option($option_table , 'blogname'); 
     45                        if (empty($mid_url)) $blog_name = ''; else $blog_name = $blog_name . ':: '; 
     46                         
     47                        $now = date('Y-m-d H:i:s',(time() + ($time_difference * 3600))); 
     48                        $where = "(post_status = 'publish') AND (post_date <= '".$now."')"; 
    7649 
    77                 $context = '' ; 
    78                 $text =$myrow['post_content']; 
    79                 // get context for module "search" 
    80                 $showcontext = empty( $_GET['showcontext'] ) ? 0 : 1 ; 
    81                 if( function_exists( 'search_make_context' ) && $showcontext ) { 
    82                         if( function_exists( 'easiestml' ) ) $text = easiestml( $text ) ; 
    83                         $full_context = strip_tags($text) ; 
    84                         $context = search_make_context( $full_context , $queryarray ) ; 
     50                        if ( is_array($queryarray) && $count = count($queryarray) ) { 
     51                                $str_query = array(); 
     52                                for($i=0;$i<$count;$i++){ 
     53                                        $str_query[] = "(post_title LIKE '%".$queryarray[$i]."%' OR post_content LIKE '%".$queryarray[$i]."%')"; 
     54                                } 
     55                                $where .= " AND ".implode(" $andor ", $str_query); 
     56                        } 
     57                        if ($userid) { 
     58                                $where  .= " AND (post_author=".$userid.")"; 
     59                        } 
     60 
     61                        $request = "SELECT * FROM " . $views_table ." WHERE ".$where; 
     62                        $request .= " ORDER BY post_date DESC"; 
     63                        $result = $xoopsDB->query($request,$limit,$offset); 
     64 
     65                        while($myrow = $xoopsDB->fetchArray($result)){ 
     66                                switch ($myrow['post_type']) { 
     67                                case 'page': 
     68                                        $ret[$i]['link'] = $mid_url . '?page_id=' . $myrow['ID']; 
     69                                        break; 
     70                                case 'post': 
     71                                case '': 
     72                                        $ret[$i]['link'] = $mid_url . '?p=' . $myrow['ID']; 
     73                                } 
     74                                $ret[$i]['title'] = $blog_name . $myts->htmlSpecialChars($myrow['post_title']); 
     75                                $date_str = $myrow['post_date']; 
     76                                $yyyy = substr($date_str,0,4); 
     77                                $mm   = substr($date_str,5,2); 
     78                                $dd   = substr($date_str,8,2); 
     79                                $hh   = substr($date_str,11,2); 
     80                                $nn   = substr($date_str,14,2); 
     81                                $ss   = substr($date_str,17,2); 
     82                                $ret[$i]['time'] = mktime( $hh,$nn,$ss,$mm,$dd,$yyyy); 
     83                                $ret[$i]['uid'] = wp_uid_to_xoops_uid($myrow['post_author'],$mydirname); 
     84 
     85                                $context = '' ; 
     86                                $text =$myrow['post_content']; 
     87                                // get context for module "search" 
     88                                $showcontext = empty( $_GET['showcontext'] ) ? 0 : 1 ; 
     89                                if( function_exists( 'search_make_context' ) && $showcontext ) { 
     90                                        if( function_exists( 'easiestml' ) ) $text = easiestml( $text ) ; 
     91                                        $full_context = strip_tags($text) ; 
     92                                        $context = search_make_context( $full_context , $queryarray ) ; 
     93                                } 
     94                                $ret[$i]['context']=$context; 
     95                                $i++; 
     96                        } 
    8597                } 
    86                 $ret[$i]['context']=$context; 
     98                return $ret; 
    8799 
    88  
    89                 $i++; 
    90100        } 
    91         return $ret; 
    92  
    93101} 
    94102 
    95 } 
     103if( ! function_exists( 'get_blog_option' ) ) { 
     104        function get_blog_option($option_table,$option_name){ 
     105                $xoopsDB =& Database::getInstance(); 
    96106 
    97 if( ! function_exists( 'get_time_difference' ) ) { 
    98 function get_time_difference($mydirname){ 
    99         $xoopsDB =& Database::getInstance(); 
    100  
    101         $xp_prefix = $mydirname; 
    102         if ($xp_prefix == 'wordpress'){ 
    103                 $xp_prefix = 'wp'; 
     107                $sql = "SELECT option_value FROM $option_table WHERE option_name = '" . $option_name . "'"; 
     108                 
     109                $result =  $xoopsDB->query($sql, 0, 0); 
     110                if ($xoopsDB->getRowsNum($result)  > 0){ 
     111                        $row = $xoopsDB->fetchArray($result); 
     112                        return $row['option_value']; 
     113                } 
     114                return 0; 
    104115        } 
    105         $option_tbl = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_options' ; 
    106          
    107         $sql = "SELECT option_value FROM $option_tbl WHERE option_name = 'gmt_offset'"; 
    108          
    109         $result =  $xoopsDB->query($sql, 0, 0); 
    110         if ($xoopsDB->getRowsNum($result)  > 0){ 
    111                 $row = $xoopsDB->fetchArray($result); 
    112                 return $row['option_value']; 
    113         } 
    114         return 0; 
    115 } 
    116116} 
    117117 
Note: See TracChangeset for help on using the changeset viewer.