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; }