<?php
$mydirname = basename( dirname( dirname( __FILE__ ) ) ) ;

eval( ' function xoops_module_update_'.$mydirname.'( $module ) { return xpress_onupdate_base( $module , "'.$mydirname.'" ) ; } ' ) ;


if( ! function_exists( 'xpress_onupdate_base' ) ) :
function xpress_onupdate_base( $module , $mydirname )
{
	// transations on module update

	global $msgs ; // TODO :-D
	// for Cube 2.1
	if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
		$root =& XCube_Root::getSingleton();
		$root->mDelegateManager->add( 'Legacy.Admin.Event.ModuleUpdate.' . ucfirst($mydirname) . '.Success', 'xpress_message_append_onupdate' ) ;
		$msgs = array() ;
	} else {
		if( ! is_array( $msgs ) ) $msgs = array() ;
	}

	$db =& Database::getInstance() ;
	$mid = $module->getVar('mid') ;

//XPressME Update
	global $wpdb,$wp_rewrite, $wp_queries, $table_prefix, $wp_db_version, $wp_roles,$wp_query;
	global $xoops_db;
	$mydirpath = XOOPS_ROOT_PATH . '/modules/' . $mydirname;
	$path = $mydirpath . '/';
	
//Site_url and home of an optional table are repaired. 
	$site_url= XOOPS_URL."/modules/".$mydirname;
	xpress_put_siteurl($mydirname,$site_url);
	xpress_put_home($mydirname,$site_url);

// XPressME orignal table update
	$t_mess = xpress_table_make($module , $mydirname);
	$msgs = array_merge($msgs,$t_mess);

// make templates
	include_once XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/include/xpress_templates_make.php' ;
	$t_mess = xpress_templates_make($mid,$mydirname);
	
	$msgs = array_merge($msgs,$t_mess);

// The activation processing of the XPressME plugin is omitted. 
// Because the XPressME plugin is done with wp-config in activation

	/* activate the xpressme plugin */
//	require_once dirname( __FILE__ ).'/xpress_active_plugin.php';
//	if (xpress_pulugin_activation('xpressme/xpressme.php')){
//		$msgs[] = 'The xpressme plug-in was activated.';
//	}
	
	return true ;
}
endif;

if( ! function_exists( 'xpress_put_siteurl' ) ) :
function xpress_put_siteurl($mydirname,$url){
		global $xoopsModule;
		$wp_prefix = $mydirname;
		if ($wp_prefix == 'wordpress'){
			$wp_prefix = 'wp';
		}
		$xoopsDB =& Database::getInstance();
		$db_xpress_option = $xoopsDB->prefix($wp_prefix . '_options');

		$sql = "UPDATE $db_xpress_option SET option_value = '$url' WHERE option_name = 'siteurl'";
		$res = $xoopsDB->queryF($sql, 0, 0);
}
endif;

if( ! function_exists( 'xpress_put_home' ) ) :
function xpress_put_home($mydirname,$url){
		global $xoopsModule;
		$wp_prefix = $mydirname;
		if ($wp_prefix == 'wordpress'){
			$wp_prefix = 'wp';
		}
		$xoopsDB =& Database::getInstance();
		$db_xpress_option = $xoopsDB->prefix($wp_prefix . '_options');

		$sql = "UPDATE $db_xpress_option SET option_value = '$url' WHERE option_name = 'home'";
		$res = $xoopsDB->queryF($sql, 0, 0);
}
endif;


if( ! function_exists( 'xpress_message_append_onupdate' ) ) :
function xpress_message_append_onupdate( &$module_obj , &$log )
{
	if( is_array( @$GLOBALS['msgs'] ) ) {
		foreach( $GLOBALS['msgs'] as $message ) {
			$log->add( strip_tags( $message ) ) ;
		}
	}

	// use mLog->addWarning() or mLog->addError() if necessary
}
endif;

if( ! function_exists( 'get_db_version' ) ) :
function get_db_version($mydirname){
		global $xoopsModule;
		$wp_prefix = $mydirname;
		if ($wp_prefix == 'wordpress'){
			$wp_prefix = 'wp';
		}
		$xoopsDB =& Database::getInstance();
		$db_xpress_option = $xoopsDB->prefix($wp_prefix . '_options');

		$sql = "SELECT option_value FROM $db_xpress_option WHERE option_name = 'db_version'";
		$res = $xoopsDB->query($sql, 0, 0);
		if ($res === false){
			return false;
		} else {
			$row = $xoopsDB->fetchArray($res);
			return $row['option_value'];
		}
}
endif;

if( ! function_exists( 'xpress_block_check' ) ) :
function xpress_block_check($mydirname){
	include_once(dirname(dirname(__FILE__)) . '/class/check_blocks_class.php');

	$xoops_block_check =& xoops_block_check::getInstance();

	if ( !$xoops_block_check->is_admin() )
	{
		$cont = 'Block Check Pass';
		return cont;
	}

	switch ( $xoops_block_check->get_op() ) 
	{
		case "remove_block":
			$cont = $xoops_block_check->remove_block();
			break;

		default:
			$cont = $xoops_block_check->check_blocks($mydirname);
			break;
	}
	return $cont;
}
endif;

if( ! function_exists( 'xpress_table_make' ) ) :
function xpress_table_make($module, $mydirname)
{
	$xp_prefix = $mydirname;
	if ($xp_prefix == 'wordpress'){
	 	$xp_prefix = 'wp';
	}
	$db =& Database::getInstance() ;
	$mid = $module->getVar('mid') ;

// XPressME orignal table update
	$xp_prefix = $mydirname;
	if ($xp_prefix == 'wordpress'){
	 	$xp_prefix = 'wp';
	}
	$msgs = array();

	if (! enhanced_table_check($mydirname,'views')){
		$views_table = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_views' ;
		$queries ="CREATE TABLE $views_table (
  		post_id bigint(20) unsigned NOT NULL default '0',
  		post_views bigint(20) unsigned NOT NULL default '0',
  		KEY post_id (post_id)
		) TYPE=MyISAM";
		$db->queryF( $queries ) ;
		$msgs[] = "$views_table table of XPressME was made.";
	}
	
	if (! enhanced_table_check($mydirname,'d3forum_link')){
		$d3forum_link = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_d3forum_link' ;
		$queries ="CREATE TABLE $d3forum_link (
	  		comment_ID bigint(20) unsigned NOT NULL default '0',
	  		post_id int(10) unsigned NOT NULL default '0' ,
	  		wp_post_ID bigint(20) unsigned NOT NULL default '0',
	  		KEY post_id (post_id)
			)TYPE=MyISAM";
		$db->queryF( $queries ) ;
		$msgs[] = "$d3forum_link table of XPressME was made.";
	}

	if (! enhanced_table_check($mydirname,'group_role')){
		$group_role = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_group_role' ;
		$queries ="CREATE TABLE $group_role (
	  		groupid smallint(5) unsigned NOT NULL default '0',
	  		name varchar(50)  NOT NULL default '' ,
	  		description text  NOT NULL default '',
	  		group_type varchar(50)  NOT NULL default '' ,
			role varchar(20)  NOT NULL default '' ,
			login_all smallint(5) unsigned NOT NULL default '0' ,
	  		KEY groupid (groupid)
			)TYPE=MyISAM";
		$db->queryF( $queries ) ;
		$sql = "INSERT INTO $group_role (groupid, role) VALUES (1, 'administrator')";
		$db->queryF( $sql ) ;
		$msgs[] = "$group_role table of XPressME was made.";
	}
	
	if (! enhanced_table_check($mydirname,'notify_reserve')){
		$notify_reserve = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_notify_reserve' ;
		$queries ="CREATE TABLE $notify_reserve (
	  		notify_reserve_id bigint(20) NOT NULL AUTO_INCREMENT ,
	  		notify_reserve_status varchar(20)  NOT NULL default '' ,
	  		category text  NOT NULL default '',
	  		item_id bigint(20) unsigned NOT NULL default '0',
			event varchar(20) NOT NULL default '',
			extra_tags_arry longtext NOT NULL default '' ,
			user_list_arry longtext NOT NULL default '' ,
	  		module_id smallint(5) unsigned NOT NULL default '0' ,
	  		omit_user_id varchar(20) NOT NULL default '' ,
	  		KEY notify_reserve_id (notify_reserve_id)
			)TYPE=MyISAM";
		$db->queryF( $queries ) ;
		$msgs[] = "$notify_reserve table of XPressME was made.";
	}
	return $msgs;
}
endif;

if( ! function_exists( 'enhanced_table_check' ) ) :
function enhanced_table_check($mydirname,$table_name){
		global $xoopsModule;
		
		$xoopsDB =& Database::getInstance();
		if ($mydirname == 'wordpress'){
			$xpress_prefix=  $xoopsDB->prefix('wp_');
		} else {
			$xpress_prefix=  $xoopsDB->prefix($mydirname . '_');
		}
		$db_enhanced = $xpress_prefix . $table_name;

		$sql = "show tables like '$db_enhanced'";
		$res = $xoopsDB->query($sql, 0, 0);
		if ($res === false){
			return false;
		} else {
			if ($xoopsDB->getRowsNum($res)  > 0)
				return true;
			else
				return false;
		}
}
endif;



?>