function main() { if ($_SERVER['REQUEST_METHOD'] !== "POST") { return array('status' => "error", 'message' => "Only POST requests accepted"); } // Attempt to get database connection try { $database = \Application\DatabaseConnection::create_from_ini(SITE_PATH . '/config/database.ini'); // Get instance of ProjectsDatabase $account_session = new AccountSession($database); $files_database = new FilesDatabase($database); $projects_database = new ProjectsDatabase($database); if ($account_session->check_login()) { // Attempt to create project folder $status = $files_database->create_new_folder(null, "Root Folder"); if ($status !== FilesDatabase::NEW_ITEM_OKAY) { $err = $this->send_error("Failed to create a project folder"); $err['details'] = $files_database->get_last_exception_message(); } $root_folder_id = $files_database->get_last_inserted(); // Attempt to add new project $status = $projects_database->add_new_project($_POST['group_id'], $root_folder_id, $_POST['name']); if ($status === ProjectsDatabase::NEW_PROJECT_OKAY) { return array('status' => "okay"); } else { $response = array(); $response['status'] = "error"; if ($status == ProjectsDatabase::NEW_PROJECT_INVALID_NAME) { $response['message'] = "Project names must contain only A-z0-9'. and must be between 2 and 40 characters"; } else { $response['message'] = "An error occured on our end D: we'll get it fixed; in the meantime, try something else!"; if (DEV_MODE) { $response['details'] = $projects_database->get_last_exception_message(); } if (DEV_MODE) { $response['status_code'] = $status; } } return $response; } } } catch (PDOException $e) { $response = array('status' => "error", 'message' => "Could not connect to the database"); if (DEV_MODE) { $response['details'] = $e->getMessage(); } return $response; } }
function generate_page() { // Obtain number at the end of the URL $pageID = $this->request->get_parameter(0); $pageID = intval($pageID); try { $database_connection = \Application\DatabaseConnection::create_from_ini(SITE_PATH . '/config/database.ini'); } catch (PDOException $e) { $this->error_response("The following internal error occured: " . $e->getMessage); return SitePage::PAGE_OKAY; } // Instantiate class for communicating with files tables $files_database = new FilesDatabase($database_connection); // Set files database as instance variable $this->files_database = $files_database; if ($_SERVER['REQUEST_METHOD'] === "POST") { $this->do_post(); } // Get folder from database $folder = $files_database->get_folder_by_id($pageID); // Fetch folders and files in the requested folder $folders_list = $files_database->get_folders_by_parent($pageID); $files_list = $files_database->get_files_by_folder($pageID); $this->generate_test_items($folders_list, $files_list); // Setup the folder template $folder_template = $this->get_page_template(); $folder_template->set_template_file(SITE_PATH . "/templates/folder.template.php"); // Set meta data for folder contents $folder_template->folder_name = "Test Folder"; $folder_template->folder_id = $pageID; // Set parent directory if applicable $parent = $folder->get_parent_id(); if ($parent != null) { $folder_template->parent_uri = WEB_PATH . '/folder/' . $parent; } // Add folders and files to folder page $folder_template->items = array_merge($folders_list, $files_list); return SitePage::PAGE_OKAY; }