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 = $this->emObj->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);
         }
     }
 }
 /**
  * [Describe function...]
  *
  * @param	[type]		$em: ...
  * @return	[type]		...
  */
 function uploadToTER($em)
 {
     $uArr = $this->emObj->makeUploadArray($em['extKey'], $em['extInfo']);
     if (!is_array($uArr)) {
         return $uArr;
     }
     // Render new version number:
     $newVersionBase = $em['extInfo']['EM_CONF']['version'];
     switch ((string) $em['upload']['mode']) {
         case 'new_dev':
             $cmd = 'dev';
             break;
         case 'new_sub':
             $cmd = 'sub';
             break;
         case 'new_main':
             $cmd = 'main';
             break;
         case 'custom':
             $newVersionBase = $em['upload']['version'];
         case 'latest':
         default:
             $cmd = '';
             break;
     }
     $versionArr = $this->emObj->renderVersion($newVersionBase, $cmd);
     $em['version'] = $versionArr['version'];
     // Create dependency / conflict information:
     $dependenciesArr = array();
     $extKeysArr = $uArr['EM_CONF']['constraints']['depends'];
     if (is_array($extKeysArr)) {
         foreach ($extKeysArr as $extKey => $version) {
             if (strlen($extKey)) {
                 $dependenciesArr[] = array('kind' => 'depends', 'extensionKey' => utf8_encode($extKey), 'versionRange' => utf8_encode($version));
             }
         }
     }
     $extKeysArr = $uArr['EM_CONF']['constraints']['conflicts'];
     if (is_array($extKeysArr)) {
         foreach ($extKeysArr as $extKey => $version) {
             if (strlen($extKey)) {
                 $dependenciesArr[] = array('kind' => 'conflicts', 'extensionKey' => utf8_encode($extKey), 'versionRange' => utf8_encode($version));
             }
         }
     }
     // FIXME: This part must be removed, when the problem is solved on the TER-Server #5919
     if (count($dependenciesArr) == 1) {
         $dependenciesArr[] = array('kind' => 'depends', 'extensionKey' => '', 'versionRange' => '');
     }
     // END for Bug #5919
     // Compile data for SOAP call:
     $accountData = array('username' => $em['user']['fe_u'], 'password' => $em['user']['fe_p']);
     $extensionData = array('extensionKey' => utf8_encode($em['extKey']), 'version' => utf8_encode($em['version']), 'metaData' => array('title' => utf8_encode($uArr['EM_CONF']['title']), 'description' => utf8_encode($uArr['EM_CONF']['description']), 'category' => utf8_encode($uArr['EM_CONF']['category']), 'state' => utf8_encode($uArr['EM_CONF']['state']), 'authorName' => utf8_encode($uArr['EM_CONF']['author']), 'authorEmail' => utf8_encode($uArr['EM_CONF']['author_email']), 'authorCompany' => utf8_encode($uArr['EM_CONF']['author_company'])), 'technicalData' => array('dependencies' => $dependenciesArr, 'loadOrder' => utf8_encode($uArr['EM_CONF']['loadOrder']), 'uploadFolder' => (bool) intval($uArr['EM_CONF']['uploadfolder']), 'createDirs' => utf8_encode($uArr['EM_CONF']['createDirs']), 'shy' => (bool) intval($uArr['EM_CONF']['shy']), 'modules' => utf8_encode($uArr['EM_CONF']['module']), 'modifyTables' => utf8_encode($uArr['EM_CONF']['modify_tables']), 'priority' => utf8_encode($uArr['EM_CONF']['priority']), 'clearCacheOnLoad' => (bool) intval($uArr['EM_CONF']['clearCacheOnLoad']), 'lockType' => utf8_encode($uArr['EM_CONF']['lockType'])), 'infoData' => array('codeLines' => intval($uArr['misc']['codelines']), 'codeBytes' => intval($uArr['misc']['codebytes']), 'codingGuidelinesCompliance' => utf8_encode($uArr['EM_CONF']['CGLcompliance']), 'codingGuidelinesComplianceNotes' => utf8_encode($uArr['EM_CONF']['CGLcompliance_note']), 'uploadComment' => utf8_encode($em['upload']['comment']), 'techInfo' => $uArr['techInfo']));
     $filesData = array();
     foreach ($uArr['FILES'] as $filename => $infoArr) {
         // Avoid autoloading "soapclient", since it's only a strategy check here:
         $content = !defined('SOAP_1_2') && class_exists('soapclient', false) ? base64_encode($infoArr['content']) : $infoArr['content'];
         // bug in NuSOAP - no automatic encoding
         $filesData[] = array('name' => utf8_encode($infoArr['name']), 'size' => intval($infoArr['size']), 'modificationTime' => intval($infoArr['mtime']), 'isExecutable' => intval($infoArr['is_executable']), 'content' => $content, 'contentMD5' => $infoArr['content_md5']);
     }
     $soap = t3lib_div::makeInstance('em_soap');
     $soap->init(array('wsdl' => $this->wsdlURL, 'soapoptions' => array('trace' => 1, 'exceptions' => 0)));
     $response = $soap->call('uploadExtension', array('accountData' => $accountData, 'extensionData' => $extensionData, 'filesData' => $filesData));
     if ($response === false) {
         switch (true) {
             case is_string($soap->error):
                 return $soap->error;
                 break;
             default:
                 return $soap->error->faultstring;
         }
     }
     return $response;
 }