/** * Add a ResultWrapper containing IDs and titles to a LinkCache object. * As normal, titles will go into the static Title cache field. * This function *also* stores extra fields of the title used for link * parsing to avoid extra DB queries. * * @param LinkCache $cache * @param ResultWrapper $res * @return array Array of remaining titles */ public function addResultToCache($cache, $res) { if (!$res) { return array(); } // For each returned entry, add it to the list of good links, and remove it from $remaining $ids = array(); $remaining = $this->data; foreach ($res as $row) { $title = Title::makeTitle($row->page_namespace, $row->page_title); $cache->addGoodLinkObjFromRow($title, $row); $ids[$title->getPrefixedDBkey()] = $row->page_id; unset($remaining[$row->page_namespace][$row->page_title]); } // The remaining links in $data are bad links, register them as such foreach ($remaining as $ns => $dbkeys) { foreach ($dbkeys as $dbkey => $unused) { $title = Title::makeTitle($ns, $dbkey); $cache->addBadLinkObj($title); $ids[$title->getPrefixedDBkey()] = 0; } } return $ids; }
/** * Add a ResultWrapper containing IDs and titles to a LinkCache object. * As normal, titles will go into the static Title cache field. * This function *also* stores extra fields of the title used for link * parsing to avoid extra DB queries. * * @param LinkCache $cache * @param ResultWrapper $res * @return array Array of remaining titles */ public function addResultToCache($cache, $res) { if (!$res) { return []; } $titleFormatter = MediaWikiServices::getInstance()->getTitleFormatter(); // For each returned entry, add it to the list of good links, and remove it from $remaining $ids = []; $remaining = $this->data; foreach ($res as $row) { $title = new TitleValue((int) $row->page_namespace, $row->page_title); $cache->addGoodLinkObjFromRow($title, $row); $pdbk = $titleFormatter->getPrefixedDBkey($title); $ids[$pdbk] = $row->page_id; unset($remaining[$row->page_namespace][$row->page_title]); } // The remaining links in $data are bad links, register them as such foreach ($remaining as $ns => $dbkeys) { foreach ($dbkeys as $dbkey => $unused) { $title = new TitleValue((int) $ns, $dbkey); $cache->addBadLinkObj($title); $pdbk = $titleFormatter->getPrefixedDBkey($title); $ids[$pdbk] = 0; } } return $ids; }