/** * Method collects and stores extension version details into the database. * * @access protected * @param SplSubject $subject a subject notifying this observer * @return void */ protected function loadIntoDB(SplSubject &$subject) { // flush every 50 rows to database if ($this->sumRecords !== 0 && $this->sumRecords % 50 === 0) { $GLOBALS['TYPO3_DB']->exec_INSERTmultipleRows('cache_extensions', self::$fieldNames, $this->arrRows, self::$fieldIndicesNoQuote); $this->arrRows = array(); } // order must match that of self::$fieldNamses! $this->arrRows[] = array($subject->getExtkey(), $subject->getVersion(), tx_em_Tools::makeVersion($subject->getVersion(), 'int'), intval($subject->getAlldownloadcounter()), intval($subject->getDownloadcounter()), !is_null($subject->getTitle()) ? $subject->getTitle() : '', $subject->getOwnerusername(), !is_null($subject->getAuthorname()) ? $subject->getAuthorname() : '', !is_null($subject->getAuthoremail()) ? $subject->getAuthoremail() : '', !is_null($subject->getAuthorcompany()) ? $subject->getAuthorcompany() : '', intval($subject->getLastuploaddate()), $subject->getT3xfilemd5(), $this->repositoryUID, tx_em_Tools::getDefaultState($subject->getState() ? $subject->getState() : ''), intval($subject->getReviewstate()), tx_em_Tools::getDefaultCategory($subject->getCategory() ? $subject->getCategory() : ''), $subject->getDescription() ? $subject->getDescription() : '', $subject->getDependencies() ? $subject->getDependencies() : '', $subject->getUploadcomment() ? $subject->getUploadcomment() : ''); ++$this->sumRecords; }
function storeXMLResult() { foreach ($this->extXMLResult as $extkey => $extArr) { $max = -1; $maxrev = -1; $last = ''; $lastrev = ''; $usecat = ''; $usetitle = ''; $usestate = ''; $useauthorcompany = ''; $useauthorname = ''; $verArr = array(); foreach ($extArr['versions'] as $version => $vArr) { $iv = tx_em_Tools::makeVersion($version, 'int'); if ($vArr['title'] && !$usetitle) { $usetitle = $vArr['title']; } if ($vArr['state'] && !$usestate) { $usestate = $vArr['state']; } if ($vArr['authorcompany'] && !$useauthorcompany) { $useauthorcompany = $vArr['authorcompany']; } if ($vArr['authorname'] && !$useauthorname) { $useauthorname = $vArr['authorname']; } $verArr[$version] = $iv; if ($iv > $max) { $max = $iv; $last = $version; if ($vArr['title']) { $usetitle = $vArr['title']; } if ($vArr['state']) { $usestate = $vArr['state']; } if ($vArr['authorcompany']) { $useauthorcompany = $vArr['authorcompany']; } if ($vArr['authorname']) { $useauthorname = $vArr['authorname']; } $usecat = $vArr['category']; } if ($vArr['reviewstate'] && $iv > $maxrev) { $maxrev = $iv; $lastrev = $version; } } if (!strlen($usecat)) { $usecat = 4; // Extensions without a category end up in "misc" } else { if (isset($this->revCatArr[$usecat])) { $usecat = $this->revCatArr[$usecat]; } else { $usecat = 4; // Extensions without a category end up in "misc" } } if (isset($this->revStateArr[$usestate])) { $usestate = $this->revCatArr[$usestate]; } else { $usestate = 999; // Extensions without a category end up in "misc" } foreach ($extArr['versions'] as $version => $vArr) { $vArr['version'] = $version; $vArr['intversion'] = $verArr[$version]; $vArr['extkey'] = $extkey; $vArr['alldownloadcounter'] = $extArr['downloadcounter']; $vArr['dependencies'] = serialize($vArr['dependencies']); $vArr['category'] = $usecat; $vArr['title'] = $usetitle; if ($version == $last) { $vArr['lastversion'] = 1; } if ($version == $lastrev) { $vArr['lastreviewedversion'] = 1; } $vArr['state'] = isset($this->revStateArr[$vArr['state']]) ? $this->revStateArr[$vArr['state']] : $usestate; // 999 = not set category $GLOBALS['TYPO3_DB']->exec_INSERTquery('cache_extensions', $vArr); } } }