diff --git a/mojotrollz/api/database/tags/tags.php b/mojotrollz/api/database/tags/tags.php index b7a7650..c07c19f 100644 --- a/mojotrollz/api/database/tags/tags.php +++ b/mojotrollz/api/database/tags/tags.php @@ -7,6 +7,10 @@ class tags { const TAG_TABLE_SPELLS = 5; const TAG_TABLE_PLAYERS = 6; const TAG_TABLE_TOPICS = 7; + + public static function statistics($table,$type){ + } + public static function get($table, $id, $type = null){ if($type){ return \DBD\TAGS_GET_TYPE::Q1(array($table, $id, $type));} diff --git a/mojotrollz/api/database/tooltip/tpl/tooltip_object.tpl b/mojotrollz/api/database/tooltip/tpl/tooltip_object.tpl index bb3d896..99c6d31 100644 --- a/mojotrollz/api/database/tooltip/tpl/tooltip_object.tpl +++ b/mojotrollz/api/database/tooltip/tpl/tooltip_object.tpl @@ -1,5 +1 @@ -Player: ${name}(${guid})
-Race: ${race}
-Class: ${class}
-Gender: ${gender}
-Level: ${level} \ No newline at end of file +Object ${name}(${guid})
\ No newline at end of file diff --git a/mojotrollz/api/map/qq/MAP_OBJECTS.php b/mojotrollz/api/map/qq/MAP_OBJECTS.php index c525345..b609363 100644 --- a/mojotrollz/api/map/qq/MAP_OBJECTS.php +++ b/mojotrollz/api/map/qq/MAP_OBJECTS.php @@ -8,8 +8,8 @@ class MAP_OBJECTS extends \SYSTEM\DB\QP { '', //mys 'SELECT guid as id,map,position_x as x,position_y as y,position_z as z,orientation as o, value as map_name FROM gameobject'. -' LEFT JOIN host_mojotrollz.mojotrollz_tags_value ON id = map'. -' WHERE type=1 AND map = ? AND entry=? LIMIT 100;', +' LEFT JOIN host_mojotrollz.mojotrollz_tags_value ON host_mojotrollz.mojotrollz_tags_value.id = map'. +' WHERE type=1 AND map = ? AND guid=? LIMIT 100;', new \DBD\mangos_world() );}} diff --git a/mojotrollz/api/map/qq/MAP_OBJECTS_MAPS.php b/mojotrollz/api/map/qq/MAP_OBJECTS_MAPS.php index 2f6607a..f17f36f 100644 --- a/mojotrollz/api/map/qq/MAP_OBJECTS_MAPS.php +++ b/mojotrollz/api/map/qq/MAP_OBJECTS_MAPS.php @@ -1,15 +1,15 @@
- +
diff --git a/mojotrollz/sai/autoload.inc b/mojotrollz/sai/autoload.inc index 9f1dc64..3c54909 100644 --- a/mojotrollz/sai/autoload.inc +++ b/mojotrollz/sai/autoload.inc @@ -3,13 +3,12 @@ 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.php'; +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'); SYSTEM\autoload::registerFolder(dirname(__FILE__).'/saimod_mojotrollz_db_quest',''); \SYSTEM\SAI\sai::register('saimod_mojotrollz_db_quest'); -SYSTEM\autoload::registerFolder(dirname(__FILE__).'/saimod_mojotrollz_db_object',''); -\SYSTEM\SAI\sai::register('saimod_mojotrollz_db_object'); +require_once dirname(__FILE__).'/saimod_mojotrollz_db_object/autoload.inc'; require_once dirname(__FILE__).'/saimod_mojotrollz_db_player/autoload.inc'; SYSTEM\autoload::registerFolder(dirname(__FILE__).'/saimod_mojotrollz_db_spell',''); \SYSTEM\SAI\sai::register('saimod_mojotrollz_db_spell'); diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/autoload.inc.php b/mojotrollz/sai/saimod_mojotrollz_db_creature/autoload.inc similarity index 100% rename from mojotrollz/sai/saimod_mojotrollz_db_creature/autoload.inc.php rename to mojotrollz/sai/saimod_mojotrollz_db_creature/autoload.inc diff --git a/mojotrollz/sai/saimod_mojotrollz_db_creature/saimod_mojotrollz_db_creature.php b/mojotrollz/sai/saimod_mojotrollz_db_creature/saimod_mojotrollz_db_creature.php index 5f88857..75e516e 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_creature/saimod_mojotrollz_db_creature.php +++ b/mojotrollz/sai/saimod_mojotrollz_db_creature/saimod_mojotrollz_db_creature.php @@ -28,7 +28,7 @@ class saimod_mojotrollz_db_creature extends \SYSTEM\SAI\SaiModule { $vars = array(); $vars['entries'] = $vars['tag_entries'] = ''; - $vars['map'] = map::generate(1,$id); + $vars['map'] = map::generate(tags::TAG_TABLE_CREATURE,$id); $base_row = \DBD\DB_CREATURE_TEMPLATE_CREATURE::Q1(array($id)); foreach($base_row as $key=>$value){ @@ -82,7 +82,6 @@ class saimod_mojotrollz_db_creature extends \SYSTEM\SAI\SaiModule { $vars['entries'] = $vars['tag_entries'] = ''; $tags = json_decode($tags,true); - new INFO(print_r($tags,true)); if(!$tags){ $tags = array();} @@ -100,19 +99,14 @@ class saimod_mojotrollz_db_creature extends \SYSTEM\SAI\SaiModule { $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 '; + $sql_where .= 't'.$type.'.`table` = '.tags::TAG_TABLE_CREATURE.' 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 '. diff --git a/mojotrollz/sai/saimod_mojotrollz_db_object/autoload.inc b/mojotrollz/sai/saimod_mojotrollz_db_object/autoload.inc new file mode 100644 index 0000000..5ff040b --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/autoload.inc @@ -0,0 +1,4 @@ +query('SELECT * FROM gameobject_template LIMIT 100;'); - - $result = ' - - '; - while($row = $res->next()){ - $result .= ' - - '; + public static function sai_mod_saimod_mojotrollz_db_object_action_search($search,$tags=null){ + return self::sai_mod_saimod_mojotrollz_db_object($search,$tags);} + + public static function sai_mod_saimod_mojotrollz_db_object_action_tag($id,$tags){ + $tags = json_decode($tags,true); + foreach ($tags as $type=>$value){ + if($value == -2){ + tags::del(tags::TAG_TABLE_OBJECT, $id, $type);} + tags::set(tags::TAG_TABLE_OBJECT, $id, $type, $value);} + return JsonResult::ok(); + } + + public static function sai_mod_saimod_mojotrollz_db_object_action_object($id){ + $vars = array(); + $vars['entries'] = $vars['tag_entries'] = ''; + + $vars['map'] = map::generate(tags::TAG_TABLE_OBJECT,$id); + + $base_row = \DBD\DB_OBJECT_TEMPLATE_OBJECT::Q1(array($id)); + foreach($base_row as $key=>$value){ + $vars['entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_object/tpl/object_base.tpl'), array('key' => $key, 'value' => $value));} + + //Object Tags + $tags_res = tags::get(tags::TAG_TABLE_OBJECT, $base_row['entry']); + $tags = array(); + while($tag = $tags_res->next()){ + $tags[$tag['type']] = $tag;} + + //Tag Types + $tags_types = tags::get_type(tags::TAG_TABLE_OBJECT); + 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_object/tpl/tag_entry_option.tpl'), $value);} + $vars['tag_entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_object/tpl/tag_object_entry.tpl'), $tag);} + + return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_object/tpl/object.tpl'), $vars); + } + public static function sai_mod_saimod_mojotrollz_db_object($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_OBJECT); + 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_object/tpl/tag_entry_option.tpl'), $value);} + $vars['tag_entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_object/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_OBJECT.' AND `type` = '.$type.') AND '; + continue;} + $sql_join .= 'LEFT JOIN host_mojotrollz.mojotrollz_tags as t'.$type.' ON gameobject_template.entry = t'.$type.'.id '; + $sql_where .= 't'.$type.'.`table` = '.tags::TAG_TABLE_OBJECT.' AND t'.$type.'.`type` = '.$type.' AND t'.$type.'.value = '.$value.' AND '; } - $result .= '
entry
'.$row['entry'].'
'; - return $result;} + $con = new \SYSTEM\DB\Connection(new \DBD\mangos_world()); + $res = $con->prepare( 'search-object', + 'SELECT gameobject_template.* FROM gameobject_template '. + $sql_join. + ' WHERE '.$sql_where. + ' (`entry` LIKE ? OR `name` LIKE ?) LIMIT 100;', + array($search,$search)); + while($row = $res->next()){ + $vars['entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_object/tpl/search_entry.tpl'), $row);} + + return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_object/tpl/search.tpl'), $vars); + } public static function html_li_menu(){return '
  • DB:Objects
  • ';} 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_object_flag_js(){return \SYSTEM\LOG\JsonResult::toString(array());} - public static function sai_mod_saimod_mojotrollz_db_object_flag_css(){} + public static function sai_mod_saimod_mojotrollz_db_object_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_object/js/saimod_mojotrollz_db_object.js')));} + public static function sai_mod_saimod_mojotrollz_db_object_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_object/tpl/object.tpl b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/object.tpl new file mode 100644 index 0000000..ba4a1aa --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/object.tpl @@ -0,0 +1,15 @@ +
    + ${map} +
    + + + + + + ${tag_entries} +
    TagTypeTagTypeValue
    + +
    + +${entries} +
    \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/object_base.tpl b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/object_base.tpl new file mode 100644 index 0000000..7a42d83 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/object_base.tpl @@ -0,0 +1,4 @@ + + ${key} + ${value} + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/search.tpl b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/search.tpl new file mode 100644 index 0000000..326cd76 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/search.tpl @@ -0,0 +1,24 @@ +
    + + + + + + + ${tag_entries} +
    TagTypeTagTypeValue
    + +
    +
    + + + + + + + + + + + ${entries} +
    EntryNameTypeDisplayIdFactionMinGoldMaxGold
    \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/search_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/search_entry.tpl new file mode 100644 index 0000000..c9ba05c --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/search_entry.tpl @@ -0,0 +1,9 @@ + + ${entry} + ${name} + ${type} + ${displayId} + ${faction} + ${mingold} + ${maxgold} + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_entry.tpl new file mode 100644 index 0000000..4cc4f83 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_entry.tpl @@ -0,0 +1,10 @@ + + ${name} + + + + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_entry_option.tpl b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_entry_option.tpl new file mode 100644 index 0000000..4950b9b --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_entry_option.tpl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_object_entry.tpl b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_object_entry.tpl new file mode 100644 index 0000000..535a1b8 --- /dev/null +++ b/mojotrollz/sai/saimod_mojotrollz_db_object/tpl/tag_object_entry.tpl @@ -0,0 +1,9 @@ + + ${name} + + + + \ No newline at end of file diff --git a/mojotrollz/sai/saimod_mojotrollz_db_tags/saimod_mojotrollz_db_tags.php b/mojotrollz/sai/saimod_mojotrollz_db_tags/saimod_mojotrollz_db_tags.php index 30abc43..140c765 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_tags/saimod_mojotrollz_db_tags.php +++ b/mojotrollz/sai/saimod_mojotrollz_db_tags/saimod_mojotrollz_db_tags.php @@ -5,6 +5,7 @@ class saimod_mojotrollz_db_tags extends \SYSTEM\SAI\SaiModule { $elements = ''; $res = \DBD\DB_TAGS_TYPE_LIST::QQ(array($table)); while($row = $res->next()){ + $row['statistics'] = tags::statistics($table,$row['id']); $elements .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_tags/tpl/type_list_element.tpl'),$row);} return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new PSAI(),'saimod_mojotrollz_db_tags/tpl/type_list.tpl'),array('table' => $table, 'elements' => $elements));} diff --git a/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list.tpl b/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list.tpl index 7db3e4c..7a31907 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list.tpl +++ b/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list.tpl @@ -5,6 +5,7 @@ table name description + statistic action @@ -12,6 +13,7 @@ ${table} + ${elements} diff --git a/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list_element.tpl b/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list_element.tpl index 33acf02..09ab4fb 100644 --- a/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list_element.tpl +++ b/mojotrollz/sai/saimod_mojotrollz_db_tags/tpl/type_list_element.tpl @@ -3,6 +3,7 @@ ${table} ${name} ${description} + ${statistics}