From 930ad222e1b507be63267fc2152e2b931ce094b2 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Tue, 13 Nov 2018 23:24:17 -0700 Subject: [PATCH] Setup project, design database schema --- .gitignore | 3 +- composer.json | 4 +- database.mwb | Bin 0 -> 9391 bytes lib/requiredpublic.php | 164 +++++++++++++++++++++++++++++++++++++++++ nbproject/project.xml | 2 +- public/index.php | 9 +++ settings.template.php | 2 +- 7 files changed, 179 insertions(+), 5 deletions(-) create mode 100644 database.mwb create mode 100644 lib/requiredpublic.php create mode 100644 public/index.php diff --git a/.gitignore b/.gitignore index 07fe371..e1da2a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ vendor settings.php nbproject/private -*.sync-conflict* \ No newline at end of file +*.sync-conflict* +*.bak \ No newline at end of file diff --git a/composer.json b/composer.json index fb37c32..5909527 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { - "name": "netsyms/business-app-template", - "description": "Template for a webapp integrated with an AccountHub server.", + "name": "netsyms/hache-membership-portal", + "description": "", "type": "project", "require": { "catfan/medoo": "^1.5", diff --git a/database.mwb b/database.mwb new file mode 100644 index 0000000000000000000000000000000000000000..d1c92d26d112bb687883e101ecb941d4a3a13d33 GIT binary patch literal 9391 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 literal 0 HcmV?d00001 diff --git a/lib/requiredpublic.php b/lib/requiredpublic.php new file mode 100644 index 0000000..e0b8db6 --- /dev/null +++ b/lib/requiredpublic.php @@ -0,0 +1,164 @@ +" + . "" + . "" + . "Error" + . "" + . "

A fatal application error has occurred.

" + . "(This isn't your fault.)" + . "

Details:

" + . "

" . htmlspecialchars($error) . "

"); +} + +date_default_timezone_set(TIMEZONE); + +// Database settings +// Also inits database and stuff +use Medoo\Medoo; + +$database; +try { + $database = new Medoo([ + 'database_type' => DB_TYPE, + 'database_name' => DB_NAME, + 'server' => DB_SERVER, + 'username' => DB_USER, + 'password' => DB_PASS, + 'charset' => DB_CHARSET + ]); +} catch (Exception $ex) { + //header('HTTP/1.1 500 Internal Server Error'); + sendError("Database error. Try again later. $ex"); +} + +function getdatabase() { + global $database; + return $database; +} + +function getsiteid() { + global $database; + if (isset($_GET['siteid'])) { + $id = preg_replace("/[^0-9]/", '', $_GET['siteid']); + if ($database->has('sites', ["siteid" => $id])) { + return $id; + } + } + $host = $_SERVER['HTTP_HOST']; + $args = $_SERVER['QUERY_STRING']; + $path = str_replace("?$args", "", $_SERVER['REQUEST_URI']); + $dir = str_replace("index.php", "", $path); + $sites = $database->select("sites", ["siteid", "url"], ["OR" => ["url[~]" => $host, "url" => $dir]]); + //var_dump($sites); + if (count($sites) == 1) { + return $sites[0]["siteid"]; + } + if (count($sites) > 1) { + //var_dump($sites); + //die(); + return $sites[0]['siteid']; + } + return $database->get("sites", "siteid"); +} + +function getpageslug() { + global $database; + if (isset($_GET['id'])) { + $id = $_GET['id']; + } else { + $id = "index"; + } + if ($database->has("pages", ["AND" => ["slug" => $id, "siteid" => getsiteid()]])) { + return $id; + } + return null; +} + +function getpageid() { + global $database; + if (isset($_GET['id'])) { + $id = $_GET['id']; + } else { + $id = "index"; + } + $siteid = getsiteid(); + if ($database->has("pages", ["AND" => ["slug" => $id, "siteid" => $siteid]])) { + return $database->get("pages", "pageid", ["AND" => ["slug" => $id, "siteid" => $siteid]]); + } + return null; +} + +function getpagetemplate() { + global $database; + $slug = getpageslug(); + if (isset($_GET['template'])) { + return preg_replace("/[^A-Za-z0-9]/", '', $_GET['template']); + } + if (!is_null($slug)) { + return $database->get("pages", "template", ["AND" => ["slug" => $slug, "siteid" => getsiteid()]]); + } + return "404"; +} + +function formatsiteurl($url) { + if (substr($url, 0) != "/") { + if (strpos($url, "http://") !== 0 && strpos($url, "https://") !== 0) { + if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off") { + $url = "http://$url"; + } else { + $url = "https://$url"; + } + } + } + if (substr($url, -1) != "/") { + $url = $url . "/"; + } + return $url; +} diff --git a/nbproject/project.xml b/nbproject/project.xml index 3edeb05..0ab2e4f 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -3,7 +3,7 @@ org.netbeans.modules.php.project - BusinessAppTemplate + MembershipPortal diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..92ec0e0 --- /dev/null +++ b/public/index.php @@ -0,0 +1,9 @@ +