/** * Build Recipes * * @return string */ function show_recipes() { global $roster, $addon; $roster->tpl->assign_vars(array('S_RECIPE_HIDE' => !(bool) $addon['config']['recipe_disp'], 'U_ITEM' => makelink('char-info-recipes&s=item'), 'U_NAME' => makelink('char-info-recipes&s=name'), 'U_DIFFICULTY' => makelink('char-info-recipes&s=difficulty'), 'U_TYPE' => makelink('char-info-recipes&s=type'), 'U_LEVEL' => makelink('char-info-recipes&s=level'), 'U_REAGENTS' => makelink('char-info-recipes&s=reagents'))); // Get recipe sort mode $sort = isset($_GET['s']) ? $_GET['s'] : ''; $recipes = recipe_get_many($this->data['member_id'], '', $sort); $reagents = recipe_get_regents($this->data['member_id']); $reagent_arr = array(); foreach ($reagents as $objects) { $skil = $objects->data['reagent_id']; $reagent_arr[$skil]['item_color'] = $objects->data['reagent_color']; $reagent_arr[$skil]['item_texture'] = $objects->data['reagent_texture']; $reagent_arr[$skil]['item_id'] = $objects->data['reagent_id']; $reagent_arr[$skil]['item_name'] = $objects->data['reagent_name']; $reagent_arr[$skil]['tooltip'] = $objects->data['reagent_tooltip']; } $recipexx = array(); //$recipeee = new recipe(); foreach ($recipes as $idx => $data) { if (isset($data['recipe_sub_type']) && !empty($data['recipe_sub_type'])) { $skill = $data['skill_name']; $type = $data['recipe_type']; $subtype = $data['recipe_sub_type']; $recipe = $data['recipe_name']; $recipeee = new recipe($data); $recipexx[$skill][$type][$subtype]["sub"] = true; $recipexx[$skill][$type][$subtype][$recipe]['recipe_type'] = $data['recipe_type']; $recipexx[$skill][$type][$subtype][$recipe]['difficulty'] = $data['difficulty']; $recipexx[$skill][$type][$subtype][$recipe]['item_color'] = $data['item_color']; $recipexx[$skill][$type][$subtype][$recipe]['reagents'] = $data['reagents']; $recipexx[$skill][$type][$subtype][$recipe]['recipe_texture'] = $data['recipe_texture']; $recipexx[$skill][$type][$subtype][$recipe]['level'] = $data['level']; $recipexx[$skill][$type][$subtype][$recipe]['item_id'] = $data['item_id']; $recipexx[$skill][$type][$subtype][$recipe]['recipe_id'] = $data['recipe_id']; $recipexx[$skill][$type][$subtype][$recipe]['icon'] = $roster->config['interface_url'] . 'Interface/Icons/' . $data['recipe_texture'] . '.' . $roster->config['img_suffix']; //$data->tpl_get_icon(); $recipexx[$skill][$type][$subtype][$recipe]['tooltip'] = makeOverlib($data['recipe_tooltip'], '', $data['item_color'], 0, $roster->config['locale']); $recipexx[$skill][$type][$subtype][$recipe]['itemlink'] = $recipeee->tpl_get_itemlink(); $recipexx[$skill][$type][$subtype][$recipe]['quality'] = $recipeee->_setQuality($data['item_color']); } else { $skill = $data['skill_name']; $type = $data['recipe_type']; $recipe = $data['recipe_name']; $recipeee = new recipe($data); $recipexx[$skill][$type][$recipe]['recipe_type'] = $data['recipe_type']; $recipexx[$skill][$type][$recipe]['difficulty'] = $data['difficulty']; $recipexx[$skill][$type][$recipe]['item_color'] = $data['item_color']; $recipexx[$skill][$type][$recipe]['reagents'] = $data['reagents']; $recipexx[$skill][$type][$recipe]['recipe_texture'] = $data['recipe_texture']; $recipexx[$skill][$type][$recipe]['level'] = $data['level']; $recipexx[$skill][$type][$recipe]['item_id'] = $data['item_id']; $recipexx[$skill][$type][$recipe]['recipe_id'] = $data['recipe_id']; $recipexx[$skill][$type][$recipe]['icon'] = $roster->config['interface_url'] . 'Interface/Icons/' . $data['recipe_texture'] . '.' . $roster->config['img_suffix']; //$data->tpl_get_icon(); $recipexx[$skill][$type][$recipe]['tooltip'] = makeOverlib($data['recipe_tooltip'], '', $data['item_color'], 0, $roster->config['locale']); $recipexx[$skill][$type][$recipe]['itemlink'] = $recipeee->tpl_get_itemlink(); $recipexx[$skill][$type][$recipe]['quality'] = $recipeee->_setQuality($data['item_color']); } } foreach ($recipexx as $skill_name => $header) { $roster->tpl->assign_block_vars('recipe', array('ID' => strtolower(str_replace(' ', '', $skill_name)), 'NAME' => $skill_name, 'ICON' => $this->locale['ts_iconArray'][$skill_name], 'TOOLTIP' => makeOverlib($skill_name, '', '', 1, '', ',WRAP'), 'LINK' => makelink('#' . strtolower(str_replace(' ', '', $skill_name))))); foreach ($header as $hname => $recipe) { $roster->tpl->assign_block_vars('recipe.header', array('NAME' => $hname)); foreach ($recipe as $name => $data) { if (isset($data['sub'])) { $roster->tpl->assign_block_vars('recipe.header.subheader', array('NAME' => $name)); foreach ($data as $s => $dat) { if ($s != 'sub') { $roster->tpl->assign_block_vars('recipe.header.subheader.rows', array('ROW_CLASS' => $roster->switch_row_class(), 'DIFFICULTY' => $dat['difficulty'], 'L_DIFFICULTY' => $roster->locale->act['recipe_' . $dat['difficulty']], 'ITEM_COLOR' => $dat['item_color'], 'NAME' => $s, 'DIFFICULTY_COLOR' => $this->diff($dat['difficulty']), 'TYPE' => $dat['recipe_type'], 'LEVEL' => $dat['level'], 'ICON' => $dat['icon'], 'TOOLTIP' => $dat['tooltip'], 'ITEMLINK' => $dat['itemlink'], 'QUALITY' => $dat['quality'])); $reagents = explode('|', $dat['reagents']); if (is_array($reagents)) { foreach ($reagents as $reagent) { $dtr = explode(':', $reagent); if (empty($dtr[0])) { $roster->tpl->assign_block_vars('recipe.header.subheader.rows.reagents', array('DATA' => $reagent, 'ID' => '000', 'NAME' => 'Missing', 'ITEM_COLOR' => '000000', 'QUALITY' => recipe::getQualityName('ffffff'), 'COUNT' => '0', 'ICON' => 'inv_misc_questionmark', 'TOOLTIP' => makeOverlib('Missing data', '', '', 0, $this->data['clientLocale'], ',RIGHT'))); } else { $roster->tpl->assign_block_vars('recipe.header.subheader.rows.reagents', array('DATA' => $reagent, 'ID' => $reagent_arr[$dtr[0]]['item_id'], 'NAME' => $reagent_arr[$dtr[0]]['item_name'], 'ITEM_COLOR' => $reagent_arr[$dtr[0]]['item_color'], 'QUALITY' => recipe::getQualityName($reagent_arr[$dtr[0]]['item_color']), 'COUNT' => $dtr[1], 'ICON' => $reagent_arr[$dtr[0]]['item_texture'], 'TOOLTIP' => makeOverlib($reagent_arr[$dtr[0]]['tooltip'], '', '', 0, $this->data['clientLocale'], ',RIGHT'))); } } } } } } else { $roster->tpl->assign_block_vars('recipe.header.row', array('ROW_CLASS' => $roster->switch_row_class(), 'DIFFICULTY' => $this->diff($data['difficulty']), 'L_DIFFICULTY' => $roster->locale->act['recipe_' . $data['difficulty']], 'ITEM_COLOR' => $data['item_color'], 'NAME' => $name, 'DIFFICULTY_COLOR' => $this->diff($data['difficulty']), 'TYPE' => $data['recipe_type'], 'LEVEL' => $data['level'], 'ICON' => $data['icon'], 'TOOLTIP' => $data['tooltip'], 'ITEMLINK' => $data['itemlink'], 'QUALITY' => $data['quality'])); $reagents = explode('|', $data['reagents']); //echo $name.'<br>'; if (is_array($reagents)) { //print_r($reagents); //echo '<pre><br>'; foreach ($reagents as $reagent) { $dtr = explode(':', $reagent); if (empty($dtr[0])) { $roster->tpl->assign_block_vars('recipe.header.row.reagents', array('DATA' => $reagent, 'ID' => '000', 'NAME' => 'Missing', 'ITEM_COLOR' => '000000', 'QUALITY' => recipe::getQualityName('ffffff'), 'COUNT' => '0', 'ICON' => 'inv_misc_questionmark', 'TOOLTIP' => makeOverlib('Missing data', '', '', 0, $this->data['clientLocale'], ',RIGHT'))); } else { $roster->tpl->assign_block_vars('recipe.header.row.reagents', array('DATA' => $reagent, 'ID' => $reagent_arr[$dtr[0]]['item_id'], 'NAME' => $reagent_arr[$dtr[0]]['item_name'], 'ITEM_COLOR' => $reagent_arr[$dtr[0]]['item_color'], 'QUALITY' => recipe::getQualityName($reagent_arr[$dtr[0]]['item_color']), 'COUNT' => $dtr[1], 'ICON' => $reagent_arr[$dtr[0]]['item_texture'], 'TOOLTIP' => makeOverlib($reagent_arr[$dtr[0]]['tooltip'], '', '', 0, $this->data['clientLocale'], ',RIGHT'))); } } } } } } } /* if (isset($recipes[0])) { $recipe_arr = array(); foreach ($recipes as $object) { $skill = $object->data['skill_name']; $recipe = $object->data['recipe_name']; $recipe_arr[$skill][$recipe]['recipe_type'] = $object->data['recipe_type']; $recipe_arr[$skill][$recipe]['difficulty'] = $object->data['difficulty']; $recipe_arr[$skill][$recipe]['item_color'] = $object->data['item_color']; $recipe_arr[$skill][$recipe]['reagents'] = $object->data['reagents']; $recipe_arr[$skill][$recipe]['recipe_texture'] = $object->data['recipe_texture']; $recipe_arr[$skill][$recipe]['level'] = $object->data['level']; $recipe_arr[$skill][$recipe]['item_id'] = $object->data['item_id']; $recipe_arr[$skill][$recipe]['recipe_id'] = $object->data['recipe_id']; $recipe_arr[$skill][$recipe]['icon'] = $object->tpl_get_icon(); $recipe_arr[$skill][$recipe]['tooltip'] = $object->tpl_get_tooltip(); $recipe_arr[$skill][$recipe]['itemlink'] = $object->tpl_get_itemlink(); $recipe_arr[$skill][$recipe]['quality'] = $object->quality; } // echo '<pre>'; // print_r($recipe_arr); foreach ($recipe_arr as $skill_name => $recipe) { $roster->tpl->assign_block_vars('recipe',array( 'ID' => strtolower(str_replace(' ','',$skill_name)), 'NAME' => $skill_name, 'ICON' => $this->locale['ts_iconArray'][$skill_name], 'TOOLTIP' => makeOverlib($skill_name,'','',1,'',',WRAP'), 'LINK' => makelink('#' . strtolower(str_replace(' ','',$skill_name))), ) ); foreach ($recipe as $name => $data) { switch ($data['difficulty']) { case 5 : $difficultycolor = 'red'; //difficult break; case 4 : $difficultycolor = 'orange'; //optimal break; case 3 : $difficultycolor = 'yellow'; //medium break; case 2 : $difficultycolor = 'green'; //easy break; case 1 : default : $difficultycolor = 'grey'; //trivial break; } $roster->tpl->assign_block_vars('recipe.row',array( 'ROW_CLASS' => $roster->switch_row_class(), 'DIFFICULTY' => $data['difficulty'], 'L_DIFFICULTY' => $roster->locale->act['recipe_' . $data['difficulty']], 'ITEM_COLOR' => $data['item_color'], 'NAME' => $name, 'DIFFICULTY_COLOR' => $difficultycolor, 'TYPE' => $data['recipe_type'], 'LEVEL' => $data['level'], 'ICON' => $data['icon'], 'TOOLTIP' => $data['tooltip'], 'ITEMLINK' => $data['itemlink'], 'QUALITY' => $data['quality'], ) ); $reagents = explode('|',$data['reagents']); //echo $name.'<br>'; if ( is_array($reagents) ) { //print_r($reagents); //echo '<pre><br>'; foreach ($reagents as $reagent) { $dtr = explode(':', $reagent); //print_r($reagent); //echo '<br>'; //echo $dtr[0].' -|- '. //print_r($reagent_arr[$dtr[0]]); //echo '<br><hr><br>'; if (empty($dtr[0])) { $roster->tpl->assign_block_vars('recipe.row.reagents',array( 'DATA' => $reagent, 'ID' => '000', 'NAME' => 'Missing', 'ITEM_COLOR' => '000000', 'QUALITY' => recipe::getQualityName('ffffff'), 'COUNT' => '0', 'ICON' => 'inv_misc_questionmark', 'TOOLTIP' => makeOverlib('Missing data','','',0,$this->data['clientLocale'],',RIGHT'), ) ); } else { $roster->tpl->assign_block_vars('recipe.row.reagents',array( 'DATA' => $reagent, 'ID' => $reagent_arr[$dtr[0]]['item_id'], 'NAME' => $reagent_arr[$dtr[0]]['item_name'], 'ITEM_COLOR' => $reagent_arr[$dtr[0]]['item_color'], 'QUALITY' => recipe::getQualityName($reagent_arr[$dtr[0]]['item_color']), 'COUNT' => $dtr[1], 'ICON' => $reagent_arr[$dtr[0]]['item_texture'], 'TOOLTIP' => makeOverlib($reagent_arr[$dtr[0]]['tooltip'],'','',0,$this->data['clientLocale'],',RIGHT'), ) ); } } } } } } */ //echo '<pre>';print_r($recipexx);echo '</pre>'; $roster->tpl->set_filenames(array('recipes' => $addon['basename'] . '/recipes.html')); return $roster->tpl->fetch('recipes'); }
function search($search, $limit = 10, $page = 0) { global $roster; $first = $page * $limit; $sql = "SELECT `players`.`name`, `players`.`member_id`, `players`.`server`, `players`.`region`, `recipes`.*" . " FROM `" . $roster->db->table('recipes') . "` AS recipes,`" . $roster->db->table('players') . "` AS players" . " WHERE `recipes`.`member_id` = `players`.`member_id`" . " AND (`recipes`.`recipe_name` LIKE '%{$search}%' OR `recipes`.`recipe_tooltip` LIKE '%{$search}%')" . ($this->minlvl != '' ? " AND `recipes`.`level` >= '{$this->minlvl}'" : '') . ($this->maxlvl != '' ? " AND `recipes`.`level` <= '{$this->maxlvl}'" : '') . $this->quality_sql . " ORDER BY `recipes`.`recipe_name` ASC, `recipes`.`recipe_type` ASC" . ($limit > 0 ? " LIMIT {$first}," . $limit : '') . ';'; //calculating the search time $this->start_search = format_microtime(); $result = $roster->db->query($sql); $this->stop_search = format_microtime(); $this->time_search = $this->stop_search - $this->start_search; $nrows = $roster->db->num_rows($result); $x = $limit > $nrows ? $nrows : ($limit > 0 ? $limit : $nrows); if ($nrows > 0 && $limit > 0) { while ($x > 0) { $row = $roster->db->fetch($result); $icon = new recipe($row); $item['html'] = '<td class="SearchRowCell">' . $icon->out(true) . '</td>' . '<td class="SearchRowCell">' . $icon->data['level'] . '</td>' . '<td class="SearchRowCell"><span style="color:#' . $icon->data['item_color'] . '">[' . $icon->data['recipe_name'] . ']</span></td>' . '<td class="SearchRowCell">' . $icon->data['skill_name'] . '<br />' . $icon->data['recipe_type'] . '</td>' . '<td class="SearchRowCell">' . str_replace('<br>', '<br />', $icon->data['reagents']) . '</td>' . '<td class="SearchRowCellRight"><a href="' . makelink('char-info-recipes&a=c:' . $row['member_id'] . '#' . strtolower(str_replace(' ', '', $icon->data['skill_name']))) . '"><strong>' . $row['name'] . '</strong></a></td>'; $this->add_result($item); unset($item); $x--; } } else { $this->result_count = $nrows; } $roster->db->free_result($result); }