Fix config save
This commit is contained in:
@@ -229,6 +229,7 @@ class Manager
|
||||
if (!$this->isDir($tmpDir)) return false;
|
||||
|
||||
$tmpPath = tempnam($tmpDir, 'tmp');
|
||||
$tmpPath = $this->getRelativePath($tmpPath);
|
||||
|
||||
if (!$tmpPath) return false;
|
||||
if (!$this->isFile($tmpPath)) return false;
|
||||
@@ -978,4 +979,21 @@ class Manager
|
||||
|
||||
return $fullPath;
|
||||
}
|
||||
|
||||
public function getRelativePath($path, $basePath = null, $dirSeparator = null)
|
||||
{
|
||||
if (!$basePath) {
|
||||
$basePath = getcwd();
|
||||
}
|
||||
|
||||
if (!$dirSeparator) {
|
||||
$dirSeparator = Utils\Util::getSeparator();
|
||||
}
|
||||
|
||||
if (substr($basePath, -1) != $dirSeparator) {
|
||||
$basePath .= $dirSeparator;
|
||||
}
|
||||
|
||||
return preg_replace('/^'. preg_quote($basePath, '/') . '/', '', $path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,4 +506,28 @@ class ManagerTest extends \PHPUnit\Framework\TestCase
|
||||
}
|
||||
}
|
||||
|
||||
public function relativePathData()
|
||||
{
|
||||
$tmpFile = tempnam('data/tmp', 'tmp');
|
||||
|
||||
return [
|
||||
['data/config.php', 'data/config.php'],
|
||||
[realpath('data/config.php'), 'data/config.php'],
|
||||
[$tmpFile, 'data/tmp/' . basename($tmpFile)],
|
||||
[realpath('application/Espo/Core'), 'application/Espo/Core'],
|
||||
[realpath('application/Espo/Core') . '/', 'application/Espo/Core/'],
|
||||
[realpath('application/Espo/Core/Application.php'), 'application/Espo/Core/Application.php'],
|
||||
['C:\\espocrm\\data\\config.php', 'data\\config.php', 'C:\\espocrm', '\\'],
|
||||
['C:espocrm\\data\\config.php', 'data\\config.php', 'C:espocrm', '\\'],
|
||||
['C:\\espocrm\\data\\tmp\\' . basename($tmpFile), 'data\\tmp\\' . basename($tmpFile), 'C:\\espocrm', '\\'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider relativePathData
|
||||
*/
|
||||
public function testGetRelativePath($path, $expectedResult, $basePath = null, $dirSeparator = null)
|
||||
{
|
||||
$this->assertEquals($expectedResult, $this->object->getRelativePath($path, $basePath, $dirSeparator));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,81 +102,31 @@ class PermissionTest extends \PHPUnit\Framework\TestCase
|
||||
$this->assertEquals( $result, $this->object->arrangePermissionList($this->fileList) );
|
||||
}
|
||||
|
||||
/*public function bestPossibleList()
|
||||
public function requiredPermissionsData()
|
||||
{
|
||||
$fileList = array(
|
||||
'application/Espo/Controllers',
|
||||
'application/Espo/Core',
|
||||
'application/Espo/Core/Cron',
|
||||
'application/Espo/Core/Loaders',
|
||||
'application/Espo/Core/Mail',
|
||||
'application/Espo/Core/Mail/Storage/Imap.php',
|
||||
'application/Espo/Core/SelectManagers/Base.php',
|
||||
'application/Espo/Core/Utils/Database/Orm',
|
||||
'application/Espo/Core/Utils/Database/Orm/Fields',
|
||||
'application/Espo/Core/Utils/Database/Orm/Relations',
|
||||
'application/Espo/Core/Utils',
|
||||
'application/Espo/Core/defaults/config.php',
|
||||
'application/Espo/Entities',
|
||||
'application/Espo/Hooks/Common/Stream.php',
|
||||
'application/Espo/Modules/Crm/Controllers/Opportunity.php',
|
||||
'application/Espo/Modules/Crm/Jobs/CheckInboundEmails.php',
|
||||
'application/Espo/Modules/Crm/Resources/i18n/de_DE',
|
||||
'application/Espo/Modules/Crm/Resources/i18n/en_US',
|
||||
'application/Espo/Modules/Crm/Resources/i18n/nl_NL',
|
||||
'application/Espo/Modules/Crm/Resources/i18n/pl_PL',
|
||||
'application/Espo/Modules/Crm/Resources/layouts/InboundEmail',
|
||||
'application/Espo/Modules/Crm/Resources/metadata/clientDefs/InboundEmail.json',
|
||||
'application/Espo/Modules/Crm/Resources/metadata/entityDefs',
|
||||
'application/Espo/Modules/Crm/Services',
|
||||
'application/Espo/Repositories',
|
||||
'application/Espo/Resources/i18n/de_DE',
|
||||
'application/Espo/Resources/i18n/en_US',
|
||||
'application/Espo/Resources/i18n/nl_NL',
|
||||
'application/Espo/Resources/i18n/pl_PL',
|
||||
'application/Espo/Resources/layouts/Email',
|
||||
'application/Espo/Resources/layouts/EmailAccount',
|
||||
'application/Espo/Resources/layouts/User/filters.json',
|
||||
'application/Espo/Resources/metadata/app',
|
||||
'application/Espo/Resources/metadata/clientDefs',
|
||||
'application/Espo/Resources/metadata/entityDefs',
|
||||
'application/Espo/Resources/metadata/integrations/Google.json',
|
||||
'application/Espo/Resources/metadata/scopes',
|
||||
'application/Espo/SelectManagers/EmailAccount.php',
|
||||
'application/Espo/Services',
|
||||
'install/core',
|
||||
'install/core/actions/settingsTest.php',
|
||||
'install/core/i18n/de_DE/install.json',
|
||||
'install/core/i18n/en_US/install.json',
|
||||
'install/core/i18n/es_ES/install.json',
|
||||
'install/core/i18n/nl_NL/install.json',
|
||||
'install/core/i18n/pl_PL/install.json',
|
||||
'install/core/i18n/ro_RO/install.json',
|
||||
'install/core/i18n/tr_TR/install.json',
|
||||
'install/js/install.js',
|
||||
);
|
||||
|
||||
$result = array(
|
||||
'application/Espo/Controllers',
|
||||
'application/Espo/Core',
|
||||
'application/Espo/Entities',
|
||||
'application/Espo/Hooks/Common/Stream.php',
|
||||
'application/Espo/Modules/Crm',
|
||||
'application/Espo/Repositories',
|
||||
'application/Espo/Resources',
|
||||
'application/Espo/SelectManagers/EmailAccount.php',
|
||||
'application/Espo/Services',
|
||||
'install/core',
|
||||
'install/js/install.js',
|
||||
);
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return [
|
||||
['data/config.php', '0775', '0664'],
|
||||
['data/tmp/tmpivqW1X', '0775', '0664'],
|
||||
['application/Espo/Core/Application.php', '0755', '0644'],
|
||||
['custom/Espo/Custom/Resources/metadata/entityDefs', '0775', '0664'],
|
||||
['custom/Espo/Custom/Resources/metadata/entityDefs/Account.json', '0775', '0664'],
|
||||
['application/Espo/Modules', '0775', '0664'],
|
||||
['application/Espo/Modules/Crm/Resources', '0755', '0644'],
|
||||
['application/Espo/Modules/Crm/Resources/layouts/Account/detail.json', '0755', '0644'],
|
||||
['client/modules', '0775', '0664'],
|
||||
['client/modules/crm/src', '0755', '0644'],
|
||||
['client/modules/crm/src/views/account/detail.js', '0755', '0644'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider requiredPermissionsData
|
||||
*/
|
||||
public function testGetRequiredPermissions($path, $dirPermission, $filePermission)
|
||||
{
|
||||
$result = $this->object->getRequiredPermissions($path);
|
||||
|
||||
$this->assertEquals($dirPermission, $result['dir']);
|
||||
$this->assertEquals($filePermission, $result['file']);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user