Initial commit
commit
0016096c2e
@ -0,0 +1,4 @@
|
||||
nbproject/private
|
||||
database.mwb.bak
|
||||
vendor
|
||||
settings.php
|
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 168 KiB |
@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "netsyms/pc-info",
|
||||
"require": {
|
||||
"catfan/medoo": "^1.5"
|
||||
},
|
||||
"authors": [
|
||||
{
|
||||
"name": "Skylar Ittner",
|
||||
"email": "admin@netsyms.com"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "c80bb87dd0094978b34bdd28fbeb6413",
|
||||
"content-hash": "e389a785f072eecc16c5846a620f50b8",
|
||||
"packages": [
|
||||
{
|
||||
"name": "catfan/medoo",
|
||||
"version": "v1.5.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/catfan/Medoo.git",
|
||||
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/catfan/Medoo/zipball/8d90cba0e8ff176028847527d0ea76fe41a06ecf",
|
||||
"reference": "8d90cba0e8ff176028847527d0ea76fe41a06ecf",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-pdo": "*",
|
||||
"php": ">=5.4"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-pdo_dblib": "For MSSQL or Sybase database on Linux/UNIX platform",
|
||||
"ext-pdo_mysql": "For MySQL or MariaDB database",
|
||||
"ext-pdo_oci": "For Oracle database",
|
||||
"ext-pdo_oci8": "For Oracle version 8 database",
|
||||
"ext-pdo_pqsql": "For PostgreSQL database",
|
||||
"ext-pdo_sqlite": "For SQLite database",
|
||||
"ext-pdo_sqlsrv": "For MSSQL database"
|
||||
},
|
||||
"type": "framework",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Medoo\\": "/src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Angel Lai",
|
||||
"email": "angel@catfan.me"
|
||||
}
|
||||
],
|
||||
"description": "The lightest PHP database framework to accelerate development",
|
||||
"homepage": "https://medoo.in",
|
||||
"keywords": [
|
||||
"database",
|
||||
"lightweight",
|
||||
"mariadb",
|
||||
"mssql",
|
||||
"mysql",
|
||||
"oracle",
|
||||
"php framework",
|
||||
"postgresql",
|
||||
"sql",
|
||||
"sqlite"
|
||||
],
|
||||
"time": "2018-06-14 18:59:08"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": []
|
||||
}
|
Binary file not shown.
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
require_once __DIR__ . "/required.php";
|
||||
|
||||
require_once __DIR__ . "/routes.php";
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
<title><?php echo SITE_TITLE; ?></title>
|
||||
<link href="https://static.netsyms.net/bootstrap/4/bootstrap.materia.min.css" rel="stylesheet" />
|
||||
<script src="https://static.netsyms.net/jquery/jquery-3.3.1.slim.min.js"></script>
|
||||
<script src="https://static.netsyms.net/bootstrap/4/bootstrap.min.js"></script>
|
||||
<script async defer src="https://static.netsyms.net/fontawesome/5.0/fontawesome-all.min.js"></script>
|
||||
|
||||
<?php
|
||||
|
||||
if (empty($_GET['page'])) {
|
||||
include __DIR__ . "/routes/" . Routes::getRoute();
|
||||
} else {
|
||||
include __DIR__ . "/routes/" . Routes::getRoute($_GET['page']);
|
||||
}
|
||||
?>
|
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
class Machine {
|
||||
|
||||
private $machineid = "";
|
||||
private $machine = [];
|
||||
private $history = [];
|
||||
private $components = [];
|
||||
|
||||
public function __construct($machineid) {
|
||||
global $database;
|
||||
if ($database->has('machines', ['machineid' => $machineid])) {
|
||||
$this->machineid = $machineid;
|
||||
$this->machine = $database->get('machines', ['machineid', 'notes', 'model', 'condition', 'price'], ['machineid' => $machineid]);
|
||||
$this->history = $database->select('history', ['[>]event_types' => 'eventid'], ['historyid', 'date', 'eventname', 'notes'], ['machineid' => $machineid]);
|
||||
$this->components = $database->select('components', ['[>]component_types' => 'typeid'], ['compid', 'serial', 'typename', 'tested', 'notes', 'capacity', 'model'], ['machineid' => $machineid]);
|
||||
} else {
|
||||
throw new Exception("No machine with that ID number could be found.");
|
||||
}
|
||||
}
|
||||
|
||||
public function getHistory() {
|
||||
return $this->history;
|
||||
}
|
||||
|
||||
public function getMachineInfo() {
|
||||
$info = [];
|
||||
$info['machineid'] = $this->machineid;
|
||||
if (!empty($this->machine['model'])) {
|
||||
$info['model'] = $this->machine['model'];
|
||||
}
|
||||
if (!empty($this->machine['condition'])) {
|
||||
$info['condition'] = $this->machine['condition'];
|
||||
}
|
||||
if (!empty($this->machine['price'])) {
|
||||
$info['price'] = $this->machine['price'];
|
||||
}
|
||||
$info['notes'] = $this->machine['notes'];
|
||||
return $info;
|
||||
}
|
||||
|
||||
public function getComponents() {
|
||||
$info = [];
|
||||
foreach ($this->components as $c) {
|
||||
$info[$c['compid']] = [
|
||||
'serial' => $c['serial'],
|
||||
'type' => $c['typename'],
|
||||
'notes' => $c['notes']
|
||||
];
|
||||
if (!empty($c['tested'])) {
|
||||
$info[$c['compid']]['tested'] = $c['tested'];
|
||||
}
|
||||
if (!empty($c['capacity'])) {
|
||||
$info[$c['compid']]['capacity'] = $c['capacity'];
|
||||
}
|
||||
if (!empty($c['model'])) {
|
||||
$info[$c['compid']]['model'] = $c['model'];
|
||||
}
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
include.path=${php.global.include.path}
|
||||
php.version=PHP_70
|
||||
source.encoding=UTF-8
|
||||
src.dir=.
|
||||
tags.asp=false
|
||||
tags.short=false
|
||||
web.root=.
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.php.project</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/php-project/1">
|
||||
<name>PCInfo</name>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
require_once __DIR__ . "/settings.php";
|
||||
|
||||
require_once __DIR__ . "/vendor/autoload.php";
|
||||
|
||||
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');
|
||||
die("Database error. Try again later. (" . $ex->getMessage() . ")");
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
class Routes {
|
||||
|
||||
private static $ROUTES = [
|
||||
"home" => "home.php",
|
||||
"info" => "info.php"
|
||||
];
|
||||
|
||||
public static function getRoute($page = "home") {
|
||||
if (array_key_exists($page, Routes::$ROUTES)) {
|
||||
return Routes::$ROUTES[$page];
|
||||
} else {
|
||||
return Routes::$ROUTES["home"];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
<div class="modal fade" id="helpModal" tabindex="-1" role="dialog" aria-labelledby="helpModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="helpModalLabel">Finding the Machine ID Number</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-sm-6">
|
||||
<h5>Desktops</h5>
|
||||
<p>On a desktop computer tower, the sticker is usually on the top or a side near the top, close to the back of the computer.</p>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<h5>Laptops</h5>
|
||||
<p>On a laptop computer, the sticker is usually on the bottom side.</p>
|
||||
</div>
|
||||
<div class="col-12 d-flex">
|
||||
<img class="mx-auto" style="border: 1px solid grey; border-radius: 15px;" src="assets/machinelabel-sample.svg" alt="Sample machine ID label" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mt-4">
|
||||
<div class="d-flex justify-content-center">
|
||||
<div class="card">
|
||||
<img class="card-img-top p-4 mx-auto" style="max-width: 100%; width: 400px;" src="https://static.netsyms.net/images/netsyms/logo-flat-words.png" alt="Netsyms Technologies" />
|
||||
<div class="card-body py-0">
|
||||
<h5>
|
||||
PC Info Finder
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Enter the machine ID number on the sticker. <span class="text-primary" style="cursor: pointer;" onclick='$("#helpModal").modal();'>Click here</span> if you can't find it.
|
||||
</p>
|
||||
<form method="GET">
|
||||
<input type="hidden" name="page" value="info" />
|
||||
<input type="text" name="serial" class="form-control" placeholder="Machine ID Number" required />
|
||||
<button type="submit" class="btn btn-primary btn-block mt-2">Get Info</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,136 @@
|
||||
<div class="container mt-4">
|
||||
<div class="d-flex justify-content-center">
|
||||
<div class="card">
|
||||
<img class="card-img-top p-4 mx-auto" style="max-width: 100%; width: 400px;" src="https://static.netsyms.net/images/netsyms/logo-flat-words.png" alt="Netsyms Technologies" />
|
||||
<div class="card-body py-0">
|
||||
<h5>
|
||||
Machine #<?php echo htmlspecialchars($_GET['serial']); ?>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<?php
|
||||
require_once __DIR__ . "/../machine.php";
|
||||
|
||||
try {
|
||||
$machine = new Machine($_GET['serial']);
|
||||
|
||||
$info = $machine->getMachineInfo();
|
||||
|
||||
if (count($info) > 0) {
|
||||
?>
|
||||
<h6>Machine Info:</h6>
|
||||
<div class="list-group">
|
||||
<?php
|
||||
foreach ($info as $key => $val) {
|
||||
if (empty($val)) {
|
||||
continue;
|
||||
}
|
||||
$echo = "";
|
||||
switch ($key) {
|
||||
case "model":
|
||||
$echo = "Model: " . htmlspecialchars($val);
|
||||
break;
|
||||
case "condition":
|
||||
$filled = floor($val);
|
||||
$echo = "Condition: ";
|
||||
$empty = 10;
|
||||
while ($filled > 0) {
|
||||
$filled--;
|
||||
$empty--;
|
||||
$echo .= "<i class=\"fas fa-star\"></i> ";
|
||||
}
|
||||
if ($val - floor($val) > 0.75) {
|
||||
$empty--;
|
||||
$echo .= "<i class=\"fas fa-star\"></i> ";
|
||||
} else if ($val - floor($val) > 0.25) {
|
||||
$empty--;
|
||||
$echo .= "<i class=\"fas fa-star-half-alt\"></i> ";
|
||||
}
|
||||
while ($empty > 0) {
|
||||
$empty--;
|
||||
$echo .= "<i class=\"far fa-star\"></i> ";
|
||||
}
|
||||
break;
|
||||
case "price":
|
||||
$echo = "Sale Value: $" . number_format($val * 1.0, 2);
|
||||
break;
|
||||
case "notes":
|
||||
$echo = "<div>" . htmlspecialchars($val) . "</div>";
|
||||
break;
|
||||
}
|
||||
if ($echo != "") {
|
||||
echo "<div class=\"list-group-item\">\n$echo\n</div>\n";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
$history = $machine->getHistory();
|
||||
|
||||
if (count($history) > 0) {
|
||||
?>
|
||||
<h6 class="mt-3">History:</h6>
|
||||
<div class="list-group">
|
||||
<?php
|
||||
foreach ($history as $h) {
|
||||
echo "<div class=\"list-group-item\">\n";
|
||||
echo "<b>$h[eventname]</b> on " . date(DATETIME_FORMAT, strtotime($h['date'])) . "<br />\n";
|
||||
if (!empty($h['notes'])) {
|
||||
echo "<div>" . htmlspecialchars($h['notes']) . "</div>";
|
||||
}
|
||||
echo "\n</div>\n";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
$components = $machine->getComponents();
|
||||
|
||||
if (count($components) > 0) {
|
||||
?>
|
||||
<h6 class="mt-3">Components:</h6>
|
||||
<div class="list-group">
|
||||
<?php
|
||||
foreach ($components as $c) {
|
||||
echo "<div class=\"list-group-item\">\n";
|
||||
echo "<b>$c[type]</b><br />\n";
|
||||
echo "Serial: $c[serial]<br />\n";
|
||||
if (!empty($c['tested'])) {
|
||||
echo "Tested on: " . date(DATETIME_FORMAT, strtotime($c['tested'])) . "<br />\n";
|
||||
}
|
||||
if (!empty($c['capacity'])) {
|
||||
echo "Capacity: $c[capacity]<br />\n";
|
||||
}
|
||||
if (!empty($c['model'])) {
|
||||
echo "Model: $c[model]<br />\n";
|
||||
}
|
||||
if (!empty($h['notes'])) {
|
||||
echo "<div>" . htmlspecialchars($h['notes']) . "</div>";
|
||||
}
|
||||
echo "\n</div>\n";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
echo "<p class=\"text-danger\">" . $ex->getMessage() . "</p>";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>Look up another machine:</p>
|
||||
<form method="GET">
|
||||
<input type="hidden" name="page" value="info" />
|
||||
<input type="text" name="serial" class="form-control" placeholder="Machine ID Number" required />
|
||||
<button type="submit" class="btn btn-primary btn-block mt-2">Get PC Info</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
define("SITE_TITLE", "PC Info");
|
||||
|
||||
define("DB_TYPE", "mysql");
|
||||
define("DB_NAME", "pcinfo");
|
||||
define("DB_SERVER", "localhost");
|
||||
define("DB_USER", "root");
|
||||
define("DB_PASS", "");
|
||||
define("DB_CHARSET", "utf8");
|
||||
|
||||
define("DATETIME_FORMAT", "M j, Y @ g:i A");
|
Loading…
Reference in New Issue