Commit 6f895ba4 authored by Markus Sommer's avatar Markus Sommer Committed by Thomas Löffler

[TASK] CGL Fix

parent 99917543
This diff is collapsed.
......@@ -14,4 +14,4 @@
*/
class tx_ter_exception extends Exception
{
}
\ No newline at end of file
}
......@@ -42,7 +42,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
// Make sure that we are executed only in TYPO3 context
if (!defined('TYPO3_MODE')) {
die ('Access denied.');
die('Access denied.');
}
// Error codes:
......@@ -135,25 +135,30 @@ class tx_ter_helper
public function getValidUser($accountData)
{
if (!strlen($accountData->username) || (!strlen($accountData->password))) {
throw new tx_ter_exception_unauthorized ('No user or no password submitted.', TX_TER_ERROR_GENERAL_NOUSERORPASSWORD);
throw new tx_ter_exception_unauthorized('No user or no password submitted.', TX_TER_ERROR_GENERAL_NOUSERORPASSWORD);
}
$res = $this->getDatabaseConnection()->exec_SELECTquery(
'*', 'fe_users',
'*',
'fe_users',
'username=' . $this->getDatabaseConnection()->fullQuoteStr($accountData->username, 'fe_users') . $this->getTyposcriptFrontendObject()->sys_page->enableFields('fe_users')
);
if ($row = $this->getDatabaseConnection()->sql_fetch_assoc($res)) {
if (!$this->userIsAlreadyLoggedIn($accountData) && !$this->ldapValidationSucceeded($accountData)) {
if (!$this->userIsAlreadyLoggedIn( $accountData
) && !$this->ldapValidationSucceeded($accountData)
) {
throw new tx_ter_exception_unauthorized ('Wrong password.', TX_TER_ERROR_GENERAL_WRONGPASSWORD);
}
} else {
throw new tx_ter_exception_unauthorized ('The specified user does not exist. You need to login first on extensions.typo3.org.', TX_TER_ERROR_GENERAL_USERNOTFOUND);
throw new tx_ter_exception_unauthorized('The specified user does not exist. You need to login first on extensions.typo3.org.', TX_TER_ERROR_GENERAL_USERNOTFOUND);
}
$row['admin'] = (intval($this->pluginObj->conf['adminFrontendUsergroupUid']) && GeneralUtility::inList(
$row['usergroup'], $this->pluginObj->conf['adminFrontendUsergroupUid']
));
$row['usergroup'],
$this->pluginObj->conf['adminFrontendUsergroupUid']
));
return $row;
}
......@@ -211,13 +216,18 @@ class tx_ter_helper
} else {
$success = false;
$res = $this->getDatabaseConnection()->exec_SELECTquery(
'*', 'fe_users', 'username=' . $this->getDatabaseConnection()->fullQuoteStr(
$accountData->username, 'fe_users'
'*',
'fe_users',
'username=' . $this->getDatabaseConnection()->fullQuoteStr(
$accountData->username,
'fe_users'
) . $GLOBALS['TSFE']->sys_page->enableFields('fe_users')
);
if ($row = $this->getDatabaseConnection()->sql_fetch_assoc($res)) {
if ($this->ldapValidationSucceeded($accountData)) {
if ($this->ldapValidationSucceeded( $accountData)
) {
$success = true;
}
}
......@@ -243,7 +253,9 @@ class tx_ter_helper
$isAvailable = true;
$res = $this->getDatabaseConnection()->exec_SELECTquery(
'extensionkey', 'tx_ter_extensionkeys', 'pid=' . intval($this->pluginObj->extensionsPID)
'extensionkey',
'tx_ter_extensionkeys',
'pid=' . intval($this->pluginObj->extensionsPID)
);
while ($row = $this->getDatabaseConnection()->sql_fetch_row($res)) {
if ($cleanedExtensionKey === str_replace('_', '', $row[0])) {
......@@ -287,7 +299,9 @@ class tx_ter_helper
public function getLatestVersionNumberOfExtension($extensionKey)
{
$res = $this->getDatabaseConnection()->exec_SELECTquery(
'version', 'tx_ter_extensions', 'extensionkey=' . $this->getDatabaseConnection()->fullQuoteStr($extensionKey, 'tx_ter_extensions') . '
'version',
'tx_ter_extensions',
'extensionkey=' . $this->getDatabaseConnection()->fullQuoteStr($extensionKey, 'tx_ter_extensions') . '
AND pid=' . intval($this->pluginObj->extensionsPID)
);
$latestVersion = false;
......@@ -333,7 +347,8 @@ class tx_ter_helper
GeneralUtility::devLog('writing extension index!', 'tx_ter_helper', 0);
if (!@is_dir($this->pluginObj->repositoryDir)) {
throw new tx_ter_exception_internalServerError(
'Extension repository directory does not exist.', TX_TER_ERROR_GENERAL_EXTREPDIRDOESNTEXIST
'Extension repository directory does not exist.',
TX_TER_ERROR_GENERAL_EXTREPDIRDOESNTEXIST
);
}
......@@ -341,14 +356,16 @@ class tx_ter_helper
$res = $this->getDatabaseConnection()->exec_SELECTquery(
'uid,tstamp,extensionkey,version,title,description,state,reviewstate,category,downloadcounter,t3xfilemd5',
'tx_ter_extensions', '1'
'tx_ter_extensions',
'1'
);
// Read the extension records from the DB:
$extensionsAndVersionsArr = [];
$extensionsTotalDownloadsArr = [];
while ($row = $this->getDatabaseConnection()->sql_fetch_assoc($res)) {
$res2 = $this->getDatabaseConnection()->exec_SELECTquery(
'ownerusername,downloadcounter', 'tx_ter_extensionkeys',
'ownerusername,downloadcounter',
'tx_ter_extensionkeys',
'extensionkey=' . $this->getDatabaseConnection()->fullQuoteStr($row['extensionkey'], 'tx_ter_extensionkeys')
);
$extensionKeyRow = $this->getDatabaseConnection()->sql_fetch_assoc($res2);
......@@ -357,7 +374,8 @@ class tx_ter_helper
$res2 = $this->getDatabaseConnection()->exec_SELECTquery(
'lastuploaddate,uploadcomment,dependencies,composerinfo,authorname,authoremail,authorcompany',
'tx_ter_extensiondetails', 'extensionuid=' . (int)$row['uid']
'tx_ter_extensiondetails',
'extensionuid=' . (int)$row['uid']
);
$detailsRow = $this->getDatabaseConnection()->sql_fetch_assoc($res2);
if (is_array($detailsRow)) {
......@@ -366,23 +384,24 @@ class tx_ter_helper
$extensionsAndVersionsArr [$row['extensionkey']]['versions'][$row['version']] = $row;
}
// Prepare the DOM object:
$dom = new DOMDocument ('1.0', 'utf-8');
$dom = new DOMDocument('1.0', 'utf-8');
$dom->formatOutput = true;
$extensionsObj = $dom->appendChild(new DOMElement('extensions'));
// Create the nested XML structure:
foreach ($extensionsAndVersionsArr as $extensionKey => $extensionVersionsArr) {
$extensionObj = $extensionsObj->appendChild(new DOMElement('extension'));
$extensionObj->appendChild(new DOMAttr ('extensionkey', $extensionKey));
$extensionObj->appendChild(new DOMAttr('extensionkey', $extensionKey));
$extensionObj->appendChild(
new DOMElement (
'downloadcounter', $this->xmlentities($extensionsTotalDownloadsArr[$extensionKey])
new DOMElement(
'downloadcounter',
$this->xmlentities($extensionsTotalDownloadsArr[$extensionKey])
)
);
foreach ($extensionVersionsArr['versions'] as $versionNumber => $extensionVersionArr) {
$versionObj = $extensionObj->appendChild(new DOMElement('version'));
$versionObj->appendChild(new DOMAttr ('version', $versionNumber));
$versionObj->appendChild(new DOMAttr('version', $versionNumber));
$versionObj->appendChild(new DOMElement('title', $this->xmlentities($extensionVersionArr['title'])));
$versionObj->appendChild(new DOMElement('description', $this->xmlentities($extensionVersionArr['description'])));
$versionObj->appendChild(new DOMElement('state', $this->xmlentities($extensionVersionArr['state'])));
......@@ -390,13 +409,15 @@ class tx_ter_helper
$versionObj->appendChild(new DOMElement('category', $this->xmlentities($extensionVersionArr['category'])));
$versionObj->appendChild(
new DOMElement(
'downloadcounter', $this->xmlentities($extensionVersionArr['downloadcounter'])
'downloadcounter',
$this->xmlentities($extensionVersionArr['downloadcounter'])
)
);
$versionObj->appendChild(new DOMElement('lastuploaddate', $extensionVersionArr['lastuploaddate']));
$versionObj->appendChild(
new DOMElement(
'uploadcomment', $this->xmlentities($extensionVersionArr['uploadcomment'])
'uploadcomment',
$this->xmlentities($extensionVersionArr['uploadcomment'])
)
);
$versionObj->appendChild(new DOMElement('dependencies', $extensionVersionArr['dependencies']));
......@@ -405,12 +426,14 @@ class tx_ter_helper
$versionObj->appendChild(new DOMElement('authoremail', $this->xmlentities($extensionVersionArr['authoremail'])));
$versionObj->appendChild(
new DOMElement(
'authorcompany', $this->xmlentities($extensionVersionArr['authorcompany'])
'authorcompany',
$this->xmlentities($extensionVersionArr['authorcompany'])
)
);
$versionObj->appendChild(
new DOMElement(
'ownerusername', $this->xmlentities($extensionVersionArr['ownerusername'])
'ownerusername',
$this->xmlentities($extensionVersionArr['ownerusername'])
)
);
$versionObj->appendChild(new DOMElement('t3xfilemd5', $extensionVersionArr['t3xfilemd5']));
......@@ -423,7 +446,7 @@ class tx_ter_helper
// Write XML data to disk:
$fh = fopen($this->pluginObj->repositoryDir . 'new-extensions.xml.gz', 'wb');
if (!$fh) {
throw new tx_ter_exception_internalServerError (
throw new tx_ter_exception_internalServerError(
'Write error while writing extensions index file: ' . $this->pluginObj->repositoryDir . 'extensions.xml',
TX_TER_ERROR_UPLOADEXTENSION_WRITEERRORWHILEWRITINGEXTENSIONSINDEX
);
......@@ -442,14 +465,15 @@ class tx_ter_helper
@unlink($this->pluginObj->repositoryDir . 'extensions.xml.gz');
rename($this->pluginObj->repositoryDir . 'new-extensions.xml.gz', $this->pluginObj->repositoryDir . 'extensions.xml.gz');
GeneralUtility::writeFile(
$this->pluginObj->repositoryDir . 'extensions.md5', md5_file($this->pluginObj->repositoryDir . 'extensions.xml.gz')
$this->pluginObj->repositoryDir . 'extensions.md5',
md5_file($this->pluginObj->repositoryDir . 'extensions.xml.gz')
);
// Write serialized array file to disk:
$fh = fopen($this->pluginObj->repositoryDir . 'new-extensions.bin', 'wb');
if (!$fh) {
throw new tx_ter_exception_internalServerError (
throw new tx_ter_exception_internalServerError(
'Write error while writing extensions index file: ' . $this->pluginObj->repositoryDir . 'extensions.bin',
TX_TER_ERROR_UPLOADEXTENSION_WRITEERRORWHILEWRITINGEXTENSIONSINDEX
);
......@@ -459,7 +483,7 @@ class tx_ter_helper
if (!@filesize($this->pluginObj->repositoryDir . 'new-extensions.bin') > 0) {
GeneralUtility::devLog('Newly created extension index is zero bytes!', 'tx_ter_helper', 0);
throw new tx_ter_exception_internalServerError (
throw new tx_ter_exception_internalServerError(
'Write error while writing extensions index file (zero bytes): ' . $this->pluginObj->repositoryDir . 'extensions.bin',
TX_TER_ERROR_UPLOADEXTENSION_WRITEERRORWHILEWRITINGEXTENSIONSINDEX
);
......@@ -467,7 +491,6 @@ class tx_ter_helper
@unlink($this->pluginObj->repositoryDir . 'extensions.bin');
rename($this->pluginObj->repositoryDir . 'new-extensions.bin', $this->pluginObj->repositoryDir . 'extensions.bin');
}
/**
......
......@@ -36,7 +36,9 @@ class tx_ter_tcaLabel
}
$result = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
'extensionkey', 'tx_ter_extensions', 'uid=' . (int)$params['row']['uid']
'extensionkey',
'tx_ter_extensions',
'uid=' . (int)$params['row']['uid']
);
if (!empty($result['extensionkey'])) {
......@@ -45,5 +47,4 @@ class tx_ter_tcaLabel
$params['title'] = (int)$params['row']['uid'];
}
}
}
\ No newline at end of file
}
......@@ -73,7 +73,6 @@ class tx_ter_buildextensionindex
}
}
}
}
$pluginObj = new tx_ter_buildextensionindex();
......
......@@ -4,5 +4,3 @@
define('TYPO3_MOD_PATH', '../typo3conf/ext/ter/cli/');
$BACK_PATH = '../../../../typo3/';
$MCONF['name'] = '_CLI_ter';
?>
#! /usr/bin/php -q
<?php
die ('Access denied');
die('Access denied');
// Defining circumstances for CLI mode:
define('TYPO3_cliMode', true);
......@@ -12,7 +12,9 @@ require(dirname(PATH_thisScript) . '/' . $BACK_PATH . 'init.php');
$res = $TYPO3_DB->exec_SELECTquery(
'uid, uploadcomment', 'tx_ter_extensiondetails', '1'
'uid, uploadcomment',
'tx_ter_extensiondetails',
'1'
);
$counter = 0;
......@@ -24,4 +26,4 @@ while ($row = $TYPO3_DB->sql_fetch_assoc($res)) {
}
}
?>
\ No newline at end of file
?>
......@@ -10,7 +10,7 @@
* Keep off - never ever use this at TYPO3.org again ...
*/
die ('Better not ...');
die('Better not ...');
// Defining circumstances for CLI mode:
define('TYPO3_cliMode', true);
......@@ -35,7 +35,11 @@ $extensionsPID = 1320;
writeExtensionIndexfile();
$res = $TYPO3_DB->exec_SELECTquery(
'*', 'tx_extrep_keytable', 'hidden=0 AND deleted=0', '', 'extension_key ASC'
'*',
'tx_extrep_keytable',
'hidden=0 AND deleted=0',
'',
'extension_key ASC'
);
$startTime = time();
......@@ -45,7 +49,9 @@ while ($extensionKeyRow = $TYPO3_DB->sql_fetch_assoc($res)) {
$extensionKeyCounter++;
$res2 = $TYPO3_DB->exec_SELECTquery(
'username', 'fe_users', 'uid = ' . $extensionKeyRow['owner_fe_user']
'username',
'fe_users',
'uid = ' . $extensionKeyRow['owner_fe_user']
);
$feUsersRow = $TYPO3_DB->sql_fetch_assoc($res2);
$accountData['username'] = $feUsersRow['username'];
......@@ -53,7 +59,6 @@ while ($extensionKeyRow = $TYPO3_DB->sql_fetch_assoc($res)) {
echo('importing ' . str_pad($extensionKeyRow['extension_key'] . ' (' . $feUsersRow['username'] . ')', 40, ' '));
if (intval($extensionKeyRow['members_only'])) {
$newExtensionKeyRow = [
'tstamp' => $extensionKeyRow['tstamp'],
'crdate' => $extensionKeyRow['crdate'],
......@@ -67,12 +72,14 @@ while ($extensionKeyRow = $TYPO3_DB->sql_fetch_assoc($res)) {
];
$TYPO3_DB->exec_INSERTquery(
'tx_ter_extensionkeys', $newExtensionKeyRow
'tx_ter_extensionkeys',
$newExtensionKeyRow
);
} else {
$res2 = $TYPO3_DB->exec_SELECTquery(
'*', 'tx_extrep_repository', 'extension_uid = ' . $extensionKeyRow['uid']
'*',
'tx_extrep_repository',
'extension_uid = ' . $extensionKeyRow['uid']
);
$versionOfExtension = 1;
......@@ -118,17 +125,21 @@ function getExtensionDataFromRepositoryRow($extensionKeyRow, $extensionVersionRo
// *** DEPENDENCIES
$typo3VersionMax = $extensionVersionRow['emconf_TYPO3_version_max'] > 0 ? versionConv(
$extensionVersionRow['emconf_TYPO3_version_max'], 1
$extensionVersionRow['emconf_TYPO3_version_max'],
1
) : '';
$typo3VersionMin = $extensionVersionRow['emconf_TYPO3_version_min'] > 0 ? versionConv(
$extensionVersionRow['emconf_TYPO3_version_min'], 1
$extensionVersionRow['emconf_TYPO3_version_min'],
1
) : '';
$phpVersionMax = $extensionVersionRow['emconf_PHP_version_max'] > 0 ? versionConv(
$extensionVersionRow['emconf_PHP_version_max'], 1
$extensionVersionRow['emconf_PHP_version_max'],
1
) : '';
$phpVersionMin = $extensionVersionRow['emconf_PHP_version_min'] > 0 ? versionConv(
$extensionVersionRow['emconf_PHP_version_min'], 1
$extensionVersionRow['emconf_PHP_version_min'],
1
) : '';
$typo3VersionRange = (strlen($typo3VersionMin) && strlen($typo3VersionMax)) ? $typo3VersionMin . '-' . $typo3VersionMax : '';
......@@ -222,7 +233,7 @@ function writeExtensionAndIconFile(&$extensionData, $filesData)
foreach ($extensionData['technicalData']['dependencies'] as $dependencyArr) {
switch ($dependencyArr['extensionKey']) {
case 'typo3' :
case 'typo3':
$typo3Version = $dependencyArr['versionRange'];
break;
case 'php':
......@@ -304,14 +315,15 @@ function writeExtensionAndIconFile(&$extensionData, $filesData)
}
list ($majorVersion, $minorVersion, $devVersion) = \TYPO3\CMS\Core\Utility\GeneralUtility::intExplode(
'.', $extensionData['version']
'.',
$extensionData['version']
);
$t3xFileName = strtolower(
$extensionData['extensionKey']
) . '_' . $majorVersion . '.' . $minorVersion . '.' . $devVersion . '.t3x';
$extensionData['extensionKey']
) . '_' . $majorVersion . '.' . $minorVersion . '.' . $devVersion . '.t3x';
$gifFileName = strtolower(
$extensionData['extensionKey']
) . '_' . $majorVersion . '.' . $minorVersion . '.' . $devVersion . '.gif';
$extensionData['extensionKey']
) . '_' . $majorVersion . '.' . $minorVersion . '.' . $devVersion . '.gif';
// Write the files
$fh = @fopen($fullPath . $t3xFileName, 'wb');
......@@ -340,9 +352,10 @@ function writeExtensionInfoToDB($accountData, $extensionData, $filesData, $exten
// Add extension key to key table if we are processing the first version of the extension:
if ($versionOfExtension == 1) {
$res = $TYPO3_DB->exec_SELECTquery(
'*', 'tx_extrep_keytable', 'extension_key = "' . $extensionData['extensionKey'] . '"'
'*',
'tx_extrep_keytable',
'extension_key = "' . $extensionData['extensionKey'] . '"'
);
$oldExtensionKeyRow = $TYPO3_DB->sql_fetch_assoc($res);
......@@ -359,7 +372,8 @@ function writeExtensionInfoToDB($accountData, $extensionData, $filesData, $exten
];
$TYPO3_DB->exec_INSERTquery(
'tx_ter_extensionkeys', $extensionKeyRow
'tx_ter_extensionkeys',
$extensionKeyRow
);
}
......@@ -424,7 +438,6 @@ function writeExtensionInfoToDB($accountData, $extensionData, $filesData, $exten
];
$TYPO3_DB->exec_INSERTquery('tx_ter_extensiondetails', $extensionDetailsRow);
}
/**
......@@ -490,15 +503,18 @@ function writeExtensionIndexfile()
global $TYPO3_DB;
if (!@is_dir($GLOBALS['repositoryDir'])) {
throw new tx_ter_exception_internalServerError (
'Extension repository directory does not exist.', TX_TER_ERROR_GENERAL_EXTREPDIRDOESNTEXIST
throw new tx_ter_exception_internalServerError(
'Extension repository directory does not exist.',
TX_TER_ERROR_GENERAL_EXTREPDIRDOESNTEXIST
);
}
$trackTime = microtime();
$res = $TYPO3_DB->exec_SELECTquery(
'uid,tstamp,extensionkey,version,title,description,state,category,t3xfilemd5', 'tx_ter_extensions', '1'
'uid,tstamp,extensionkey,version,title,description,state,category,t3xfilemd5',
'tx_ter_extensions',
'1'
);
// Read the extension records from the DB:
......@@ -506,14 +522,17 @@ function writeExtensionIndexfile()
$extensionsTotalDownloadsArr = [];
while ($row = $TYPO3_DB->sql_fetch_assoc($res)) {
$res2 = $TYPO3_DB->exec_SELECTquery(
'ownerusername,downloadcounter', 'tx_ter_extensionkeys', 'extensionkey="' . $row['extensionkey'] . '"'
'ownerusername,downloadcounter',
'tx_ter_extensionkeys',
'extensionkey="' . $row['extensionkey'] . '"'
);
$extensionKeyRow = $TYPO3_DB->sql_fetch_assoc($res2);
$row['ownerusername'] = $extensionKeyRow['ownerusername'];
$extensionsTotalDownloadsArr[$row['extensionkey']] = $extensionKeyRow['downloadcounter'];
$res2 = $TYPO3_DB->exec_SELECTquery(
'lastuploaddate,uploadcomment,dependencies,authorname,authoremail,authorcompany', 'tx_ter_extensiondetails',
'lastuploaddate,uploadcomment,dependencies,authorname,authoremail,authorcompany',
'tx_ter_extensiondetails',
'extensionuid=' . $row['uid']
);
$detailsRow = $TYPO3_DB->sql_fetch_assoc($res2);
......@@ -524,19 +543,19 @@ function writeExtensionIndexfile()
}
// Prepare the DOM object:
$dom = new DOMDocument ('1.0', 'utf-8');
$dom = new DOMDocument('1.0', 'utf-8');
$dom->formatOutput = false;
$extensionsObj = $dom->appendChild(new DOMElement('extensions'));
// Create the nested XML structure:
foreach ($extensionsAndVersionsArr as $extensionKey => $extensionVersionsArr) {
$extensionObj = $extensionsObj->appendChild(new DOMElement('extension'));
$extensionObj->appendChild(new DOMAttr ('extensionkey', $extensionKey));
$extensionObj->appendChild(new DOMElement ('downloadcounter', xmlentities($extensionsTotalDownloadsArr[$extensionKey])));
$extensionObj->appendChild(new DOMAttr('extensionkey', $extensionKey));
$extensionObj->appendChild(new DOMElement('downloadcounter', xmlentities($extensionsTotalDownloadsArr[$extensionKey])));
foreach ($extensionVersionsArr as $versionNumber => $extensionVersionArr) {
$versionObj = $extensionObj->appendChild(new DOMElement('version'));
$versionObj->appendChild(new DOMAttr ('version', $versionNumber));
$versionObj->appendChild(new DOMAttr('version', $versionNumber));
$versionObj->appendChild(new DOMElement('title', xmlentities($extensionVersionArr['title'])));
$versionObj->appendChild(new DOMElement('description', xmlentities($extensionVersionArr['description'])));
......@@ -561,7 +580,7 @@ function writeExtensionIndexfile()
// Write XML data to disc:
$fh = fopen($GLOBALS['repositoryDir'] . 'cli-extensions.xml.gz', 'wb');
if (!$fh) {
throw new tx_ter_exception_internalServerError (
throw new tx_ter_exception_internalServerError(
'Write error while writing extensions index file: ' . $GLOBALS['repositoryDir'] . 'extensions.xml',
TX_TER_ERROR_UPLOADEXTENSION_WRITEERRORWHILEWRITINGEXTENSIONSINDEX
);
......@@ -570,8 +589,6 @@ function writeExtensionIndexfile()