| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2017-09-26 16:19:12 +00:00
										 |  |  |  * Administration program file of PHPCSV Guestbook | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  |  * See settings.php for configuration. | 
					
						
							|  |  |  |  * Edit page.php for change appearance. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | session_start(); | 
					
						
							|  |  |  | include "settings.php"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function ReadEntries() { | 
					
						
							|  |  |  |     global $GBdata; | 
					
						
							|  |  |  |     global $DataStatus; | 
					
						
							|  |  |  |     $fhandle=fopen($GBdata,"r") or $DataStatus="empty"; | 
					
						
							|  |  |  |     for($e=0; $entrydata=fgetcsv($fhandle, 16384, ","); $e++) { | 
					
						
							|  |  |  |         $Entries["$e"]=$entrydata; | 
					
						
							| 
									
										
										
										
											2017-09-25 21:01:36 +00:00
										 |  |  |         $Entries["$e"][7]=$e+1; | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  |     } fclose($fhandle); | 
					
						
							|  |  |  |     if (!$Entries[0]) $DataStatus="empty"; | 
					
						
							|  |  |  |     return $Entries; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function SaveEntries() { | 
					
						
							|  |  |  |     global $GBdata; | 
					
						
							|  |  |  |     global $AdminEntries; | 
					
						
							|  |  |  |     $fhandle=fopen($GBdata,"w"); | 
					
						
							| 
									
										
										
										
											2017-09-26 16:19:12 +00:00
										 |  |  |     foreach($AdminEntries as $e=>$Entry) { | 
					
						
							|  |  |  |         unset($Entry[7]); | 
					
						
							|  |  |  |         fputcsv($fhandle,$Entry); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  |     fclose($fhandle); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-26 16:19:12 +00:00
										 |  |  | function Search($SearchQuery) { | 
					
						
							|  |  |  |     $Entries=ReadEntries(); | 
					
						
							|  |  |  |     $SearchResultCount=0; | 
					
						
							|  |  |  |     $SearchResult=false; | 
					
						
							|  |  |  |     foreach($Entries as $e=>$Entry) { | 
					
						
							|  |  |  |         for($p=0; $p<7; $p++) { | 
					
						
							|  |  |  |             if (mb_stristr($Entry[$p],$SearchQuery)) { | 
					
						
							|  |  |  |                 $SearchResult[$SearchResultCount][0]=$e; | 
					
						
							|  |  |  |                 $SearchResult[$SearchResultCount][1]=$Entry; | 
					
						
							|  |  |  |                 $SearchResultCount++; | 
					
						
							|  |  |  |                 break; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return $SearchResult; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function AddSearchBar() { | 
					
						
							|  |  |  |     global $Titles; | 
					
						
							|  |  |  |     global $GBsearch; | 
					
						
							|  |  |  |     if (!(($_SESSION["EditStatus"]) or ($_SESSION["DeleteStatus"]=="deletion"))) if ($GBsearch) { | 
					
						
							|  |  |  |         echo "<form action=administration.php method=post>"; | 
					
						
							|  |  |  |         echo "<input type=text name=\"serachq\" value=\"\" maxlength=255>"; | 
					
						
							|  |  |  |         echo "<input type=submit name=\"search\" value=\"$Titles[Search]\">"; | 
					
						
							|  |  |  |         echo "</form>"; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  | function AdminHeaderView() { | 
					
						
							|  |  |  |     global $Titles; | 
					
						
							|  |  |  |     global $GBadmin; | 
					
						
							|  |  |  |     global $GBpassword; | 
					
						
							|  |  |  |     echo "<h2><a href=\"index.php\">$Titles[AdminHeader]</a></h2>\n"; | 
					
						
							|  |  |  |     if ($_SESSION["SessionStatus"]==(md5($GBadmin.$GBpassword))) { | 
					
						
							| 
									
										
										
										
											2017-09-26 16:19:12 +00:00
										 |  |  |         echo "<div style=\"position: absolute; right: 127px; top: 59px;\">",AddSearchBar(),"</div>"; | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  |         echo "<form action=administration.php method=post>\n"; | 
					
						
							|  |  |  |         echo "  <p align=\"right\"><input type=submit name=\"exit\" value=\"$Titles[AdminExit]\"></p>\n"; | 
					
						
							|  |  |  |         echo "</form>\n"; | 
					
						
							|  |  |  |         echo "  $Titles[AdminHello], $GBadmin!\n"; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function AdminEntriesView() { | 
					
						
							|  |  |  |     global $Titles; | 
					
						
							|  |  |  |     global $DataStatus; | 
					
						
							|  |  |  |     global $GBadmin; | 
					
						
							|  |  |  |     global $GBpassword; | 
					
						
							|  |  |  |     global $AdminEntries; | 
					
						
							| 
									
										
										
										
											2017-09-25 21:01:36 +00:00
										 |  |  |     global $GBpagination; | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  |     if ($_SESSION["SessionStatus"]==(md5($GBadmin.$GBpassword))) if ($DataStatus=="empty") echo "$Titles[EmptyFile]\n"; | 
					
						
							|  |  |  |         else if ($_SESSION["DeleteStatus"]=="deletion") { | 
					
						
							|  |  |  |             echo "  $Titles[AdminSureDel] ",count($_SESSION["DeleteEntries"])," $Titles[AdminSureDelMessages]?\n"; | 
					
						
							|  |  |  |             echo "<form action=administration.php method=post>\n"; | 
					
						
							|  |  |  |             echo "  <input type=submit name=\"applydelete\" value=\"$Titles[AdminDelete]\">\n"; | 
					
						
							|  |  |  |             echo "  <input type=submit name=\"canceldelete\" value=\"$Titles[AdminCancel]\">\n"; | 
					
						
							|  |  |  |             echo "</form>\n"; | 
					
						
							|  |  |  |         } else if ($_SESSION["EditStatus"]) { | 
					
						
							|  |  |  |             echo "  $Titles[AdminMessage] ", ($_SESSION["EditStatus"]),", ",date("j.m.Y, H:i",$AdminEntries[($_SESSION["EditStatus"]-1)][5]),":<br>\n"; | 
					
						
							|  |  |  |             echo "<form action=administration.php method=post>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[AdminName]: <input type=text name=\"editname\" value=\"",$AdminEntries[($_SESSION["EditStatus"]-1)][0],"\" maxlength=255><br>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[City] <input type=text name=\"editfrom\" value=\"",$AdminEntries[($_SESSION["EditStatus"]-1)][1],"\" maxlength=255><br>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[Link] <input type=text name=\"editlink\" value=\"",$AdminEntries[($_SESSION["EditStatus"]-1)][2],"\" maxlength=255><br>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[Email] <input type=text name=\"editmail\" value=\"",$AdminEntries[($_SESSION["EditStatus"]-1)][3],"\" maxlength=255><br>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[AdminMessage]:<br>\n  <textarea name=\"edittext\" wrap=virtual cols=50 rows=5  maxlength=7168>",$AdminEntries[($_SESSION["EditStatus"]-1)][4],"</textarea><br>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[Response]:<br>\n  <textarea name=\"editresp\" wrap=virtual cols=50 rows=5  maxlength=7168>",$AdminEntries[($_SESSION["EditStatus"]-1)][6],"</textarea><br>\n"; | 
					
						
							|  |  |  |             echo "  <input type=submit name=\"submiteedit\" value=\"$Titles[AdminApply]\"> "; | 
					
						
							|  |  |  |             echo "<input type=submit name=\"applydelete\" value=\"$Titles[AdminDelete]\"> "; | 
					
						
							|  |  |  |             echo "<input type=submit name=\"canceledit\" value=\"$Titles[AdminCancel]\">\n"; | 
					
						
							|  |  |  |             echo "</form>\n"; | 
					
						
							|  |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2017-09-26 16:19:12 +00:00
										 |  |  |             if($_POST['search']&&$_POST['serachq']) { | 
					
						
							|  |  |  |                 $SearchResult=Search($_POST['serachq']); | 
					
						
							|  |  |  |                 if ($SearchResult) { | 
					
						
							|  |  |  |                     $GBpagination=0; | 
					
						
							|  |  |  |                     unset($AdminEntries); | 
					
						
							|  |  |  |                     foreach($SearchResult as $n=>$Entry) $AdminEntries[$n]=$Entry[1]; | 
					
						
							|  |  |  |                 } else echo "$Titles[NoResult]: '",$_POST['serachq'],"'.<br>\n"; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2017-09-25 21:01:36 +00:00
										 |  |  |             if (($GBpagination>0)&&(count($AdminEntries)>$GBpagination)) { | 
					
						
							|  |  |  |                 $Entries=array_reverse($AdminEntries); | 
					
						
							|  |  |  |                 if ($_GET['page']) switch ($_GET['page']) { | 
					
						
							|  |  |  |                     case $Titles[First]: | 
					
						
							|  |  |  |                         $CurrentPage=0; | 
					
						
							|  |  |  |                         break; | 
					
						
							|  |  |  |                     case $Titles[Last]: | 
					
						
							|  |  |  |                         $CurrentPage=intdiv(count($Entries),$GBpagination); | 
					
						
							|  |  |  |                         break; | 
					
						
							|  |  |  |                     case "$Titles[Previous]": | 
					
						
							|  |  |  |                         $CurrentPage=$_SESSION['currentpage']-1; | 
					
						
							|  |  |  |                         break; | 
					
						
							|  |  |  |                     case "$Titles[Next]": | 
					
						
							|  |  |  |                         $CurrentPage=$_SESSION['currentpage']+1; | 
					
						
							|  |  |  |                         break; | 
					
						
							|  |  |  |                     default: | 
					
						
							|  |  |  |                         $CurrentPage=$_GET['page']-1; | 
					
						
							|  |  |  |                 } else $CurrentPage=0; | 
					
						
							|  |  |  |                 echo "<form action=administration.php method=\"get\">\n"; | 
					
						
							|  |  |  |                 if ($CurrentPage>0) { | 
					
						
							|  |  |  |                     echo "    <input type=\"submit\" value=\"$Titles[First]\" name=\"page\"/>\n"; | 
					
						
							|  |  |  |                     echo "    <input type=\"submit\" value=\"$Titles[Previous]\" name=\"page\"/>\n"; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 for ($p = ($CurrentPage-2); $p <= ($CurrentPage+2); $p++) { | 
					
						
							|  |  |  |                     $page = $p+1; | 
					
						
							|  |  |  |                     if (($p>=0)&&($p<(count($Entries)/$GBpagination))) { | 
					
						
							|  |  |  |                         echo "    <input type=\"submit\" value=\"$page\" name=\"page\""; | 
					
						
							|  |  |  |                         if ($p==$CurrentPage) echo " disabled"; | 
					
						
							|  |  |  |                         echo "/>\n"; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 if ($CurrentPage<((count($Entries)/$GBpagination)-1)) { | 
					
						
							|  |  |  |                     echo "    <input type=\"submit\" value=\"$Titles[Next]\" name=\"page\"/>\n"; | 
					
						
							|  |  |  |                     echo "    <input type=\"submit\" value=\"$Titles[Last]\" name=\"page\"/>\n"; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 echo "</form>\n"; | 
					
						
							|  |  |  |                 echo "<form action=administration.php method=post>\n"; | 
					
						
							|  |  |  |                 echo "<table border=1  width=\"100%\">\n  <tr><th></th><th>$Titles[AdminName]</th><th>$Titles[City]</th><th>$Titles[Link]</th><th>$Titles[Email]</th><th>$Titles[AdminMessage]</th><th>$Titles[Response]</th><th>$Titles[AdminDate]</th><th></th></tr>\n"; | 
					
						
							|  |  |  |                 for ($e = ($GBpagination*$CurrentPage); $e < ($GBpagination*($CurrentPage+1)); $e++) { | 
					
						
							|  |  |  |                     if ($e>=count($Entries)) break; | 
					
						
							|  |  |  |                     $Entry = $Entries[$e]; | 
					
						
							|  |  |  |                     echo "  <tr><td>",($Entry[7]),"<input type=checkbox name=\"cb",($Entry[7]-1),"\" value=\"checked\"></td><td>$Entry[0]</td><td>$Entry[1]</td><td>$Entry[2]</td><td>$Entry[3]</td><td>",nl2br($Entry[4]),"</td><td>",nl2br($Entry[6]),"</td><td>",date("j.m.Y, H:i",$Entry[5]),"</td><td><input type=submit name=\"submit",($Entry[7]-1),"\" value=\"$Titles[AdminEdit]\"></td></tr>\n"; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 $_SESSION['currentpage']=$CurrentPage; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 echo "<form action=administration.php method=post>\n"; | 
					
						
							|  |  |  |                 echo "<table border=1  width=\"100%\">\n  <tr><th></th><th>$Titles[AdminName]</th><th>$Titles[City]</th><th>$Titles[Link]</th><th>$Titles[Email]</th><th>$Titles[AdminMessage]</th><th>$Titles[Response]</th><th>$Titles[AdminDate]</th><th></th></tr>\n"; | 
					
						
							|  |  |  |                 $Entries=array_reverse($AdminEntries); | 
					
						
							|  |  |  |                 foreach($Entries as $e=>$Entry) echo "  <tr><td>",($Entry[7]),"<input type=checkbox name=\"cb",($Entry[7]-1),"\" value=\"checked\"></td><td>$Entry[0]</td><td>$Entry[1]</td><td>$Entry[2]</td><td>$Entry[3]</td><td>",nl2br($Entry[4]),"</td><td>",nl2br($Entry[6]),"</td><td>",date("j.m.Y, H:i",$Entry[5]),"</td><td><input type=submit name=\"submit",($Entry[7]-1),"\" value=\"$Titles[AdminEdit]\"></td></tr>\n"; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  |             echo "</table>\n"; | 
					
						
							|  |  |  |             echo "  <input type=submit name=\"submitdelete\" value=\"$Titles[AdminDeleteChecked]\">\n"; | 
					
						
							|  |  |  |             echo "</form>\n"; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             if (($_POST["login"])&&(!$_SESSION["SessionStatus"])) echo "$Titles[WrongLogin]<br>\n"; | 
					
						
							|  |  |  |             echo "<form action=administration.php method=post>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[Login] <input type=text name=\"adminlogin\" maxlength=255><br>\n"; | 
					
						
							|  |  |  |             echo "  $Titles[Password] <input type=password name=\"adminpass\" maxlength=255><br>\n"; | 
					
						
							|  |  |  |             echo "  <input type=submit name=\"login\" value=\"$Titles[Enter]\">\n"; | 
					
						
							|  |  |  |             echo "</form>\n"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ((($_POST["adminlogin"])==$GBadmin)&&(($_POST["adminpass"])==$GBpassword)) $_SESSION["SessionStatus"]=(md5($GBadmin.$GBpassword)); | 
					
						
							|  |  |  | if ($_POST["exit"]) $_SESSION["SessionStatus"]=""; | 
					
						
							|  |  |  | if ($_POST["canceldelete"]) { | 
					
						
							|  |  |  |     $_SESSION["DeleteStatus"]=""; | 
					
						
							|  |  |  |     Unset($_SESSION["DeleteEntries"]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | if ($_POST["canceledit"]) Unset($_SESSION["EditStatus"]); | 
					
						
							|  |  |  | if ($_SESSION["SessionStatus"]==(md5($GBadmin.$GBpassword))) { | 
					
						
							|  |  |  |     $AdminEntries=ReadEntries(); | 
					
						
							|  |  |  |     if ($_POST["submitdelete"]) { | 
					
						
							|  |  |  |         $_SESSION["DeleteStatus"]="deletion"; | 
					
						
							|  |  |  |         foreach($AdminEntries as $e=>$Entry) if ($_POST["cb$e"]) $_SESSION["DeleteEntries"][]=$e; | 
					
						
							|  |  |  |         if (!count($_SESSION["DeleteEntries"])) $_SESSION["DeleteStatus"]=""; | 
					
						
							|  |  |  |     } if (($_POST["submiteedit"])&&($_SESSION["EditStatus"])) { | 
					
						
							|  |  |  |         $AdminEntries[($_SESSION["EditStatus"]-1)][0]=$_POST["editname"]; | 
					
						
							|  |  |  |         $AdminEntries[($_SESSION["EditStatus"]-1)][1]=$_POST["editfrom"]; | 
					
						
							|  |  |  |         $AdminEntries[($_SESSION["EditStatus"]-1)][2]=$_POST["editlink"]; | 
					
						
							|  |  |  |         $AdminEntries[($_SESSION["EditStatus"]-1)][3]=$_POST["editmail"]; | 
					
						
							|  |  |  |         $AdminEntries[($_SESSION["EditStatus"]-1)][4]=$_POST["edittext"]; | 
					
						
							|  |  |  |         $AdminEntries[($_SESSION["EditStatus"]-1)][6]=$_POST["editresp"]; | 
					
						
							|  |  |  |         SaveEntries(); | 
					
						
							|  |  |  |         Unset($_SESSION["EditStatus"]); | 
					
						
							|  |  |  |         $AdminEntries=ReadEntries(); | 
					
						
							|  |  |  |     } if ($_POST["applydelete"]) { | 
					
						
							|  |  |  |         if ($_SESSION["EditStatus"]) { | 
					
						
							|  |  |  |             Unset($AdminEntries[($_SESSION["EditStatus"]-1)]); | 
					
						
							|  |  |  |             SaveEntries(); | 
					
						
							|  |  |  |             Unset($_SESSION["EditStatus"]); | 
					
						
							|  |  |  |             $AdminEntries=ReadEntries(); | 
					
						
							|  |  |  |         } if ($_SESSION["DeleteStatus"]) { | 
					
						
							|  |  |  |             foreach($_SESSION["DeleteEntries"] as $e=>$DelEnt) Unset($AdminEntries[$DelEnt]); | 
					
						
							|  |  |  |             SaveEntries(); | 
					
						
							|  |  |  |             Unset($_SESSION["DeleteEntries"]); | 
					
						
							|  |  |  |             $_SESSION["DeleteStatus"]=""; | 
					
						
							|  |  |  |             $AdminEntries=ReadEntries(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } if (!$_SESSION["EditStatus"]) for ($e=0;$e<count($AdminEntries);$e++) if ($_POST["submit$e"]) $_SESSION["EditStatus"]=($e+1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ?><html>
 | 
					
						
							|  |  |  | <head> | 
					
						
							|  |  |  |   <title><?php echo $Titles[HeadTitle];?></title>
 | 
					
						
							|  |  |  |   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | 
					
						
							| 
									
										
										
										
											2017-01-27 10:28:04 +00:00
										 |  |  |   <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu:regular&subset=Latin,Cyrillic"> | 
					
						
							|  |  |  |   <link rel="stylesheet" type="text/css" href="anthrstlsht.css"> | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  | </head> | 
					
						
							|  |  |  | <body> | 
					
						
							| 
									
										
										
										
											2017-01-27 10:28:04 +00:00
										 |  |  | <div class="container"> | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  | <?php AdminHeaderView();?>
 | 
					
						
							|  |  |  | <hr> | 
					
						
							|  |  |  | <?php AdminEntriesView();?>
 | 
					
						
							| 
									
										
										
										
											2017-01-27 10:28:04 +00:00
										 |  |  | </div> | 
					
						
							| 
									
										
										
										
											2016-05-06 20:02:56 +00:00
										 |  |  | </body> | 
					
						
							|  |  |  | </html> |