File size: 5.03Kb
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
/***************************************************************************
* restore_message.php (admin) (S-A WAP)
* -------------------
* Разработка: Антон Федорченко.
* Оптимизация под WAP: Felis.
* 2008 год
***************************************************************************/
?>
<?
$InitPos=$_GET['initpos'];
$EndPos=$_GET['endpos'];
?>
<!-- функции JavaScript -->
<script language='JavaScript' type='text/javascript'>
<!-- формирует url, содержащий параметры для обработки формы, а также осуществляет переход на него-->
function Restore()
{
var url = 'index.php';
var pos = document.forms[0].position.value;
location.href = url + "?position=" + pos + "&page=restore_message&action=restore&initpos=<? echo $InitPos?>&endpos=<? echo $EndPos?>";
}
</script>
<?php
//инициализируем переменные
$Position=$_GET['position'];
$Action=$_GET['action'];
$HidedMsgArray=@file($HidedMsgFile);
$XmlArray = @file($File);
/* foreach($XmlArray as $key => $value)
print $key." - ".$value."<br>"; */
//проверяем наличие xml заголовка и корневого элемента
define("XML_HEAD", "<?xml version='1.0' encoding='windows-1251' ?>");
define('XML_GBBEGIN', "<guestbook>");
define('XML_GBEND', "</guestbook>");
if(strpos($XmlArray[0], XML_HEAD) === false)
$WriteHead = true;
if(strpos($XmlArray[1], XML_GBBEGIN) === false)
$WriteGBInit = true;
if(strpos($XmlArray[(count($XmlArray)-1)], XML_GBEND) === false)
$WriteGBEnd = true;
//print "$WriteHead - $WriteGBInit - $WriteGBEnd";
//подсчитываем общее количество сообщений
if((count($XmlArray) < 4) || (!file_exists($File)))
$MsgCount=0;
else
$MsgCount=((count($XmlArray)-3)/9); //общее количество сообщений в файле message.xml
if($Action=='restore')
{
//Проверяем введенные данные
if($Position=='')
$Error = $Cpt_NoPos;
elseif((!preg_match("|^[\d]+$|i", $Position)) || ($Position < 1) || ($Position > ($MsgCount+1)))
$Error = $Cpt_WrongPos.($MsgCount+1)."</b>";
if(empty($Error))
{
//формируем сообщение
//если нет заголовка записываем его
if($WriteHead == true)
$ToRestore[0] = XML_HEAD."\n";
if($WriteGBInit == true)
$ToRestore[0] .= XML_GBBEGIN."\n";
//если нет начального тега корневого элемента записываем его
$ToRestore[0] .= "<message>\n";
for($i = $InitPos; $i <= $EndPos; $i++)
$ToRestore[]=$HidedMsgArray[$i];
array_push($ToRestore, "</message>\n");
if($WriteGBEnd == true)
array_push($ToRestore, XML_GBEND);
//обновляем XML
$NewInitPos=2+($Position-1)*9;// +2 - пролог xml;
$NewEndPos=$NewInitPos+9;
for($i=0; $i<$NewInitPos; $i++)
$InitArray[]=$XmlArray[$i];
for($i=$NewInitPos; $i<count($XmlArray); $i++)
$EndArray[]=$XmlArray[$i];
$InitStr=@implode('', $InitArray);
$EndStr=@implode('', $EndArray);
$ToRestoreStr=implode('', $ToRestore);
$XmlStr=$InitStr.$ToRestoreStr.$EndStr;
SaveStringInFile($File, $XmlStr, 'w');
//обновляем hide.txt
$InitArray = '';
$EndArray = '';
for($i=0; $i<$InitPos; $i++)
$InitArray[]=$HidedMsgArray[$i];
for($i=($EndPos+1); $i<count($HidedMsgArray); $i++)
$EndArray[]=$HidedMsgArray[$i];
$InitStr=@implode('', $InitArray);
$EndStr=@implode('', $EndArray);
$HidedMsgStr=$InitStr.$EndStr;
SaveStringInFile($HidedMsgFile, $HidedMsgStr, 'w');
Refresh('hided_messages');
}
}
?>
<h4 align=center><? echo $Cpt_SelectPos ?></h4>
<br>
<form name=PosForm >
<?
if($Error != '')
{
print "<table align='center' class='RestoreTbl' cellspacing=0 cellpadding=0>";
print "<tr><td class='RestoreError'>{$Error}</td></tr>" ;
print "</table>";
}
?>
<table align='center' class='RestoreTbl' cellspacing=0 cellpadding=0>
<tr><td class='RestoreCapt' colspan=3> <? print $Cpt_Pos; print $MsgCount+1 /* +1 - + возможность добавить сообщение в конец*/?>)</td></tr>
<tr><td class='RestoreCapt' colspan=3><input type=text name=position value='<? Print $Position; ?>'></td></tr>
<tr align=center>
<td class='RestoreCapt'><a href=# onClick='history.back()'><? echo $Cpt_Back ?></td>
<td class='RestoreCapt'><a href=# onClick='Restore()'><? echo $Cpt_Restore ?></td>
<td class='RestoreCapt'><a href=# onClick='document.PosForm.position.value= ""; document.PosForm.position.focus()= ""'><? echo $Cpt_Reset ?></a></td>
</tr>
</table>
</form>