diff --git a/mojotrollz/sai/autoload.inc b/mojotrollz/sai/autoload.inc index 3c54909..ddebef0 100644 --- a/mojotrollz/sai/autoload.inc +++ b/mojotrollz/sai/autoload.inc @@ -4,8 +4,7 @@ SYSTEM\autoload::registerFolder(dirname(__FILE__).'',''); SYSTEM\autoload::registerFolder(dirname(__FILE__).'/saimod_mojotrollz_server_handling',''); \SYSTEM\SAI\sai::register('saimod_mojotrollz_server_handling'); require_once dirname(__FILE__).'/saimod_mojotrollz_db_creature/autoload.inc'; -SYSTEM\autoload::registerFolder(dirname(__FILE__).'/saimod_mojotrollz_db_item',''); -\SYSTEM\SAI\sai::register('saimod_mojotrollz_db_item'); +require_once dirname(__FILE__).'/saimod_mojotrollz_db_item/autoload.inc'; SYSTEM\autoload::registerFolder(dirname(__FILE__).'/saimod_mojotrollz_db_quest',''); \SYSTEM\SAI\sai::register('saimod_mojotrollz_db_quest'); require_once dirname(__FILE__).'/saimod_mojotrollz_db_object/autoload.inc'; diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/autoload.inc b/mojotrollz/sai/saimod_mojotrollz_db_item/autoload.inc new file mode 100644 index 0000000..e8674b9 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/autoload.inc @@ -0,0 +1,4 @@ +query('SELECT * FROM item_template LIMIT 100;'); - - $result = ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '; - while($row = $res->next()){ - $result .= ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '; + public static function sai_mod_saimod_mojotrollz_db_item_action_search($search,$tags=null){ + return self::sai_mod_saimod_mojotrollz_db_item($search,$tags);} + + public static function sai_mod_saimod_mojotrollz_db_item_action_tag($id,$tags){ + $tags = json_decode($tags,true); + foreach ($tags as $type=>$value){ + if($value == -2){ + tags::del(tags::TAG_TABLE_ITEM, $id, $type);} + tags::set(tags::TAG_TABLE_ITEM, $id, $type, $value);} + return JsonResult::ok(); + } + + public static function sai_mod_saimod_mojotrollz_db_item_action_item($id){ + $vars = array(); + $vars['entries'] = $vars['tag_entries'] = ''; + + $base_row = \DBD\DB_ITEM_TEMPLATE_ITEM::Q1(array($id)); + foreach($base_row as $key=>$value){ + $vars['entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/item_base.tpl'), array('key' => $key, 'value' => $value));} + + //Item Tags + $tags_res = tags::get(tags::TAG_TABLE_ITEM, $base_row['entry']); + $tags = array(); + while($tag = $tags_res->next()){ + $tags[$tag['type']] = $tag;} + + //Tag Types + $tags_types = tags::get_type(tags::TAG_TABLE_ITEM); + while($tag = $tags_types->next()){ + $tag['options'] = ''; + $tags_values = tags::get_value($tag['id']); + while($value = $tags_values->next()){ + $value['selected'] = ''; + if( array_key_exists($value['type'], $tags) && + $tags[$value['type']]['value'] == $value['id']){ + $value['selected'] = 'selected';} + $tag['options'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/tag_entry_option.tpl'), $value);} + $vars['tag_entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/tag_item_entry.tpl'), $tag);} + + return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/item.tpl'), $vars); + } + public static function sai_mod_saimod_mojotrollz_db_item($search='%',$tags=null){ + $vars = array(); + $vars['search'] = $search; + $vars['entries'] = $vars['tag_entries'] = ''; + + $tags = json_decode($tags,true); + if(!$tags){ + $tags = array();} + + $tags_types = tags::get_type(tags::TAG_TABLE_ITEM); + while($tag = $tags_types->next()){ + $tag['options'] = ''; + $tags_values = tags::get_value($tag['id']); + while($value = $tags_values->next()){ + $value['selected'] = ''; + if( array_key_exists($value['type'], $tags) && + $tags[$value['type']] == $value['id']){ + $value['selected'] = 'selected';} + $tag['options'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/tag_entry_option.tpl'), $value);} + $vars['tag_entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/tag_entry.tpl'), $tag);} + + $sql_join = $sql_where = ''; + foreach($tags as $type=>$value){ + if($value == -1){ + continue;} + if($value == -2){ + $sql_where .= 'entry NOT IN (SELECT id FROM host_mojotrollz.mojotrollz_tags WHERE `table` = '.tags::TAG_TABLE_ITEM.' AND `type` = '.$type.') AND '; + continue;} + $sql_join .= 'LEFT JOIN host_mojotrollz.mojotrollz_tags as t'.$type.' ON item_template.entry = t'.$type.'.id '; + $sql_where .= 't'.$type.'.`table` = '.tags::TAG_TABLE_ITEM.' AND t'.$type.'.`type` = '.$type.' AND t'.$type.'.value = '.$value.' AND '; } - $result .= '
classsubclassnamedisplayidQualityentryFlagsBuyCountBuyPriceSellPriceInventoryTypeAllowableClassAllowableRaceItemLevelRequiredLevelRequiredSkillRequiredSkillRankrequiredspellrequiredhonorrankRequiredCityRankRequiredReputationFactionRequiredReputationRankmaxcountstackableContainerSlotsstat_type1stat_value1stat_type2stat_value2stat_type3stat_value3stat_type4stat_value4stat_type5stat_value5stat_type6stat_value6stat_type7stat_value7stat_type8stat_value8stat_type9stat_value9stat_type10stat_value10dmg_min1dmg_max1dmg_type1dmg_min2dmg_max2dmg_type2dmg_min3dmg_max3dmg_type3dmg_min4dmg_max4dmg_type4dmg_min5dmg_max5dmg_type5armorholy_resfire_resnature_resfrost_resshadow_resarcane_resdelayammo_typeRangedModRangespellid_1spelltrigger_1spellcharges_1spellppmRate_1spellcooldown_1spellcategory_1spellcategorycooldown_1spellid_2spelltrigger_2spellcharges_2spellppmRate_2spellcooldown_2spellcategory_2spellcategorycooldown_2spellid_3spelltrigger_3spellcharges_3spellppmRate_3spellcooldown_3spellcategory_3spellcategorycooldown_3spellid_4spelltrigger_4spellcharges_4spellppmRate_4spellcooldown_4spellcategory_4spellcategorycooldown_4spellid_5spelltrigger_5spellcharges_5spellppmRate_5spellcooldown_5spellcategory_5spellcategorycooldown_5bondingdescriptionPageTextLanguageIDPageMaterialstartquestlockidMaterialsheathRandomPropertyblockitemsetMaxDurabilityarea
'.$row['class'].''.$row['subclass'].''.$row['name'].''.$row['displayid'].''.$row['Quality'].''.$row['entry'].''.$row['Flags'].''.$row['BuyCount'].''.$row['BuyPrice'].''.$row['SellPrice'].''.$row['InventoryType'].''.$row['AllowableClass'].''.$row['AllowableRace'].''.$row['ItemLevel'].''.$row['RequiredLevel'].''.$row['RequiredSkill'].''.$row['RequiredSkillRank'].''.$row['requiredspell'].''.$row['requiredhonorrank'].''.$row['RequiredCityRank'].''.$row['RequiredReputationFaction'].''.$row['RequiredReputationRank'].''.$row['maxcount'].''.$row['stackable'].''.$row['ContainerSlots'].''.$row['stat_type1'].''.$row['stat_value1'].''.$row['stat_type2'].''.$row['stat_value2'].''.$row['stat_type3'].''.$row['stat_value3'].''.$row['stat_type4'].''.$row['stat_value4'].''.$row['stat_type5'].''.$row['stat_value5'].''.$row['stat_type6'].''.$row['stat_value6'].''.$row['stat_type7'].''.$row['stat_value7'].''.$row['stat_type8'].''.$row['stat_value8'].''.$row['stat_type9'].''.$row['stat_value9'].''.$row['stat_type10'].''.$row['stat_value10'].''.$row['dmg_min1'].''.$row['dmg_max1'].''.$row['dmg_type1'].''.$row['dmg_min2'].''.$row['dmg_max2'].''.$row['dmg_type2'].''.$row['dmg_min3'].''.$row['dmg_max3'].''.$row['dmg_type3'].''.$row['dmg_min4'].''.$row['dmg_max4'].''.$row['dmg_type4'].''.$row['dmg_min5'].''.$row['dmg_max5'].''.$row['dmg_type5'].''.$row['armor'].''.$row['holy_res'].''.$row['fire_res'].''.$row['nature_res'].''.$row['frost_res'].''.$row['shadow_res'].''.$row['arcane_res'].''.$row['delay'].''.$row['ammo_type'].''.$row['RangedModRange'].''.$row['spellid_1'].''.$row['spelltrigger_1'].''.$row['spellcharges_1'].''.$row['spellppmRate_1'].''.$row['spellcooldown_1'].''.$row['spellcategory_1'].''.$row['spellcategorycooldown_1'].''.$row['spellid_2'].''.$row['spelltrigger_2'].''.$row['spellcharges_2'].''.$row['spellppmRate_2'].''.$row['spellcooldown_2'].''.$row['spellcategory_2'].''.$row['spellcategorycooldown_2'].''.$row['spellid_3'].''.$row['spelltrigger_3'].''.$row['spellcharges_3'].''.$row['spellppmRate_3'].''.$row['spellcooldown_3'].''.$row['spellcategory_3'].''.$row['spellcategorycooldown_3'].''.$row['spellid_4'].''.$row['spelltrigger_4'].''.$row['spellcharges_4'].''.$row['spellppmRate_4'].''.$row['spellcooldown_4'].''.$row['spellcategory_4'].''.$row['spellcategorycooldown_4'].''.$row['spellid_5'].''.$row['spelltrigger_5'].''.$row['spellcharges_5'].''.$row['spellppmRate_5'].''.$row['spellcooldown_5'].''.$row['spellcategory_5'].''.$row['spellcategorycooldown_5'].''.$row['bonding'].''.$row['description'].''.$row['PageText'].''.$row['LanguageID'].''.$row['PageMaterial'].''.$row['startquest'].''.$row['lockid'].''.$row['Material'].''.$row['sheath'].''.$row['RandomProperty'].''.$row['block'].''.$row['itemset'].''.$row['MaxDurability'].''.$row['area'].'
'; - return $result;} + $con = new \SYSTEM\DB\Connection(new \DBD\mangos_world()); + $res = $con->prepare( 'search-item', + 'SELECT item_template.* FROM item_template '. + $sql_join. + ' WHERE '.$sql_where. + ' (`entry` LIKE ? OR `name` LIKE ? OR `description` LIKE ?) LIMIT 100;', + array($search,$search,$search)); + while($row = $res->next()){ + $vars['entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/search_entry.tpl'), $row);} + + return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_item/tpl/search.tpl'), $vars); + } + public static function html_li_menu(){return '
  • DB:Items
  • ';} public static function right_public(){return false;} public static function right_right(){return \SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI);} - public static function sai_mod_saimod_mojotrollz_db_item_flag_js(){return \SYSTEM\LOG\JsonResult::toString(array());} - public static function sai_mod_saimod_mojotrollz_db_item_flag_css(){} - + public static function sai_mod_saimod_mojotrollz_db_item_flag_js(){return \SYSTEM\LOG\JsonResult::toString(array( + \SYSTEM\WEBPATH(new PAPI(),'database/js/wow.js'), + \SYSTEM\WEBPATH(new PAPI(),'map/js/map.js'), + \SYSTEM\WEBPATH(new PSAI(),'saimod_mojotrollz_db_item/js/saimod_mojotrollz_db_item.js')));} + public static function sai_mod_saimod_mojotrollz_db_item_flag_css(){return \SYSTEM\LOG\JsonResult::toString(array( + \SYSTEM\WEBPATH(new PAPI(),'map/css/map.css')));} } \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/item.tpl b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/item.tpl new file mode 100644 index 0000000..b621573 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/item.tpl @@ -0,0 +1,12 @@ + + + + + + ${tag_entries} +
    TagTypeTagTypeValue
    + +
    + +${entries} +
    \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/item_base.tpl b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/item_base.tpl new file mode 100644 index 0000000..7a42d83 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/item_base.tpl @@ -0,0 +1,4 @@ + + ${key} + ${value} + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/search.tpl b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/search.tpl new file mode 100644 index 0000000..70600a5 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/search.tpl @@ -0,0 +1,23 @@ +
    + + + + + + + ${tag_entries} +
    TagTypeTagTypeValue
    + +
    +
    + + + + + + + + + + ${entries} +
    EntryNameDescriptionQualityBuyPriceSellPrice
    \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/search_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/search_entry.tpl new file mode 100644 index 0000000..33ce4f8 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/search_entry.tpl @@ -0,0 +1,8 @@ + + ${entry} + ${name} + ${description} + ${Quality} + ${BuyPrice} + ${SellPrice} + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_entry.tpl new file mode 100644 index 0000000..4cc4f83 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_entry.tpl @@ -0,0 +1,10 @@ + + ${name} + + + + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_entry_option.tpl b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_entry_option.tpl new file mode 100644 index 0000000..4950b9b --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_entry_option.tpl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_item_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_item_entry.tpl new file mode 100644 index 0000000..535a1b8 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_item/tpl/tag_item_entry.tpl @@ -0,0 +1,9 @@ + + ${name} + + + + \ No newline at end of file