From 15ad70485e75dba2d5ddc9a2e73a372865ecae77 Mon Sep 17 00:00:00 2001 From: rylon Date: Mon, 22 Dec 2014 00:17:26 +0100 Subject: [PATCH] tagging possible --- mojotrollz/api/database/tags/qq/TAGS_DEL.php | 10 +++ mojotrollz/api/database/tags/qq/TAGS_GET.php | 9 +- mojotrollz/api/database/tags/qq/TAGS_SET.php | 3 +- mojotrollz/api/database/tags/tags.php | 3 + .../db_creatures.sql | 8 +- .../js/saimod_mojotrollz_db_creature.js | 37 ++++++-- .../saimod_mojotrollz_db_creature.php | 86 ++++++++++++++++--- .../tpl/creature.tpl | 15 ++++ .../tpl/creature_base.tpl | 4 + .../tpl/search.tpl | 2 +- .../tpl/search_entry.tpl | 2 +- .../tpl/tag_creature_entry.tpl | 9 ++ .../tpl/tag_entry.tpl | 5 +- .../tpl/tag_entry_option.tpl | 2 +- 14 files changed, 166 insertions(+), 29 deletions(-) create mode 100644 mojotrollz/api/database/tags/qq/TAGS_DEL.php create mode 100644 mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature.tpl create mode 100644 mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature_base.tpl create mode 100644 mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_creature_entry.tpl diff --git a/mojotrollz/api/database/tags/qq/TAGS_DEL.php b/mojotrollz/api/database/tags/qq/TAGS_DEL.php new file mode 100644 index 0000000..6cf6b7b --- /dev/null +++ b/mojotrollz/api/database/tags/qq/TAGS_DEL.php @@ -0,0 +1,10 @@ +$value){ + if($value == -2){ + tags::del(tags::TAG_TABLE_CREATURE, $id, $type);} + tags::set(tags::TAG_TABLE_CREATURE, $id, $type, $value);} + return JsonResult::ok(); + } + public static function sai_mod_saimod_mojotrollz_db_creature_action_creature($id){ - $def = array('additional_tables' => array( '\DBD\DB_CREATURE_TEMPLATE_CREATURE_LOOT' => array('key' => 'LootId', 'caption' => 'Loot'), + /*$def = array('additional_tables' => array( '\DBD\DB_CREATURE_TEMPLATE_CREATURE_LOOT' => array('key' => 'LootId', 'caption' => 'Loot'), '\DBD\DB_CREATURE_TEMPLATE_CREATURE_TEMPLATE_ADDON' => array('key' => 'Entry', 'caption' => 'Template Addon'), '\DBD\DB_CREATURE_TEMPLATE_CREATURE_TEMPLATE_SPELLS' => array('key' => 'Entry', 'caption' => 'Template Spells'), '\DBD\DB_CREATURE_TEMPLATE_CREATURE_QUESTRELATION' => array('key' => 'Entry', 'caption' => 'Questrelation'), @@ -15,16 +24,36 @@ class saimod_mojotrollz_db_creature extends \SYSTEM\SAI\SaiModule { '\DBD\DB_CREATURE_TEMPLATE_CREATURE_EQUIP_TEMPLATE_RAW' => array('key' => 'Entry', 'caption' => 'Equip Template Raw'), '\DBD\DB_CREATURE_TEMPLATE_CREATURE_EQUIP_TEMPLATE' => array('key' => 'Entry', 'caption' => 'Equip Template'), '\DBD\DB_CREATURE_TEMPLATE_CREATURE_AI_SCRIPTS' => array('key' => 'Entry', 'caption' => 'AI Scripts'), - '\DBD\DB_CREATURE_TEMPLATE_CREATURE_MOVEMENT_TEMPLATE' => array('key' => 'Entry', 'caption' => 'Movement Template'),)); + '\DBD\DB_CREATURE_TEMPLATE_CREATURE_MOVEMENT_TEMPLATE' => array('key' => 'Entry', 'caption' => 'Movement Template'),));*/ + $vars = array(); + $vars['entries'] = $vars['tag_entries'] = ''; + + $vars['map'] = map::generate(1,$id); - $result = map::generate(1,$id).''; $base_row = \DBD\DB_CREATURE_TEMPLATE_CREATURE::Q1(array($id)); foreach($base_row as $key=>$value){ - $result .= '';} - $result .= '
'.$key.''.$value.'
'; + $vars['entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_creature/tpl/creature_base.tpl'), array('key' => $key, 'value' => $value));} + //Creature Tags + $tags_res = tags::get(tags::TAG_TABLE_CREATURE, $base_row['Entry']); + $tags = array(); + while($tag = $tags_res->next()){ + $tags[$tag['type']] = $tag;} - foreach($def['additional_tables'] as $key=>$value){ + //Tag Types + $tags_types = tags::get_type(tags::TAG_TABLE_CREATURE); + 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_creature/tpl/tag_entry_option.tpl'), $value);} + $vars['tag_entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_creature/tpl/tag_creature_entry.tpl'), $tag);} + + /*foreach($def['additional_tables'] as $key=>$value){ $result .= '

'.$value['caption'].'

'; $res = \call_user_func($key.'::QQ',array($base_row[$value['key']])); $first = true; @@ -43,25 +72,58 @@ class saimod_mojotrollz_db_creature extends \SYSTEM\SAI\SaiModule { } $result .= '
'; - } + }*/ - return $result; + return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_creature/tpl/creature.tpl'), $vars); } public static function sai_mod_saimod_mojotrollz_db_creature($search='%',$tags=null){ $vars = array(); + $vars['search'] = $search; $vars['entries'] = $vars['tag_entries'] = ''; - $tags = tags::get_type(tags::TAG_TABLE_CREATURE); - while($tag = $tags->next()){ + $tags = json_decode($tags,true); + new INFO(print_r($tags,true)); + if(!$tags){ + $tags = array();} + + $tags_types = tags::get_type(tags::TAG_TABLE_CREATURE); + 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_creature/tpl/tag_entry_option.tpl'), $value);} $vars['tag_entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_creature/tpl/tag_entry.tpl'), $tag);} - $res = \DBD\DB_CREATURE_TEMPLATE_SEARCH::QQ(array($search,$search,$search)); + $sql_join = $sql_where = ''; + foreach($tags as $type=>$value){ + new INFO($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_CREATURE.' AND `type` = '.$type.') AND '; + continue;} + $sql_join .= 'LEFT JOIN host_mojotrollz.mojotrollz_tags as t'.$type.' ON creature_template.Entry = t'.$type.'.id '; + $sql_where .= 't'.$type.'.`table` = 1 AND t'.$type.'.`type` = '.$type.' AND t'.$type.'.value = '.$value.' AND '; + } + new INFO('SELECT creature_template.* FROM creature_template '. + $sql_join. + ' WHERE '.$sql_where. + ' (`Entry` LIKE ? OR `Name` LIKE ? OR `Subname` LIKE ?) LIMIT 100;'); + $con = new \SYSTEM\DB\Connection(new \DBD\mangos_world()); + $res = $con->prepare( 'search-creature', + 'SELECT creature_template.* FROM creature_template '. + $sql_join. + ' WHERE '.$sql_where. + ' (`Entry` LIKE ? OR `Name` LIKE ? OR `Subname` LIKE ?) LIMIT 100;', + array($search,$search,$search)); + //$res = \DBD\DB_CREATURE_TEMPLATE_SEARCH::QQ(array($search,$search,$search)); while($row = $res->next()){ $vars['entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_creature/tpl/search_entry.tpl'), $row);} + return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_creature/tpl/search.tpl'), $vars); } diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature.tpl b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature.tpl new file mode 100644 index 0000000..ba4a1aa --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature.tpl @@ -0,0 +1,15 @@ +
+ ${map} +
+ + + + + + ${tag_entries} +
TagTypeTagTypeValue
+ +
+ +${entries} +
\ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature_base.tpl b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature_base.tpl new file mode 100644 index 0000000..7a42d83 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/creature_base.tpl @@ -0,0 +1,4 @@ + + ${key} + ${value} + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search.tpl b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search.tpl index fff5936..24e4fed 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search.tpl +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search.tpl @@ -1,5 +1,5 @@
- + diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search_entry.tpl index 918c32f..85222fb 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search_entry.tpl +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/search_entry.tpl @@ -1,4 +1,4 @@ - + diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_creature_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_creature_entry.tpl new file mode 100644 index 0000000..535a1b8 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_creature_entry.tpl @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry.tpl index 036d90c..4cc4f83 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry.tpl +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry.tpl @@ -1,8 +1,9 @@ diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry_option.tpl b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry_option.tpl index f611c31..4950b9b 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry_option.tpl +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/tpl/tag_entry_option.tpl @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file
TagType
${Entry} ${Name} ${SubName}
${name} + +
${name} - + + ${options}