From: Marcel Werk Date: Tue, 21 Jan 2014 16:12:24 +0000 (+0100) Subject: Fixed search robot update X-Git-Tag: 2.0.2~15 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=999aea520c9089bff0218c4abcd214062b84ec42;p=GitHub%2FWoltLab%2FWCF.git Fixed search robot update --- diff --git a/wcfsetup/install/files/lib/system/cronjob/RefreshSearchRobotsCronjob.class.php b/wcfsetup/install/files/lib/system/cronjob/RefreshSearchRobotsCronjob.class.php index f1caa2d88c..796ca2ada4 100644 --- a/wcfsetup/install/files/lib/system/cronjob/RefreshSearchRobotsCronjob.class.php +++ b/wcfsetup/install/files/lib/system/cronjob/RefreshSearchRobotsCronjob.class.php @@ -31,11 +31,7 @@ class RefreshSearchRobotsCronjob implements ICronjob { $spiders = $xpath->query('/ns:data/ns:spider'); if (!empty($spiders)) { - // delete old entries - $sql = "DELETE FROM wcf".WCF_N."_spider"; - $statement = WCF::getDB()->prepareStatement($sql); - $statement->execute(); - + $existingSpiders = SpiderCacheBuilder::getInstance()->getData(); $statementParameters = array(); foreach ($spiders as $spider) { $identifier = mb_strtolower($spider->getAttribute('ident')); @@ -50,9 +46,11 @@ class RefreshSearchRobotsCronjob implements ICronjob { } if (!empty($statementParameters)) { - $sql = "INSERT INTO wcf".WCF_N."_spider - (spiderIdentifier, spiderName, spiderURL) - VALUES (?, ?, ?)"; + $sql = "INSERT INTO wcf".WCF_N."_spider + (spiderIdentifier, spiderName, spiderURL) + VALUES (?, ?, ?) + ON DUPLICATE KEY UPDATE spiderName = VALUES(spiderName), + spiderURL = VALUES(spiderURL)"; $statement = WCF::getDB()->prepareStatement($sql); WCF::getDB()->beginTransaction(); @@ -66,6 +64,15 @@ class RefreshSearchRobotsCronjob implements ICronjob { WCF::getDB()->commitTransaction(); } + // delete obsolete entries + $sql = "DELETE FROM wcf".WCF_N."_spider WHERE spiderIdentifier = ?"; + $statement = WCF::getDB()->prepareStatement($sql); + foreach ($existingSpiders as $spider) { + if (!isset($statementParameters[$spider->spiderIdentifier])) { + $statement->execute(array($spider->spiderIdentifier)); + } + } + // clear spider cache SpiderCacheBuilder::getInstance()->reset(); }