- moved shared setup functions from FileGen to new CLISetup

- removed web-setup
- new CLI parameters
  --account    : create initial account(s)
  --siteconfig : edit php/aowow config values
  --dbconfig   : set up db connection
  --sql        : create db content from world/dbc-tables
  --firstrun   : [NYI] step by step initial setup

- some fixes by the wayside
  * display required arena bracket for extendedCost
  * achievement chains are searchable again
  * category trees for factions should now be correct
  * trainer tab on spell detail page reapeared
  * userMenu item 'Settings' no longer breaks the page
  * display abilities of shapeshift in tab on spell detail page
  * corrected reading ?_sourcestrings for titles
  * fixed error on race detail page
  * added simple descriptions to skill detail page
  * fixed tab "reward from" (achievement) on title detail page
  * fixed alphabetical order of some filter-dropdowns
  * fixed skill colors for spells
  * fixed power display for rune-based spells, that also cost mana
  * added more information to zones
  * also check mail_loot_template for achivements
  * fixed bug, where loot_template-ids would be reused for multiple templates
  * display sourcemore for pvp-sources
This commit is contained in:
Sarjuuk
2015-04-04 11:12:58 +02:00
parent 37be1b8113
commit 51f2828f6f
115 changed files with 7785 additions and 2804 deletions

View File

@@ -9,7 +9,6 @@ class Lang
private static $game;
private static $achievement;
private static $class;
private static $currency;
private static $event;
private static $faction;
@@ -20,6 +19,7 @@ class Lang
private static $npc;
private static $pet;
private static $quest;
private static $race;
private static $skill;
private static $spell;
private static $title;
@@ -41,20 +41,20 @@ class Lang
}
// todo: make static props private and access through this
public static function __callStatic($name, $args)
public static function __callStatic($prop, $args)
{
if (!isset(self::$$name))
if (!isset(self::$$prop))
{
Util::addNote(U_GROUP_STAFF, 'Lang: tried to use undefined property Lang::$'.$name);
Util::addNote(U_GROUP_STAFF, 'Lang::__callStatic() - tried to use undefined property Lang::$'.$prop);
return null;
}
$var = self::$$name;
$var = self::$$prop;
foreach ($args as $key)
{
if (!isset($var[$key]))
{
Util::addNote(U_GROUP_STAFF, 'Lang: undefined key "'.$key.'" in property Lang::$'.$name.'. Full key chain: '.implode(', ', $args));
Util::addNote(U_GROUP_STAFF, 'Lang::__callStatic() - undefined key "'.$key.'" in property Lang::$'.$prop.'[\''.implode('\'][\'', $args).'\']');
return null;
}
@@ -64,6 +64,25 @@ class Lang
return $var;
}
public static function sort($prop, $group, $method = SORT_NATURAL)
{
if (!isset(self::$$prop))
{
Util::addNote(U_GROUP_STAFF, 'Lang::sort() - tried to use undefined property Lang::$'.$prop);
return null;
}
$var = &self::$$prop;
if (!isset($var[$group]))
{
Util::addNote(U_GROUP_STAFF, 'Lang::sort() - tried to use undefined property Lang::$'.$prop.'[\''.$group.'\']');
return null;
}
asort($var[$group], $method);
}
// todo: expand
public static function getInfoBoxForFlags($flags)
{

View File

@@ -439,7 +439,7 @@ $lang = array(
'reqNumCrt' => "Benötigt",
'_transfer' => 'Dieser Erfolg wird mit <a href="?achievement=%d" class="q%d icontiny tinyspecial" style="background-image: url('.STATIC_URL.'/images/wow/icons/tiny/%s.gif)">%s</a> vertauscht, wenn Ihr zur <span class="icon-%s">%s</span> wechselt.',
),
'class' => array(
'race' => array(
'racialLeader' => "Volksanführer",
'startZone' => "Startgebiet",
),
@@ -461,7 +461,14 @@ $lang = array(
'CosmicMap' => "Kosmische Karte",
),
'zone' => array(
// 'zonePartOf' => "Diese Zone ist Teil der Zone",
'attunement' => ["Einstimmung", "Heroische Einstimmung"],
'key' => ["Schlüssel", "Heroischer Schlüssel"],
'location' => "Ort",
'raidFaction' => "Schlachtzugsfraktion",
'boss' => "Endboss",
'reqLevels' => "Mindeststufe: [tooltip=instancereqlevel_tip]%d[/tooltip], [tooltip=lfgreqlevel_tip]%d[/tooltip]",
'zonePartOf' => "Diese Zone ist Teil von [zone=%d].",
'autoRez' => "Automatische Wiederbelebung",
'city' => "Stadt",
'territory' => "Territorium",
'instanceType' => "Instanzart",
@@ -714,9 +721,12 @@ $lang = array(
),
'powerRunes' => ["Frost", "Unheilig", "Blut", "Tod"],
'powerTypes' => array(
-2 => "Gesundheit", -1 => null, "Mana", "Wut", "Fokus", "Energie", "Zufriedenheit", "Runen", "Runenmacht",
'AMMOSLOT' => "Munition", 'STEAM' => "Dampfdruck", 'WRATH' => "Wrath", 'PYRITE' => "Pyrit",
'HEAT' => "Hitze", 'OOZE' => "Schlamm", 'BLOOD_POWER' => "Blutmacht"
// conventional
-2 => "Gesundheit", 0 => "Mana", 1 => "Wut", 2 => "Fokus", 3 => "Energie", 4 => "Zufriedenheit",
5 => "Runen", 6 => "Runenmacht",
// powerDisplay
-1 => "Munition", -41 => "Pyrit", -61 => "Dampfdruck", -101 => "Hitze", -121 => "Schlamm", -141 => "Blutmacht",
-142 => "Wrath"
),
'relItems' => array(
'base' => "<small>%s im Zusammenhang mit <b>%s</b> anzeigen</small>",
@@ -857,7 +867,6 @@ $lang = array(
'_unavailable' => "Dieser Gegenstand ist nicht für Spieler verfügbar.",
'_rndEnchants' => "Zufällige Verzauberungen",
'_chance' => "(Chance von %s%%)",
'reqRating' => "Benötigt eine persönliche Arenawertung und Teamwertung von %d.",
'slot' => "Platz",
'_quality' => "Qualität",
'usableBy' => "Benutzbar von",
@@ -877,6 +886,11 @@ $lang = array(
3 => "mehr Edelsteine der Kategorie %s als Edelsteine der Kategorie %s",
5 => ["mindestens %d Edelstein der Kategorie %s", "mindestens %d Edelsteine der Kategorie %s"]
),
'reqRating' => array( // ITEM_REQ_ARENA_RATING*
"Benötigt eine persönliche Arenawertung und Teamwertung von %d.",
"Benötigt eine persönliche und eine Teamwertung von %d<br>in 3v3- oder 5v5-Turnieren",
"Benötigt eine persönliche und eine Teamwertung von %d<br>in 5v5-Turnieren"
),
'quality' => array(
"Schlecht", "Verbreitet", "Selten", "Rar",
"Episch", "Legendär", "Artefakt", "Erbstücke",

View File

@@ -434,7 +434,7 @@ $lang = array(
'reqNumCrt' => "Requires",
'_transfer' => 'This achievement will be converted to <a href="?achievement=%d" class="q%d icontiny tinyspecial" style="background-image: url('.STATIC_URL.'/images/wow/icons/tiny/%s.gif)">%s</a> if you transfer to <span class="icon-%s">%s</span>.',
),
'class' => array(
'race' => array(
'racialLeader' => "Racial leader",
'startZone' => "Starting zone",
),
@@ -456,7 +456,14 @@ $lang = array(
'CosmicMap' => "Cosmic Map",
),
'zone' => array(
// 'zonePartOf' => "This zone is part of",
'attunement' => ["Attunement", "Heroic attunement"],
'key' => ["Key", "Heroic key"],
'location' => "Location",
'raidFaction' => "Raid faction",
'boss' => "Final boss",
'reqLevels' => "Required levels: [tooltip=instancereqlevel_tip]%d[/tooltip], [tooltip=lfgreqlevel_tip]%d[/tooltip]",
'zonePartOf' => "This zone is part of [zone=%].",
'autoRez' => "Automatic resurrection",
'city' => "City",
'territory' => "Territory",
'instanceType' => "Instance type",
@@ -709,9 +716,12 @@ $lang = array(
),
'powerRunes' => ["Frost", "Unholy", "Blood", "Death"],
'powerTypes' => array(
-2 => "Health", -1 => null, "Mana", "Rage", "Focus", "Energy", "Happiness", "Runes", "Runic Power",
'AMMOSLOT' => "Ammo", 'STEAM' => "Steam Pressure", 'WRATH' => "Wrath", 'PYRITE' => "Pyrite",
'HEAT' => "Heat", 'OOZE' => "Ooze", 'BLOOD_POWER' => "Blood Power"
// conventional
-2 => "Health", 0 => "Mana", 1 => "Rage", 2 => "Focus", 3 => "Energy", 4 => "Happiness",
5 => "Rune", 6 => "Runic Power",
// powerDisplay
-1 => "Ammo", -41 => "Pyrite", -61 => "Steam Pressure", -101 => "Heat", -121 => "Ooze", -141 => "Blood Power",
-142 => "Wrath"
),
'relItems' => array(
'base' => "<small>Show %s related to <b>%s</b></small>",
@@ -852,7 +862,6 @@ $lang = array(
'_unavailable' => "This item is not available to players.",
'_rndEnchants' => "Random Enchantments",
'_chance' => "(%s%% chance)",
'reqRating' => "Requires personal and team arena rating of %d in 3v3 or 5v5 brackets",
'slot' => "Slot",
'_quality' => "Quality",
'usableBy' => "Usable by",
@@ -872,6 +881,11 @@ $lang = array(
3 => "more %s gems than %s gems",
5 => ["at least %d %s gem", "at least %d %s gems"]
),
'reqRating' => array( // ITEM_REQ_ARENA_RATING*
"Requires personal and team arena rating of %d",
"Requires personal and team arena rating of %d<br>in 3v3 or 5v5 brackets",
"Requires personal and team arena rating of %d<br>in 5v5 brackets"
),
'quality' => array(
"Poor", "Common", "Uncommon", "Rare",
"Epic", "Legendary", "Artifact", "Heirloom"

View File

@@ -438,7 +438,7 @@ $lang = array(
'reqNumCrt' => "Requiere",
'_transfer' => 'Este logro será convertido a <a href="?achievement=%d" class="q%d icontiny tinyspecial" style="background-image: url('.STATIC_URL.'/images/wow/icons/tiny/%s.gif)">%s</a> si lo transfieres a la <span class="icon-%s">%s</span>.',
),
'class' => array(
'race' => array(
'racialLeader' => "Lider racial",
'startZone' => "Zona de inicio",
),
@@ -460,7 +460,14 @@ $lang = array(
'CosmicMap' => "Mapa cósmico",
),
'zone' => array(
// 'zonePartOf' => "Cette zone fait partie de la zone",
'attunement' => ["Requisito", "Requisito heroica"],
'key' => ["Llave", "Llave heroica"],
'location' => "Ubicación",
'raidFaction' => "[Raid faction]",
'boss' => "Jefe Final",
'reqLevels' => "Niveles requeridos: [tooltip=instancereqlevel_tip]%d[/tooltip], [tooltip=lfgreqlevel_tip]%d[/tooltip]",
'zonePartOf' => "Cette zone fait partie de la zone [zone=%d].",
'autoRez' => "Resurrección automática",
'city' => "Ciudad",
'territory' => "Territorio",
'instanceType' => "Tipo de instancia",
@@ -713,9 +720,12 @@ $lang = array(
),
'powerRunes' => ["Escarcha", "Profano", "Sangre", "Muerte"],
'powerTypes' => array(
-2 => "Salud", -1 => null, "Maná", "Ira", "Enfoque", "Energía", "Felicidad", "Runa", "Poder rúnico",
'AMMOSLOT' => "Munición", 'STEAM' => "Presión de vapor", 'WRATH' => "Cólera", 'PYRITE' => "Pirita",
'HEAT' => "Calor", 'OOZE' => "Moco", 'BLOOD_POWER' => "Poder de sangre"
// conventional
-2 => "Salud", 0 => "Maná", 1 => "Ira", 2 => "Enfoque", 3 => "Energía", 4 => "Felicidad",
5 => "Runa", 6 => "Poder rúnico",
// powerDisplay
-1 => "Munición", -41 => "Pirita", -61 => "Presión de vapor", -101 => "Calor", -121 => "Moco", -141 => "Poder de sangre",
-142 => "Cólera"
),
'relItems' => array(
'base' => "<small>Muestra %s relacionados con <b>%s</b></small>",
@@ -856,7 +866,6 @@ $lang = array(
'_unavailable' => "Este objeto no está disponible para los jugadores.",
'_rndEnchants' => "Encantamientos aleatorios",
'_chance' => "(probabilidad %s%%)",
'reqRating' => "Requiere un índice de arena personal y de equipo de %d",
'slot' => "Casilla",
'_quality' => "Calidad",
'usableBy' => "Usable por",
@@ -876,6 +885,11 @@ $lang = array(
3 => "más gemas %s que gemas %s",
5 => ["al menos %d %s gema", "al menos %d %s gemas"]
),
'reqRating' => array( // ITEM_REQ_ARENA_RATING*
"Requiere un índice de arena personal y de equipo de %d",
"Requiere un índice de arena personal y de equipo de %d<br>en la rama de 3c3 o de 5c5",
"Requiere un índice de arena personal y de equipo de %d<br>en la rama de 5c5"
),
'quality' => array(
"Pobre", "Común", "Poco Común", "Raro",
"Épica", "Legendaria", "Artefacto", "Reliquia"

View File

@@ -437,7 +437,7 @@ $lang = array(
'reqNumCrt' => "Nécessite",
'_transfer' => 'Cet haut fait sera converti en <a href="?achievement=%d" class="q%d icontiny tinyspecial" style="background-image: url('.STATIC_URL.'/images/wow/icons/tiny/%s.gif)">%s</a> si vous transférez en <span class="icon-%s">%s</span>.',
),
'class' => array(
'race' => array(
'racialLeader' => "Leader racial",
'startZone' => "Zone initiales",
),
@@ -459,7 +459,14 @@ $lang = array(
'CosmicMap' => "Carte cosmique",
),
'zone' => array(
// 'zonePartOf' => "Cette zone fait partie de la zone",
'attunement' => ["Accès", "Accès Héroïque"],
'key' => ["Clef", "Clef Héroïque"],
'location' => "Localisation",
'raidFaction' => "Faction de raid",
'boss' => "Boss final",
'reqLevels' => "Niveaux requis : [tooltip=instancereqlevel_tip]%d[/tooltip], [tooltip=lfgreqlevel_tip]%d[/tooltip]",
'zonePartOf' => "Cette zone fait partie de la zone [zone=%d].",
'autoRez' => "Résurrection automatique",
'city' => "Город",
'territory' => "Territoire",
'instanceType' => "Type d'instance",
@@ -695,7 +702,7 @@ $lang = array(
'instantPhys' => "Incantation immédiate",
'instantMagic' => "Instantanée",
'channeled' => "Canalisée",
'range' => "m de portée",
'range' => "%s m de portée",
'meleeRange' => "Allonge",
'unlimRange' => "Portée illimitée",
'reagents' => "Composants",
@@ -711,9 +718,12 @@ $lang = array(
),
'powerRunes' => ["Givre", "Impie", "Sang", "Mort"],
'powerTypes' => array(
-2 => "vie", -1 => null, "mana", "rage", "focus", "énergie", "Satisfaction", "Runes", "puissance runique",
'AMMOSLOT' => "Munitions", 'STEAM' => "Pression vapeur", 'WRATH' => "Courroux", 'PYRITE' => "Pyrite",
'HEAT' => "Chaleur", 'OOZE' => "Limon", 'BLOOD_POWER' => "Puissance de sang"
// conventional
-2 => "vie", 0 => "mana", 1 => "rage", 2 => "focus", 3 => "énergie", 4 => "Satisfaction",
5 => "Runes", 6 => "puissance runique",
// powerDisplay
-1 => "Munitions", -41 => "Pyrite", -61 => "Pression vapeur", -101 => "Chaleur", -121 => "Limon", -141 => "Puissance de sang",
-142 => "Courroux"
),
'relItems' => array(
'base' => "<small>Montre %s reliés à <b>%s</b></small>",
@@ -854,7 +864,6 @@ $lang = array(
'_unavailable' => "Este objeto no está disponible para los jugadores.",
'_rndEnchants' => "Enchantements aléatoires",
'_chance' => "(%s%% de chance)",
'reqRating' => "Nécessite une cote d'arène personnelle et en équipe de %d en arène de 3c3 ou 5c5.",
'slot' => "Emplacement",
'_quality' => "Qualité",
'usableBy' => "Utilisable par",
@@ -874,6 +883,11 @@ $lang = array(
3 => "plus de gemmes %s que de %s", // plus de gemmes %s que |2 %s
5 => ["au moins %d gemme %s", "au moins %d gemmes %s"]
),
'reqRating' => array( // ITEM_REQ_ARENA_RATING*
"Nécessite une cote d'arène personnelle et en équipe de %d",
"Nécessite une cote d'arène personnelle et en équipe de %d<br>en arène de 3c3 ou 5c5.",
"Nécessite une cote d'arène personnelle et en équipe de %d<br>en arène de 5c5."
),
'quality' => array(
"Médiocre", "Classique", "Bonne", "Rare",
"Épique", "Légendaire", "Artefact", "Héritage"

View File

@@ -437,7 +437,7 @@ $lang = array(
'reqNumCrt' => "Требуется",
'_transfer' => 'Этот предмет превратится в <a href="?achievement=%d" class="q%d icontiny tinyspecial" style="background-image: url('.STATIC_URL.'/images/wow/icons/tiny/%s.gif)">%s</a>, если вы перейдете за <span class="icon-%s">%s</span>.',
),
'class' => array(
'race' => array(
'racialLeader' => "Лидер расы",
'startZone' => "Начальная локация",
),
@@ -459,7 +459,14 @@ $lang = array(
'CosmicMap' => "Звёздная карта",
),
'zone' => array(
// 'zonePartOf' => "Эта игровая локация является частью локации",
'attunement' => ["[Attunement]", "[Heroic attunement]"],
'key' => ["[Key]", "[Heroic key]"],
'location' => "Местоположение",
'raidFaction' => "Фракция рейда",
'boss' => "Последний босс",
'reqLevels' => "Требуемые уровни: [tooltip=instancereqlevel_tip]%d[/tooltip], [tooltip=lfgreqlevel_tip]%d[/tooltip]",
'zonePartOf' => "Эта игровая локация является частью локации [zone=%d].",
'autoRez' => "Автоматическое воскрешение",
'city' => "Город",
'territory' => "Территория",
'instanceType' => "Тип подземелья",
@@ -713,9 +720,12 @@ $lang = array(
),
'powerRunes' => ["Лед", "Руна льда", "Руна крови", "Смерти"],
'powerTypes' => array(
-2 => "Здоровье", -1 => null, "Мана", "Ярость", "Тонус", "Энергия", "Настроение", "Руны", "Руническая сила",
'AMMOSLOT' => "Боеприпасы", 'STEAM' => "Давление пара", 'WRATH' => "Гнев", 'PYRITE' => "Колчедан",
'HEAT' => "Жар", 'OOZE' => "Слизнюк", 'BLOOD_POWER' => "Сила крови"
// conventional
-2 => "Здоровье", 0 => "Мана", 1 => "Ярость", 2 => "Тонус", 3 => "Энергия", 4 => "Настроение",
5 => "Руны", 6 => "Руническая сила",
// powerDisplay
-1 => "Боеприпасы", -41 => "Колчедан", -61 => "Давление пара", -101 => "Жар", -121 => "Слизнюк", -141 => "Сила крови",
-142 => "Гнев"
),
'relItems' => array(
'base' => "<small>Показать %s, относящиеся к профессии <b>%s</b></small>",
@@ -856,7 +866,6 @@ $lang = array(
'_unavailable' => "Этот предмет не доступен игрокам.",
'_rndEnchants' => "Случайные улучшения",
'_chance' => "(шанс %s%%)",
'reqRating' => "Требуется личный и командный рейтинг на арене не ниже %d",
'slot' => "Слот",
'_quality' => "Качество",
'usableBy' => "Используется (кем)",
@@ -876,6 +885,11 @@ $lang = array(
3 => "больше %s, чем %s камней", // больше |3-7(%s), чем |3-7(%s) камней
5 => ["хотя бы %d камень %s цвета", "хотя бы %d камня %s цвета"] // хотя бы %d |4камень:камня:камней; |3-1(%s) цвета; same here
),
'reqRating' => array( // ITEM_REQ_ARENA_RATING*
"Требуется личный и командный рейтинг на арене не ниже %d",
"Требуется личный рейтинг и рейтинг команды Арены %d<br>в команде 3 на 3 или 5 на 5",
"Требуется личный рейтинг и рейтинг команды Арены %d<br>в команде 5 на 5"
),
'quality' => array(
"Низкий", "Обычный", "Необычный", "Редкий",
"Эпический", "Легендарный", "Артефакт", "Фамильная черта"