
<?php
session_start();
ob_start();
date_default_timezone_set("Asia/Dhaka");

	include('../includes/connection.php');
	if(ISSET($_POST['editcontent']))
	{	
		$Id = $_POST['Id'];
		$Name = $_POST['Name'];
		$Title = $_POST['Title'];
		$Description1 = $_POST['Description1'];
	    $Description2 = $_POST['Description2'];
	    $ImageSize = $_POST['ImageSize'];	
	   	$msg= "Content Update Successfully";
		$new_image = $_FILES['FileName']['name'];
		$old_image = $_POST['previous'];
		
		if($new_image !='')
		{
			$update_filename = $_FILES['FileName']['name'];
		}
		else
		{
			$update_filename = $old_image;
		}
		if($_FILES['FileName']['name' !=''])
		{
		if(file_exists("upload/".$_FILES['FileName']['name']))
		{
			$FileName = $_FILES['FileName']['name'];
			$_SESSION['status'] = "Image already Exists".$FileName;
			header('Location: ../../index.php');
		}
		}
		else
		{
			//updating 
			$query = "UPDATE content SET Name='$Name', Title='$Title', Description1='$Description1', Description2='$Description2', ImageSize='$ImageSize', FileName='$update_filename' WHERE Id='$Id'";
			$qurey_run = mysqli_query($conn, $query);
			
			if(qurey_run)
			{
				if($_FILES['FileName']['name'] !='')
				{
					move_uploaded_file($_FILES["FileName"]["tmp_name"], "upload/".$_FILES["FileName"]["name"]);
					unlink("upload/".$old_image);
				}
				
				 echo "<script>
                window.location.href='../../index.php?msg=$msg';</script>";
			}
			else
			{
				$_SESSION['status'] = "Data Not Update. !";
				header('Location: ../../index.php');
			}
		}
		
	}


  
ob_end_flush();
?>