Index: trunk/xpressme_integration_kit/class/xpressD3commentContent.class.php
===================================================================
--- trunk/xpressme_integration_kit/class/xpressD3commentContent.class.php	(revision 583)
+++ trunk/xpressme_integration_kit/class/xpressD3commentContent.class.php	(revision 590)
@@ -9,5 +9,6 @@
 		{
 		//	include_once dirname(dirname(__FILE__)).'/include/common_functions.php' ;
-
+			global $forum_id;
+			
 			$db =& Database::getInstance() ;
 			$myts =& MyTextsanitizer::getInstance() ;
@@ -23,17 +24,18 @@
 			
 			$xpress_prefix = preg_replace('/wordpress/','wp',$mydirname);
-
+			$blog_info = $this->get_comment_blog_info($forum_id);
 			// query
-			$post_row = $db->fetchArray( $db->query( "SELECT * FROM ".$db->prefix($xpress_prefix."_posts")." WHERE ID=$post_id AND comment_status ='open'" ) ) ;
+			$post_row = $db->fetchArray( $db->query( "SELECT * FROM ".$blog_info['mb_table_prefix']."posts WHERE ID=$post_id AND comment_status ='open'" ) ) ;
 			if( empty( $post_row ) ) return '' ;
 
 			// dare to convert it irregularly
 			$summary = str_replace( '&amp;' , '&' , htmlspecialchars( xoops_substr( strip_tags( $post_row['post_content'] ) , 0 , 255 ) , ENT_QUOTES ) ) ;
-
+			$uri = preg_replace('/\/$/','',$blog_info['home']);
+			$uri .= '/?p='.$post_row['ID'];
 			return array(
-				'dirname' => $mydirname ,
-				'module_name' => $module->getVar( 'name' ) ,
+				'dirname' => $mydirname. $blog_info['sub_dir'] ,
+				'module_name' => $blog_info['blogname'] ,
 				'subject' => $post_row['post_title'] ,
-				'uri' => XOOPS_URL.'/modules/'.$mydirname.'/?p='.$post_row['ID'] ,
+				'uri' => $uri ,
 				'summary' => $summary ,
 			) ;
@@ -61,4 +63,16 @@
 		function canAddComment($external_link_id)
 		{
+			global $forum_id;
+			global $post;
+			
+			if (is_object($post)){  // in wordpress 
+				if ($post->ID == $external_link_id){
+					if($post->comment_status == 'open'){
+						return true;
+					} else {
+						return false;
+					}
+				}
+			}
 					$db =& Database::getInstance() ;
 					$myts =& MyTextsanitizer::getInstance() ;
@@ -73,8 +87,9 @@
 					if( preg_match( '/[^0-9a-zA-Z_-]/' , $mydirname ) ) die( 'Invalid mydirname' ) ;
 					
+					$blog_info = $this->get_comment_blog_info($forum_id);
 					$xpress_prefix = preg_replace('/wordpress/','wp',$mydirname);
 
 					// query
-					$sql = "SELECT * FROM ".$db->prefix($xpress_prefix."_posts")." WHERE ID=$post_id";
+					$sql = "SELECT * FROM ".$blog_info['mb_table_prefix']."posts WHERE ID=$post_id";
 					$post_row = $db->fetchArray( $db->query( $sql ) ) ;
 					if( empty( $post_row ) ) return false ;
@@ -156,11 +171,12 @@
 		function validate_id( $link_id )
 		{
+			global $forum_id;
 			$post_id = intval( $link_id ) ;
 			$mydirname = $this->mydirname ;
 			$xpress_prefix = preg_replace('/wordpress/','wp',$mydirname);
-			
+			$blog_info = $this->get_comment_blog_info($forum_id);		
 			$db =& Database::getInstance() ;
 			
-			list( $count ) = $db->fetchRow( $db->query( "SELECT COUNT(*) FROM ".$db->prefix($xpress_prefix."_posts")." WHERE ID=$post_id AND comment_status ='open'" ) ) ;
+			list( $count ) = $db->fetchRow( $db->query( "SELECT COUNT(*) FROM ".$blog_info['mb_table_prefix'] ."posts WHERE ID=$post_id AND comment_status ='open'" ) ) ;
 
 			if( $count <= 0 ) return false ;
@@ -185,4 +201,7 @@
 		function processCommentNotifications( $mode , $link_id , $forum_id , $topic_id , $post_id )
 		{
+			$blog_info = $this->get_comment_blog_info($forum_id);
+			$wp_full_prefix = $blog_info['mb_table_prefix'];
+
 			$db =& Database::getInstance() ;
 			$myts =& MyTextsanitizer::getInstance() ;
@@ -198,11 +217,11 @@
 			$xpress_prefix = preg_replace('/wordpress/','wp',$mydirname);
 			
-			$table_term_relationships = $db->prefix($xpress_prefix."_term_relationships");
-			$table_term_taxonomy = $db->prefix($xpress_prefix."_term_taxonomy");
-			$table_terms = $db->prefix($xpress_prefix."_terms");
+			$table_term_relationships = $wp_full_prefix ."term_relationships";
+			$table_term_taxonomy = $wp_full_prefix."term_taxonomy";
+			$table_terms = $wp_full_prefix."terms";
 			$table_categories = $db->prefix($xpress_prefix."_categories");
 			$table_post2cat = $db->prefix($xpress_prefix."_post2cat");
-			$wp_post = $db->prefix($xpress_prefix."_posts");
-			$wp_options = $db->prefix($xpress_prefix."_options");
+			$wp_post = $wp_full_prefix."posts";
+			$wp_options = $wp_full_prefix."options";
 			$wp_users  = $db->prefix($xpress_prefix."_users");
 						
@@ -268,4 +287,8 @@
 		function sync_to_wp_comment( $mode , $link_id , $forum_id , $topic_id , $post_id = 0 ){
 
+			$blog_info = $this->get_comment_blog_info($forum_id);
+			$wp_full_prefix = $blog_info['mb_table_prefix'];
+			$blog_id = $blog_info['blog_id'];
+			$target_db_prefix = $blog_info['mb_table_prefix'];
 			$mydirname = $this->mydirname ;
 			$xpress_prefix = preg_replace('/wordpress/','wp',$mydirname);
@@ -276,6 +299,6 @@
 			$xoopsDB =& Database::getInstance();
 
-			$wp_comments = $xoopsDB->prefix($xpress_prefix . '_comments');
-			$wp_posts = $xoopsDB->prefix($xpress_prefix . '_posts');
+			$wp_comments = $wp_full_prefix . 'comments';
+			$wp_posts = $wp_full_prefix . 'posts';
 			$wp_d3forum_link = $xoopsDB->prefix($xpress_prefix . '_d3forum_link');
 			$d3f_posts = $xoopsDB->prefix($d3f_prefix . '_posts');
@@ -355,7 +378,7 @@
 						
 							$wp_sql  = "INSERT INTO $wp_d3forum_link ";
-							$wp_sql .=    "(comment_ID , post_id) ";
+							$wp_sql .=    "(comment_ID , post_id, forum_id,blog_id) ";
 							$wp_sql .=  "VALUES ";
-							$wp_sql .=    "($comment_ID, $post_id)";		
+							$wp_sql .=    "($comment_ID, $post_id ,$forum_id,$blog_id)";		
 							$wp_res = $xoopsDB->queryF($wp_sql, 0, 0);
 						}
@@ -370,5 +393,5 @@
 						break;
 					case 'edit':
-						$wp_sql = "SELECT comment_ID FROM $wp_d3forum_link WHERE post_id = $post_id";
+						$wp_sql = "SELECT comment_ID FROM $wp_d3forum_link WHERE post_id = $post_id ";
 						$wp_res = $xoopsDB->query($wp_sql, 0, 0);
 						if ($wp_res === false){
@@ -427,7 +450,62 @@
 			}
 			return $ret;
-		}				
+		}
 		
-	}
+		function get_comment_blog_info($d3forum_forum_id){
+			$xoopsDB =& Database::getInstance();
+			$xp_prefix = $wpdirname = basename( dirname( dirname( __FILE__ ) ) ) ;
+			$xp_prefix = preg_replace('/wordpress/','wp',$xp_prefix);
+			$xp_prefix = $xoopsDB->prefix($xp_prefix);
+			$table_name = 'options';
+			$options_array = array();
+
+
+				$sql = "SHOW TABLES LIKE '" . $xp_prefix  . '%' . $table_name . "'";
+				if($result = $xoopsDB->queryF($sql)){
+					while($row = $xoopsDB->fetchRow($result)){
+						$wp_option_table = $row[0];
+						$pattern = '/'. $table_name . '/';
+						$option['mb_table_prefix'] =  preg_replace($pattern,'',$wp_option_table);
+						if (preg_match('/'. $xp_prefix . '_([0-9]*)_/',$option['mb_table_prefix'],$matchs)){
+							$option['blog_id'] = $matchs[1];
+						} else {
+							$option['blog_id'] = 1;
+						}
+						
+						$option_sql = "SELECT option_name, option_value FROM $wp_option_table WHERE option_name IN ('home','siteurl','blogname','xpressme_option')";
+						if($option_result =  $xoopsDB->query($option_sql, 0, 0)){
+							while($option_row = $xoopsDB->fetchArray($option_result)){
+								$name = $option_row['option_name'];
+								$value = $option_row['option_value'];
+								if ($name == 'xpressme_option'){
+									$value =  @unserialize( $value );
+								}
+								$option[$name] = $value;
+							}
+							$option['siteurl'] = preg_replace('/\/$/','',$option['siteurl']);
+							$option['home'] = preg_replace('/\/$/','',$option['home']);
+							
+							if ($option['blog_id'] === 1){
+								$option['sub_dir'] = '';
+							} else {
+								$xoops_url = str_replace('/','\\/',XOOPS_URL);
+								if (preg_match('/'. $xoops_url . '.*' . $wpdirname . '(.*)/',$option['home'],$matchs)){
+									$option['sub_dir'] = $matchs[1];
+								} else {
+									$option['sub_dir'] = '';
+								}
+							}
+							if ($option['xpressme_option']['d3forum_forum_id'] == $d3forum_forum_id){
+								return $option;
+							}
+						}
+					}
+					return null;
+				}
+		}
+		function repair_d3forum_link($comment_ID, $post_id ,$forum_id,$blog_id,$target_db_prefix){
+		}
+		
+	} // class
 }
 ?>
