示例#1
0
 /**
  * Спавнение по наименованию
  *
  * @param object $oBlog1
  * @param object $oBlog2
  *
  * @return int
  */
 public function _compareByTitle($oBlog1, $oBlog2)
 {
     return strcasecmp($oBlog1->GetTitle(), $oBlog2->GetTitle());
 }
示例#2
0
 /**
  * render a wow item in a tooltip from a formatted array
  *
  * Display use-cases:
  * own page (default. include the SMW metadata)
  * {{lootbox|...|foo}}/{{:Foo}}/js
  * {{item|foo}} -- [Foo] or {1em-high icon}[Foo] {{Itemlink}}/{{Iconlink}}
  * {{itembox|...|foo}} -- {3em-high icon}[Foo] {{Itemiconlarge}}+Itemlink
  * {{costitem|...|foo}} -- {1em-high icon} {{Itemicon}}+{{Itemcost}}
  *
  * @param array  $attr   an item ready to display as a formatted array
  * @param object $parser the parser used to display the item
  *
  * @return string a parsed string ready to display
  */
 public function renderDefault($attr, $parser)
 {
     $title = $parser->GetTitle();
     // start putting together our string
     $ownPage = $title == $attr['itempage'];
     if ($ownPage) {
         //primary use-case: the item's own page!
         $out = $this->_genSemanticData($attr) . '<div style="font-size:1em;float:right;width:18em"';
     } else {
         //everywhere else: js tooltips, lootboxes, etc
         $out = '<div style="font-size:0.8em;width:18em"';
     }
     //mandatory options
     $out .= " class=\"itemtooltip\">\n{{Icon|" . $attr['icon'] . (isset($attr['stack']) ? '|' . $attr['stack'] : '') . '|size=' . ($ownPage ? '3' : '4') . "|float=right|margin=0}}\n" . "<ul>\n";
     $out .= $this->_li('name', '{{Quality|' . $this->qualities[$attr['quality']] . '|' . $attr['itempage'] . '|' . $attr['name'] . '|tooltip=1}}');
     /*
      * checks from this point out must happen in the order that we want
      * it to display, modulo the right-aligned items which need to appear
      * before their left-aligned counterparts.
      *
      * we're using the $this->_li() method to wrap lines with a classed
      * <li> tag. Remember: this is a render method. Parsing should've
      * already happened!
      */
     if (isset($attr['heroic'])) {
         // bool
         $out .= $this->_li('bonus heroic', 'Heroic');
     }
     if (isset($attr['conjured'])) {
         // bool
         $out .= $this->_li('conjured', '[[Conjured item|Conjured Item]]');
     }
     if (isset($attr['holiday'])) {
         // required holiday FT
         $out .= $this->_li('req reqHoliday', 'Requires [[' . $attr['holiday'] . ']]');
     }
     if (isset($attr['locationbind'])) {
         // location bind FT
         $out .= $this->_li('req reqZone', $attr['locationbind']);
     }
     if (isset($attr['bind'])) {
         //item bind
         $out .= $this->_li('bind', $attr['bind']);
     }
     if (isset($attr['questitem'])) {
         // bool
         $out .= $this->_li('qitem', '[[Quest item|Quest Item]]');
     }
     if (isset($attr['unique'])) {
         //Unique --these 5 cases mutually exclusive
         $out .= $this->_li('unique', '[[Unique]]');
     } elseif (isset($attr['uniqueN'])) {
         //Unique (100)
         $out .= $this->_li('uniqueN', '[[Unique]] (' . $attr['uniqueN'] . ')');
     } elseif (isset($attr['uniqueEq'])) {
         //Unique-Equipped
         $out .= $this->_li('uniqueEq', '[[Unique-equipped|Unique-Equipped]]');
     } elseif (isset($attr['uniqueEqN'])) {
         //Unique-Equipped (something) FT
         $out .= $this->_li('uniqueEqN', '[[Unique-equipped|Unique-Equipped]] (' . $attr['uniqueEqN'] . ')');
     }
     // else, not unique (nothing displayed)
     if (isset($attr['glyph'])) {
         //major/minor
         $out .= $this->_li('glyph', $attr['glyph']);
     }
     if (isset($attr['duration'])) {
         //item duration FT
         $out .= $this->_li('duration', '[[Duration (item)|Duration]]: ' . $attr['duration']);
     }
     if (isset($attr['qbegin'])) {
         // begins a quest FT
         $out .= $this->_li('qbegin', '{{Quest|' . $attr['qbegin'] . '|This Item Begins a Quest}}');
     }
     if (isset($attr['type'])) {
         // type (axe, cloth, etc)
         $out .= ' <li class="type" style="float:right; clear:all">' . $attr['type'] . "</li>\n";
     }
     if (isset($attr['slot'])) {
         // slot
         $out .= $this->_li('slot', '[[' . $this->slots[$attr['slot']] . ']]');
     }
     if (isset($attr['weapon'])) {
         //hey, it's a weapon!
         $out .= ' <li class="speed" style="float:right">[[Speed (attack)' . '|Speed]] ' . $attr['speed'] . "</li>\n";
         if (isset($attr['damageschool'])) {
             $school = $this->schools[$attr['damageschool']];
         }
         $out .= $this->_li('damage', $attr['dmg'][0] . ' – ' . $attr['dmg'][1] . (isset($attr['damageschool']) ? " [[Magic schools (WoW)#{$school}|{$school}]]" : '') . ' Damage');
         if (isset($attr['bonusdamage'])) {
             //hey, bonus damage!
             if (isset($attr['bonusdamageschool'])) {
                 $school = $this->schools[$attr['bonusdamageschool']];
             }
             $out .= $this->_li('bonusDamage', '+' . $attr['bdmg'][0] . ' – ' . $attr['bdmg'][1] . (isset($attr['bonusdamageschool']) ? " [[Magic schools (WoW)#{$school}|{$school}]]" : '') . ' Damage');
         }
         $out .= $this->_li('dps', '(' . $attr['dps'] . ' [[DPS|damage per second]])');
         if (isset($attr['feraldps'])) {
             $out .= ' <li class="feralAP" title="Only applies for druids">(' . $attr['feraldps'] . ' [[Feral attack power|<span class="cc-' . 'druid">feral attack power</span>]])' . "\n";
         }
     }
     if (isset($attr['armor'])) {
         // basic armor
         $out .= $this->_li('armor', $attr['armor'] . ' [[Armor]]');
     }
     if (isset($attr['block'])) {
         // block value on shields only
         $out .= $this->_li('block', $attr['block'] . ' [[Block value|Block]]');
     }
     foreach ($this->attributes as $at) {
         // str/agi/stam/int/spr
         if (isset($attr[strtolower($at)])) {
             $out .= $this->_li("attrib attr{$at}", '+' . $attr[strtolower($at)] . " [[{$at}]]");
         }
     }
     if (isset($attr['resist'])) {
         //fire/nature/frost/shadow/arcane resist
         foreach ($attr['resist'] as $sch => $resist) {
             $school = $this->schools[$sch];
             $out .= $this->_li("resist res{$school}", "+{$resist} [[{$school} " . "resistance|{$school} Resistance]]");
         }
     }
     if (isset($attr['socketed'])) {
         foreach ($attr['socket'] as $sock) {
             $out .= $this->_li("socket sock{$sock}", "[[File:UI-EmptySocket-{$sock}.png||link={$sock} " . "socket]] [[{$sock} socket|{$sock} Socket]]");
         }
         $out .= $this->_li('socket sockBonus', '[[Socket bonus|Socket Bonus]]: ' . $attr['sockbonus']);
     }
     if (isset($attr['durability'])) {
         $out .= $this->_li('durability', '[[Durability]] ' . $attr['durability'] . ' / ' . $attr['durability']);
     }
     if (isset($attr['locked'])) {
         //these 2 cases mutually exclusive
         $out .= $this->_li('locked', '[[Locked]]');
     } elseif (isset($attr['lockpick'])) {
         $out .= $this->_li('req reqLockpick', 'Requires [[Lockpicking]] (' . $attr['lockpick'] . ')');
     }
     if (isset($attr['bagtype'])) {
         //these 2 cases mutually exclusive
         $out .= $this->_li('bag', $attr['bagslots'] . ' Slot [[' . $attr['bagtype'] . ']]');
     } elseif (isset($attr['bagslots'])) {
         //just a regular bag
         $out .= $this->_li('bag', $attr['bagslots'] . ' Slot [[Bag]]');
     }
     if (isset($attr['class'])) {
         // class
         $class = '';
         foreach ($attr['class'] as $k => $v) {
             $class .= $this->class[$k] . ', ';
         }
         $out .= $this->_li('req reqClass', '[[Class|Classes]]: ' . substr($class, 0, -2));
     }
     if (isset($attr['race'])) {
         // race
         $race = '';
         foreach ($attr['race'] as $k => $v) {
             $race .= $this->races[$k] . ', ';
         }
         $out .= $this->_li('req reqRace', '[[Race|Races]]: ' . substr($race, 0, -2));
     }
     if (isset($attr['level'])) {
         // level
         $out .= $this->_li('req Level', 'Requires Level ' . $attr['level']);
     }
     if (isset($attr['ilvl'])) {
         // item level (REQUIRED)
         $out .= $this->_li('iLvl', '[[Item level|Item Level]] ' . $attr['ilvl']);
     }
     if (isset($attr['subskill'])) {
         // skill specialization
         $out .= $this->_li('req reqSubskill', 'Requires [[' . $attr['subskill'] . ']]');
     }
     if (isset($attr['profrequired'])) {
         // skill rating
         $out .= $this->_li('req reqSkill', 'Requires [[' . $attr['skill'] . ']] (' . $attr['skillrating'] . ')');
     }
     if (isset($attr['reprequired'])) {
         // reputation FT
         $out .= $this->_li('req reqRep', 'Requires [[' . $attr['faction'] . ']] – [[' . $this->replevels[$attr['factionrating']] . ']]');
     }
     if (isset($attr['arena'])) {
         $out .= $this->_li('req reqArena', 'Requires [[Arena personal rating|' . 'personal]] and [[Arena team rating|team]] arena rating of ' . $attr['arena']);
     }
     if (isset($attr['onhit'])) {
         // bonus chance on hit
         foreach ($attr['onhit'] as $onhit) {
             $out .= $this->_li('bonus onhit', "Chance on hit: {$onhit}");
         }
     }
     //hard-coded bonuses
     if (isset($attr['defense'])) {
         $out .= $this->_li('bonus defense', 'Equip: Increases [[defense rating]] by ' . $attr['defense'] . '.');
     }
     if (isset($attr['dodge'])) {
         $out .= $this->_li('bonus dodge', 'Equip: Increases your [[dodge rating]] by ' . $attr['dodge'] . '.');
     }
     if (isset($attr['parry'])) {
         $out .= $this->_li('bonus parry', 'Equip: Increases your [[parry rating]] by ' . $attr['parry'] . '.');
     }
     if (isset($attr['blockrating'])) {
         $out .= $this->_li('bonus block', 'Equip: Increases your shield [[block rating]] by ' . $attr['blockrating'] . '.');
     }
     if (isset($attr['haste'])) {
         $out .= $this->_li('bonus haste', 'Equip: Improves [[haste rating]] by ' . $attr['haste'] . '.');
     }
     if (isset($attr['hit'])) {
         $out .= $this->_li('bonus hit', 'Equip: Improves [[hit rating]] by ' . $attr['hit'] . '.');
     }
     if (isset($attr['crit'])) {
         $out .= $this->_li('bonus crit', 'Equip: Improves [[critical strike rating]] by ' . $attr['crit'] . '.');
     }
     if (isset($attr['resilience'])) {
         $out .= $this->_li('bonus resil', 'Equip: Improves [[resilience rating]] by ' . $attr['resilience'] . '.');
     }
     if (isset($attr['expertise'])) {
         $out .= $this->_li('bonus exp', 'Equip: Increases your [[expertise rating]] by ' . $attr['expertise'] . '.');
     }
     if (isset($attr['ap'])) {
         $out .= $this->_li('bonus ap', 'Equip: Increases [[attack power]] by ' . $attr['ap'] . '.');
     }
     if (isset($attr['mp5'])) {
         $out .= $this->_li('bonus mp5', 'Equip: Restores ' . $attr['mp5'] . ' [[MP5|mana per 5]] sec.');
     }
     if (isset($attr['arp'])) {
         $out .= $this->_li('bonus arp', 'Equip: Increases your [[armor penetration ' . 'rating]] by ' . $attr['arp'] . '.');
     }
     if (isset($attr['spellpower'])) {
         $out .= $this->_li('bonus sp', 'Equip: Increases [[spell power]] by ' . $attr['spellpower'] . '.');
     }
     if (isset($attr['equip'])) {
         // other bonus equip effects FT
         foreach ($attr['equip'] as $equip) {
             $out .= $this->_li('bonus equip', "Equip: {$equip}");
         }
     }
     if (isset($attr['use'])) {
         // other bonus use effects FT
         foreach ($attr['use'] as $use) {
             $out .= $this->_li('bonus use', "Use: {$use}");
         }
     }
     if (isset($attr['recipe'])) {
         // recipe that creates another item
         $out .= $this->_li('create', '{{Loot|' . $this->qualities[$attr['createq']] . '|' . $attr['create'] . '}}');
         $out .= $this->_li('reagents', 'Requires ' . $attr['reagents']);
     }
     if (isset($attr['charges']) && is_numeric($attr['charges'])) {
         $out .= $this->_li('charges', $attr['charges'] . ' [[Charges]]');
     }
     if (isset($attr['flavor'])) {
         // FT
         $out .= $this->_li('flavor', '"' . $attr['flavor'] . '"');
     }
     if (isset($attr['read'])) {
         $out .= $this->_li('bonus read', '<Right Click to Read>');
     }
     if (isset($attr['open'])) {
         $out .= $this->_li('bonus open', '<Right Click to Open>');
     }
     if (isset($attr['setpiece'])) {
         if ($ownPage) {
             $out .= ' {{:' . $attr['setpage'] . '|' . $attr['set'] . "|mode=itemtip}}\n";
         } else {
             $out .= $this->_li('set', '[[' . $attr['setpage'] . '|' . $attr['set'] . ']] (1/' . $attr['setpieces'] . ')');
         }
     }
     if (isset($attr['sell'])) {
         // FT
         $out .= $this->_li('sell', 'Sell Price: ' . $attr['sell']);
     }
     //finish the string
     $out .= "</ul></div>\n";
     //to the wiki!
     return $parser->recursiveTagParse($out);
 }