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); $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']) { if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && $fielddata['varname'] == 'traffictool' && $newfieldvalue != $fielddata['value']) {
$oldpath = '/'.$fielddata['value'].'/'; $oldpath = '/' . $fielddata['value'] . '/';
$newpath = '/'.$newfieldvalue.'/'; $newpath = '/' . $newfieldvalue . '/';
$upd_stmt = Database::query(" $sel_stmt = Database::prepare("SELECT * FROM `" . TABLE_PANEL_HTPASSWDS . "` WHERE `path` LIKE :oldpath");
UPDATE `" . TABLE_PANEL_HTPASSWDS . "` SET `path` = :newpath WHERE `path` = :oldpath $upd_stmt = Database::prepare("
UPDATE `" . TABLE_PANEL_HTPASSWDS . "` SET `path` = :newpath WHERE `id` = :id
"); ");
Database::pexecute($upd_stmt, [ Database::pexecute($sel_stmt, [
'newpath' => $newpath, 'oldpath' => '%' . $oldpath
'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; return $returnvalue;