set_projects($projects_folder); # delete file and remove project if temporary-project.txt is still here # unless "Delete" has been clicked (which will do the same job + throw a notice) # and unless "Edit" has been clicked (which continue editing the same temporary project) if ($_POST['Submit'] != 'delete_project' && $_POST['Submit'] != 'edit_project') { $tempFilename = strval(Project::$amount).'-temporary-filename.txt'; if ($projects->{$tempFilename}) { $projects->{$tempFilename}->delete_file($projects_folder); $projects->remove_project($projects->{$tempFilename}); } } # start the HTML form echo '
'."\n"; # if "Log in" has been clicked if ($_POST['Connect'] == 'login') { $submitted_username = $_POST['Username']; $username = 'Username'; # create a salt, hash the submitted password, and retrieve the good hashed password from .txt file $salt = 'Salt'; $submitted_password = sha1(md5($_POST['Password']) . $salt); $hashed_password = file_get_contents('data/passwords/street.txt'); # there lies the good encrypted Password… # if username or password are wrong show "wrong" notice and login form again if ($submitted_password !== $hashed_password || $submitted_username !== $username) { require 'views/wrong.php'; require 'views/login.php'; } # else if password and username are good, keep going with $_SESSION['Login'] = 'connected' else if ($submitted_username === $username || $submitted_password === $hashed_password) { $_SESSION['Login'] = 'connected'; } } # else if "Log out" has been clicked OR $_SESSION['Login'] is not set (when one first arrives on the page) else if ( ! isset($_SESSION['Login']) || $_POST['Connect'] == 'logout' ) { unset($_SESSION['Login']); # clear $_SESSION['Login'] -> if "Log out" has been clicked require 'views/login.php'; # show the login form } # if $_SESSION['Login'] == 'connected' (if the good password was submitted) if ($_SESSION['Login'] == 'connected') { # always require the logout button require 'views/logout.php'; # first arrive on the page: if no project has been selected and no "Submit" button has been clicked if ( ! $_POST['Select'] && ! $_POST['Submit'] ) { require 'views/select.php'; } # else if "Edit" has been clicked (and a project has been selected) else if ($_POST['Select'] && $_POST['Submit'] == 'edit_project') { $selectedProject = $projects->{$_POST['Select']}; require 'views/select.php'; require 'views/edit.php'; require 'views/submit.php'; } # else if another project is selected in the select input while a project is being edited or created # (javascript submit the select form automatically another project gets selected) else if ($_POST['Select'] && ! $_POST['Submit']) { $selectedProject = $projects->{$_POST['Select']}; require 'views/select.php'; require 'views/edit.php'; require 'views/submit.php'; } # else if "Update" has been clicked (if "Edit" has been clicked before) else if ($_POST['Select'] && $_POST['Submit'] == 'update_project') { $selectedProject = $projects->{$_POST['Select']}; # gather project info from $_POST entries and apply them in the project object $postInfo = new PostInfo(); $postInfo->overwrite($selectedProject); # if all $_POST entries are valid if ($postInfo->validation() === true) { # create file name from project order and title $filenamedTitle = $selectedProject->order().'-'.$selectedProject->title()->filenamed(); # if the new file name is different from the former one if ($filenamedTitle !== $selectedProject->filename()) { $selectedProject->delete_file($projects_folder); # delete the file $selectedProject->set_filename($filenamedTitle); # and give the new file name to the project object } # update the file with the new info # the file is created if it has been deleted in the previous step, else it is only overwritten $selectedProject->update_file($projects_folder); # show the updated form with a "file well updated" notice require 'views/select.php'; require 'views/submitted.php'; require 'views/edit.php'; require 'views/submit.php'; } else { # show the form again with a "missing (or invalid) information" notice require 'views/select.php'; require 'views/missing.php'; require 'views/edit.php'; require 'views/submit.php'; } } # else if "Delete" has been clicked (if "Edit" or "New project" had been clicked before) else if ($_POST['Select'] && $_POST['Submit'] == 'delete_project') { $deletedProject = $projects->{$_POST['Select']}; $deletedProject->delete_file($projects_folder); # delete project file $projects->remove_project($deletedProject); # remove project from projects object require 'views/select.php'; require 'views/deleted.php'; # show a "deleted" notice } # else if "New project" has been clicked else if ($_POST['Submit'] == 'new_project') { # create an empty project object and adds it to the projects object $newProject = new Project(); $newProject->create_blank(); # empty project is called "[index]-temporary-filename.txt" $projects->add_project($newProject); $selectedProject = $projects->{$newProject->filename()}; # empty project is added to Projects object $selectedProject->update_file($projects_folder); # and an "[index]-temporary-filename.txt" is created (which gets deleted automatically unless saved) require 'views/select.php'; require 'views/edit.php'; require 'views/create.php'; } # when "Create project" has been clicked (if "New project" had been clicked before) # almost the same than "Update project", actually superficial else if ($_POST['Select'] && $_POST['Submit'] == 'create_project') { $selectedProject = $projects->{$_POST['Select']}; $postInfo = new PostInfo(); $postInfo->overwrite($selectedProject); if ($postInfo->validation() === true) { $selectedProject->delete_file($projects_folder); $filenamedTitle = $selectedProject->order().'-'.$selectedProject->title()->filenamed(); $selectedProject->set_filename($filenamedTitle); $selectedProject->update_file($projects_folder); require 'views/select.php'; require 'views/created.php'; require 'views/edit.php'; require 'views/submit.php'; } else { require 'views/select.php'; require 'views/missing.php'; require 'views/edit.php'; require 'views/create.php'; } } # when "Change projects order" has been clicked else if ($_POST['Submit'] == 'change_order') { # require the necessary components require 'views/select.php'; require 'views/order.php'; } # when "Create project" has been clicked (if "New project" had been clicked before) # the reordering process works in symbiosis with javascript else if ($_POST['Submit'] == 'new_order') { # gather new order info ("Index") that have been updated with javascript foreach ($_POST['Index'] as $index => $filename) { $nameRoot = substr($filename, 1); # remove the former index form the file name $newIndex = strval($index+1); $newFilename = $newIndex . $nameRoot; # create a new file name from new index and former file name # rename the each project file $projects->{$filename}->rename_file($newFilename, $projects_folder); # update each Project object and update the title in the file content $projects->{$filename}->set_filename($newFilename); $projects->{$filename}->set_order($newIndex); $projects->{$filename}->update_file($projects_folder); } # reset projects list to display the new order $projects->reset_projects(); $projects->set_projects($projects_folder); require 'views/select.php'; require 'views/order.php'; } } # end the HTML form echo '
'."\n"; require 'views/footer.php';