SMF 1.1.5 Installation
#
#-----[ SQL, REQUEST ]------------------------------------------
#

DROP TABLE IF EXISTS `wardb_itemcache`;
CREATE TABLE `wardb_itemcache` (
  `id` int(32) NOT NULL,
  `name_en` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `wardb_npccache`;
CREATE TABLE `wardb_npccache` (
  `id` int(32) NOT NULL,
  `name_en` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `wardb_questcache`;
CREATE TABLE `wardb_questcache` (
  `id` int(32) NOT NULL,
  `name_en` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `wardb_spellcache`;
CREATE TABLE `wardb_spellcache` (
  `id` int(32) NOT NULL,
  `name_en` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

#
#-----[ OPEN ]------------------------------------------
#

SMF/Themes/[EVERY ACTIVE THEME]/index.template.php

#
#-----[ FIND ]------------------------------------------
#

<script language="JavaScript" type="text/javascript"

#
#-----[ BEFORE, ADD ]------------------------------------------
#

<script src="http://www.wardb.com/js/extooltips.js" type="text/javascript"></script>
#
#-----[ OPEN ]------------------------------------------
#

SMF/Sources/Subs.php

#
#-----[ FIND ]------------------------------------------
#

	// Cache the output if it took some time...
	if (isset($cache_key, $cache_t) && array_sum(explode(' ', microtime())) - array_sum(explode(' ', $cache_t)) > 0.05)
		cache_put_data($cache_key, $message, 240);

#
#-----[ AFTER, ADD ]------------------------------------------
#

	$tags = array(
		array('#\[item=?(.*?)?\](.*?)\[/item\]#ie' => "wardb_item('\$1', '\$2')"),
		array('#\[spell=?(.*?)?\](.*?)\[/spell\]#ie' => "wardb_spell('\$1', '\$2')"),
		array('#\[quest](.*?)\[/quest\]#ie' => "wardb_quest('\$1')"),
		array('#\[npc](.*?)\[/npc\]#ie' => "wardb_npc('\$1')")
	);
	
	foreach ($tags as $key => $val) {
		list($regex, $replace) = each($val);
		if (preg_match($regex, $message)) {
			$message = preg_replace($regex, $replace, $message);
		}
	}
	
#
#-----[ FIND ]------------------------------------------
#

	return $message;
}

#
#-----[ AFTER, ADD ]------------------------------------------
#

function wardb_getNameFromId($database, $type, $id)
{
	global $db;
	$result = mysql_query("SELECT `name_en` FROM `".$database."` WHERE `id` = '".$id."'");
	if ($row = mysql_fetch_row($result)) {
		return $row[0];
	} else {
		$name = file_get_contents("http://www.wardb.com/ajaxIDLookup.aspx?type=".$type."&id=".$id);
		if ($name != "" and $name != "0") {
			$name = str_replace('&#039;', "'", $name);
			mysql_query("INSERT INTO `".$database."` SET `name_en` = '".str_replace("'", "\'", $name)."', id = ".$id);
			return $name;
		} else
			return '';
	}
	mysql_free_result($result);
}

function wardb_getIdFromName($database, $type, $name)
{
	global $db;
	$name = str_replace('&#039;', "'", $name);
	$result = mysql_query("SELECT `id` FROM `".$database."` WHERE `name_en` = '".str_replace("'", "\'", $name)."'");
	if ($row = mysql_fetch_array($result)) {
		return $row[0];
	} else {
		$rname = urlencode($name);
		$rname = str_replace('%26quot%3B','%22', $rname);
		$rname = str_replace('+','%20', $rname);
		$id = file_get_contents("http://www.wardb.com/ajaxIDLookup.aspx?type=".$type."&name=".$rname);
		if ($id != "" and $id != "0") {
			mysql_query("INSERT INTO `".$database."` SET `name_en` = '".str_replace("'", "\'", $name)."', id = '".$id."'");
			return $id;
		} else
			return 0;
	}
	mysql_free_result($result);
}

function wardb_item($modifier, $data)
{
	if ($modifier == NULL || ($modifier != 'text' && $modifier != 'full-small' && $modifier != 'full-medium' && $modifier != 'full-large'))
		$modifier = 'full-medium';
	
	if ($data == '')
		return '';
	
	if (is_numeric($data)) {
		$id = $data;
		$name = wardb_getNameFromId('wardb_itemcache', 1, $id);
	} else {
		$name = $data;
		$id = wardb_getIdFromName('wardb_itemcache', 1, $name);
	}
	
	if ($id != 0 && $name != '')
		return '<a class="wardb-item-'.$modifier.'" href="http://www.wardb.com/item.aspx?id='.$id.'">'.$name.'</a>';
	return $data;
}

function wardb_spell($modifier, $data)
{
	if ($modifier == NULL || ($modifier != 'text' && $modifier != 'full-small' && $modifier != 'full-medium' && $modifier != 'full-large'))
		$modifier = 'full-medium';
	
	if ($data == '')
		return '';
	
	if (is_numeric($data)) {
		$id = $data;
		$name = wardb_getNameFromId('wardb_spellcache', 6, $id);
	} else {
		$name = $data;
		$id = wardb_getIdFromName('wardb_spellcache', 6, $name);
	}
	
	if ($id != 0 && $name != '')
		return '<a class="wardb-spell-'.$modifier.'" href="http://www.wardb.com/spell.aspx?id='.$id.'">'.$name.'</a>';
	return $data;
}

function wardb_quest($data)
{
	if ($data == '')
		return '';
	
	if (is_numeric($data)) {
		$id = $data;
		$name = wardb_getNameFromId('wardb_questcache', 4, $id);
	} else {
		$name = $data;
		$id = wardb_getIdFromName('wardb_questcache', 4, $name);
	}
	
	if ($id != 0 && $name != '')
		return '<a class="wardb-quest" href="http://www.wardb.com/quest.aspx?id='.$id.'">'.$name.'</a>';
	return $data;
}

function wardb_npc($data)
{
	if ($data == '')
		return '';
	
	if (is_numeric($data)) {
		$id = $data;
		$name = wardb_getNameFromId('wardb_npccache', 2, $id);
	} else {
		$name = $data;
		$id = wardb_getIdFromName('wardb_npccache', 2, $name);
	}
	
	if ($id != 0 && $name != '')
		return '<a class="wardb-npc" href="http://www.wardb.com/npc.aspx?id='.$id.'">'.$name.'</a>';
	return $data;
}

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#