/** * Ajax call. This is called by efCategoryTreeAjaxWrapper, which is used to * load CategoryTreeFunctions.php on demand. */ function ajax($category, $mode) { global $wgDBname; $title = self::makeTitle($category); if (!$title) { return false; } #TODO: error message? $this->mIsAjaxRequest = true; # Retrieve page_touched for the category $dbkey = $title->getDBkey(); $dbr =& wfGetDB(DB_SLAVE); $touched = $dbr->selectField('page', 'page_touched', array('page_namespace' => NS_CATEGORY, 'page_title' => $dbkey), __METHOD__); $mckey = "{$wgDBname}:categorytree({$mode}):{$dbkey}"; //FIXME: would need to add depth parameter. $response = new AjaxResponse(); if ($response->checkLastModified($touched)) { return $response; } if ($response->loadFromMemcached($mckey, $touched)) { return $response; } $html = $this->renderChildren($title, $mode); //FIXME: would need to pass depth parameter. if ($html == '') { $html = ' '; } #HACK: Safari doesn't like empty responses. #see Bug 7219 and http://bugzilla.opendarwin.org/show_bug.cgi?id=10716 $response->addText($html); $response->storeInMemcached($mckey, 86400); return $response; }
/** * Ajax call. This is called by efCategoryTreeAjaxWrapper, which is used to * load CategoryTreeFunctions.php on demand. * @param $category * @param $depth int * @return AjaxResponse|bool */ function ajax($category, $depth = 1) { global $wgLang, $wgContLang, $wgRenderHashAppend; $title = self::makeTitle($category); if (!$title) { return false; # TODO: error message? } # Retrieve page_touched for the category $dbkey = $title->getDBkey(); $dbr = wfGetDB(DB_SLAVE); $touched = $dbr->selectField('page', 'page_touched', array('page_namespace' => NS_CATEGORY, 'page_title' => $dbkey), __METHOD__); $mckey = wfMemcKey("categorytree(" . $this->getOptionsAsCacheKey($depth) . ")", $dbkey, $wgLang->getCode(), $wgContLang->getExtraHashOptions(), $wgRenderHashAppend); $response = new AjaxResponse(); if ($response->checkLastModified($touched)) { return $response; } if ($response->loadFromMemcached($mckey, $touched)) { return $response; } $html = $this->renderChildren($title, $depth); if ($html == '') { # HACK: Safari doesn't like empty responses. # see Bug 7219 and http://bugzilla.opendarwin.org/show_bug.cgi?id=10716 $html = ' '; } $response->addText($html); $response->storeInMemcached($mckey, 86400); return $response; }