data = $data;
}
function compair_types_usersort($a, $b) {
global $sortby, $sortby_d;
$sortstr_a = (is_numeric($a->data[$sortby]) ? sprintf("%03d",$a->data[$sortby]) : $a->data[$sortby]);
$sortstr_b = (is_numeric($b->data[$sortby]) ? sprintf("%03d",$b->data[$sortby]) : $b->data[$sortby]);
$asort = $a->data['type'].$sortstr_a;
$bsort = $b->data['type'].$sortstr_b;
if ($asort == $bsort) {
return ($a->data['name'] > $b->data['name']) ? 1 : -1;
return 0;
}
if ($sortby_d == '0') {
return ($asort > $bsort) ? 1 : -1;
}
else
{
return ($asort > $bsort) ? -1 : 1;
}
}
function out($recipe_name) {
global $roster, $tooltips;
$lang = $roster->config['locale'];
$path = $roster->config['interface_url']. 'Interface'.DIR_SEP.'Icons'.DIR_SEP.$this->data['icon'].'.'.$roster->config['img_suffix'];
// Item links
$num_of_tips = (count($tooltips)+1);
$linktip = '';
foreach( $roster->locale->act['data_links'] as $key => $ilink ) {
$linktip .= ''.$key.'
';
}
setTooltip($num_of_tips,$linktip);
setTooltip('itemlink',$roster->locale->act['data_search']);
$linktip = ' onclick="return overlib(overlib_'.$num_of_tips.',CAPTION,overlib_itemlink,STICKY,NOCLOSE,WRAP,OFFSETX,5,OFFSETY,5);"';
$tooltip = '';
if (array_key_exists($lang, $this->data)) {
$tooltip = makeOverlib($this->data[$lang]['tooltip'],'',$this->data['quality'],0,$lang);
}
elseif (array_key_exists('enUS', $this->data)) {
$tooltip = makeOverlib($this->data['enUS']['tooltip'],'',$this->data['quality'],0,'enUS');
}
$returnstring = '
';
$returnstring .= '
';
$returnstring .= '
';
return $returnstring;
}
}
class crafter
{
var $data;
function crafter( $data ) {
$this->data = $data;
}
}
function recipe_get_all( $skill_name, $usedlang, $quality, $search, $sort, $guild_id = 0 ) {
global $roster, $addon, $sortby;
require ( $addon['dir'] . 'inc'.DIR_SEP.'recipe_list'.DIR_SEP.strtolower($skill_name).'.list.php');
$maxrecipes = count($RecipeList);
$skill = '';
$langs = '';
$Recipes_to_en = array();
foreach( $usedlang as $lang ) {
require_once ( $addon['inc_dir'].'recipe_to_en'.DIR_SEP.$lang.DIR_SEP.strtolower($skill_name).'.php');
$skill .= "'".$roster->locale->wordings[$lang][$skill_name]."', ";
$langs .= "'".$lang."', ";
}
$Recipes_to_locale = array_flip($Recipes_to_en[$roster->config['locale']]);
$skill = substr_replace($skill, "", -2, -1);
$langs = substr_replace($langs, "", -2, -1);
$query = "SELECT `r`.`recipe_name`, `r`.`recipe_name` AS `recipe_name_org`, `r`.`recipe_tooltip`, `r`.`recipe_type`, `r`.`item_color` AS `quality`, `r`.`reagents`, `r`.`recipe_texture` AS `icon`, `r`.`level`, `r`.`difficulty`, `p`.`member_id`, `p`.`clientLocale` AS `lang`"
. " FROM `".$roster->db->table('recipes')."` AS r, `".$roster->db->table('players')."` AS p"
. " WHERE `r`.`skill_name` IN (".$skill.")"
. " AND `r`.`item_color` LIKE '".$quality."'"
. ($search==''?'':" AND (`r`.`recipe_tooltip` LIKE '%".$search."%' OR `r`.`recipe_name` LIKE '%".$search."%')")
. ($guild_id=='0'?" AND `p`.`region` = '".$roster->data['region']."' AND `p`.`server` = '".$roster->db->escape($roster->data['server'])."'":" AND `p`.`guild_id` = '".$guild_id."'")
. " AND `p`.`member_id` = `r`.`member_id`"
. " AND `p`.`clientLocale` IN (".$langs.")"
. " ORDER BY `r`.`recipe_name`";
$result = $roster->db->query( $query );
$recipes = array();
$types = array();
$failedrecipes = array();
$failedmembers = array();
while( $data = $roster->db->fetch($result,SQL_ASSOC) ) {
if (array_key_exists($data['recipe_name'], $Recipes_to_en[$data['lang']])) { //recipe exist on Recipe_to_en
$data['recipe_name'] = $Recipes_to_en[$data['lang']][$data['recipe_name']]; // translate recipe name to english
}
if (array_key_exists($data['recipe_name'], $recipes)) { //recipe exist, only update member information
$recipes[$data['recipe_name']]->data['by'][$data['member_id']] = $data['difficulty'];
if (!array_key_exists($data['lang'], $recipes[$data['recipe_name']])) {
$recipes[$data['recipe_name']]->data[$data['lang']] = array (
'name' => $data['recipe_name_org'],
'type' => $data['recipe_type'],
'tooltip' => $data['recipe_tooltip'],
'reagents' => $data['reagents']);
}
} else { //recipe dont exist, create all current member information
//if (array_key_exists($data['recipe_name'], $RecipeList)) { // get comon information from $RecipeList
$extradata = explode("#", $RecipeList[$data['recipe_name']]);
// 0:Skill 1:Source 2:Icon 3:Quality 4:Type 5:Required Level
$types[$Recipes_to_locale[$extradata[4]]] = $extradata[4];
$recipes[$data['recipe_name']] = new recipe (array (
'name' => (isset($Recipes_to_locale[$data['recipe_name']])? $Recipes_to_locale[$data['recipe_name']]: $data['recipe_name']),
'skill' => ltrim($extradata[0],0),
'source' => $extradata[1],
'icon' => (!empty($extradata[2])?$extradata[2]:$data['icon']),
'quality' => (!empty($extradata[3])?$extradata[3]:$data['item_color']),
'type' => (empty($data['recipe_type'])?$Recipes_to_locale[$extradata[4]]:$data['recipe_type']),
'level' => (!empty($extradata[5])?ltrim($extradata[5],0):$data['level'])));
$recipes[$data['recipe_name']]->data['by'][$data['member_id']] = $data['difficulty'];
$recipes[$data['recipe_name']]->data[$data['lang']] = array (
'name' => $data['recipe_name_org'],
'type' => $data['recipe_type'],
'tooltip' => $data['recipe_tooltip'],
'reagents' => $data['reagents']);
unset($RecipeList[$data['recipe_name']]);
/* } else { // don't exist on $RecipeList array, new recipe ?
if (!array_key_exists($data['recipe_name_org'], $failedrecipes)) {
$failedrecipes[$data['recipe_name_org']] = array (
'type' => $data['recipe_type'],
'quality' => $data['quality'],
'icon' => $data['icon'],
'level' => $data['level'],
'lang' => $data['lang']);
}
if (!array_key_exists($data['member_id'], $failedmembers)) {
$failedmembers[$data['member_id']] = $data['lang'];
}
} */
}
/*} else { // don't exist on $Recipes_to_en array, not translated recipe or user wrong language ?
if (!array_key_exists($data['recipe_name_org'], $failedrecipes)) {
$failedrecipes[$data['recipe_name_org']] = array (
'type' => $data['recipe_type'],
'quality' => $data['quality'],
'icon' => $data['icon'],
'level' => $data['level'],
'lang' => $data['lang']);
}
if (!array_key_exists($data['member_id'], $failedmembers)) {
$failedmembers[$data['member_id']] = $data['lang'];
}
} */
} //end of while
//echo '';
//var_dump($recipes);
switch ($sort) {
case 'skill':
$sortby = 'skill';
break;
case 'level':
$sortby = 'level';
break;
case 'type':
case 'name':
default:
$sortby = 'name';
break;
}
usort($recipes, array("recipe", "compair_types_usersort"));
if ($sort == 'skill') {
asort($RecipeList);
}
$recipe_types = array_unique($types);
ksort($recipe_types);
if( count($failedrecipes) !=0 && $roster->config['debug_mode'] != 0 ) {
foreach ($failedrecipes as $recipe_name=>$recipe) {
print "
- ".$recipe_name."";
}
aprint ($failedmembers);
}
return compact('recipes','recipe_types','RecipeList','maxrecipes');
}
function crafters_get_all( $skill_name, $usedlang, $guild_id = 0 ) {
global $roster, $addon, $sortby;
$skill = '';
$spec = '';
foreach( $usedlang as $lang ) {
$skill .= "'".$roster->locale->wordings[$lang][$skill_name]."', ";
if ($roster->locale->wordings[$lang]['Spec'][$skill_name] != '') {
$spec .= "`b`.`spell_name` LIKE '".$roster->locale->wordings[$lang]['Spec'][$skill_name]."' OR ";
}
}
$skill = substr_replace($skill, "", -2, -1);
if ( $spec != '' ) {
$spec = substr_replace($spec, '', -4, -1);
} else {
$spec = "`b`.`spell_name` LIKE ''";
}
$query = "SELECT `p`.`member_id`, `p`.`name`, `s`.`skill_level`, `b`.`spell_name`"
. " FROM `".$roster->db->table('skills')."` AS s, `".$roster->db->table('players')."` AS p, `".$roster->db->table('spellbook')."` AS b"
. " WHERE `s`.`skill_name` IN (".$skill.")"
. " AND `p`.`member_id` = `b`.`member_id`"
. " AND `p`.`member_id` = `s`.`member_id`"
. " AND (".$spec.")"
. ($guild_id=='0'?" AND `p`.`region` = '".$roster->data['region']."' AND `p`.`server` = '".$roster->db->escape($roster->data['server'])."'":" AND `p`.`guild_id` = '".$guild_id."'")
. " GROUP BY `p`.`member_id`"
. " UNION SELECT `p`.`member_id`, `p`.`name`, `s`.`skill_level`, `b`.`spell_name`"
. " FROM `".$roster->db->table('skills')."` AS s, `".$roster->db->table('players')."` AS p, `".$roster->db->table('spellbook')."` AS b"
. " WHERE `s`.`skill_name` IN (".$skill.")"
. " AND `b`.`spell_name` IN (".$skill.")"
. " AND `p`.`member_id` = `b`.`member_id`"
. " AND `p`.`member_id` = `s`.`member_id`"
. ($guild_id=='0'?" AND `p`.`region` = '".$roster->data['region']."' AND `p`.`server` = '".$roster->db->escape($roster->data['server'])."'":" AND `p`.`guild_id` = '".$guild_id."'")
. " AND NOT EXISTS ( SELECT `b`.`spell_name`"
. " FROM `".$roster->db->table('spellbook')."` AS b"
. " WHERE `b`.`member_id` = `p`.`member_id`"
. " AND (".$spec.")"
. ") ORDER BY `member_id`";
$result = $roster->db->query( $query );
$crafters = array();
$ret_string = "";
$roster->output['html_head'] = $ret_string;
return $crafters;
}
?>