fix updating of path in directory-protections when changing traffic tool

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2022-11-03 09:13:23 +01:00
parent a8dc576833
commit 1ecbad497a

View File

@@ -475,15 +475,23 @@ class Store
$returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue);
if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && $fielddata['varname'] == 'traffictool' && $newfieldvalue != $fielddata['value']) {
$oldpath = '/'.$fielddata['value'].'/';
$newpath = '/'.$newfieldvalue.'/';
$upd_stmt = Database::query("
UPDATE `" . TABLE_PANEL_HTPASSWDS . "` SET `path` = :newpath WHERE `path` = :oldpath
$oldpath = '/' . $fielddata['value'] . '/';
$newpath = '/' . $newfieldvalue . '/';
$sel_stmt = Database::prepare("SELECT * FROM `" . TABLE_PANEL_HTPASSWDS . "` WHERE `path` LIKE :oldpath");
$upd_stmt = Database::prepare("
UPDATE `" . TABLE_PANEL_HTPASSWDS . "` SET `path` = :newpath WHERE `id` = :id
");
Database::pexecute($upd_stmt, [
'newpath' => $newpath,
'oldpath' => $oldpath
Database::pexecute($sel_stmt, [
'oldpath' => '%' . $oldpath
]);
while ($entry = $sel_stmt->fetch(\PDO::FETCH_ASSOC)) {
$full_path = str_replace($oldpath, $newpath, $entry['path']);
$eid = (int)$entry['id'];
Database::pexecute($upd_stmt, [
'newpath' => $full_path,
'id' => $eid
]);
}
}
return $returnvalue;