parent
6cc11e3998
commit
a3d56073e7
@ -0,0 +1 @@ |
||||
<?php |
@ -0,0 +1 @@ |
||||
<?php |
@ -0,0 +1,112 @@ |
||||
<?php |
||||
|
||||
api_protect_admin_script(); |
||||
|
||||
//the plugin title |
||||
$plugin_info['title'] = 'Edit htaccess'; |
||||
//the comments that go with the plugin |
||||
$plugin_info['comment'] = 'Edit htaccess'; |
||||
//the plugin version |
||||
$plugin_info['version'] = '1.0'; |
||||
//the plugin author |
||||
$plugin_info['author'] = 'Julio Montoya'; |
||||
|
||||
$editFile = false; |
||||
|
||||
$file = api_get_path(SYS_PATH).'.htaccess'; |
||||
if (!file_exists($file)) { |
||||
Display::addFlash( |
||||
Display::return_message( |
||||
"$file does not exists. ", |
||||
'warning' |
||||
) |
||||
); |
||||
} else { |
||||
if (is_readable($file) && is_writable($file)) { |
||||
$editFile = true; |
||||
} else { |
||||
if (!is_readable($file)) { |
||||
Display::addFlash( |
||||
Display::return_message("$file is not readable", 'warning') |
||||
); |
||||
} |
||||
|
||||
if (!is_writable($file)) { |
||||
Display::addFlash( |
||||
Display::return_message("$file is not writable", 'warning') |
||||
); |
||||
} |
||||
} |
||||
} |
||||
|
||||
if ($editFile) { |
||||
$originalContent = file_get_contents($file); |
||||
$beginLine = '###@@ This part was generated by the edit_htaccess plugin @@##'; |
||||
$endLine = '###@@ End @@##'; |
||||
|
||||
$handler = fopen($file, 'r'); |
||||
$deleteLinesList = []; |
||||
$deleteLine = false; |
||||
$contentNoBlock = ''; |
||||
$block = ''; |
||||
while (!feof($handler)) { |
||||
$line = fgets($handler); |
||||
$lineTrimmed = trim($line); |
||||
|
||||
if ($lineTrimmed == $beginLine) { |
||||
$deleteLine = true; |
||||
} |
||||
|
||||
if ($deleteLine) { |
||||
$block .= $line; |
||||
} else { |
||||
$contentNoBlock .= $line; |
||||
} |
||||
|
||||
if ($lineTrimmed == $endLine) { |
||||
$deleteLine = false; |
||||
} |
||||
} |
||||
|
||||
fclose($handler); |
||||
$block = str_replace($beginLine, '', $block); |
||||
$block = str_replace($endLine, '', $block); |
||||
|
||||
$form = new FormValidator('htaccess'); |
||||
$form->addHtml('The following text will be added in the /.htaccess'); |
||||
$form->addTextarea('text', get_lang('Text'), ['rows' => '15']); |
||||
$form->addButtonSave(get_lang('Save')); |
||||
$form->setDefaults(['text' => $block]); |
||||
if ($form->validate()) { |
||||
$values = $form->getSubmitValues(); |
||||
$text = $values['text']; |
||||
|
||||
// Restore htaccess with out the block |
||||
$newFileContent = $contentNoBlock; |
||||
$newFileContent .= $beginLine.PHP_EOL; |
||||
$newFileContent .= $text.PHP_EOL; |
||||
$newFileContent .= $endLine; |
||||
file_put_contents($file, $newFileContent); |
||||
|
||||
$handle = curl_init(api_get_path(WEB_PATH)); |
||||
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); |
||||
$response = curl_exec($handle); |
||||
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); |
||||
curl_close($handle); |
||||
|
||||
// Looks htaccess contains errors. Restore as it was. |
||||
if ($httpCode != 200) { |
||||
Display::addFlash( |
||||
Display::return_message( |
||||
'Check your htaccess instructions. The original file was restored.', |
||||
'warning' |
||||
) |
||||
); |
||||
file_put_contents($file, $originalContent); |
||||
} else { |
||||
Display::addFlash(Display::return_message('Saved')); |
||||
} |
||||
} |
||||
$plugin_info['settings_form'] = $form; |
||||
} |
||||
|
Loading…
Reference in new issue