private function load()
 {
     if (!is_null($this->releases)) {
         return;
     } else {
         global $wgMemc;
         $res = $wgMemc->get(self::CACHE_KEY);
         if ($res) {
             $this->releases = $res;
         } else {
             $dbr = wfGetDB(DB_SLAVE);
             $this->releases = array();
             $res = $dbr->select('distribution_mwreleases', '*', array(), __METHOD__);
             foreach ($res as $row) {
                 if (!isset($this->releases[$row->mwr_id])) {
                     $mw = MediaWikiRelease::newFromRow($row);
                     $this->releases[$mw->getId()] = $mw;
                 }
             }
             uasort($this->releases, array($this, 'sortReleasesDesc'));
             // cache for 30 days. This doesn't change often so we'll explicity
             // flush when we've changed something
             $wgMemc->set(self::CACHE_KEY, $this->releases, 60 * 60 * 24 * 30);
         }
         $this->fullyLoaded = true;
     }
 }
 private function formatReleaseForTable(MediaWikiRelease $rel)
 {
     global $wgLang;
     $branchUrl = $this->skin->makeExternalLink($rel->getBranchUrl(), $rel->getBranch());
     $tagUrl = $this->skin->makeExternalLink($rel->getTagUrl(), $rel->getTag());
     $announceUrl = $this->skin->makeExternalLink($rel->getAnnouncement(), 'mediawiki-announce');
     $supported = $rel->isSupported() ? wfMsg('yes') : wfMsg('no');
     $flagStatus = $rel->getSupported() > Release::SUPPORT_TIL_EOL ? wfMsg('releasemanager-supported-overriden', $supported) : wfMsg('releasemanager-supported-til-eol', $supported);
     $editDel = $this->skin->link($this->getTitleFor('ReleaseManager', 'edit/' . $rel->getId()), wfMsg('edit')) . ' / ' . $this->skin->link($this->getTitleFor('ReleaseManager', 'delete/' . $rel->getId()), wfMsg('delete'));
     return Html::openElement('tr') . Html::element('td', array(), $rel->getName()) . Html::element('td', array(), $rel->getNumber()) . Html::element('td', array(), 'broken') . Html::element('td', array(), 'broken') . Html::rawElement('td', array(), $branchUrl) . Html::rawElement('td', array(), $tagUrl) . Html::rawElement('td', array(), $announceUrl) . Html::rawElement('td', array(), $flagStatus) . Html::rawElement('td', array(), $editDel) . Html::closeElement('tr');
 }