Commit 79a4bb95 authored by Thomas Löffler's avatar Thomas Löffler

Merge branch 'develop' into 'master'

Weekly Release 14-09-17

See merge request !205
parents 329a31ad a460ef2a
Pipeline #2236 passed with stages
in 2 minutes and 33 seconds
......@@ -2,44 +2,42 @@
# top-most EditorConfig file
root = true
charset = utf-8
# Get rid of whitespace to avoid diffs with a bunch of EOL changes
trim_trailing_whitespace = true
# Unix-style newlines with a newline ending every file
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# CSS-Files
[*.css]
indent_style = tab
indent_style = space
indent_size = 4
# HTML-Files
[*.html]
indent_style = tab
indent_size = 2
indent_style = space
indent_size = 4
# TMPL-Files
[*.tmpl]
indent_style = tab
indent_style = space
indent_size = 4
# LESS-Files
[*.less]
indent_style = tab
# SCSS-Files
[*.scss]
indent_style = space
indent_size = 4
# JS-Files
[*.js]
indent_style = tab
indent_style = space
indent_size = 4
# JSON-Files
[*.json]
indent_style = tab
indent_style = space
indent_size = 4
# PHP-Files
......@@ -62,23 +60,27 @@ indent_size = 4
indent_style = space
indent_size = 2
# package.json or .travis.yml
[{package.json,.travis.yml}]
# package.json
# .travis.yml
# bower.json
[{package.json,.travis.yml,bower.json}]
indent_style = space
indent_size = 2
indent_size = 4
# TypoScript
[*.ts]
indent_style = space
indent_size = 2
indent_size = 4
[*.typoscript]
indent_style = space
indent_size = 4
# XLF-Files
[*.xlf]
indent_style = tab
indent_style = space
indent_size = 4
# SQL-Files
[*.sql]
indent_style = tab
indent_style = space
indent_size = 2
......@@ -1625,11 +1625,11 @@
},
{
"name": "t3o/t3olayout",
"version": "1.0.7",
"version": "1.0.9",
"source": {
"type": "git",
"url": "https://git-t3o.typo3.org/t3o/t3olayout.git",
"reference": "ff8cfafd888af207cd74c1b48915e94ff34b9926"
"reference": "30ce7a4a02711578191cf57e3ca11ec946715d6a"
},
"require": {
"typo3-ter/ig-ldap-sso-auth": "^3.2"
......@@ -1648,7 +1648,7 @@
"keywords": [
"TYPO3 CMS"
],
"time": "2017-08-28T21:32:11+00:00"
"time": "2017-09-14T10:29:21+00:00"
},
{
"name": "typo3-ter/ig-ldap-sso-auth",
......
......@@ -37,6 +37,7 @@ return [
'FE' => [
'debug' => true,
'loginSecurityLevel' => 'rsa',
'pageNotFound_handling' => '404'
],
'GFX' => [
'jpg_quality' => '80',
......
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,22 +347,31 @@ 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
);
}
// Check if update of files requested
$updateRequestedFile = $this->pluginObj->repositoryDir . 'extensions.xml.gz.needsupdate';
if (@filemtime($updateRequestedFile) <= @filemtime($this->pluginObj->repositoryDir . 'extensions.xml.gz')) {
return;
}
$trackTime = microtime();
$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 +380,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 +390,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 +415,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 +432,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 +452,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 +471,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 +489,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 +497,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'],