<?php
include 'system/func.php';
include 'system/ftp_connect.php';
$d=dir_url('/'.boff(prov($_GET['d'])));
$title='Построчное редактирование файла "'.basename($d).'"';
include 'system/head.php';
title($title);
if(empty($d)){
header('Location: /ftp.php');
}else{
ftp_pasv($serv,true);
$res = ftp_size($serv,$d);
if ($res == '-1'){
header('Location: /ftp.php');
}else{
$fi=ftprename($d);
$path=pathinfo($fi);
$rf=mb_strtolower($path['extension'],'UTF-8');
if ($rf != 'jpg' && $rf != 'jpeg' && $rf != 'jpe' && $rf != 'png' && $rf != 'gif' && $rf != 'bmp' && $rf != 'dll' && $rf != 'wav' && $rf != 'mid' && $rf != 'midi' && $rf != 'mp3' && $rf != 'mmf' && $rf != 'psd' && $rf != 'doc' && $rf != 'pdf' && $rf != 'zip' && $rf != 'rar' && $rf != 'jar' && $rf != '3gp' && $rf != 'avi' && $rf != 'mp4' && $rf != '7z' && $rf != 'tgz' && $rf != 'gz' && $rf != 'bz' && $rf != 'gz2' && $rf != 'bz2' && $rf != 'tbz' && $rf != 'tbz2' && $rf != 'tgz2' && $rf != 'tar' && $rf != 'ico'){
if(!is_file('tmp/'.$savedir.'/'.$fi)){
if (@!ftp_get($serv, 'tmp/'.$savedir.'/'.$fi, $d, FTP_BINARY)){
err('Не удалось загрузить файл на сервер');
include 'system/foot.php';
exit();
}
}
switch($act){
default:
$file=file('tmp/'.$savedir.'/'.$fi);
$cnt=count($file);
echo '<div class="menu">';
if ($cnt > 0){
$total=intval(($cnt-1)/50)+1;
if (empty($page) OR $page < 1) $page=1;
elseif ($page > $total) $page=$total;
$start=$page*50-50;
for($i=$start; $i<($start+50); $i++){
$file[$i]=htmlspecialchars($file[$i]);
echo '<span id="'.($i+1).'">'.($i+1).'</span> <a href="/edit.php?act=edit&d='.bon($d).'&page='.$page.'&str='.$i.'">'.$file[$i].'</a>';
echo ' <a href="/edit.php?act=newstr&d='.bon($d).'&page='.$page.'&str='.$i.'"><font color="red"><b>l</b></font></a> ';
echo ' <a href="/edit.php?act=delstr&d='.bon($d).'&page='.$page.'&str='.$i.'"><font color="red"><b>X</b></font></a><br/>';
if ($i == ($cnt-1)) break;
}
}else{
echo '<a href="/edit.php?act=ob&d='.bon($d).'"><font color="red"><b>l</b></font></a>';
}
echo'</div>';
navigator($cnt, $page, '50', $total, '/edit.php?d='.bon($d).'&page=');
echo '<div class="title">Всего строк: '.$cnt.'</div>';
echo '<div class="menu">« <a href="/file.php?d='.bon($d).'">Назад</a></div>';
break;
case 'edit':
$file=file('tmp/'.$savedir.'/'.$fi);
if (empty($file[$str])){
header('Location: /edit.php?d='.bon($d));
}else{
if (isset($_POST['ok'])){
$cnt=count($file);
for($i=0; $i<$cnt; $i++){
if ($str == $i){
$fp=fopen('tmp/'.$savedir.'/'.$fi, "a+");
flock($fp, LOCK_EX);
ftruncate($fp, 0);
for($i=0; $i<sizeof($file); $i++){
if ($str != $i){
fputs($fp, $file[$i]);
}else{
fputs($fp, $_POST['text']."\r\n");
}
}
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
}
}
if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
header ('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
}else{
err('Не удалось сохранить файл');
}
}
echo '<div class="menu">Строка: #'.($str+1).'<form method="post">Редактор:<br/><textarea name="text" cols="80" rows="15" style="width: 93%">'.htmlspecialchars(trim($file[$str])).'</textarea><br/><input class="btn btn-default" type="submit" name="ok" value="Сохранить"></form></div>';
echo '<div class="menu">« <a href="/edit.php?d='.bon($d).'&page='.$page.'#'.($str+1).'">Назад</a></div>';
}
break;
case 'newstr':
$file=file('tmp/'.$savedir.'/'.$fi);
if (isset($_POST['ok'])){
$cnt=count($file);
$fp=fopen('tmp/'.$savedir.'/'.$fi,"a+");
if (!$cnt)$cnt='';
for ($i=0; $i<$cnt; $i++){
if($str == $i){
flock ($fp,LOCK_EX);
ftruncate($fp,0);
for($i=0; $i<sizeof($file); $i++){
if ($str != $i){
fputs($fp,$file[$i]);
}else{
$bizname=$file[$i];
fputs($fp,$bizname.$_POST['text']."\r\n");
}
}
fflush ($fp); flock($fp,LOCK_UN);
fclose($fp);
}
}
if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
header('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
}else{
err('Не удалось вставить строку');
}
}
echo '<div class="menu">Новая строка<form method="post">Строка: #'.($str+1).'<br/><textarea name="text" cols="80" rows="15" style="width: 93%"></textarea><br/><input class="btn btn-default" type="submit" name="ok" value="Вставить"></form></div>';
echo '<div class="menu">« <a href="/edit.php?d='.bon($d).'&page='.$page.'#'.$str.'">Назад</a></div>';
break;
case 'delstr':
$file=file('tmp/'.$savedir.'/'.$fi);
$fp=fopen('tmp/'.$savedir.'/'.$fi,"w");
flock ($fp,LOCK_EX);
for ($i=0; $i< sizeof($file); $i++){
if ($str == $i){
unset($file[$i]);
}
}
fputs($fp,implode($file));
flock ($fp,LOCK_UN);
fclose($fp);
if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
header('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
}else{
err('Не удалось удалить строку');
}
break;
case 'ob':
if (isset($_POST['ok'])){
$fp=fopen('tmp/'.$savedir.'/'.$fi,"a+");
flock ($fp,LOCK_EX);
fputs($fp,"".$_POST['text']."\r\n");
flock ($fp,LOCK_UN);
fclose($fp);
if (ftp_put($serv, $d, 'tmp/'.$savedir.'/'.$fi, FTP_BINARY)){
header('Location: /edit.php?d='.bon($d).'&page='.$page.'#'.$str);
}else{
err('Не удалось вставить строку');
}
}
echo '<div class="menu">Новая строка<form method="post">Строка: #1<br/><textarea name="text" cols="80" rows="15" style="width: 93%"></textarea><br/><input class="btn btn-default" type="submit" name="ok" value="Вставить"></form></div>';
echo '<div class="menu">« <a href="/edit.php?d='.bon($d).'">Назад</a></div>';
break;
case 'pstring':
if (isset($_POST['ok'])){
$stroka=intval(($_POST['str']-1)/50)+1;
$stk=intval($_POST['str']);
$file=file('tmp/'.$savedir.'/'.$fi);
$cnt=count($file);
$total=intval(($cnt-1)/50)+1;
if (empty($stroka) || $stroka < 1){
$stroka=1;
$stk=1;
}
elseif ($stroka > $total){
$stroka=$total;
$stk=$cnt;
}
header('Location: /edit.php?d='.bon($d).'&page='.$stroka.'#'.$stk);
}else{
header('Location: /edit.php?d='.bon($d));
}
break;
}
unlink('tmp/'.$savedir.'/'.$fi);
}else{
err('Данный формат файла нельзя редактировать');
}
}
}
include 'system/foot.php';
?>