Просмотр файла tjawmd/restore_message.php

Размер файла: 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>