/**
  * 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);
         }
     }
 }