First commit of biketree to github!
47
allstyles.css
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
h4{
|
||||||
|
font-family: verdana;
|
||||||
|
font-size: 12px;
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3{
|
||||||
|
font-family: verdana;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: #9aadd0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2{
|
||||||
|
font-family: verdana;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-size: 13px;
|
||||||
|
padding: 4px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.high40 {
|
||||||
|
height: 40px;
|
||||||
|
width: 500px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.submit {
|
||||||
|
border-bottom: 4px solid #333333;
|
||||||
|
border-top: 1px dotted #333333;
|
||||||
|
text-align: center;
|
||||||
|
}
|
755
backupDB.php
Executable file
@ -0,0 +1,755 @@
|
|||||||
|
<?php
|
||||||
|
define('backupDBversion', '1.1.31');
|
||||||
|
include ("settings.php");
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
/// //
|
||||||
|
// backupDB() - MySQL database backup utility //
|
||||||
|
// //
|
||||||
|
// You should configure at least ADMIN_EMAIL below. //
|
||||||
|
// //
|
||||||
|
// See backupDB.txt for more information. //
|
||||||
|
// ///
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////// CONFIGURATION ///////////////////
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// hack for Lynx browser that only supports one GETstring parameter
|
||||||
|
if (!empty($_REQUEST['lynxauth'])) {
|
||||||
|
// backupDB.php?lynxauth=localhost.username.password.database[.backuptype]
|
||||||
|
$lynxautharray = explode('.', $_REQUEST['lynxauth']);
|
||||||
|
$_REQUEST['DB_HOST'] = @$lynxautharray[0];
|
||||||
|
$_REQUEST['DB_USER'] = @$lynxautharray[1];
|
||||||
|
$_REQUEST['DB_PASS'] = @$lynxautharray[2];
|
||||||
|
$_REQUEST['onlyDB'] = @$lynxautharray[3];
|
||||||
|
$_REQUEST['StartBackup'] = (@$lynxautharray[4] ? @$lynxautharray[4] : 'standard');
|
||||||
|
$_REQUEST['mailto'] = (@$lynxautharray[5] ? @$lynxautharray[5] : '');
|
||||||
|
$_REQUEST['nohtml'] = (isset($_REQUEST['nohtml']) ? $_REQUEST['nohtml'] : '1');
|
||||||
|
}
|
||||||
|
// end Lynx hack
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// You SHOULD modify these values: //
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// If DB_HOST, DB_USER and/or DB_PASS are undefined or empty,
|
||||||
|
// you will be prompted to enter them each time the script runs
|
||||||
|
define('DB_HOST', (isset($_REQUEST['DB_HOST']) ? $_REQUEST['DB_HOST'] : "$cfg_server")); // usually 'localhost'
|
||||||
|
define('DB_USER', (isset($_REQUEST['DB_USER']) ? $_REQUEST['DB_USER'] : "$cfg_username")); // MySQL username
|
||||||
|
define('DB_PASS', (isset($_REQUEST['DB_PASS']) ? $_REQUEST['DB_PASS'] : "$cfg_password")); // MySQL password
|
||||||
|
|
||||||
|
// Only define DB_NAME if you want to restrict to ONLY this
|
||||||
|
// database, otherwise all accessible databases will be backed up
|
||||||
|
if (!empty($_REQUEST['onlyDB'])) {
|
||||||
|
define('DB_NAME', $_REQUEST['onlyDB']);
|
||||||
|
} else {
|
||||||
|
// uncomment this line if you want to define a single database to back up
|
||||||
|
// note: this may be required for some servers, where the user cannot list available databases
|
||||||
|
|
||||||
|
//define('DB_NAME', 'database');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// You MAY modify these values (defaults should be fine too): //
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
define('BACKTICKCHAR', '`');
|
||||||
|
define('QUOTECHAR', '\'');
|
||||||
|
define('LINE_TERMINATOR', "\n"); // \n = UNIX; \r\n = Windows; \r = Mac
|
||||||
|
define('BUFFER_SIZE', 32768); // in bytes
|
||||||
|
define('TABLES_PER_COL', 30); //
|
||||||
|
define('STATS_INTERVAL', 500); // number of records processed between each DHTML stats refresh
|
||||||
|
|
||||||
|
$GZ_enabled = (bool) function_exists('gzopen');
|
||||||
|
|
||||||
|
$DHTMLenabled = true; // set $DHTMLenabled = FALSE to prevent JavaScript errors in incompatible browsers
|
||||||
|
// set $DHTMLenabled = TRUE to get the nice DHTML display in recent browsers
|
||||||
|
|
||||||
|
$dbNameInCreate = true; // if true: "CREATE TABLE `database`.`table`", if false: "CREATE TABLE `table`"
|
||||||
|
|
||||||
|
$CreateIfNotExists = false; // if true: "CREATE TABLE IF NOT EXISTS `database`.`table`", if false: "CREATE TABLE `database`.`table`"
|
||||||
|
|
||||||
|
$ReplaceInto = false; // if true: "REPLACE INTO ", if false: "INSERT INTO "
|
||||||
|
|
||||||
|
$HexBLOBs = true; // if true: blobs get data dumped as hex string; if false: blobs get data dumped as escaped binary string
|
||||||
|
|
||||||
|
$SuppressHTMLoutput = (@$_REQUEST['nohtml'] ? true : false); // disable all output for running as a cron job
|
||||||
|
|
||||||
|
$backuptimestamp = '.'.date('Y-m-d'); // timestamp
|
||||||
|
if (!empty($_REQUEST['onlyDB'])) {
|
||||||
|
$backuptimestamp = '.'.$_REQUEST['onlyDB'].$backuptimestamp;
|
||||||
|
}
|
||||||
|
//$backuptimestamp = ''; // no timestamp
|
||||||
|
$backupabsolutepath = dirname(__FILE__).'/backups/'; // make sure to include trailing slash
|
||||||
|
$fullbackupfilename = 'db_backup'.$backuptimestamp.'.sql'.($GZ_enabled ? '.gz' : '');
|
||||||
|
$partbackupfilename = 'db_backup_partial'.$backuptimestamp.'.sql'.($GZ_enabled ? '.gz' : '');
|
||||||
|
$strubackupfilename = 'db_backup_structure'.$backuptimestamp.'.sql'.($GZ_enabled ? '.gz' : '');
|
||||||
|
$tempbackupfilename = 'db_backup.temp.sql'.($GZ_enabled ? '.gz' : '');
|
||||||
|
|
||||||
|
$NeverBackupDBtypes = array('HEAP');
|
||||||
|
|
||||||
|
// Auto close the browser after the script finishes.
|
||||||
|
// This will allow task scheduler in Windows to work properly,
|
||||||
|
// else the task will be considered running until the browser is closed
|
||||||
|
$CloseWindowOnFinish = false;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////// END CONFIGURATION ///////////////////
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////// SUPPORT FUNCTIONS ///////////////////
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
if (!function_exists('getmicrotime')) {
|
||||||
|
function getmicrotime() {
|
||||||
|
list($usec, $sec) = explode(' ', microtime());
|
||||||
|
return ((float) $usec + (float) $sec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function FormattedTimeRemaining($seconds, $precision=1) {
|
||||||
|
if ($seconds > 86400) {
|
||||||
|
return number_format($seconds / 86400, $precision).' days';
|
||||||
|
} elseif ($seconds > 3600) {
|
||||||
|
return number_format($seconds / 3600, $precision).' hours';
|
||||||
|
} elseif ($seconds > 60) {
|
||||||
|
return number_format($seconds / 60, $precision).' minutes';
|
||||||
|
}
|
||||||
|
return number_format($seconds, $precision).' seconds';
|
||||||
|
}
|
||||||
|
|
||||||
|
function FileSizeNiceDisplay($filesize, $precision=2) {
|
||||||
|
if ($filesize < 1000) {
|
||||||
|
$sizeunit = 'bytes';
|
||||||
|
$precision = 0;
|
||||||
|
} else {
|
||||||
|
$filesize /= 1024;
|
||||||
|
$sizeunit = 'kB';
|
||||||
|
}
|
||||||
|
if ($filesize >= 1000) {
|
||||||
|
$filesize /= 1024;
|
||||||
|
$sizeunit = 'MB';
|
||||||
|
}
|
||||||
|
if ($filesize >= 1000) {
|
||||||
|
$filesize /= 1024;
|
||||||
|
$sizeunit = 'GB';
|
||||||
|
}
|
||||||
|
return number_format($filesize, $precision).' '.$sizeunit;
|
||||||
|
}
|
||||||
|
|
||||||
|
function OutputInformation($id, $dhtml, $text='') {
|
||||||
|
global $DHTMLenabled;
|
||||||
|
if ($DHTMLenabled) {
|
||||||
|
if (!is_null($dhtml)) {
|
||||||
|
if ($id) {
|
||||||
|
echo '<script>if (document.getElementById("'.$id.'")) document.getElementById("'.$id.'").innerHTML="'.$dhtml.'"</script>';
|
||||||
|
} else {
|
||||||
|
echo $dhtml;
|
||||||
|
}
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($text) {
|
||||||
|
echo $text;
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////// END SUPPORT FUNCTIONS ///////////////////
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ((!defined('DB_HOST') || (DB_HOST == '')) || (!defined('DB_USER') || (DB_USER == '')) || (!defined('DB_PASS') || (DB_PASS == ''))) {
|
||||||
|
echo '<html><head><body><form action="'.$_SERVER['PHP_SELF'].'" method="post">';
|
||||||
|
echo 'database hostname: <input type="text" name="DB_HOST" value="'.(defined('DB_HOST') ? DB_HOST : 'localhost').'"><br>';
|
||||||
|
echo 'database username: <input type="text" name="DB_USER" value="'.(defined('DB_USER') ? DB_USER : '').'"><br>';
|
||||||
|
echo 'database password: <input type="text" name="DB_PASS" value="'.(defined('DB_PASS') ? DB_PASS : '').'"><br>';
|
||||||
|
echo '<input type="submit" value="submit">';
|
||||||
|
echo '</form></body></html>';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (!@mysql_connect(DB_HOST, DB_USER, DB_PASS)) {
|
||||||
|
die('There was a problem connecting to the database:<br>'."\n".mysql_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_dir($backupabsolutepath)) {
|
||||||
|
die('"'.htmlentities($backupabsolutepath).'" is not a directory');
|
||||||
|
} elseif (!is_writable($backupabsolutepath)) {
|
||||||
|
die('"'.htmlentities($backupabsolutepath).'" is not writable');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($SuppressHTMLoutput) {
|
||||||
|
ob_start();
|
||||||
|
}
|
||||||
|
echo '<h3>backupDB() v'.backupDBversion.'</h3>';
|
||||||
|
echo '<h4>MySQL database backup</h4>';
|
||||||
|
if (isset($_REQUEST['StartBackup'])) {
|
||||||
|
OutputInformation('', '<span id="cancellink"><a href="'.$_SERVER['PHP_SELF'].'">Cancel</a><br><br></span>', '<a href="'.$_SERVER['PHP_SELF'].'">Cancel</a><br><br>');
|
||||||
|
}
|
||||||
|
OutputInformation('', '<span id="statusinfo"></span>', 'DHTML display is disabled - you won\'t see anything until the backup is complete.');
|
||||||
|
flush();
|
||||||
|
|
||||||
|
|
||||||
|
$ListOfDatabasesToMaybeBackUp = array();
|
||||||
|
if (defined('DB_NAME')) {
|
||||||
|
$ListOfDatabasesToMaybeBackUp[] = DB_NAME;
|
||||||
|
} else {
|
||||||
|
$db_name_list = mysql_list_dbs();
|
||||||
|
while (list($dbname) = mysql_fetch_array($db_name_list)) {
|
||||||
|
$ListOfDatabasesToMaybeBackUp[] = $dbname;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_REQUEST['StartBackup']) && ($_REQUEST['StartBackup'] == 'partial')) {
|
||||||
|
|
||||||
|
echo '<script language="JavaScript">'.LINE_TERMINATOR.'<!--'.LINE_TERMINATOR.'function CheckAll(checkornot) {'.LINE_TERMINATOR;
|
||||||
|
echo 'for (var i = 0; i < document.SelectedTablesForm.elements.length; i++) {'.LINE_TERMINATOR;
|
||||||
|
echo ' document.SelectedTablesForm.elements[i].checked = checkornot;'.LINE_TERMINATOR;
|
||||||
|
echo '}'.LINE_TERMINATOR.'}'.LINE_TERMINATOR.'-->'.LINE_TERMINATOR.'</script>';
|
||||||
|
|
||||||
|
echo '<form name="SelectedTablesForm" action="'.$_SERVER['PHP_SELF'].'" method="post">';
|
||||||
|
foreach ($ListOfDatabasesToMaybeBackUp as $dbname) {
|
||||||
|
$tables = mysql_list_tables($dbname);
|
||||||
|
if (is_resource($tables)) {
|
||||||
|
echo '<table border="1"><tr><td colspan="'.ceil(mysql_num_rows($tables) / TABLES_PER_COL).'"><b>'.$dbname.'</b></td></tr><tr><td nowrap valign="top">';
|
||||||
|
$tablecounter = 0;
|
||||||
|
while (list($tablename) = mysql_fetch_array($tables)) {
|
||||||
|
$TableStatusResult = mysql_query('SHOW TABLE STATUS LIKE "'.mysql_escape_string($tablename).'"');
|
||||||
|
if ($TableStatusRow = mysql_fetch_array($TableStatusResult)) {
|
||||||
|
if (in_array($TableStatusRow['Type'], $NeverBackupDBtypes)) {
|
||||||
|
|
||||||
|
// no need to back up HEAP tables, and will generate errors if you try to optimize/repair
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if ($tablecounter++ >= TABLES_PER_COL) {
|
||||||
|
echo '</td><td nowrap valign="top">';
|
||||||
|
$tablecounter = 0;
|
||||||
|
}
|
||||||
|
$SQLquery = 'SELECT COUNT(*) AS num FROM '.$tablename;
|
||||||
|
mysql_select_db($dbname);
|
||||||
|
$result = mysql_query($SQLquery);
|
||||||
|
$row = @mysql_fetch_array($result);
|
||||||
|
|
||||||
|
echo '<input type="checkbox" name="SelectedTables['.htmlentities($dbname, ENT_QUOTES).'][]" value="'.$tablename.'" checked>'.$tablename.' ('.$row['num'].')<br>';
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '</td></tr></table><br>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isset($_POST['DB_HOST'])) {
|
||||||
|
echo '<input type="hidden" name="DB_HOST" value="'.htmlspecialchars(@$_POST['DB_HOST'], ENT_QUOTES).'">';
|
||||||
|
echo '<input type="hidden" name="DB_USER" value="'.htmlspecialchars(@$_POST['DB_USER'], ENT_QUOTES).'">';
|
||||||
|
echo '<input type="hidden" name="DB_PASS" value="'.htmlspecialchars(@$_POST['DB_PASS'], ENT_QUOTES).'">';
|
||||||
|
}
|
||||||
|
echo '<input type="button" onClick="CheckAll(true)" value="Select All"> ';
|
||||||
|
echo '<input type="button" onClick="CheckAll(false)" value="Deselect All"> ';
|
||||||
|
echo '<input type="hidden" name="StartBackup" value="complete">';
|
||||||
|
echo '<input type="submit" name="SelectedTablesOnly" value="Create Backup"></form>';
|
||||||
|
echo '<a href="'.$_SERVER['PHP_SELF'].'">Back to menu</a>';
|
||||||
|
|
||||||
|
} elseif (isset($_REQUEST['StartBackup'])) {
|
||||||
|
|
||||||
|
if (($GZ_enabled && ($zp = @gzopen($backupabsolutepath.$tempbackupfilename, 'wb'))) ||
|
||||||
|
(!$GZ_enabled && ($fp = @fopen($backupabsolutepath.$tempbackupfilename, 'wb')))) {
|
||||||
|
|
||||||
|
$fileheaderline = '# backupDB() v'.backupDBversion.' (http://www.silisoftware.com)'.LINE_TERMINATOR;
|
||||||
|
$fileheaderline .= '# mySQL backup ('.date('F j, Y g:i a').') Type = ';
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, $fileheaderline, strlen($fileheaderline));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, $fileheaderline, strlen($fileheaderline));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_REQUEST['StartBackup'] == 'structure') {
|
||||||
|
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, 'Structure Only'.LINE_TERMINATOR.LINE_TERMINATOR, strlen('Structure Only'.LINE_TERMINATOR.LINE_TERMINATOR));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, 'Structure Only'.LINE_TERMINATOR.LINE_TERMINATOR, strlen('Structure Only'.LINE_TERMINATOR.LINE_TERMINATOR));
|
||||||
|
}
|
||||||
|
$backuptype = 'full';
|
||||||
|
unset($SelectedTables);
|
||||||
|
|
||||||
|
foreach ($ListOfDatabasesToMaybeBackUp as $dbname) {
|
||||||
|
set_time_limit(60);
|
||||||
|
$tables = mysql_list_tables($dbname);
|
||||||
|
if (is_resource($tables)) {
|
||||||
|
$tablecounter = 0;
|
||||||
|
while (list($tablename) = mysql_fetch_array($tables)) {
|
||||||
|
$TableStatusResult = mysql_query('SHOW TABLE STATUS LIKE "'.mysql_escape_string($tablename).'"');
|
||||||
|
if ($TableStatusRow = mysql_fetch_array($TableStatusResult)) {
|
||||||
|
if (in_array($TableStatusRow['Type'], $NeverBackupDBtypes)) {
|
||||||
|
|
||||||
|
// no need to back up HEAP tables, and will generate errors if you try to optimize/repair
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$SelectedTables[$dbname][] = $tablename;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} elseif (isset($_REQUEST['SelectedTables']) && is_array($_REQUEST['SelectedTables'])) {
|
||||||
|
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, 'Selected Tables Only'.LINE_TERMINATOR.LINE_TERMINATOR, strlen('Selected Tables Only'.LINE_TERMINATOR.LINE_TERMINATOR));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, 'Selected Tables Only'.LINE_TERMINATOR.LINE_TERMINATOR, strlen('Selected Tables Only'.LINE_TERMINATOR.LINE_TERMINATOR));
|
||||||
|
}
|
||||||
|
$backuptype = 'partial';
|
||||||
|
$SelectedTables = $_REQUEST['SelectedTables'];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, 'Complete'.LINE_TERMINATOR.LINE_TERMINATOR, strlen('Complete'.LINE_TERMINATOR.LINE_TERMINATOR));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, 'Complete'.LINE_TERMINATOR.LINE_TERMINATOR, strlen('Complete'.LINE_TERMINATOR.LINE_TERMINATOR));
|
||||||
|
}
|
||||||
|
$backuptype = 'full';
|
||||||
|
unset($SelectedTables);
|
||||||
|
|
||||||
|
foreach ($ListOfDatabasesToMaybeBackUp as $dbname) {
|
||||||
|
set_time_limit(60);
|
||||||
|
$tables = mysql_list_tables($dbname);
|
||||||
|
if (is_resource($tables)) {
|
||||||
|
$tablecounter = 0;
|
||||||
|
while (list($tablename) = mysql_fetch_array($tables)) {
|
||||||
|
$TableStatusResult = mysql_query('SHOW TABLE STATUS LIKE "'.mysql_escape_string($tablename).'"');
|
||||||
|
if ($TableStatusRow = mysql_fetch_array($TableStatusResult)) {
|
||||||
|
if (in_array($TableStatusRow['Type'], $NeverBackupDBtypes)) {
|
||||||
|
|
||||||
|
// no need to back up HEAP tables, and will generate errors if you try to optimize/repair
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$SelectedTables[$dbname][] = $tablename;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$starttime = getmicrotime();
|
||||||
|
OutputInformation('', null, 'Checking tables...<br><br>');
|
||||||
|
$TableErrors = array();
|
||||||
|
foreach ($SelectedTables as $dbname => $selectedtablesarray) {
|
||||||
|
mysql_select_db($dbname);
|
||||||
|
$repairresult = '';
|
||||||
|
$CanContinue = true;
|
||||||
|
foreach ($selectedtablesarray as $selectedtablename) {
|
||||||
|
OutputInformation('statusinfo', 'Checking table <b>'.$dbname.'.'.$selectedtablename.'</b>');
|
||||||
|
$result = mysql_query('CHECK TABLE '.$selectedtablename);
|
||||||
|
while ($row = mysql_fetch_array($result)) {
|
||||||
|
set_time_limit(60);
|
||||||
|
if ($row['Msg_text'] == 'OK') {
|
||||||
|
|
||||||
|
mysql_query('OPTIMIZE TABLE '.$selectedtablename);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
OutputInformation('statusinfo', 'Repairing table <b>'.$selectedtablename.'</b>');
|
||||||
|
$repairresult .= 'REPAIR TABLE '.$selectedtablename.' EXTENDED'."\n\n";
|
||||||
|
$fixresult = mysql_query('REPAIR TABLE '.$selectedtablename.' EXTENDED');
|
||||||
|
$ThisCanContinue = false;
|
||||||
|
while ($fixrow = mysql_fetch_array($fixresult)) {
|
||||||
|
$thisMessage = $fixrow['Msg_type'].': '.$fixrow['Msg_text'];
|
||||||
|
$repairresult .= $thisMessage."\n";
|
||||||
|
switch ($thisMessage) {
|
||||||
|
case 'status: OK':
|
||||||
|
case 'error: The handler for the table doesn\'t support repair':
|
||||||
|
$ThisCanContinue = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$ThisCanContinue) {
|
||||||
|
$CanContinue = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$repairresult .= "\n\n".str_repeat('-', 60)."\n\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($repairresult)) {
|
||||||
|
echo '<pre>'.$repairresult.'</pre>';
|
||||||
|
if (!$CanContinue) {
|
||||||
|
if ($SuppressHTMLoutput) {
|
||||||
|
ob_end_clean();
|
||||||
|
echo 'errors';
|
||||||
|
}
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OutputInformation('statusinfo', '');
|
||||||
|
|
||||||
|
OutputInformation('', '<br><b><span id="topprogress">Overall Progress:</span></b><br>');
|
||||||
|
$overallrows = 0;
|
||||||
|
foreach ($SelectedTables as $dbname => $value) {
|
||||||
|
mysql_select_db($dbname);
|
||||||
|
echo '<table border="1"><tr><td colspan="'.ceil(count($SelectedTables[$dbname]) / TABLES_PER_COL).'"><b>'.$dbname.'</b></td></tr><tr><td nowrap valign="top">';
|
||||||
|
$tablecounter = 0;
|
||||||
|
for ($t = 0; $t < count($SelectedTables[$dbname]); $t++) {
|
||||||
|
if ($tablecounter++ >= TABLES_PER_COL) {
|
||||||
|
echo '</td><td nowrap valign="top">';
|
||||||
|
$tablecounter = 1;
|
||||||
|
}
|
||||||
|
$SQLquery = 'SELECT COUNT(*) AS num FROM '.$SelectedTables[$dbname][$t];
|
||||||
|
$result = mysql_query($SQLquery);
|
||||||
|
$row = mysql_fetch_array($result);
|
||||||
|
$rows[$t] = $row['num'];
|
||||||
|
$overallrows += $rows[$t];
|
||||||
|
echo '<span id="rows_'.$dbname.'_'.$SelectedTables[$dbname][$t].'">'.$SelectedTables[$dbname][$t].' ('.number_format($rows[$t]).' records)</span><br>';
|
||||||
|
}
|
||||||
|
echo '</td></tr></table><br>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$alltablesstructure = '';
|
||||||
|
foreach ($SelectedTables as $dbname => $value) {
|
||||||
|
mysql_select_db($dbname);
|
||||||
|
for ($t = 0; $t < count($SelectedTables[$dbname]); $t++) {
|
||||||
|
set_time_limit(60);
|
||||||
|
OutputInformation('statusinfo', 'Creating structure for <b>'.$dbname.'.'.$SelectedTables[$dbname][$t].'</b>');
|
||||||
|
|
||||||
|
$fieldnames = array();
|
||||||
|
$structurelines = array();
|
||||||
|
$result = mysql_query('SHOW FIELDS FROM '.BACKTICKCHAR.$SelectedTables[$dbname][$t].BACKTICKCHAR);
|
||||||
|
while ($row = mysql_fetch_array($result)) {
|
||||||
|
$structureline = BACKTICKCHAR.$row['Field'].BACKTICKCHAR;
|
||||||
|
$structureline .= ' '.$row['Type'];
|
||||||
|
$structureline .= ' '.($row['Null'] ? '' : 'NOT ').'NULL';
|
||||||
|
eregi('^[a-z]+', $row['Type'], $matches);
|
||||||
|
$RowTypes[$dbname][$SelectedTables[$dbname][$t]][$row['Field']] = $matches[0];
|
||||||
|
if (@$row['Default']) {
|
||||||
|
if (eregi('^(tiny|medium|long)?(text|blob)', $row['Type'])) {
|
||||||
|
// no default values
|
||||||
|
} else {
|
||||||
|
$structureline .= ' default \''.$row['Default'].'\'';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$structureline .= ($row['Extra'] ? ' '.$row['Extra'] : '');
|
||||||
|
$structurelines[] = $structureline;
|
||||||
|
|
||||||
|
$fieldnames[] = $row['Field'];
|
||||||
|
}
|
||||||
|
mysql_free_result($result);
|
||||||
|
|
||||||
|
$tablekeys = array();
|
||||||
|
$uniquekeys = array();
|
||||||
|
$fulltextkeys = array();
|
||||||
|
$result = mysql_query('SHOW KEYS FROM '.BACKTICKCHAR.$SelectedTables[$dbname][$t].BACKTICKCHAR);
|
||||||
|
while ($row = mysql_fetch_array($result)) {
|
||||||
|
$uniquekeys[$row['Key_name']] = (bool) ($row['Non_unique'] == 0);
|
||||||
|
if (isset($row['Index_type'])) {
|
||||||
|
$fulltextkeys[$row['Key_name']] = (bool) ($row['Index_type'] == 'FULLTEXT');
|
||||||
|
} elseif (@$row['Comment'] == 'FULLTEXT') {
|
||||||
|
$fulltextkeys[$row['Key_name']] = true;
|
||||||
|
} else {
|
||||||
|
$fulltextkeys[$row['Key_name']] = false;
|
||||||
|
}
|
||||||
|
$tablekeys[$row['Key_name']][$row['Seq_in_index']] = $row['Column_name'];
|
||||||
|
ksort($tablekeys[$row['Key_name']]);
|
||||||
|
}
|
||||||
|
mysql_free_result($result);
|
||||||
|
foreach ($tablekeys as $keyname => $keyfieldnames) {
|
||||||
|
$structureline = '';
|
||||||
|
if ($keyname == 'PRIMARY') {
|
||||||
|
$structureline .= 'PRIMARY KEY';
|
||||||
|
} else {
|
||||||
|
if ($fulltextkeys[$keyname]) {
|
||||||
|
$structureline .= 'FULLTEXT ';
|
||||||
|
} elseif ($uniquekeys[$keyname]) {
|
||||||
|
$structureline .= 'UNIQUE ';
|
||||||
|
}
|
||||||
|
$structureline .= 'KEY '.BACKTICKCHAR.$keyname.BACKTICKCHAR;
|
||||||
|
}
|
||||||
|
$structureline .= ' ('.BACKTICKCHAR.implode(BACKTICKCHAR.','.BACKTICKCHAR, $keyfieldnames).BACKTICKCHAR.')';
|
||||||
|
$structurelines[] = $structureline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$TableStatusResult = mysql_query('SHOW TABLE STATUS LIKE "'.mysql_escape_string($SelectedTables[$dbname][$t]).'"');
|
||||||
|
if (!($TableStatusRow = mysql_fetch_array($TableStatusResult))) {
|
||||||
|
die('failed to execute "SHOW TABLE STATUS" on '.$dbname.'.'.$tablename);
|
||||||
|
}
|
||||||
|
|
||||||
|
$tablestructure = 'CREATE TABLE '.($CreateIfNotExists ? 'IF NOT EXISTS ' : '').($dbNameInCreate ? BACKTICKCHAR.$dbname.BACKTICKCHAR.'.' : '').BACKTICKCHAR.$SelectedTables[$dbname][$t].BACKTICKCHAR.' ('.LINE_TERMINATOR;
|
||||||
|
$tablestructure .= ' '.implode(','.LINE_TERMINATOR.' ', $structurelines).LINE_TERMINATOR;
|
||||||
|
$tablestructure .= ') TYPE='.(@$TableStatusRow['Engine'] ? $TableStatusRow['Engine'] : $TableStatusRow['Type']); // MySQL 4.and higher, the 'Type' of database is now 'Engine' <thanks Philippe Soussan>
|
||||||
|
if ($TableStatusRow['Auto_increment'] !== null) {
|
||||||
|
$tablestructure .= ' AUTO_INCREMENT='.$TableStatusRow['Auto_increment'];
|
||||||
|
}
|
||||||
|
$tablestructure .= ';'.LINE_TERMINATOR.LINE_TERMINATOR;
|
||||||
|
|
||||||
|
$alltablesstructure .= str_replace(' ,', ',', $tablestructure);
|
||||||
|
|
||||||
|
} // end table structure backup
|
||||||
|
}
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, $alltablesstructure.LINE_TERMINATOR, strlen($alltablesstructure) + strlen(LINE_TERMINATOR));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, $alltablesstructure.LINE_TERMINATOR, strlen($alltablesstructure) + strlen(LINE_TERMINATOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
OutputInformation('statusinfo', '');
|
||||||
|
if ($_REQUEST['StartBackup'] != 'structure') {
|
||||||
|
$processedrows = 0;
|
||||||
|
foreach ($SelectedTables as $dbname => $value) {
|
||||||
|
set_time_limit(60);
|
||||||
|
mysql_select_db($dbname);
|
||||||
|
for ($t = 0; $t < count($SelectedTables[$dbname]); $t++) {
|
||||||
|
$result = mysql_query('SELECT * FROM '.$SelectedTables[$dbname][$t]);
|
||||||
|
$rows[$t] = mysql_num_rows($result);
|
||||||
|
if ($rows[$t] > 0) {
|
||||||
|
$tabledatadumpline = '# dumping data for '.$dbname.'.'.$SelectedTables[$dbname][$t].LINE_TERMINATOR;
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, $tabledatadumpline, strlen($tabledatadumpline));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, $tabledatadumpline, strlen($tabledatadumpline));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($fieldnames);
|
||||||
|
for ($i = 0; $i < mysql_num_fields($result); $i++) {
|
||||||
|
$fieldnames[] = mysql_field_name($result, $i);
|
||||||
|
}
|
||||||
|
if ($_REQUEST['StartBackup'] == 'complete') {
|
||||||
|
$insertstatement = ($ReplaceInto ? 'REPLACE' : 'INSERT').' INTO '.BACKTICKCHAR.$SelectedTables[$dbname][$t].BACKTICKCHAR.' ('.BACKTICKCHAR.implode(BACKTICKCHAR.', '.BACKTICKCHAR, $fieldnames).BACKTICKCHAR.') VALUES (';
|
||||||
|
} else {
|
||||||
|
$insertstatement = ($ReplaceInto ? 'REPLACE' : 'INSERT').' INTO '.BACKTICKCHAR.$SelectedTables[$dbname][$t].BACKTICKCHAR.' VALUES (';
|
||||||
|
}
|
||||||
|
$currentrow = 0;
|
||||||
|
$thistableinserts = '';
|
||||||
|
while ($row = mysql_fetch_array($result)) {
|
||||||
|
unset($valuevalues);
|
||||||
|
foreach ($fieldnames as $key => $val) {
|
||||||
|
if ($row[$key] === null) {
|
||||||
|
|
||||||
|
$valuevalues[] = 'NULL';
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
switch ($RowTypes[$dbname][$SelectedTables[$dbname][$t]][$val]) {
|
||||||
|
// binary data dump, two hex characters per byte
|
||||||
|
case 'tinyblob':
|
||||||
|
case 'blob':
|
||||||
|
case 'mediumblob':
|
||||||
|
case 'longblob':
|
||||||
|
if ($HexBLOBs) {
|
||||||
|
$data = $row[$key];
|
||||||
|
$data_len = strlen($data);
|
||||||
|
$hexstring = '0x';
|
||||||
|
for ($i = 0; $i < $data_len; $i++) {
|
||||||
|
$hexstring .= str_pad(dechex(ord($data{$i})), 2, '0', STR_PAD_LEFT);
|
||||||
|
}
|
||||||
|
$valuevalues[] = $hexstring;
|
||||||
|
} else {
|
||||||
|
$valuevalues[] = QUOTECHAR.mysql_escape_string($row[$key]).QUOTECHAR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// just the (numeric) value, not surrounded by quotes
|
||||||
|
case 'tinyint':
|
||||||
|
case 'smallint':
|
||||||
|
case 'mediumint':
|
||||||
|
case 'int':
|
||||||
|
case 'bigint':
|
||||||
|
case 'float':
|
||||||
|
case 'double':
|
||||||
|
case 'decimal':
|
||||||
|
case 'year':
|
||||||
|
$valuevalues[] = mysql_escape_string($row[$key]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// value surrounded by quotes
|
||||||
|
case 'varchar':
|
||||||
|
case 'char':
|
||||||
|
case 'tinytext':
|
||||||
|
case 'text':
|
||||||
|
case 'mediumtext':
|
||||||
|
case 'longtext':
|
||||||
|
case 'enum':
|
||||||
|
case 'set':
|
||||||
|
case 'date':
|
||||||
|
case 'datetime':
|
||||||
|
case 'time':
|
||||||
|
case 'timestamp':
|
||||||
|
default:
|
||||||
|
$valuevalues[] = QUOTECHAR.mysql_escape_string($row[$key]).QUOTECHAR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$thistableinserts .= $insertstatement.implode(', ', $valuevalues).');'.LINE_TERMINATOR;
|
||||||
|
|
||||||
|
if (strlen($thistableinserts) >= BUFFER_SIZE) {
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, $thistableinserts, strlen($thistableinserts));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, $thistableinserts, strlen($thistableinserts));
|
||||||
|
}
|
||||||
|
$thistableinserts = '';
|
||||||
|
}
|
||||||
|
if ((++$currentrow % STATS_INTERVAL) == 0) {
|
||||||
|
set_time_limit(60);
|
||||||
|
if ($DHTMLenabled) {
|
||||||
|
OutputInformation('rows_'.$dbname.'_'.$SelectedTables[$dbname][$t], '<b>'.$SelectedTables[$dbname][$t].' ('.number_format($rows[$t]).' records, ['.number_format(($currentrow / $rows[$t])*100).'%])</b>');
|
||||||
|
$elapsedtime = getmicrotime() - $starttime;
|
||||||
|
$percentprocessed = ($processedrows + $currentrow) / $overallrows;
|
||||||
|
$overallprogress = 'Overall Progress: '.number_format($processedrows + $currentrow).' / '.number_format($overallrows).' ('.number_format($percentprocessed * 100, 1).'% done) ['.FormattedTimeRemaining($elapsedtime).' elapsed';
|
||||||
|
if (($percentprocessed > 0) && ($percentprocessed < 1)) {
|
||||||
|
$overallprogress .= ', '.FormattedTimeRemaining(abs($elapsedtime - ($elapsedtime / $percentprocessed))).' remaining';
|
||||||
|
}
|
||||||
|
$overallprogress .= ']';
|
||||||
|
OutputInformation('topprogress', $overallprogress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($DHTMLenabled) {
|
||||||
|
OutputInformation('rows_'.$dbname.'_'.$SelectedTables[$dbname][$t], $SelectedTables[$dbname][$t].' ('.number_format($rows[$t]).' records, [100%])');
|
||||||
|
$processedrows += $rows[$t];
|
||||||
|
}
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzwrite($zp, $thistableinserts.LINE_TERMINATOR.LINE_TERMINATOR, strlen($thistableinserts) + strlen(LINE_TERMINATOR) + strlen(LINE_TERMINATOR));
|
||||||
|
} else {
|
||||||
|
fwrite($fp, $thistableinserts.LINE_TERMINATOR.LINE_TERMINATOR, strlen($thistableinserts) + strlen(LINE_TERMINATOR) + strlen(LINE_TERMINATOR));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($GZ_enabled) {
|
||||||
|
gzclose($zp);
|
||||||
|
} else {
|
||||||
|
fclose($fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_REQUEST['StartBackup'] == 'structure') {
|
||||||
|
$newfullfilename = $backupabsolutepath.$strubackupfilename;
|
||||||
|
} elseif ($backuptype == 'full') {
|
||||||
|
$newfullfilename = $backupabsolutepath.$fullbackupfilename;
|
||||||
|
} else {
|
||||||
|
$newfullfilename = $backupabsolutepath.$partbackupfilename;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_exists($newfullfilename)) {
|
||||||
|
unlink($newfullfilename); // Windows won't allow overwriting via rename
|
||||||
|
}
|
||||||
|
rename($backupabsolutepath.$tempbackupfilename, $newfullfilename);
|
||||||
|
if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') {
|
||||||
|
touch($newfullfilename);
|
||||||
|
if (!chmod($newfullfilename, 0777)) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<br>Backup complete in '.FormattedTimeRemaining(getmicrotime() - $starttime, 2).'.<br>';
|
||||||
|
echo '<a href="'.str_replace(@$_SERVER['DOCUMENT_ROOT'], '', $backupabsolutepath).basename($newfullfilename).'"><b>'.basename($newfullfilename).'</b> ('.FileSizeNiceDisplay(filesize($newfullfilename), 2);
|
||||||
|
echo ')</a><br><br><a href="'.$_SERVER['PHP_SELF'].'">Back to MySQL Database Backup main menu</a><br>';
|
||||||
|
|
||||||
|
OutputInformation('cancellink', '');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
echo '<b>Warning:</b> failed to open '.$backupabsolutepath.$tempbackupfilename.' for writing!<br><br>';
|
||||||
|
if (is_dir($backupabsolutepath)) {
|
||||||
|
echo '<i>CHMOD 777</i> on the directory ('.htmlentities($backupabsolutepath).') should fix that.';
|
||||||
|
} else {
|
||||||
|
echo 'The specified directory does not exist: "'.htmlentities($backupabsolutepath).'"';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else { // !$_REQUEST['StartBackup']
|
||||||
|
|
||||||
|
if (file_exists($backupabsolutepath.$fullbackupfilename)) {
|
||||||
|
echo 'It is now '.gmdate('F j, Y g:ia T', time() + date('Z')).'<br>';
|
||||||
|
echo 'Last full backup of MySQL databases: ';
|
||||||
|
$lastbackuptime = filemtime($backupabsolutepath.$fullbackupfilename);
|
||||||
|
echo gmdate('F j, Y g:ia T', $lastbackuptime + date('Z'));
|
||||||
|
echo ' (<b>'.FormattedTimeRemaining(time() - $lastbackuptime).'</b> ago)<br>';
|
||||||
|
if ((time() - $lastbackuptime) < 86400) {
|
||||||
|
echo 'Generally, backing up more than once a day is not neccesary.<br>';
|
||||||
|
}
|
||||||
|
echo '<br><a href="'.str_replace(@$_SERVER['DOCUMENT_ROOT'], '', $backupabsolutepath).$fullbackupfilename.'">Download previous full backup ('.FileSizeNiceDisplay(filesize($backupabsolutepath.$fullbackupfilename), 2).')</a> (right-click, Save As...)<br><br>';
|
||||||
|
} else {
|
||||||
|
echo 'Last backup of MySQL databases: <i>unknown</i>'.($backuptimestamp ? ' (incompatible with timestamping)' : '').'<br>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$BackupTypesList = array(
|
||||||
|
'complete' => 'Full backup, complete inserts (recommended)',
|
||||||
|
'standard' => 'Full backup, standard inserts (smaller)',
|
||||||
|
'partial' => 'Selected tables only (with complete inserts)',
|
||||||
|
'structure' => 'Table structure(s) only'
|
||||||
|
);
|
||||||
|
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
|
||||||
|
if (isset($_POST['DB_HOST'])) {
|
||||||
|
echo '<input type="hidden" name="DB_HOST" value="'.htmlspecialchars(@$_POST['DB_HOST'], ENT_QUOTES).'">';
|
||||||
|
echo '<input type="hidden" name="DB_USER" value="'.htmlspecialchars(@$_POST['DB_USER'], ENT_QUOTES).'">';
|
||||||
|
echo '<input type="hidden" name="DB_PASS" value="'.htmlspecialchars(@$_POST['DB_PASS'], ENT_QUOTES).'">';
|
||||||
|
}
|
||||||
|
echo '<select name="StartBackup">';
|
||||||
|
foreach ($BackupTypesList as $key => $value) {
|
||||||
|
echo '<option value="'.$key.'">'.htmlentities($value).'</option>';;
|
||||||
|
}
|
||||||
|
echo '</select><br>';
|
||||||
|
echo '<input type="submit" value="Go">';
|
||||||
|
echo '</form>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($SuppressHTMLoutput) {
|
||||||
|
ob_end_clean();
|
||||||
|
echo "File saved to $backupabsolutepath.$fullbackupfilename.";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($CloseWindowOnFinish) {
|
||||||
|
// Auto close the browser after the script finishes.
|
||||||
|
// This will allow task scheduler in Windows to work properly,
|
||||||
|
// else the task will be considered running until the browser is closed
|
||||||
|
echo '<script language="javascript">'."\n";
|
||||||
|
echo 'window.opener = top;'."\n";
|
||||||
|
echo 'window.close();'."\n";
|
||||||
|
echo '</script>';
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
59
bikes/customers_barcode.php
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
<?php session_start();
|
||||||
|
include ("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
if(isset($_GET['generateWith']))
|
||||||
|
{
|
||||||
|
$generateWith=$_GET['generateWith'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$generateWith='id';
|
||||||
|
}
|
||||||
|
|
||||||
|
$display->displayTitle("$lang->customersBarcode"." ($generateWith)");
|
||||||
|
echo "<a href='customers_barcode.php?generateWith=account_number'>$lang->accountNumber</a> / <a href='customers_barcode.php?generateWith=id'>id</a>";
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$customers_table=$cfg_tableprefix.'customers';
|
||||||
|
$result=mysql_query("SELECT * FROM $customers_table ORDER by last_name",$dbf->conn);
|
||||||
|
|
||||||
|
echo '<table border=0 width=85% align=center cellspacing=5 cellpadding=12>
|
||||||
|
|
||||||
|
<tr>';
|
||||||
|
|
||||||
|
$counter=0;
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
if($counter%2==0)
|
||||||
|
{
|
||||||
|
echo '</tr><tr>';
|
||||||
|
}
|
||||||
|
echo "<td align='center'><img src='../classes/barcode.php?barcode=$row[$generateWith]&width=227&text=*$row[last_name], $row[first_name]*'></td>";
|
||||||
|
|
||||||
|
$counter++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr></table>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
169
bikes/form_bikes.php
Executable file
@ -0,0 +1,169 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$bikebrand_value='';
|
||||||
|
$bikemodel_value='';
|
||||||
|
$bikecolor_value='';
|
||||||
|
$biketype_number_value='';
|
||||||
|
$wheel_value='';
|
||||||
|
$frame_value='';
|
||||||
|
$bikestatus_value="$_GET[mode]";
|
||||||
|
$putinservice_value='';
|
||||||
|
$inrepair_value='';
|
||||||
|
$retired_value='';
|
||||||
|
$sold_value='';
|
||||||
|
$notes_value='';
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
//decides if the form will be used to update or add a bike.
|
||||||
|
if(isset($_GET['action']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="update";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current users data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
if (!$_POST[id] && !$_GET[passbike]){ echo "Oops. Try again. Maybe with a valid bike number this time"; die(); }
|
||||||
|
$display->displayTitle("Update a $_POST[mode] Bike");
|
||||||
|
|
||||||
|
if(isset($_POST['id']) || isset($_GET['passbike']))
|
||||||
|
{
|
||||||
|
$id=$_POST['id'];
|
||||||
|
if($id == ""){
|
||||||
|
$id=$_GET[passbike];
|
||||||
|
|
||||||
|
}
|
||||||
|
$tablename = "$cfg_tableprefix".'bikes';
|
||||||
|
|
||||||
|
$queree = "SELECT * FROM $tablename WHERE id=$id";
|
||||||
|
|
||||||
|
$result = mysql_query("$queree",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$bikebrand_value=$row['bikebrand'];
|
||||||
|
$bikemodel_value=$row['bikemodel'];
|
||||||
|
$bikecolor_value=$row['bikecolor'];
|
||||||
|
$biketype_value=$row['biketype'];
|
||||||
|
|
||||||
|
|
||||||
|
if ($biketype_value == ""){ echo "Oops, one of the fly rod's has gone out askew on the treddle. Try again. Maybe with a valid bike number this time"; die(); }
|
||||||
|
$wheel_value=$row['wheel'];
|
||||||
|
$frame_value=$row['frame'];
|
||||||
|
$bikestatus_value=$row['bikestatus'];
|
||||||
|
$putinservice_value=$row['putinservice'];
|
||||||
|
$inrepair_value=$row['inrepair'];
|
||||||
|
|
||||||
|
if($putinservice_value != "0000-00-00" && $bikestatus_value == "repair"){ echo "This fuckin bike was a repair and has already been returned to the owner."; die();}
|
||||||
|
|
||||||
|
if ($inrepair_value != '' && $inrepair_value != '0000-00-00' && $bikestatus_value == "library"){ echo "<center><h4 style=\"background: #000000; color: #FFFFFF; display: inline;\">This library bike is in for repair!</h4><center><br />"; }
|
||||||
|
$userID_value=$row['userID'];
|
||||||
|
$retired_value=$row['retired'];
|
||||||
|
if($retired_value != "0000-00-00" && $retired_value != ""){ die('This bike has been retired and probably stripped down');}
|
||||||
|
$sold_value=$row['sold'];
|
||||||
|
$notes_value=$row['notes'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("Add a $bikestatus_value Bike");
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_bikes.php','POST','bikes','450',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
//Get user List first
|
||||||
|
$idarray = array();
|
||||||
|
$namearray = array();
|
||||||
|
$result = mysql_query("SELECT id,first_name,last_name FROM customers ORDER BY last_name ASC");
|
||||||
|
while($field = mysql_fetch_array($result)) {
|
||||||
|
$namearray[] = "$field[last_name], $field[first_name]";
|
||||||
|
$idarray[] = "$field[id]";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($_POST[id]){ $disable = "DISABLED"; }
|
||||||
|
if ($_GET[mode] == "repair" || isset($userID_value) && $userID_value != 0){ $f1->createSelectField("<b>Which Member?</b>",'userID',$idarray,$namearray,'150',"$disable","$userID_value"); }
|
||||||
|
$f1->createInputField("<b>Brand:</b> ",'text','bikebrand',"$bikebrand_value",'24','150');
|
||||||
|
$f1->createInputField("<b>Model:</b> ",'text','bikemodel',"$bikemodel_value",'24','150');
|
||||||
|
$f1->createInputField("<b>Color:</b> ",'text','bikecolor',"$bikecolor_value",'24','150');
|
||||||
|
//make the bike type arrays
|
||||||
|
$option_values = array('newroad','10spd','8spdinternal','5spd','3spd','singlespeedcoaster','singlespeed','fixedgear','mountain','hybrid','chopper');
|
||||||
|
$option_titles = array('road bike (12-27speed)','10 speed road bike','8 speed internal hub','5 speed road bike','3 speed internal hub','single speed w/coaster brake','single speed w/brakes','fixed gear','mountain bike','hybrid (road/mountain)','chopper');
|
||||||
|
$f1->createSelectField("<b>Bike Type</b>",'biketype',$option_values,$option_titles,'150','NULL',"$biketype_value");
|
||||||
|
//make the wheel size array
|
||||||
|
$option_values = array('20inch','22inch','24inch','26inch','26fractional','27inch','','','650','700');
|
||||||
|
$option_titles = array('20 inch','22 inch','24 inch','26 inch','26 by fraction','27 inch','','----Metric Crap----','650','700c');
|
||||||
|
$f1->createSelectField("<b>Wheel Size</b>",'wheel',$option_values,$option_titles,'150','NULL',"$wheel_value");
|
||||||
|
$f1->createInputField("<b>Frame Height (inches)</b>: ",'text','frame',"$frame_value",'4','150');
|
||||||
|
//select bikeStatus here
|
||||||
|
|
||||||
|
//make the bike status array and form field
|
||||||
|
$option_values = array('library','sale','repair');
|
||||||
|
$option_titles = array('Library bike','For sale bike','Member bike in for repair');
|
||||||
|
if($action == "insert"){ $statdisable = "DISABLED"; }
|
||||||
|
$f1->createSelectField("<b>Bike Status</b>",'bikestatus',$option_values,$option_titles,'150',"$statdisable","$bikestatus_value");
|
||||||
|
|
||||||
|
if ($_GET[mode] == "repair"){ $f1->createSingleDateSelectField("To be picked up on:"); }
|
||||||
|
|
||||||
|
// major changes to library bike
|
||||||
|
if($inrepair_value != "" && $inrepair_value != "0000-00-00"){ $repairtext = "Mark library bike as fixed"; $repairvalue = "makeoutrepair"; }
|
||||||
|
else { $repairtext = "Mark as broken library bike"; $repairvalue = "makeinrepair";}
|
||||||
|
$option_values = array("$repairvalue",'makeretire');
|
||||||
|
$option_titles = array("$repairtext",'Retire this bike from library');
|
||||||
|
if($bikestatus_value=="library" && $action=="update"){ $f1->createRadioField("Major Updates",'majorupdates',$option_values,$option_titles,'150','',"$bikestatus_value"); }
|
||||||
|
|
||||||
|
|
||||||
|
$f1->createTextareaField("Repair needed:<br />Accepted by:<br />Other notes:",'notes','6','30',"$notes_value",'150');
|
||||||
|
if($bikestatus_value == "repair"){
|
||||||
|
$f1->createCheckboxField("Remember to process payment<br /> in the sales area. ",'repairpickup','150','','','<b>Check if being picked up</b>');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//sends 2 hidden varibles needed for process_form_users.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$id'>";
|
||||||
|
if($action == "insert"){ echo "<input type='hidden' name='bikestatus' value='$_GET[mode]'>"; }
|
||||||
|
$f1->endForm();
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
57
bikes/index.php
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
<?php session_start();
|
||||||
|
include ("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn()){
|
||||||
|
header("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
if(!$sec->isOpen()){
|
||||||
|
header("location: ../books/openshop.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<table border=\"0\" width=\"500\">
|
||||||
|
<tr>
|
||||||
|
<td><img border=\"0\" src=\"../images/customers.gif\" width=\"41\" height=\"33\" valign='top'><font color='#005B7F' size='4'> <b>Rental Bikes - Sale Bikes - Repair Bikes</b></font><br>
|
||||||
|
<br>
|
||||||
|
<font face=\"Verdana\" size=\"2\">Welcome to the Bikes panel! Here you can manage <b>any</b> bikes that are in the shop. What would you like to do?
|
||||||
|
<br /><br /><b>Add a bike!</b>
|
||||||
|
<ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"form_bikes.php?action=insert&mode=repair\">Enter a new member bike in for repair</a></font><br /><br /></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"form_bikes.php?action=insert&mode=library\">Add a new bike to the library</a></font><br /><br /></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"form_bikes.php?action=insert&mode=sale\">Add a new for-sale completed bike</a></font><br /><br /></li>
|
||||||
|
</ul></font>
|
||||||
|
|
||||||
|
<font face=\"Verdana\" size=\"2\"><b>Update/modify bike info</b><br /></font>
|
||||||
|
<form name=bikenumber enctype=\"multipart/form-data\" method=\"POST\" action=\"form_bikes.php?action=update\">
|
||||||
|
<font face=\"Verdana\" size=\"2\">Bike Number:</font>
|
||||||
|
<input type=\"text\" name=\"id\" size=\"10\">
|
||||||
|
<input type=\"submit\" name=\"submit\" value=\"Ok Go!\">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>";
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
74
bikes/manage_customers.php
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<SCRIPT LANGUAGE="Javascript">
|
||||||
|
<!---
|
||||||
|
function decision(message, url)
|
||||||
|
{
|
||||||
|
if(confirm(message) )
|
||||||
|
{
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --->
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
$display->displayTitle("Manage Members");
|
||||||
|
|
||||||
|
$f1=new form('manage_customers.php','POST','customers','450',$cfg_theme,$lang);
|
||||||
|
$f1->createInputField("<b>$lang->searchForCustomer</b>",'text','search','','24','150');
|
||||||
|
|
||||||
|
$option_values2=array('first_name','last_name','account_number','id');
|
||||||
|
$option_titles2=array("$lang->firstName","$lang->lastName","$lang->accountNumber",'ID');
|
||||||
|
$f1->createSelectField("<b>$lang->searchBy</b>",'searching_by',$option_values2,$option_titles2,100);
|
||||||
|
|
||||||
|
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
|
||||||
|
$tableheaders=array("$lang->rowID","$lang->lastName","$lang->firstName","$lang->phoneNumber","$lang->email","$lang->streetAddress","More Info","Update/Edit Member","Remove Member");
|
||||||
|
$tablefields=array('id','last_name','first_name','phone_number','email','street_address');
|
||||||
|
|
||||||
|
if(isset($_POST['search']))
|
||||||
|
{
|
||||||
|
$search=$_POST['search'];
|
||||||
|
$searching_by =$_POST['searching_by'];
|
||||||
|
echo "<center>$lang->searchedForItem: <b>$search</b> $lang->searchBy <b>$searching_by</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'customers',$tableheaders,$tablefields,"$searching_by","$search",'last_name');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'customers',$tableheaders,$tablefields,'','','last_name');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
160
bikes/process_form_bikes.php
Executable file
@ -0,0 +1,160 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
//creates 3 objects needed for this script.
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
|
||||||
|
//checks if user is logged in.
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//variables needed globably in this file.
|
||||||
|
$tablename="$cfg_tableprefix".'bikes';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
//$id=-1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//checks to see if action is delete and an ID is specified. (only delete uses $_GET.)
|
||||||
|
if(isset($_GET['action']) and isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
$id=$_GET['id'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//checks to make sure data is comming from form ($action is either dateup or update)
|
||||||
|
elseif(isset($_POST['bikebrand']) and isset($_POST['bikemodel']) and isset($_POST['bikecolor'])
|
||||||
|
and isset($_POST['biketype']) and isset($_POST['wheel']) and isset($_POST['frame']) and isset($_POST['bikestatus']) and isset($_POST['id']) and isset($_POST['action']) )
|
||||||
|
{
|
||||||
|
|
||||||
|
$action=$_POST['action'];
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
//gets variables ALWAYS used for everything
|
||||||
|
$bikebrand=$_POST['bikebrand'];
|
||||||
|
$bikemodel=$_POST['bikemodel'];
|
||||||
|
$bikecolor=$_POST['bikecolor'];
|
||||||
|
$biketype=$_POST['biketype'];
|
||||||
|
$wheel=$_POST['wheel'];
|
||||||
|
$frame=$_POST['frame'];
|
||||||
|
$bikestatus=$_POST['bikestatus'];
|
||||||
|
|
||||||
|
//Adding a library bike to be in-service? Make a date for it... today perhaps?
|
||||||
|
|
||||||
|
if($action == "insert" && $bikestatus == "library"){ $putinservice=date('Y-m-d'); }
|
||||||
|
|
||||||
|
//Making a library bike into an out of service library bike or vice versa? Make it so in the DB...
|
||||||
|
if($_POST[majorupdates] == "makeinrepair"){ $inrepair = date('Y-m-d'); }
|
||||||
|
if($_POST[majorupdates] == "makeoutrepair"){ $inrepair = ""; }
|
||||||
|
//same for retiring a library bike
|
||||||
|
if($_POST[majorupdates] == "makeretire"){ $retired = date('Y-m-d'); }
|
||||||
|
//If it's a member repair... same as above
|
||||||
|
if($bikestatus == "repair" && $action == "insert"){ $inrepair = date('Y-m-d'); $userID=$_POST['userID']; }
|
||||||
|
if($bikestatus == "repair" && $action == "update" && $_POST[repairpickup] == "on"){ $pickedupdate = date('Y-m-d'); }
|
||||||
|
$duedate= "$_POST[year]-$_POST[month]-$_POST[day]";
|
||||||
|
|
||||||
|
$notes=$_POST['notes'];
|
||||||
|
|
||||||
|
// HERE YOU ARE UP TO
|
||||||
|
//ensure all fields are filled in.
|
||||||
|
if($bikebrand=='' or $bikemodel=='' or $bikecolor=='' or $frame=='')
|
||||||
|
{
|
||||||
|
echo "$lang->forgottenFields";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
else if($bikestatus == "library" && $action == "insert")
|
||||||
|
{
|
||||||
|
$field_names=array('bikebrand','bikemodel','bikecolor','biketype','wheel','frame','bikestatus','putinservice','inrepair',' retired','notes');
|
||||||
|
$field_data=array("$bikebrand","$bikemodel","$bikecolor","$biketype","$wheel","$frame","$bikestatus","$putinservice","$inrepair","$retired","$notes");
|
||||||
|
|
||||||
|
}
|
||||||
|
else if($bikestatus == "library" && $action == "update")
|
||||||
|
{
|
||||||
|
$field_names=array('bikebrand','bikemodel','bikecolor','biketype','wheel','frame','bikestatus','inrepair',' retired','notes');
|
||||||
|
$field_data=array("$bikebrand","$bikemodel","$bikecolor","$biketype","$wheel","$frame","$bikestatus","$inrepair","$retired","$notes");
|
||||||
|
|
||||||
|
}
|
||||||
|
else if($bikestatus == "sale")
|
||||||
|
{
|
||||||
|
$field_names=array('bikebrand','bikemodel','bikecolor','biketype','wheel','frame','bikestatus','notes');
|
||||||
|
$field_data=array("$bikebrand","$bikemodel","$bikecolor","$biketype","$wheel","$frame","$bikestatus","$notes");
|
||||||
|
|
||||||
|
}
|
||||||
|
else if($bikestatus == "repair" && $action == "update")
|
||||||
|
{
|
||||||
|
$field_names=array('bikebrand','bikemodel','bikecolor','biketype','wheel','frame','bikestatus','notes','putinservice');
|
||||||
|
$field_data=array("$bikebrand","$bikemodel","$bikecolor","$biketype","$wheel","$frame","$bikestatus","$notes","$pickedupdate");
|
||||||
|
|
||||||
|
}
|
||||||
|
else if($bikestatus == "repair" && $action == "insert")
|
||||||
|
{
|
||||||
|
$field_names=array('bikebrand','bikemodel','bikecolor','biketype','wheel','frame','bikestatus','inrepair','userID','duedate','notes');
|
||||||
|
$field_data=array("$bikebrand","$bikemodel","$bikecolor","$biketype","$wheel","$frame","$bikestatus","$inrepair","$userID","$duedate","$notes");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//outputs error message because user did not use form to fill out data.
|
||||||
|
echo "$lang->mustUseForm";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
//finds out what action needs to be taken and preforms it by calling methods from dbf class.
|
||||||
|
case $action=="insert":
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,true);
|
||||||
|
$newnumber = mysql_insert_id();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="update":
|
||||||
|
|
||||||
|
$dbf->update($field_names,$field_data,$tablename,$id,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="delete":
|
||||||
|
$dbf->deleteRow($tablename,$id);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
echo "$lang->noActionSpecified";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
if($action == "insert"){ echo "<center><h2>Important!!!</h2><h2>Tag this bike as BIKE NUMBER $newnumber</h2>"; }
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<a href="index.php">Manage Bikes--></a>
|
||||||
|
<br>
|
||||||
|
<a href="/pos/home.php">Go Home--></a></center>
|
||||||
|
</body>
|
||||||
|
</html>
|
76
books/closeshop.php
Executable file
@ -0,0 +1,76 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="form.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$today = date("Y-m-d");
|
||||||
|
//$result = mysql_query("SELECT * FROM books");
|
||||||
|
|
||||||
|
$body.="</select>";
|
||||||
|
|
||||||
|
$tablename = $cfg_tableprefix.'users';
|
||||||
|
$userLoginName = $dbf->idToField($tablename,'username',$_SESSION['session_user_id']);
|
||||||
|
|
||||||
|
if(isset($_GET[error])){
|
||||||
|
$error = (int)$_GET[error];
|
||||||
|
$errorMsg = "";
|
||||||
|
switch($error){
|
||||||
|
case 1:
|
||||||
|
$errorMsg="ERROR: invalid username or password";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$errorMsg="ERROR: Not a valid ammount: [$_GET[count]]";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($errorMsg != ""){
|
||||||
|
$body.="<br><font color=\"red\">".$errorMsg."</font><br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$body.="
|
||||||
|
<h2>Close The Shop...</h2>
|
||||||
|
<form class=\"form\" name=closeform enctype=\"multipart/form-data\" method=\"POST\" action=\"verifyaction.php\">
|
||||||
|
<h5>Please count all cash, cheques, and coupons in the coin box</h5>
|
||||||
|
<font face=\"Verdana\" size=\"2\">Closing Count: $
|
||||||
|
<input type=\"text\" name=\"ammount\" size=\"10\" value=\"$_GET[count]\">
|
||||||
|
<br>
|
||||||
|
Counted by:
|
||||||
|
<blockquote>Username: <input type=\"text\" name=\"username\" size=\"15\" value=\"$userLoginName\"><br>
|
||||||
|
Password: <input type=\"password\" name=\"password\" size=\"15\"></blockquote>
|
||||||
|
<br><br><br>
|
||||||
|
<input type=\"hidden\" name=\"action\" value=\"2\">
|
||||||
|
<input type=\"hidden\" name=\"data\" value=\"0\">
|
||||||
|
</font>
|
||||||
|
<input type=\"submit\" name=\"submit\" value=\"Process!\">
|
||||||
|
</form>
|
||||||
|
";
|
||||||
|
echo "$body";
|
||||||
|
// Counted by <b>$userLoginName</b> <input type=\"checkbox\" name=\"counter\">
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
96
books/depositPayout.php
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="form.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$today = date("Y-m-d");
|
||||||
|
//$result = mysql_query("SELECT * FROM books");
|
||||||
|
|
||||||
|
$body.="</select>";
|
||||||
|
|
||||||
|
$tablename = $cfg_tableprefix.'users';
|
||||||
|
$userLoginName = $dbf->idToField($tablename,'username',$_SESSION['session_user_id']);
|
||||||
|
|
||||||
|
if(isset($_GET[error])){
|
||||||
|
$error = (int)$_GET[error];
|
||||||
|
$errorMsg = "";
|
||||||
|
switch($error){
|
||||||
|
case 1:
|
||||||
|
$errorMsg="ERROR: invalid username or password";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$errorMsg="ERROR: Not a valid ammount: [$_GET[count]]";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$errorMsg="ERROR: Invalid Data";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($errorMsg != ""){
|
||||||
|
$body.="<br><font color=\"red\">".$errorMsg."</font><br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$body.="
|
||||||
|
<table border=\"0\"><tr><td>
|
||||||
|
<h2>Deposit...</h2>
|
||||||
|
<form class=\"form\" name=depositform enctype=\"multipart/form-data\" method=\"POST\" action=\"verifyaction.php\">
|
||||||
|
<h5>Please count all cash, cheques, and coupons in the coin box</h5>
|
||||||
|
<font face=\"Verdana\" size=\"2\">Deposit Ammount: $
|
||||||
|
<input type=\"text\" name=\"ammount\" size=\"10\" value=\"$_GET[count]\">
|
||||||
|
<br>
|
||||||
|
Approved by:
|
||||||
|
<blockquote>Username: <input type=\"text\" name=\"username\" size=\"15\" value=\"$userLoginName\"><br>
|
||||||
|
Password: <input type=\"password\" name=\"password\" size=\"15\"></blockquote>
|
||||||
|
<br><br><br>
|
||||||
|
<input type=\"hidden\" name=\"action\" value=\"4\">
|
||||||
|
Deposited by: <input type=\"text\" name=\"data\" value=\"$_GET[data]\">
|
||||||
|
</font>
|
||||||
|
<input type=\"submit\" name=\"submit\" value=\"Process Deposit!\">
|
||||||
|
</form></td><td>
|
||||||
|
<h2>Payout...</h2>
|
||||||
|
<form class=\"form\" name=payoutform enctype=\"multipart/form-data\" method=\"POST\" action=\"verifyaction.php\">
|
||||||
|
<h5>Please count all cash, cheques, and coupons in the coin box</h5>
|
||||||
|
<font face=\"Verdana\" size=\"2\">Payout Ammount: $
|
||||||
|
<input type=\"text\" name=\"ammount\" size=\"10\" value=\"$_GET[count]\">
|
||||||
|
<br>
|
||||||
|
Approved by:
|
||||||
|
<blockquote>Username: <input type=\"text\" name=\"username\" size=\"15\" value=\"$userLoginName\"><br>
|
||||||
|
Password: <input type=\"password\" name=\"password\" size=\"15\"></blockquote>
|
||||||
|
<br><br><br>
|
||||||
|
<input type=\"hidden\" name=\"action\" value=\"5\">
|
||||||
|
Payee: <input type=\"text\" name=\"data\" value=\"$_GET[data]\">
|
||||||
|
For: <input type=\"text\" name=\"data2\" value=\"$_GET[data2]\">
|
||||||
|
</font>
|
||||||
|
<input type=\"submit\" name=\"submit\" value=\"Process Payout!\">
|
||||||
|
</form></td></tr></table>
|
||||||
|
";
|
||||||
|
echo "$body";
|
||||||
|
// Counted by <b>$userLoginName</b> <input type=\"checkbox\" name=\"counter\">
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
2
books/error_log
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
[12-Mar-2009 01:49:01] PHP Parse error: syntax error, unexpected T_STRING in /home/recycle/public_html/www_campusbike.ca/pos/books/openshop.php on line 68
|
||||||
|
[12-Mar-2009 01:49:16] PHP Parse error: syntax error, unexpected $end in /home/recycle/public_html/www_campusbike.ca/pos/books/openshop.php on line 91
|
32
books/form.css
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
.form {
|
||||||
|
width: 400px;
|
||||||
|
margin-left: 15%;
|
||||||
|
//margin-right: auto;
|
||||||
|
margin-top: 0px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px dotted #b2c7e7;
|
||||||
|
background-color: #EEEEEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subform {
|
||||||
|
width: 250px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 0px solid black;
|
||||||
|
background-color: #EEEEEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
width: 200px;
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
margin-left: 15%;
|
||||||
|
border-top: 1px dotted #b2c7e7;
|
||||||
|
border-left: 1px dotted #b2c7e7;
|
||||||
|
border-right: 1px dotted #b2c7e7;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #BBBBBB;
|
||||||
|
}
|
75
books/form_open.php
Executable file
@ -0,0 +1,75 @@
|
|||||||
|
<?php session_start();?>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Processing...";
|
||||||
|
|
||||||
|
//check to make sure it's a number
|
||||||
|
if(!strval(floatval($_POST[openCount])) == strval($_POST[openCount])){
|
||||||
|
echo "<script>document.location.href='openshop.php?error=2&count=$_POST[openCount]'</script>";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//check to make sure it was the administrator who counted
|
||||||
|
if(!$_POST[counter]){
|
||||||
|
echo "<script>document.location.href='openshop.php?error=1'</script>";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//$tablename = $cfg_tableprefix.'users';
|
||||||
|
$userLoginName = $dbf->idToField($cfg_tableprefix.'users','username',$_SESSION['session_user_id']);
|
||||||
|
|
||||||
|
|
||||||
|
$tablename="$cfg_tableprefix".'books';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
$today = date('Y-m-d');
|
||||||
|
$adminID = $_SESSION['session_user_id'];
|
||||||
|
$field_names=array('date','event','user','ammount','data');
|
||||||
|
$field_data=array("$today", "open", "$adminID","$_POST[openCount]","$_POST[mechID]");
|
||||||
|
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,"");
|
||||||
|
|
||||||
|
$tablename="$cfg_tableprefix".'visits';
|
||||||
|
$tdin = date('Y-m-d H:i:s');
|
||||||
|
$field_names=array('userID','intime','activity');
|
||||||
|
$field_data=array("$_POST[mechID]", "$tdin", "Mechanic");
|
||||||
|
$dbf->insert($field_names, $field_data, $tablename, "");
|
||||||
|
$adminID = $dbf->idToField($cfg_tableprefix.'users','customerID',$_SESSION['session_user_id']);
|
||||||
|
$field_data=array("$adminID", "$tdin", "Administrator");
|
||||||
|
$dbf->insert($field_names, $field_data, $tablename, "");
|
||||||
|
//$query = "INSERT INTO 'visits' ('userID' ,'intime' ,'activity') VALUES ('$_POST[mechID]', '$tdin', '\"using\"')";
|
||||||
|
//mysql_query($query);
|
||||||
|
|
||||||
|
echo "<script>document.location.href='../home.php'</script>";
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
162
books/open_form.php
Executable file
@ -0,0 +1,162 @@
|
|||||||
|
\<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$userID='';
|
||||||
|
$loanID='';
|
||||||
|
$deposittaken='';
|
||||||
|
$loandate='';
|
||||||
|
$returndate='';
|
||||||
|
$notes='';
|
||||||
|
$latefeespaid='';
|
||||||
|
$paid='';
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
|
||||||
|
//echo "post is $_POST[bikeID]and id is $id";
|
||||||
|
//Destroy the world if they didn't put a valid bike number in. Then apologize.
|
||||||
|
$bikecheck = mysql_query("SELECT * FROM bikes WHERE id='$_POST[bikeID]' LIMIT 1",$dbf->conn);
|
||||||
|
echo mysql_error();
|
||||||
|
$bikeexists = mysql_fetch_array($bikecheck);
|
||||||
|
$back = "<br /><br /><a href=\"index.php\">[Go Baaaaaack]</a>";
|
||||||
|
if($bikeexists['id'] == ""){ echo "<br />Bike Doesn't exist. Divide by zero. Did you put a bike number in the box? If you <b>did</b> put a number in, go back and try typing it again.$back"; die(); }
|
||||||
|
if($bikeexists['bikestatus'] == "repair"){ echo "<br />This is <b>a personal bike in for repair!</b> Take it from them and make a note! $back"; die(); }
|
||||||
|
if($bikeexists['bikestatus'] != "library"){ echo "<br />This is not a library bike. It is marked as <b>$bikeexists[bikestatus]</b>. Take it from them and tell the IT working group $back"; die(); }
|
||||||
|
if($bikeexists['putinservice'] == "" || $bikeexists['putinservice'] == "0000-00-00"){ echo "<br />This bike has not yet been put in service! DO NOT LOAN. Merci! $back"; die(); }
|
||||||
|
if($bikeexists['inrepair'] != "" && $bikeexists['inrepair'] != "0000-00-00"){ echo "<br />This bike is in repair. DO NOT LOAN. Merci! $back"; die(); }
|
||||||
|
if($bikeexists['retired'] != "" && $bikeexists['retired'] != "0000-00-00"){ echo "<br />This bike has been retired from the library. Do not loan. $back"; die(); }
|
||||||
|
|
||||||
|
|
||||||
|
//Check if bike is in or out
|
||||||
|
$inoutquery = mysql_query("SELECT * FROM libraryloans WHERE bikeID='$_POST[bikeID]' AND bikeout=1",$dbf->conn);
|
||||||
|
$loanarray = mysql_fetch_array($inoutquery);
|
||||||
|
|
||||||
|
//decides if the form will be used to sign in or add a loan.
|
||||||
|
if($loanarray['id'] != "")
|
||||||
|
{
|
||||||
|
$action="update";
|
||||||
|
// print_r($loanarray);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="insert";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current loan data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
$display->displayTitle("Bike is OUT. Sign it in");
|
||||||
|
|
||||||
|
if(isset($_POST['bikeID']))
|
||||||
|
{
|
||||||
|
// echo "Now it's all: $_POST[bikeID]";
|
||||||
|
$bikeID=$_POST['bikeID'];
|
||||||
|
$tablename = "$cfg_tableprefix".'libraryloans';
|
||||||
|
$result = mysql_query("SELECT *, UNIX_TIMESTAMP(duedate)as latedate FROM $tablename WHERE bikeID=\"$bikeID\" AND bikeout=1",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$userID=$row['userID'];
|
||||||
|
$loanID=$row['id'];
|
||||||
|
$deposittaken=$row['deposittaken'];
|
||||||
|
$loandate=$row['loandate'];
|
||||||
|
$duedate=$row['duedate'];
|
||||||
|
$returndate=$row['returndate'];
|
||||||
|
$notes=$row['notes'];
|
||||||
|
$latefees=$row['latefees'];
|
||||||
|
$latedate=$row['latedate'];
|
||||||
|
|
||||||
|
$today = date('U');
|
||||||
|
if($today > $latedate){
|
||||||
|
$todayowing = round((($today-$latedate)/60/60/24)-1, 0) * $cfg_dailyLateFee;
|
||||||
|
echo "<center>There is <b>\$$todayowing.00</b> owing in late fees.</center><br />";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("Bike #$_POST[bikeID] is available for loan. Use form below.");
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_library.php','POST','library','450',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
// Get User ID's and names for the select creation
|
||||||
|
//sidenote: if user has bike, grab user number and add SELECTED to their entry in the select (last 3 lines)
|
||||||
|
$fnamearray = array();
|
||||||
|
$lnamearray = array();
|
||||||
|
$userIDarray = array();
|
||||||
|
$usrquery = mysql_query("SELECT first_name, last_name, id FROM customers ORDER BY last_name ASC");
|
||||||
|
while ($row = mysql_fetch_assoc($usrquery))
|
||||||
|
{
|
||||||
|
$namearray[] = $row['last_name'] .',' . $row['first_name'];
|
||||||
|
$idstring = $row['id'];
|
||||||
|
if($userID == $row['id']){
|
||||||
|
$idstring .= "SELECTED"; }
|
||||||
|
$userIDarray[] = $idstring;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($action == "update"){ $disabled="disabled"; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
$f1->createSelectField("<b>Member: </b>",'userID',$userIDarray,$namearray,'170',"$disabled");
|
||||||
|
$f1->createInputField("<b>Deposit Taken:</b> $",'text','deposittaken',"$deposittaken",'24','170',"$disabled");
|
||||||
|
if ($action == "update"){ $f1->createInputField("Due Date (YYYY-MM-DD): ",'text','<b>duedate</b>',"$duedate",'24','170',"$disabled"); }
|
||||||
|
if ($action == "insert"){ $f1->createSingleDateSelectField("<b>Due Date</b>"); }
|
||||||
|
$f1->createCheckboxField("<b>Paying fees now?</b>","feespaid",'170');
|
||||||
|
//$f1->createInputField("<i>Late Fees Paid: $</i> ",'text','amtpaid',"",'24','170');
|
||||||
|
$f1->createTextareaField("Notes about this loan:",'notes','5','24',"$notes",'170');
|
||||||
|
|
||||||
|
//sends many hidden varibles needed for process_form_library.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$loanID'>
|
||||||
|
<input type='hidden' name='bikeID' value='$_POST[bikeID]'>";
|
||||||
|
if($action == "update"){
|
||||||
|
echo "<input type='hidden' name='userID' value='$userID'>";
|
||||||
|
echo "<input type='hidden' name='duedate' value='$duedate'>";
|
||||||
|
echo "<input type='hidden' name='deposittaken' value='$deposittaken'>";
|
||||||
|
echo "<input type='hidden' name='todayowing' value='$todayowing'>";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$f1->endLibraryForm();
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
91
books/openshop.php
Executable file
@ -0,0 +1,91 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="form.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$today = date("Y-m-d");
|
||||||
|
$result = mysql_query("SELECT * FROM books");
|
||||||
|
if(!mysql_num_rows(mysql_query("SELECT * FROM books WHERE date='$today' AND event='close'")) && mysql_num_rows(mysql_query("SELECT * FROM books WHERE date='$today' AND event='open'"))){
|
||||||
|
header("location: ../home.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$body.="</select>";
|
||||||
|
|
||||||
|
$tablename = $cfg_tableprefix.'users';
|
||||||
|
$userLoginName = $dbf->idToField($tablename,'username',$_SESSION['session_user_id']);
|
||||||
|
|
||||||
|
$result = mysql_query("SELECT id,first_name,last_name FROM customers ORDER BY last_name ASC");
|
||||||
|
|
||||||
|
$error = (int)$_GET[error];
|
||||||
|
$errorMsg = "";
|
||||||
|
switch($error){
|
||||||
|
case 1:
|
||||||
|
$errorMsg="ERROR: if you are not $userLoginName please switch to your own administrator account";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$errorMsg="ERROR: Not a valid ammount: [$_GET[count]]";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($errorMsg != ""){
|
||||||
|
$body.="<br><font color=\"red\">".$errorMsg."</font><br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$body.="
|
||||||
|
<h2>Open The Shop...</h2>
|
||||||
|
<form class=\"form\" name=oopen enctype=\"multipart/form-data\" method=\"POST\" action=\"verifyaction.php\">
|
||||||
|
<h5>Before any members are singed in or any transactions are processed please count all
|
||||||
|
cash, cheques, and coupons in the coin box</h5>
|
||||||
|
<font face=\"Verdana\" size=\"2\">Opening Count: $
|
||||||
|
<input type=\"text\" name=\"ammount\" size=\"10\" value=\"$_GET[count]\">
|
||||||
|
<br>
|
||||||
|
Counted by <b>$userLoginName</b> <input type=\"checkbox\" name=\"counter\">
|
||||||
|
<br><br>";
|
||||||
|
if($cfg_mechAutoSignin != "no"){
|
||||||
|
if($cfg_mechAutoSignin == "option"){
|
||||||
|
$body .= "<input type=\"checkbox\" CHECKED name=\"m\">Sign in Mechanic: <br>";
|
||||||
|
}else{
|
||||||
|
$body .= "<input type=\"hidden\" value=\"on\" name=\"m\">";
|
||||||
|
}
|
||||||
|
$body .= " Mechanic on duty
|
||||||
|
<select name=\"data\">";
|
||||||
|
while($field = mysql_fetch_array($result)) { $body.="<option value=\"$field[id]\">$field[last_name], $field[first_name] </option>"; }
|
||||||
|
$body.="
|
||||||
|
</select>";
|
||||||
|
}
|
||||||
|
$body .= "<input type=\"hidden\" name=\"action\" value=\"1\">
|
||||||
|
<br><br><br>
|
||||||
|
</font>
|
||||||
|
<input type=\"submit\" name=\"submit\" value=\"Process!\">
|
||||||
|
</form>
|
||||||
|
";
|
||||||
|
echo "$body";
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
190
books/verifyaction.php
Executable file
@ -0,0 +1,190 @@
|
|||||||
|
<?php session_start();
|
||||||
|
//<?php
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//echo "Processing...";
|
||||||
|
|
||||||
|
$action = $_POST[action];
|
||||||
|
//check to make sure it's a number
|
||||||
|
$actionPage = "";
|
||||||
|
$user = null;
|
||||||
|
switch($action){
|
||||||
|
case 1:
|
||||||
|
$actionPage = "openshop";
|
||||||
|
$user = $_SESSION['session_user_id'];
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$actionPage = "closeshop";
|
||||||
|
$user = $_POST[username];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$actionPage = "openshop";
|
||||||
|
$user = $_POST[username];
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
case 5:
|
||||||
|
$actionPage = "depositPayout";
|
||||||
|
$user = $_POST[username];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//make sure the ammount looks right
|
||||||
|
if(!isset($_POST[ammount]) || !strval(floatval($_POST[ammount])) == strval($_POST[ammount])){
|
||||||
|
header("location: $actionPage.php?error=2&count=$_POST[ammount]");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//check to make sure it was the administrator who counted
|
||||||
|
// Or that a valid username and password was entered
|
||||||
|
if($action == 1 && !$_POST[counter]){
|
||||||
|
header("location: $actionPage.php?error=1&count=$_POST[ammount]");
|
||||||
|
exit();
|
||||||
|
}else if($action != 1 && !$sec->checkLogin($_POST[username], md5($_POST[password]))){
|
||||||
|
header("location: $actionPage.php?error=1&count=$_POST[ammount]");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
if((($action == 4 || $action == 5) && (!isset($_POST[data]) || !strlen($_POST[data]))) || ($action == 5 && (!isset($_POST[data2]) || !strlen($_POST[data]) || strrchr($_POST[data], "^")))){
|
||||||
|
header("location: $actionPage.php?error=3&count=$_POST[ammount]&data=$_POST[data]&data2=$_POST[data2]");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//echo "stuff";
|
||||||
|
if(($action == 1 || $action == 2) && !$_POST[nocompare]){
|
||||||
|
$lastCountFound = false;
|
||||||
|
$compareAmmount = 0.0;
|
||||||
|
if($action == 2){
|
||||||
|
$cashresult = mysql_query("SELECT sale_total_cost FROM sales WHERE date='$today'");
|
||||||
|
while ($casharray = mysql_fetch_array($cashresult)){
|
||||||
|
$compareAmmount += $casharray[sale_total_cost];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$le = mysql_query("SELECT * FROM books ORDER BY listID DESC");//, $dfb->conn);
|
||||||
|
while(($item = mysql_fetch_assoc($le)) && !$lastCountFound){
|
||||||
|
switch($item[event]){
|
||||||
|
case 1:
|
||||||
|
case 2://close
|
||||||
|
$lastCountFound = true;
|
||||||
|
$compareAmmount += ($item[ammount] / 100.0);
|
||||||
|
break;
|
||||||
|
case 4://deposit
|
||||||
|
$compareAmmount -= ($item[ammount] / 100.0);
|
||||||
|
break;
|
||||||
|
case 5://payout
|
||||||
|
$compareAmmount -= ($item[ammount] / 100.0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($_POST[ammount] != $compareAmmount){
|
||||||
|
$difference = round(abs($_POST[ammount] - $compareAmmount), 2);//, PHP_ROUND_HALF_UP);
|
||||||
|
echo "<html><head><link rel=\"stylesheet\" href=\"form.css\" type=\"text/css\"></head>";
|
||||||
|
echo "<body><h2>Count was ";
|
||||||
|
if($_POST[ammount] < $compareAmmount){
|
||||||
|
echo "Short";
|
||||||
|
}else{
|
||||||
|
echo "Over";
|
||||||
|
}
|
||||||
|
echo "</h2><form class=\"form\" name=\"continue\" enctype=\"multipart/form-data\" method=\"POST\" action=\"verifyaction.php\">
|
||||||
|
<h3>There was a difference of $"."$difference<br><br>
|
||||||
|
<input type=\"hidden\" name=\"ammount\" value=\"$_POST[ammount]\">
|
||||||
|
<input type=\"hidden\" name=\"action\" value=\"1\">
|
||||||
|
<input type=\"hidden\" name=\"counter\" value=\"1\">
|
||||||
|
<input type=\"hidden\" name=\"data\" value=\"$_POST[data]\">
|
||||||
|
<input type=\"hidden\" name=\"nocompare\" value=\"$action\">
|
||||||
|
<input type=\"submit\" name=\"submit\" value=\"Count is correct, proceede...\">
|
||||||
|
</form><br><br>
|
||||||
|
<form name=\"redo\" class=\"subform\" enctype=\"multipart/form-data\" method=\"GET\" action=\"$actionPage.php\">
|
||||||
|
<input type=\"hidden\" name=\"count\" value=\"$_POST[ammount]\">
|
||||||
|
<input type=\"submit\" name=\"submit\" value=\"Recount...\">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
// <input type=\"text\" name=\"username\" size=\"15\" value=\"$_POST[username]\">
|
||||||
|
// <input type=\"hidden\" name=\"password\" size=\"15\ value=\"$_POST[password]\">
|
||||||
|
}
|
||||||
|
|
||||||
|
//$tablename = $cfg_tableprefix.'users';
|
||||||
|
$userLoginName = $dbf->idToField($cfg_tableprefix.'users','username',$_SESSION['session_user_id']);
|
||||||
|
$tablename="$cfg_tableprefix".'books';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
$today = date('Y-m-d');
|
||||||
|
$ammount = $_POST[ammount]*100.0;
|
||||||
|
$field_names=array('date','event','user','ammount','data');
|
||||||
|
$data = $_POST[data];
|
||||||
|
if($action == 5){
|
||||||
|
$data .= "^".$_POST[data2];
|
||||||
|
}
|
||||||
|
$field_data=array("$today", "$action", "$user","$ammount","$data");
|
||||||
|
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,"");
|
||||||
|
|
||||||
|
if($action == 1){//"open"){
|
||||||
|
//no one should be logged in but in case they are, log them out.
|
||||||
|
$now = date('Y-m-d H:i:s');
|
||||||
|
$userresult = mysql_query("SELECT * FROM visits WHERE endout IS NULL ORDER BY activity ASC");
|
||||||
|
while($row = mysql_fetch_array($userresult)){
|
||||||
|
$visitID = $row[visitID];
|
||||||
|
//
|
||||||
|
$query="UPDATE visits SET endout='$now' WHERE visitID='$visitID' LIMIT 1";
|
||||||
|
mysql_query($query) or die('Error, user not done . Consult Mark, he probably fucked up. OH shits');
|
||||||
|
}
|
||||||
|
$tablename="$cfg_tableprefix".'visits';
|
||||||
|
//$tdin = date('Y-m-d H:i:s');
|
||||||
|
if($cfg_mechAutoSignin != "no" && $_POST["m"]){
|
||||||
|
$sec->signinMember($_POST[data], $now, "Mechanic");
|
||||||
|
}
|
||||||
|
if($cfg_adminAutoSignin){
|
||||||
|
$adminID = $dbf->idToField($cfg_tableprefix.'users','customerID',$_SESSION['session_user_id']);
|
||||||
|
$sec->signinMember($adminID, $now, "Administrator");
|
||||||
|
}
|
||||||
|
header("location: ../home.php");
|
||||||
|
}else if($action == 2){//"close"){
|
||||||
|
//log everyone out
|
||||||
|
$userresult = mysql_query("SELECT * FROM visits WHERE endout IS NULL ORDER BY activity ASC");
|
||||||
|
while($row = mysql_fetch_array($userresult)){
|
||||||
|
$visitID = $row[visitID];
|
||||||
|
$now = date('Y-m-d H:i:s');
|
||||||
|
$query="UPDATE visits SET endout='$now' WHERE visitID='$visitID' LIMIT 1";
|
||||||
|
mysql_query($query) or die('Error, user not done . Consult Mark, he probably fucked up. OH shits');
|
||||||
|
}
|
||||||
|
session_destroy();
|
||||||
|
//header("location: ../shopclosed.php");
|
||||||
|
echo "<script>parent.document.location.href='../shopclosed.php'</script>";
|
||||||
|
}else{
|
||||||
|
//header("location: ../index.php");
|
||||||
|
echo "<script>document.location.href='../home.php'</script>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="form.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
classes/.form.php.swp
Executable file
340
classes/barcode.php
Executable file
@ -0,0 +1,340 @@
|
|||||||
|
<?php
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* PHP Barcode Image Generator v1.0 [9/28/2000]
|
||||||
|
Copyright (C)2000 by Charles J. Scheffold - cs@wsia.fm
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
UPDATE 09/21/2002 by Laurent NAVARRO - ln@altidev.com - http://www.altidev.com
|
||||||
|
Updated to be compatible with register_globals = off and on
|
||||||
|
---
|
||||||
|
UPDATE 4/6/2001 - Important Note! This script was written with the assumption
|
||||||
|
that "register_globals = On" is defined in your PHP.INI file! It will not
|
||||||
|
work as-is and as described unless this is set. My PHP came with this
|
||||||
|
enabled by default, but apparently many people have turned it off. Either
|
||||||
|
turn it on or modify the startup code to pull the CGI variables in the old
|
||||||
|
fashioned way (from the HTTP* arrays). If you just want to use the functions
|
||||||
|
and pass the variables yourself, well then go on with your bad self.
|
||||||
|
---
|
||||||
|
|
||||||
|
This code is hereby released into the public domain.
|
||||||
|
Use it, abuse it, just don't get caught using it for something stupid.
|
||||||
|
|
||||||
|
|
||||||
|
The only barcode type currently supported is Code 3 of 9. Don't ask about
|
||||||
|
adding support for others! This is a script I wrote for my own use. I do
|
||||||
|
plan to add more types as time permits but currently I only require
|
||||||
|
Code 3 of 9 for my purposes. Just about every scanner on the market today
|
||||||
|
can read it.
|
||||||
|
|
||||||
|
|
||||||
|
PARAMETERS:
|
||||||
|
-----------
|
||||||
|
$barcode = [required] The barcode you want to generate
|
||||||
|
|
||||||
|
|
||||||
|
$type = (default=0) It's 0 for Code 3 of 9 (the only one supported)
|
||||||
|
|
||||||
|
$width = (default=160) Width of image in pixels. The image MUST be wide
|
||||||
|
enough to handle the length of the given value. The default
|
||||||
|
value will probably be able to display about 6 digits. If you
|
||||||
|
get an error message, make it wider!
|
||||||
|
|
||||||
|
|
||||||
|
$height = (default=80) Height of image in pixels
|
||||||
|
|
||||||
|
$format = (default=jpeg) Can be "jpeg", "png", or "gif"
|
||||||
|
|
||||||
|
$quality = (default=100) For JPEG only: ranges from 0-100
|
||||||
|
|
||||||
|
|
||||||
|
$text = (default='') 0 Enter any string to be displayed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NOTE: You must have GD-1.8 or higher compiled into PHP
|
||||||
|
in order to use PNG and JPEG. GIF images only work with
|
||||||
|
GD-1.5 and lower. (http://www.boutell.com)
|
||||||
|
|
||||||
|
|
||||||
|
ANOTHER NOTE: If you actually intend to print the barcodes
|
||||||
|
and scan them with a scanner, I highly recommend choosing
|
||||||
|
JPEG with a quality of 100. Most browsers can't seem to print
|
||||||
|
a PNG without mangling it beyond recognition.
|
||||||
|
|
||||||
|
|
||||||
|
USAGE EXAMPLES FOR ANY PLAIN OLD HTML DOCUMENT:
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
<IMG SRC="barcode.php?barcode=HELLO&quality=75">
|
||||||
|
|
||||||
|
|
||||||
|
<IMG SRC="barcode.php?barcode=123456&width=320&height=200">
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
/*=============================================================================*/
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Startup code
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
if(isset($_GET["text"])) $text=$_GET["text"];
|
||||||
|
if(isset($_GET["format"])) $format=$_GET["format"];
|
||||||
|
if(isset($_GET["quality"])) $quality=$_GET["quality"];
|
||||||
|
if(isset($_GET["width"])) $width=$_GET["width"];
|
||||||
|
if(isset($_GET["height"])) $height=$_GET["height"];
|
||||||
|
if(isset($_GET["type"])) $type=$_GET["type"];
|
||||||
|
if(isset($_GET["barcode"])) $barcode=$_GET["barcode"];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (!isset ($text)) $text = '';
|
||||||
|
if (!isset ($type)) $type = 1;
|
||||||
|
if (empty ($quality)) $quality = 100;
|
||||||
|
if (empty ($width)) $width = 160;
|
||||||
|
if (empty ($height)) $height = 80;
|
||||||
|
if (!empty ($format)) $format = strtoupper ($format);
|
||||||
|
else $format="PNG";
|
||||||
|
|
||||||
|
|
||||||
|
switch ($type)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
$type = 1;
|
||||||
|
case 1:
|
||||||
|
Barcode39 ($barcode, $width, $height, $quality, $format, $text);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Generate a Code 3 of 9 barcode
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
function Barcode39 ($barcode, $width, $height, $quality, $format, $text)
|
||||||
|
{
|
||||||
|
switch ($format)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
$format = "JPEG";
|
||||||
|
case "JPEG":
|
||||||
|
header ("Content-type: image/jpeg");
|
||||||
|
break;
|
||||||
|
case "PNG":
|
||||||
|
header ("Content-type: image/png");
|
||||||
|
break;
|
||||||
|
case "GIF":
|
||||||
|
header ("Content-type: image/gif");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$im = ImageCreate ($width, $height)
|
||||||
|
or die ("Cannot Initialize new GD image stream");
|
||||||
|
$White = ImageColorAllocate ($im, 255, 255, 255);
|
||||||
|
$Black = ImageColorAllocate ($im, 0, 0, 0);
|
||||||
|
//ImageColorTransparent ($im, $White);
|
||||||
|
ImageInterLace ($im, 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$NarrowRatio = 20;
|
||||||
|
$WideRatio = 55;
|
||||||
|
$QuietRatio = 35;
|
||||||
|
|
||||||
|
|
||||||
|
$nChars = (strlen($barcode)+2) * ((6 * $NarrowRatio) + (3 * $WideRatio) + ($QuietRatio));
|
||||||
|
$Pixels = $width / $nChars;
|
||||||
|
$NarrowBar = (int)(20 * $Pixels);
|
||||||
|
$WideBar = (int)(55 * $Pixels);
|
||||||
|
$QuietBar = (int)(35 * $Pixels);
|
||||||
|
|
||||||
|
|
||||||
|
$ActualWidth = (($NarrowBar * 6) + ($WideBar*3) + $QuietBar) * (strlen ($barcode)+2);
|
||||||
|
|
||||||
|
if (($NarrowBar == 0) || ($NarrowBar == $WideBar) || ($NarrowBar == $QuietBar) || ($WideBar == 0) || ($WideBar == $QuietBar) || ($QuietBar == 0))
|
||||||
|
{
|
||||||
|
ImageString ($im, 1, 0, 0, "Image is too small!", $Black);
|
||||||
|
OutputImage ($im, $format, $quality);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$CurrentBarX = (int)(($width - $ActualWidth) / 2);
|
||||||
|
$Color = $White;
|
||||||
|
$BarcodeFull = "*".strtoupper ($barcode)."*";
|
||||||
|
settype ($BarcodeFull, "string");
|
||||||
|
|
||||||
|
$FontNum = 3;
|
||||||
|
$FontHeight = ImageFontHeight ($FontNum);
|
||||||
|
$FontWidth = ImageFontWidth ($FontNum);
|
||||||
|
|
||||||
|
if ($text != '')
|
||||||
|
{
|
||||||
|
$CenterLoc = (int)(($width) / 2) - (int)(($FontWidth * strlen($text)) / 2);
|
||||||
|
ImageString ($im, $FontNum, $CenterLoc, $height-$FontHeight, "$text", $Black);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for ($i=0; $i<strlen($BarcodeFull); $i++)
|
||||||
|
{
|
||||||
|
$StripeCode = Code39 ($BarcodeFull[$i]);
|
||||||
|
|
||||||
|
|
||||||
|
for ($n=0; $n < 9; $n++)
|
||||||
|
{
|
||||||
|
if ($Color == $White) $Color = $Black;
|
||||||
|
else $Color = $White;
|
||||||
|
|
||||||
|
|
||||||
|
switch ($StripeCode[$n])
|
||||||
|
{
|
||||||
|
case '0':
|
||||||
|
ImageFilledRectangle ($im, $CurrentBarX, 0, $CurrentBarX+$NarrowBar, $height-1-$FontHeight-2, $Color);
|
||||||
|
$CurrentBarX += $NarrowBar;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case '1':
|
||||||
|
ImageFilledRectangle ($im, $CurrentBarX, 0, $CurrentBarX+$WideBar, $height-1-$FontHeight-2, $Color);
|
||||||
|
$CurrentBarX += $WideBar;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$Color = $White;
|
||||||
|
ImageFilledRectangle ($im, $CurrentBarX, 0, $CurrentBarX+$QuietBar, $height-1-$FontHeight-2, $Color);
|
||||||
|
$CurrentBarX += $QuietBar;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OutputImage ($im, $format, $quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Output an image to the browser
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
function OutputImage ($im, $format, $quality)
|
||||||
|
{
|
||||||
|
switch ($format)
|
||||||
|
{
|
||||||
|
case "JPEG":
|
||||||
|
ImageJPEG ($im, "", $quality);
|
||||||
|
break;
|
||||||
|
case "PNG":
|
||||||
|
ImagePNG ($im);
|
||||||
|
break;
|
||||||
|
case "GIF":
|
||||||
|
ImageGIF ($im);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Returns the Code 3 of 9 value for a given ASCII character
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
function Code39 ($Asc)
|
||||||
|
{
|
||||||
|
switch ($Asc)
|
||||||
|
{
|
||||||
|
case ' ':
|
||||||
|
return "011000100";
|
||||||
|
case '$':
|
||||||
|
return "010101000";
|
||||||
|
case '%':
|
||||||
|
return "000101010";
|
||||||
|
case '*':
|
||||||
|
return "010010100"; // * Start/Stop
|
||||||
|
case '+':
|
||||||
|
return "010001010";
|
||||||
|
case '|':
|
||||||
|
return "010000101";
|
||||||
|
case '.':
|
||||||
|
return "110000100";
|
||||||
|
case '/':
|
||||||
|
return "010100010";
|
||||||
|
case '0':
|
||||||
|
return "000110100";
|
||||||
|
case '1':
|
||||||
|
return "100100001";
|
||||||
|
case '2':
|
||||||
|
return "001100001";
|
||||||
|
case '3':
|
||||||
|
return "101100000";
|
||||||
|
case '4':
|
||||||
|
return "000110001";
|
||||||
|
case '5':
|
||||||
|
return "100110000";
|
||||||
|
case '6':
|
||||||
|
return "001110000";
|
||||||
|
case '7':
|
||||||
|
return "000100101";
|
||||||
|
case '8':
|
||||||
|
return "100100100";
|
||||||
|
case '9':
|
||||||
|
return "001100100";
|
||||||
|
case 'A':
|
||||||
|
return "100001001";
|
||||||
|
case 'B':
|
||||||
|
return "001001001";
|
||||||
|
case 'C':
|
||||||
|
return "101001000";
|
||||||
|
case 'D':
|
||||||
|
return "000011001";
|
||||||
|
case 'E':
|
||||||
|
return "100011000";
|
||||||
|
case 'F':
|
||||||
|
return "001011000";
|
||||||
|
case 'G':
|
||||||
|
return "000001101";
|
||||||
|
case 'H':
|
||||||
|
return "100001100";
|
||||||
|
case 'I':
|
||||||
|
return "001001100";
|
||||||
|
case 'J':
|
||||||
|
return "000011100";
|
||||||
|
case 'K':
|
||||||
|
return "100000011";
|
||||||
|
case 'L':
|
||||||
|
return "001000011";
|
||||||
|
case 'M':
|
||||||
|
return "101000010";
|
||||||
|
case 'N':
|
||||||
|
return "000010011";
|
||||||
|
case 'O':
|
||||||
|
return "100010010";
|
||||||
|
case 'P':
|
||||||
|
return "001010010";
|
||||||
|
case 'Q':
|
||||||
|
return "000000111";
|
||||||
|
case 'R':
|
||||||
|
return "100000110";
|
||||||
|
case 'S':
|
||||||
|
return "001000110";
|
||||||
|
case 'T':
|
||||||
|
return "000010110";
|
||||||
|
case 'U':
|
||||||
|
return "110000001";
|
||||||
|
case 'V':
|
||||||
|
return "011000001";
|
||||||
|
case 'W':
|
||||||
|
return "111000000";
|
||||||
|
case 'X':
|
||||||
|
return "010010001";
|
||||||
|
case 'Y':
|
||||||
|
return "110010000";
|
||||||
|
case 'Z':
|
||||||
|
return "011010000";
|
||||||
|
default:
|
||||||
|
return "011000100";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
586
classes/db_functions.php
Executable file
@ -0,0 +1,586 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class db_functions
|
||||||
|
{
|
||||||
|
//class variable that represents the database connection.
|
||||||
|
var $conn;
|
||||||
|
var $lang;
|
||||||
|
var $tblprefix;
|
||||||
|
//var $sec;
|
||||||
|
|
||||||
|
var $table_bgcolor,$cellspacing,$cellpadding,$border_style,$border_width,
|
||||||
|
$border_color,$header_rowcolor,$header_text_color,$headerfont_face,$headerfont_size,
|
||||||
|
$rowcolor,$rowcolor2,$rowcolor_text,$rowfont_face,$rowfont_size;
|
||||||
|
|
||||||
|
//user-defined constructor
|
||||||
|
function db_functions($server,$username,$password,$database,$tableprefix,$theme,$language)
|
||||||
|
{
|
||||||
|
//pre: parameters must be correct in order to connect to database.
|
||||||
|
//post: connects to database.
|
||||||
|
|
||||||
|
//$sec=new security_functions($this,'Sales Clerk',$lang);
|
||||||
|
$this->tblprefix=$tableprefix;
|
||||||
|
$this->lang=$language;
|
||||||
|
$this->conn = mysql_connect("$server", "$username", "$password") or die("Could not connect : " . mysql_error());
|
||||||
|
mysql_select_db("$database",$this->conn) or die("Could not select database <b>$database</b>");
|
||||||
|
|
||||||
|
switch($theme)
|
||||||
|
{
|
||||||
|
//add more themes
|
||||||
|
|
||||||
|
case $theme=='serious':
|
||||||
|
$this->table_bgcolor='white';
|
||||||
|
$this->cellspacing='1';
|
||||||
|
$this->cellpadding='0';
|
||||||
|
$this->border_style='solid';
|
||||||
|
$this->border_width='1';
|
||||||
|
$this->border_color='black';
|
||||||
|
|
||||||
|
$this->header_rowcolor='black';
|
||||||
|
$this->header_text_color='white';
|
||||||
|
$this->headerfont_face='arial';
|
||||||
|
$this->headerfont_size='2';
|
||||||
|
|
||||||
|
|
||||||
|
$this->rowcolor='#DDDDDD';
|
||||||
|
$this->rowcolor_text='black';
|
||||||
|
$this->rowfont_face='geneva';
|
||||||
|
$this->rowfont_size='2';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $theme=='big blue':
|
||||||
|
|
||||||
|
$this->table_bgcolor='white';
|
||||||
|
$this->cellspacing='1';
|
||||||
|
$this->cellpadding='0';
|
||||||
|
$this->border_style='solid';
|
||||||
|
$this->border_width='1';
|
||||||
|
$this->border_color='black';
|
||||||
|
|
||||||
|
$this->header_rowcolor='navy';
|
||||||
|
$this->header_text_color='white';
|
||||||
|
$this->headerfont_face='arial';
|
||||||
|
$this->headerfont_size='2';
|
||||||
|
|
||||||
|
|
||||||
|
$this->rowcolor='#15759B';
|
||||||
|
$this->rowcolor_text='white';
|
||||||
|
$this->rowfont_face='geneva';
|
||||||
|
$this->rowfont_size='2';
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getUserID($username,$password)
|
||||||
|
{
|
||||||
|
//pre: $username is a string and $password (encrypted) is the user's encrypted password.
|
||||||
|
//post: returns the id of the user with the specific username and password supplied.
|
||||||
|
|
||||||
|
$tablename = "$this->tblprefix".'users';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE username=\"$username\" and password=\"$password\"",$this->conn);
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
|
||||||
|
return $row['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAllElements($tablename,$field,$orderby)
|
||||||
|
{
|
||||||
|
//pre: $tablename,$field,$orderby must be valid
|
||||||
|
/*post: returns all elements in an array of specified table
|
||||||
|
and sets first position to an empty string. This function will be used for filling
|
||||||
|
select fields, which requires the first position for the selected value
|
||||||
|
*/
|
||||||
|
|
||||||
|
$result = mysql_query("SELECT $field FROM $tablename ORDER BY $orderby",$this->conn);
|
||||||
|
$numRows = mysql_num_rows($result);
|
||||||
|
$data = array();
|
||||||
|
|
||||||
|
$data[0]='';
|
||||||
|
for($k=1; $k< $numRows+1; $k++)
|
||||||
|
{
|
||||||
|
$data[$k]= mysql_result($result,$k-1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function idToField($tablename,$field,$id)
|
||||||
|
{
|
||||||
|
//pre: $tablename, field, and id all must be valid
|
||||||
|
//post: returns a specified field based on the ID from a specified table.
|
||||||
|
|
||||||
|
$result = mysql_query("SELECT $field FROM $tablename WHERE id=\"$id\"",$this->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
|
||||||
|
return $row[$field];
|
||||||
|
}
|
||||||
|
|
||||||
|
function fieldToid($tablename,$field,$value)
|
||||||
|
{
|
||||||
|
//pre: $tablename, field, and value all must be valid
|
||||||
|
//post: returns a specified id based on the field from a specified table.
|
||||||
|
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE $field=\"$value\"",$this->conn);
|
||||||
|
|
||||||
|
$row=mysql_fetch_assoc($result);
|
||||||
|
|
||||||
|
return $row['id'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFields($database,$tablename)
|
||||||
|
{
|
||||||
|
//returns fields in table
|
||||||
|
|
||||||
|
$fields=array();
|
||||||
|
$fieldsRef=mysql_list_fields ($database, $tablename);
|
||||||
|
$columns=mysql_num_fieldsfieldsRef;
|
||||||
|
|
||||||
|
for($k=0;$k<$columns;$k++)
|
||||||
|
{
|
||||||
|
$fields[]=mysql_field_name($fieldsRef,$k);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
function insert($field_names,$field_data,$tablename,$output)
|
||||||
|
{
|
||||||
|
//pre: $field_names and $field_data are pararell arrays and $tablename is a string.
|
||||||
|
//post: creates a query then executes it.
|
||||||
|
|
||||||
|
if(!($this->isValidData($field_data)))
|
||||||
|
{
|
||||||
|
echo "{$this->lang->invalidCharactor}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "INSERT INTO $tablename ($field_names[0]";
|
||||||
|
|
||||||
|
for($k=1;$k< count($field_names);$k++)
|
||||||
|
{
|
||||||
|
$query.=', '."$field_names[$k]";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$query.=") VALUES (\"$field_data[0]\"";
|
||||||
|
|
||||||
|
for($k=1;$k< count($field_data);$k++)
|
||||||
|
{
|
||||||
|
$query.=', '."\"$field_data[$k]\"";
|
||||||
|
|
||||||
|
}
|
||||||
|
$query.=')';
|
||||||
|
mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
|
||||||
|
if($output)
|
||||||
|
{
|
||||||
|
echo "<center><b>{$this->lang->successfullyAdded} $tablename</b></center><br>";
|
||||||
|
|
||||||
|
echo "<center><table width=350 cellspacing=$this->cellspacing cellpadding=$this->cellpadding bgcolor=$this->table_bgcolor style=\"border: $this->border_style $this->border_color $this->border_width px\">
|
||||||
|
<tr bgcolor=$this->header_rowcolor>
|
||||||
|
<th align='left'><font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>{$this->lang->field}</th></font>
|
||||||
|
<th align='left'><font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>{$this->lang->data}</th></font>
|
||||||
|
</tr>";
|
||||||
|
for($k=0;$k<count($field_names);$k++)
|
||||||
|
{
|
||||||
|
//certain fields I do not want displayed.
|
||||||
|
if($field_names[$k]!="password")
|
||||||
|
{
|
||||||
|
echo "<tr bgcolor=$this->rowcolor><td width='120'><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$field_names[$k]". '</font></td>'."<td><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$field_data[$k]</font></td></tr>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "<tr bgcolor=$this->rowcolor><td width='120'><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$field_names[$k]". '</font></td>'."<td><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>*******</font></td></tr>\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '</table></center>';
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function update($field_names,$field_data,$tablename,$id,$output)
|
||||||
|
{
|
||||||
|
//pre: $field_names and $field_data are pararell arrays and tablename and id are strings.
|
||||||
|
//post: creates a query then executes it limites based on id.
|
||||||
|
|
||||||
|
if($id=='')
|
||||||
|
{
|
||||||
|
echo "{$this->lang->didNotEnterID}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
if(!($this->isValidData($field_data)))
|
||||||
|
{
|
||||||
|
echo "{$this->lang->invalidCharactor}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
$query="UPDATE $tablename SET $field_names[0]=\"$field_data[0]\"";
|
||||||
|
|
||||||
|
for($k=1;$k< count($field_names);$k++)
|
||||||
|
{
|
||||||
|
$query.=', '."$field_names[$k]=\"$field_data[$k]\"";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$sales_items_table=$this->tblprefix.'sales_items';
|
||||||
|
if($output)
|
||||||
|
{
|
||||||
|
$query.=" WHERE id=\"$id\"";
|
||||||
|
//echo "Here: $query";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$query.=" WHERE sale_id=\"$id\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
|
||||||
|
if($output)
|
||||||
|
{
|
||||||
|
echo "<center><b>{$this->lang->successfullyUpdated} $tablename</b></center><br>";
|
||||||
|
|
||||||
|
echo "<center><table width=350 cellspacing=$this->cellspacing cellpadding=$this->cellpadding bgcolor=$this->table_bgcolor style=\"border: $this->border_style $this->border_color $this->border_width px\">
|
||||||
|
<tr bgcolor=$this->header_rowcolor>
|
||||||
|
<th align='left'><font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>{$this->lang->field}</th></font>
|
||||||
|
<th align='left'><font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>{$this->lang->data}</th></font>
|
||||||
|
</tr>";
|
||||||
|
for($k=0;$k<count($field_names);$k++)
|
||||||
|
{
|
||||||
|
//certain fields I do not want displayed.
|
||||||
|
if($field_names[$k]!="password")
|
||||||
|
{
|
||||||
|
echo "<tr bgcolor=$this->rowcolor><td width='120'><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$field_names[$k]". '</font></td>'."<td><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$field_data[$k]</font></td></tr>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "<tr bgcolor=$this->rowcolor><td width='120'><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$field_names[$k]". '</font></td>'."<td><font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>*******</font></td></tr>\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '</table></center>';
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteRow($tablename,$id)
|
||||||
|
{
|
||||||
|
//pre: $tablename and id are strings.
|
||||||
|
//post: Does extensive error checking and then deletes row is allowed.
|
||||||
|
|
||||||
|
if($this->tblprefix=='')
|
||||||
|
{
|
||||||
|
$baseTable=$tablename;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$splitTable= explode ("$this->tblprefix",$tablename);
|
||||||
|
$baseTable=$splitTable[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
$canDelete=true;
|
||||||
|
$errmessage='';
|
||||||
|
|
||||||
|
if($id=='')
|
||||||
|
{
|
||||||
|
echo "{$this->lang->didNotEnterID}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
elseif($baseTable=='brands')
|
||||||
|
{
|
||||||
|
|
||||||
|
$checkTable = "$this->tblprefix".'items';
|
||||||
|
$result = mysql_query("SELECT brand_id FROM $checkTable WHERE brand_id=\"$id\"",$this->conn);
|
||||||
|
if(@mysql_num_rows($result) >= 1)
|
||||||
|
{
|
||||||
|
$canDelete=false;
|
||||||
|
$errmessage="{$this->lang->cantDeleteBrand}";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($baseTable=='categories')
|
||||||
|
{
|
||||||
|
$checkTable = "$this->tblprefix".'items';
|
||||||
|
$result = mysql_query("SELECT category_id FROM $checkTable WHERE category_id=\"$id\"",$this->conn);
|
||||||
|
|
||||||
|
if(@mysql_num_rows($result) >= 1)
|
||||||
|
{
|
||||||
|
$canDelete=false;
|
||||||
|
$errmessage="{$this->lang->cantDeleteCategory}";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($baseTable=='customers')
|
||||||
|
{
|
||||||
|
$checkTable = "$this->tblprefix".'sales';
|
||||||
|
$result = mysql_query("SELECT customer_id FROM $checkTable WHERE customer_id=\"$id\"",$this->conn);
|
||||||
|
|
||||||
|
if(@mysql_num_rows($result) >= 1)
|
||||||
|
{
|
||||||
|
$canDelete=false;
|
||||||
|
$errmessage="{$this->lang->cantDeleteCustomer}";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($baseTable=='items')
|
||||||
|
{
|
||||||
|
$checkTable = "$this->tblprefix".'sales_items';
|
||||||
|
$result = mysql_query("SELECT item_id FROM $checkTable WHERE item_id=\"$id\"",$this->conn);
|
||||||
|
|
||||||
|
if(@mysql_num_rows($result) >= 1)
|
||||||
|
{
|
||||||
|
$canDelete=false;
|
||||||
|
$errmessage="{$this->lang->cantDeleteItem}";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($baseTable=='suppliers')
|
||||||
|
{
|
||||||
|
|
||||||
|
$checkTable = "$this->tblprefix".'items';
|
||||||
|
$result = mysql_query("SELECT supplier_id FROM $checkTable WHERE supplier_id=\"$id\"",$this->conn);
|
||||||
|
if(@mysql_num_rows($result) >= 1)
|
||||||
|
{
|
||||||
|
$canDelete=false;
|
||||||
|
$errmessage="{$this->lang->cantDeleteSupplier}";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($baseTable=='sales')
|
||||||
|
{
|
||||||
|
$sales_items_table="$this->tblprefix".'sales_items';
|
||||||
|
$items_table="$this->tblprefix".'items';
|
||||||
|
$result=mysql_query("SELECT * FROM $sales_items_table WHERE sale_id=\"$id\"");
|
||||||
|
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
$quantityToAdd =$row['quantity_purchased'];
|
||||||
|
$newQuantity=$this->idToField($items_table,'quantity',"$row[item_id]")+$quantityToAdd;
|
||||||
|
$this->updateItemQuantity($row['item_id'],$newQuantity);
|
||||||
|
}
|
||||||
|
mysql_query("DELETE FROM $sales_items_table WHERE sale_id=\"$id\"",$this->conn);
|
||||||
|
}
|
||||||
|
elseif($baseTable=='users')
|
||||||
|
{
|
||||||
|
|
||||||
|
$checkTable = "$this->tblprefix".'sales';
|
||||||
|
|
||||||
|
$result = mysql_query("SELECT sold_by FROM $checkTable WHERE sold_by=\"$id\"",$this->conn);
|
||||||
|
if($_SESSION['session_user_id']==$id)
|
||||||
|
{
|
||||||
|
$canDelete=false;
|
||||||
|
$errmessage="{$this->lang->cantDeleteUserLoggedIn}";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif(@mysql_num_rows($result) >= 1)
|
||||||
|
{
|
||||||
|
$canDelete=false;
|
||||||
|
$errmessage="{$this->lang->cantDeleteUserEnteredSales}";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if($canDelete==true)
|
||||||
|
{
|
||||||
|
$query="DELETE FROM $tablename WHERE id=\"$id\"";
|
||||||
|
mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
echo "<center>{$this->lang->successfullyDeletedRow} <b>$id</b> {$this->lang->fromThe} <b>$tablename</b> {$this->lang->table}</center>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "<center>$errmessage</center><br>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function isValidData($data_to_check)
|
||||||
|
{
|
||||||
|
//checks data for errors
|
||||||
|
|
||||||
|
for($k=0;$k<count($data_to_check);$k++)
|
||||||
|
{
|
||||||
|
if(ereg('\"',$data_to_check[$k]) or ereg('<',$data_to_check[$k]) or ereg('>',$data_to_check[$k]) )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function isValidItem($item)
|
||||||
|
{
|
||||||
|
$table=$this->tblprefix.'items';
|
||||||
|
$result=mysql_query("SELECT id FROM $table WHERE id=\"$item\"",$this->conn);
|
||||||
|
|
||||||
|
if(mysql_num_rows($result)==0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isItemOnDiscount($itemID)
|
||||||
|
{
|
||||||
|
$table=$this->tblprefix.'discounts';
|
||||||
|
$query="SELECT item_id FROM $table WHERE item_id=\"$itemID\"";
|
||||||
|
$result=mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
if(mysql_num_rows($result) >0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPercentDiscount($itemID)
|
||||||
|
{
|
||||||
|
$table=$this->tblprefix.'discounts';
|
||||||
|
$query="SELECT percent_off FROM $table WHERE item_id=\"$itemID\"";
|
||||||
|
$result=mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
if(mysql_num_rows($result) >0)
|
||||||
|
{
|
||||||
|
$row=mysql_fetch_assoc($result);
|
||||||
|
return $row['percent_off'];
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDiscountedPrice($itemID)
|
||||||
|
{
|
||||||
|
$itemtable=$this->tblprefix.'items';
|
||||||
|
$discounttable=$this->tblprefix.'discounts';
|
||||||
|
|
||||||
|
$query1="SELECT * FROM $discounttable WHERE item_id=\"$itemID\"";
|
||||||
|
$row=mysql_fetch_assoc(mysql_query($query1,$this->conn));
|
||||||
|
$percent_off=$row['percent_off'];
|
||||||
|
|
||||||
|
$query2="SELECT * FROM $itemtable WHERE id=\"$itemID\"";
|
||||||
|
$row=mysql_fetch_assoc(mysql_query($query2,$this->conn));
|
||||||
|
$discounted_price=$row['unit_price']*(1-($percent_off/100));
|
||||||
|
|
||||||
|
return number_format($discounted_price,2,'.', '');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function isValidCustomer($customer)
|
||||||
|
{
|
||||||
|
$table=$this->tblprefix.'customers';
|
||||||
|
$result=mysql_query("SELECT id FROM $table WHERE id=\"$customer\"",$this->conn);
|
||||||
|
|
||||||
|
if(mysql_num_rows($result)==0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getNumRows($table)
|
||||||
|
{
|
||||||
|
//gets the number of rows in a table
|
||||||
|
|
||||||
|
$query="SELECT id FROM $table";
|
||||||
|
$result=mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
return mysql_num_rows($result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function updateSaleTotals($sale_id)
|
||||||
|
{
|
||||||
|
//updates the totals for a sale
|
||||||
|
|
||||||
|
$sales_items_table=$this->tblprefix.'sales_items';
|
||||||
|
$sales_table=$this->tblprefix.'sales';
|
||||||
|
|
||||||
|
$query="SELECT item_total_cost,item_total_tax,quantity_purchased FROM $sales_items_table WHERE sale_id=\"$sale_id\"";
|
||||||
|
|
||||||
|
$result=mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(@mysql_num_rows($result) > 0)
|
||||||
|
{
|
||||||
|
$sale_sub_total=0;
|
||||||
|
$sale_total_cost=0;
|
||||||
|
$items_purchased=0;
|
||||||
|
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
$sale_sub_total+=$row['item_total_cost']-$row['item_total_tax'];
|
||||||
|
$sale_total_cost+=$row['item_total_cost'];
|
||||||
|
$items_purchased+=$row['quantity_purchased'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$sale_sub_total=number_format($sale_sub_total,2,'.', '');
|
||||||
|
$sale_total_cost=number_format($sale_total_cost,2,'.', '');
|
||||||
|
|
||||||
|
$query2="UPDATE $sales_table SET sale_sub_total=\"$sale_sub_total\",sale_total_cost=\"$sale_total_cost\",items_purchased=\"$items_purchased\" WHERE id=\"$sale_id\"";
|
||||||
|
mysql_query($query2,$this->conn);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->deleteRow($sales_table,$sale_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateItemQuantity($item_id,$newQuantity)
|
||||||
|
{
|
||||||
|
$items_table=$this->tblprefix.'items';
|
||||||
|
$query="UPDATE $items_table SET quantity=\"$newQuantity\" WHERE id=\"$item_id\"";
|
||||||
|
mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function optimizeTables()
|
||||||
|
{
|
||||||
|
//optimizes the sales
|
||||||
|
|
||||||
|
$tableprefix=$this->tblprefix;
|
||||||
|
$brandsTable="$tableprefix".'brands';
|
||||||
|
$categorieTable="$tableprefix".'categories';
|
||||||
|
$customersTable="$tableprefix".'customers';
|
||||||
|
$itemsTable="$tableprefix".'items';
|
||||||
|
$salesTable="$tableprefix".'sales';
|
||||||
|
$sales_itemsTable="$tableprefix".'sales_items';
|
||||||
|
$suppliersTable="$tableprefix".'suppliers';
|
||||||
|
$usersTable="$tableprefix".'users';
|
||||||
|
$booksTable="$tableprefix".'books';
|
||||||
|
|
||||||
|
$query="OPTIMIZE TABLE $brandsTable, $categorieTable, $customersTable, $itemsTable, $salesTable, $sales_itemsTable,$suppliersTable, $usersTable, $booksTable";
|
||||||
|
mysql_query($query,$this->conn);
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeDBlink()
|
||||||
|
{
|
||||||
|
mysql_close($this->conn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
887
classes/display.php
Executable file
@ -0,0 +1,887 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class display
|
||||||
|
{
|
||||||
|
|
||||||
|
var $conn;
|
||||||
|
var $lang;
|
||||||
|
var $title_color,$list_of_color,$table_bgcolor,$cellspacing,$cellpadding,$border_style,$border_width,
|
||||||
|
$border_color,$header_rowcolor,$header_text_color,$headerfont_face,$headerfont_size,
|
||||||
|
$rowcolor1,$rowcolor2,$rowcolor_text,$rowfont_face,$rowcolor_link,$rowfont_size,$sale_bg;
|
||||||
|
|
||||||
|
function display($connection,$theme,$currency_symbol,$language)
|
||||||
|
{
|
||||||
|
$this->conn=$connection;
|
||||||
|
$this->lang=$language;
|
||||||
|
$this->currency_symbol=$currency_symbol;
|
||||||
|
switch($theme)
|
||||||
|
{
|
||||||
|
case $theme=='big blue':
|
||||||
|
|
||||||
|
$this->title_color='#005B7F';
|
||||||
|
$this->list_of_color='#247392';
|
||||||
|
|
||||||
|
$this->table_bgcolor='white';
|
||||||
|
$this->cellspacing='1';
|
||||||
|
$this->cellpadding='0';
|
||||||
|
$this->border_style='solid';
|
||||||
|
$this->border_width='1';
|
||||||
|
$this->border_color='#0A6184';
|
||||||
|
|
||||||
|
$this->header_rowcolor='navy';
|
||||||
|
$this->header_text_color='white';
|
||||||
|
$this->headerfont_face='arial';
|
||||||
|
$this->headerfont_size='2';
|
||||||
|
|
||||||
|
|
||||||
|
$this->rowcolor1='#15759B';
|
||||||
|
$this->rowcolor2='#0A6184';
|
||||||
|
$this->rowcolor_text='white';
|
||||||
|
$this->rowfont_face='geneva';
|
||||||
|
$this->rowcolor_link='CCCCCC';
|
||||||
|
$this->rowfont_size='2';
|
||||||
|
$this->sale_bg='#015B7E';
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $theme=='serious':
|
||||||
|
|
||||||
|
$this->title_color='black';
|
||||||
|
$this->list_of_color='black';
|
||||||
|
|
||||||
|
$this->table_bgcolor='white';
|
||||||
|
$this->cellspacing='1';
|
||||||
|
$this->cellpadding='0';
|
||||||
|
$this->border_style='solid';
|
||||||
|
$this->border_width='1';
|
||||||
|
$this->border_color='black';
|
||||||
|
|
||||||
|
$this->header_rowcolor='black';
|
||||||
|
$this->header_text_color='white';
|
||||||
|
$this->headerfont_face='arial';
|
||||||
|
$this->headerfont_size='2';
|
||||||
|
|
||||||
|
|
||||||
|
$this->rowcolor1='#DDDDDD';
|
||||||
|
$this->rowcolor2='#CCCCCC';
|
||||||
|
$this->rowcolor_text='black';
|
||||||
|
$this->rowfont_face='geneva';
|
||||||
|
$this->rowcolor_link='black';
|
||||||
|
$this->rowfont_size='2';
|
||||||
|
$this->sale_bg='#999999';
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayTitle($title)
|
||||||
|
{
|
||||||
|
//pre: Title must be a string.
|
||||||
|
//post: Applys title to page.
|
||||||
|
|
||||||
|
echo "<center><h3><font color='$this->title_color'>$title</font></h3></center>";
|
||||||
|
}
|
||||||
|
|
||||||
|
function idToField($tablename,$field,$id)
|
||||||
|
{
|
||||||
|
//pre: $tablename, field, and id all must be valid
|
||||||
|
//post: returns a specified field based on the ID from a specified table.
|
||||||
|
|
||||||
|
$result = mysql_query("SELECT $field FROM $tablename WHERE id=\"$id\"",$this->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
|
||||||
|
return $row[$field];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getNumRows($table)
|
||||||
|
{
|
||||||
|
$query="SELECT id FROM $table";
|
||||||
|
$result=mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
return mysql_num_rows($result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayManageTable($tableprefix,$tablename,$tableheaders,$tablefields,$wherefield,$wheredata,$orderby)
|
||||||
|
{
|
||||||
|
//pre:params must be right type
|
||||||
|
//post: outputs a nice looking table that is used for manage parts of the program
|
||||||
|
|
||||||
|
if($tablename=='brands' or $tablename=='categories')
|
||||||
|
{
|
||||||
|
$tablewidth='35%';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$tablewidth='95%';
|
||||||
|
}
|
||||||
|
|
||||||
|
$table="$tableprefix"."$tablename";
|
||||||
|
echo "\n".'<center>';
|
||||||
|
|
||||||
|
if($wherefield=='quantity' and $wheredata=='outofstock')
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table WHERE quantity < 1 ORDER BY $orderby",$this->conn);
|
||||||
|
}
|
||||||
|
elseif($wherefield=='quantity' and $wheredata=='reorder')
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table WHERE quantity <= reorder_level ORDER BY $orderby",$this->conn);
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($wherefield!='' and $wheredata!='')
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table WHERE $wherefield like \"%$wheredata%\" ORDER BY $orderby",$this->conn);
|
||||||
|
}
|
||||||
|
elseif($this->getNumRows($table) >200)
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table ORDER BY $orderby LIMIT 0,200",$this->conn);
|
||||||
|
echo "{$this->lang->moreThan200} $tableprefix $table".'\'s'."{$this->lang->first200Displayed}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table ORDER BY $orderby",$this->conn);
|
||||||
|
}
|
||||||
|
echo '<hr>';
|
||||||
|
if(@mysql_num_rows($result) ==0)
|
||||||
|
{
|
||||||
|
echo "<div align='center'>{$this->lang->noDataInTable} <b>$table</b> {$this->lang->table}.</div>";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
echo "<center><h4><font color='$this->list_of_color'>{$this->lang->listOf}";
|
||||||
|
if ($tablename == "customers"){ echo " Members</font></h4></center>"; } else { echo " $tablename</font></h4></center>"; }
|
||||||
|
|
||||||
|
echo "<table cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='$tablewidth' style=\"border: $this->border_style $this->border_color $this->border_width px\">
|
||||||
|
|
||||||
|
<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
for($k=0;$k< count($tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
|
||||||
|
$rowCounter=0;
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
if($rowCounter%2==0)
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor2>\n";
|
||||||
|
}
|
||||||
|
$rowCounter++;
|
||||||
|
for($k=0;$k<count($tablefields);$k++)
|
||||||
|
{
|
||||||
|
$field=$tablefields[$k];
|
||||||
|
$data=$this->formatData($field,$row[$field],$tableprefix);
|
||||||
|
|
||||||
|
|
||||||
|
echo "\n<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$data</font>\n</td>\n";
|
||||||
|
}
|
||||||
|
if($tablename == "customers")
|
||||||
|
{
|
||||||
|
echo "<td align='center'>\n<a href=\"../members/add.php?userID=$row[id]\"><font color='$this->rowcolor_link'>{$this->lang->update}</font></a></td>
|
||||||
|
<td align='center'>\n<a href=\"javascript:decision('{$this->lang->confirmDelete} $table {$this->lang->table}?','process_form_$tablename.php?action=delete&id=$row[id]')\"><font color='$this->rowcolor_link'>{$this->lang->delete}</font></a></td>\n
|
||||||
|
<td align='center'>\n<a href=\"../members/getinfo.php?userID=$row[id]\"><font color='$this->rowcolor_link'>{$this->lang->getinfo}</font></a></td>
|
||||||
|
|
||||||
|
</tr>\n\n";
|
||||||
|
} else {
|
||||||
|
echo "<td align='center'>\n<a href=\"form_$tablename.php?action=update&id=$row[id]\"><font color='$this->rowcolor_link'>{$this->lang->update}</font></a></td>
|
||||||
|
<td align='center'>\n<a href=\"javascript:decision('{$this->lang->confirmDelete} $table {$this->lang->table}?','process_form_$tablename.php?action=delete&id=$row[id]')\"><font color='$this->rowcolor_link'>{$this->lang->delete}</font></a></td>\n</tr>\n\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '</table>'."\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayReportTable($tableprefix,$tablename,$tableheaders,$tablefields,$wherefield,$wheredata,$date1,$date2,$orderby,$subtitle)
|
||||||
|
{
|
||||||
|
echo "<center><h4><font color='$this->list_of_color'>$subtitle</font></h4></center>";
|
||||||
|
$tablewidth='85%';
|
||||||
|
|
||||||
|
$table="$tableprefix"."$tablename";
|
||||||
|
echo "\n".'<center>';
|
||||||
|
if($wherefield!='' and $wheredata!='' and $date1=='' and $date2=='')
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table WHERE $wherefield = \"$wheredata\" ORDER BY $orderby",$this->conn);
|
||||||
|
}
|
||||||
|
elseif($wherefield!='' and $wheredata!='' and $date1!='' and $date2!='')
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table WHERE $wherefield = \"$wheredata\" and date between \"$date1\" and \"$date2\" ORDER BY $orderby",$this->conn);
|
||||||
|
}
|
||||||
|
elseif($date1!='' and $date2!='')
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table WHERE date between \"$date1\" and \"$date2\" ORDER BY $orderby",$this->conn);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$result = mysql_query("SELECT * FROM $table ORDER BY $orderby",$this->conn);
|
||||||
|
}
|
||||||
|
echo '<hr>';
|
||||||
|
if(@mysql_num_rows($result) ==0)
|
||||||
|
{
|
||||||
|
echo "<div align='center'>{$this->lang->noDataInTable} <b>$table</b> {$this->lang->table}.</div>";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
echo "<table cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='$tablewidth' style=\"border: $this->border_style $this->border_color $this->border_width px\">
|
||||||
|
|
||||||
|
<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
for($k=0;$k< count($tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
|
||||||
|
|
||||||
|
$rowCounter=0;
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
if($rowCounter%2==0)
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor2>\n";
|
||||||
|
}
|
||||||
|
$rowCounter++;
|
||||||
|
for($k=0;$k<count($tablefields);$k++)
|
||||||
|
{
|
||||||
|
$field=$tablefields[$k];
|
||||||
|
|
||||||
|
if($field=='sale_details')
|
||||||
|
{
|
||||||
|
$temp_customer_id=$row['customer_id'];
|
||||||
|
$temp_date=$row['date'];
|
||||||
|
$temp_sale_id=$row['id'];
|
||||||
|
$data="<a href=\"javascript:popUp('show_details.php?sale_id=$temp_sale_id&sale_customer_id=$temp_customer_id&sale_date=$temp_date')\"><font color='$this->rowcolor_link'>{$this->lang->showSaleDetails}</font></a>";
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if($field=='brand_id' or $field=='category_id' or $field=='supplier_id')
|
||||||
|
{
|
||||||
|
$field_data=$this->idToField("$tableprefix".'items',"$field",$row['item_id']);
|
||||||
|
$data=$this->formatData($field,$field_data,$tableprefix);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$data=$this->formatData($field,$row[$field],$tableprefix);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo "\n<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$data</font>\n</td>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
echo '</table>'."\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function displaySaleManagerTable($tableprefix,$where1,$where2)
|
||||||
|
{
|
||||||
|
$tablewidth='85%';
|
||||||
|
$sales_table="$tableprefix"."sales";
|
||||||
|
$sales_items_table="$tableprefix"."sales_items";
|
||||||
|
|
||||||
|
if($where1!='' and $where2!='')
|
||||||
|
{
|
||||||
|
|
||||||
|
$sale_query="SELECT * FROM $sales_table WHERE id between \"$where1\" and \"$where2\" ORDER BY id DESC";
|
||||||
|
$sale_result=mysql_query($sale_query,$this->conn);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sale_query="SELECT * FROM $sales_table ORDER BY id DESC";
|
||||||
|
$sale_result=mysql_query($sale_query,$this->conn);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$sales_tableheaders=array("{$this->lang->date}","{$this->lang->customerName}","{$this->lang->itemsPurchased}","{$this->lang->paidWith}","{$this->lang->soldBy}","{$this->lang->saleSubTotal}","{$this->lang->saleTotalCost}","{$this->lang->saleComment}");
|
||||||
|
$sales_tablefields=array('date','customer_id','items_purchased','paid_with','sold_by','sale_sub_total','sale_total_cost','comment');
|
||||||
|
|
||||||
|
$sales_items_tableheaders=array("{$this->lang->itemName}","{$this->lang->brand}","{$this->lang->category}","{$this->lang->supplier}","{$this->lang->quantityPurchased}","{$this->lang->unitPrice}","{$this->lang->tax}","{$this->lang->itemTotalCost}","{$this->lang->updateItem}","{$this->lang->deleteItem}");
|
||||||
|
$sales_items_tablefields=array('item_id','brand_id','category_id','supplier_id','quantity_purchased','item_unit_price','item_total_tax','item_total_cost');
|
||||||
|
|
||||||
|
|
||||||
|
if(@mysql_num_rows($sale_result) < 1)
|
||||||
|
{
|
||||||
|
echo "<div align='center'>You do not have any data in the <b>sales</b> tables.</div>";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$rowCounter1=0;
|
||||||
|
echo "<center><table cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='$tablewidth' style=\"border: $this->border_style $this->border_color 3 px\"><tr><td><br>";
|
||||||
|
while($row=mysql_fetch_assoc($sale_result))
|
||||||
|
{
|
||||||
|
|
||||||
|
echo "<table align='center' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='$tablewidth' style=\"border: $this->border_style $this->border_color $this->border_width px\"><tr><td align='center'><br><b>{$this->lang->saleID} $row[id]</b>
|
||||||
|
[<a href='update_sale.php?id=$row[id]'>{$this->lang->updateSale}</a>]
|
||||||
|
[<a href=\"javascript:decision('{$this->lang->confirmDelete} $sales_table {$this->lang->table}?','delete_sale.php?id=$row[id]')\">{$this->lang->deleteEntireSale}]</a>
|
||||||
|
<table cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='$tablewidth' style=\"border: $this->border_style $this->border_color $this->border_width px\">
|
||||||
|
|
||||||
|
<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
|
||||||
|
for($k=0;$k< count($sales_tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$sales_tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
if($rowCounter1%2==0)
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor2>\n";
|
||||||
|
}
|
||||||
|
$rowCounter1++;
|
||||||
|
for($k=0;$k<count($sales_tablefields);$k++)
|
||||||
|
{
|
||||||
|
$field=$sales_tablefields[$k];
|
||||||
|
$data=$this->formatData($field,$row[$field],$tableprefix);
|
||||||
|
|
||||||
|
echo "\n<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$data</font>\n</td>\n";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr></table>';
|
||||||
|
$sale_items_query="SELECT * FROM $sales_items_table WHERE sale_id=\"$row[id]\"";
|
||||||
|
$sale_items_result=mysql_query($sale_items_query,$this->conn);
|
||||||
|
echo "<br><b>{$this->lang->itemsInSale}</b><table cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='$tablewidth' style=\"border: $this->border_style $this->border_color $this->border_width px\">
|
||||||
|
<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
|
||||||
|
for($k=0;$k<count($sales_items_tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$sales_items_tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
echo '</tr>';
|
||||||
|
|
||||||
|
$rowCounter2=0;
|
||||||
|
while($newrow=mysql_fetch_assoc($sale_items_result))
|
||||||
|
{
|
||||||
|
if($rowCounter2%2==0)
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor2>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$rowCounter2++;
|
||||||
|
for($k=0;$k<count($sales_items_tablefields);$k++)
|
||||||
|
{
|
||||||
|
$field=$sales_items_tablefields[$k];
|
||||||
|
if($field=='brand_id' or $field=='category_id' or $field=='supplier_id')
|
||||||
|
{
|
||||||
|
$field_data=$this->idToField("$tableprefix".'items',"$field",$newrow['item_id']);
|
||||||
|
$data=$this->formatData($field,$field_data,$tableprefix);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$data=$this->formatData($field,$newrow[$field],$tableprefix);
|
||||||
|
}
|
||||||
|
echo "\n<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$data</font>\n</td>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "<td align='center'>\n<a href=\"update_item.php?sale_id=$newrow[sale_id]&item_id=$newrow[item_id]&row_id=$newrow[id]\"><font color='$this->rowcolor_link'>{$this->lang->update}</font></a></td>
|
||||||
|
<td align='center'>\n<a href=\"javascript:decision('{$this->lang->confirmDelete} $sales_items_table {$this->lang->table}?','delete_item.php?sale_id=$newrow[sale_id]&item_id=$newrow[item_id]&row_id=$newrow[id]')\"><font color='$this->rowcolor_link'>{$this->lang->delete}</font></a></td>\n</tr>\n\n";
|
||||||
|
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
}
|
||||||
|
echo '</table><br></table><br>';
|
||||||
|
}
|
||||||
|
echo "</table></td></tr></table></center>";
|
||||||
|
}
|
||||||
|
function displayTotalsReport($tableprefix,$total_type,$tableheaders,$date1,$date2,$where1,$where2)
|
||||||
|
{
|
||||||
|
$sales_table="$tableprefix".'sales';
|
||||||
|
$sales_items_table="$tableprefix".'sales_items';
|
||||||
|
$items_table="$tableprefix".'items';
|
||||||
|
$brands_table="$tableprefix".'brands';
|
||||||
|
$categories_table="$tableprefix".'categories';
|
||||||
|
$suppliers_table="$tableprefix".'suppliers';
|
||||||
|
$customer_table="$tableprefix".'customers';
|
||||||
|
$users_table="$tableprefix".'users';
|
||||||
|
|
||||||
|
|
||||||
|
if($total_type=='customers')
|
||||||
|
{
|
||||||
|
echo "<center><b>{$this->lang->totalsShownBetween} $date1 {$this->lang->and} $date2</b></center>";
|
||||||
|
echo "<table align='center' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='60%' style=\"border: $this->border_style $this->border_color $this->border_width px\">";
|
||||||
|
|
||||||
|
echo "<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
|
||||||
|
for($k=0;$k< count($tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
|
||||||
|
$query="SELECT * FROM $customer_table ORDER BY last_name";
|
||||||
|
$customer_result=mysql_query($query,$this->conn);
|
||||||
|
$temp_cust_id=0;
|
||||||
|
|
||||||
|
$accum_sub_total=0;
|
||||||
|
$accum_total_cost=0;
|
||||||
|
$accum_items_purhcased=0;
|
||||||
|
$row_counter=0;
|
||||||
|
while($row=mysql_fetch_assoc($customer_result))
|
||||||
|
{
|
||||||
|
$temp_cust_id=$row['id'];
|
||||||
|
$customer_name=$this->formatData('customer_id',$temp_cust_id,$tableprefix);
|
||||||
|
$query2="SELECT * FROM $sales_table WHERE customer_id=\"$temp_cust_id\" and date between \"$date1\" and \"$date2\"";
|
||||||
|
$result2=mysql_query($query2,$this->conn);
|
||||||
|
|
||||||
|
$sub_total=0;
|
||||||
|
$total_cost=0;
|
||||||
|
$items_purchased=0;
|
||||||
|
|
||||||
|
while($row2=mysql_fetch_assoc($result2))
|
||||||
|
{
|
||||||
|
$sub_total+=$row2['sale_sub_total'];
|
||||||
|
$accum_sub_total+=$row2['sale_sub_total'];
|
||||||
|
|
||||||
|
$total_cost+=$row2['sale_total_cost'];
|
||||||
|
$accum_total_cost+=$row2['sale_total_cost'];
|
||||||
|
|
||||||
|
$items_purchased+=$row2['items_purchased'];
|
||||||
|
$accum_items_purhcased+=$row2['items_purchased'];
|
||||||
|
}
|
||||||
|
$row_counter++;
|
||||||
|
|
||||||
|
$sub_total=number_format($sub_total,2,'.', '');
|
||||||
|
$total_cost=number_format($total_cost,2,'.', '');
|
||||||
|
|
||||||
|
|
||||||
|
if($row_counter%2==0)
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor2>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$customer_name</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$items_purchased</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$sub_total</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$total_cost</font>\n</td>
|
||||||
|
</tr>";
|
||||||
|
}
|
||||||
|
echo '</table>';
|
||||||
|
$accum_sub_total=number_format($accum_sub_total,2,'.', '');
|
||||||
|
$accum_total_cost=number_format($accum_total_cost,2,'.', '');
|
||||||
|
|
||||||
|
echo "<br><table align='right' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='60%' border=0>";
|
||||||
|
echo "<tr><td>{$this->lang->totalItemsPurchased}: <b>$accum_items_purhcased</b></td></tr>
|
||||||
|
<tr><td>{$this->lang->totalWithOutTax}: <b>$this->currency_symbol$accum_sub_total</b></td></tr>
|
||||||
|
<tr><td>{$this->lang->totalWithTax}: <b>$this->currency_symbol$accum_total_cost</b></td></tr></table>";
|
||||||
|
}
|
||||||
|
elseif($total_type=='employees')
|
||||||
|
{
|
||||||
|
echo "<center><b>{$this->lang->totalsShownBetween} $date1 {$this->lang->and} $date2</b></center>";
|
||||||
|
echo "<table align='center' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='60%' style=\"border: $this->border_style $this->border_color $this->border_width px\">";
|
||||||
|
|
||||||
|
echo "<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
|
||||||
|
for($k=0;$k< count($tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
|
||||||
|
$query="SELECT * FROM $users_table ORDER BY last_name";
|
||||||
|
$employee_result=mysql_query($query,$this->conn);
|
||||||
|
$temp_cust_id=0;
|
||||||
|
|
||||||
|
$accum_sub_total=0;
|
||||||
|
$accum_total_cost=0;
|
||||||
|
$accum_items_purhcased=0;
|
||||||
|
$row_counter=0;
|
||||||
|
while($row=mysql_fetch_assoc($employee_result))
|
||||||
|
{
|
||||||
|
$temp_empl_id=$row['id'];
|
||||||
|
$employee_name=$this->formatData('user_id',$temp_empl_id,$tableprefix);
|
||||||
|
$query2="SELECT * FROM $sales_table WHERE sold_by=\"$temp_empl_id\" and date between \"$date1\" and \"$date2\"";
|
||||||
|
$result2=mysql_query($query2,$this->conn);
|
||||||
|
|
||||||
|
$sub_total=0;
|
||||||
|
$total_cost=0;
|
||||||
|
$items_purchased=0;
|
||||||
|
|
||||||
|
while($row2=mysql_fetch_assoc($result2))
|
||||||
|
{
|
||||||
|
$sub_total+=$row2['sale_sub_total'];
|
||||||
|
$accum_sub_total+=$row2['sale_sub_total'];
|
||||||
|
|
||||||
|
$total_cost+=$row2['sale_total_cost'];
|
||||||
|
$accum_total_cost+=$row2['sale_total_cost'];
|
||||||
|
|
||||||
|
$items_purchased+=$row2['items_purchased'];
|
||||||
|
$accum_items_purhcased+=$row2['items_purchased'];
|
||||||
|
}
|
||||||
|
$row_counter++;
|
||||||
|
|
||||||
|
$sub_total=number_format($sub_total,2,'.', '');
|
||||||
|
$total_cost=number_format($total_cost,2,'.', '');
|
||||||
|
|
||||||
|
|
||||||
|
if($row_counter%2==0)
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor2>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$employee_name</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$items_purchased</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$sub_total</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$total_cost</font>\n</td>
|
||||||
|
</tr>";
|
||||||
|
}
|
||||||
|
echo '</table>';
|
||||||
|
$accum_sub_total=number_format($accum_sub_total,2,'.', '');
|
||||||
|
$accum_total_cost=number_format($accum_total_cost,2,'.', '');
|
||||||
|
|
||||||
|
echo "<br><table align='right' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='60%' border=0>";
|
||||||
|
echo "<tr><td>{$this->lang->totalItemsPurchased}:<b> $accum_items_purhcased</b></td></tr>
|
||||||
|
<tr><td>{$this->lang->totalWithOutTax}: <b>$this->currency_symbol$accum_sub_total</b></td></tr>
|
||||||
|
<tr><td>{$this->lang->totalWithTax}: <b> $this->currency_symbol$accum_total_cost</b></td></tr></table>";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($total_type=='items')
|
||||||
|
{
|
||||||
|
echo "<center><b>{$this->lang->totalsShownBetween} $date1 {$this->lang->and} $date2</b></center>";
|
||||||
|
echo "<table align='center' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='70%' style=\"border: $this->border_style $this->border_color $this->border_width px\">";
|
||||||
|
|
||||||
|
echo "<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
|
||||||
|
for($k=0;$k< count($tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
|
||||||
|
|
||||||
|
$query="SELECT * FROM $items_table ORDER BY item_name";
|
||||||
|
$item_result=mysql_query($query,$this->conn);
|
||||||
|
$temp_item_id=0;
|
||||||
|
|
||||||
|
$accum_sub_total=0;
|
||||||
|
$accum_total_cost=0;
|
||||||
|
$accum_items_purhcased=0;
|
||||||
|
$row_counter=0;
|
||||||
|
while($row=mysql_fetch_assoc($item_result))
|
||||||
|
{
|
||||||
|
$temp_item_id=$row['id'];
|
||||||
|
$item_name=$this->formatData('item_id',$temp_item_id,$tableprefix);
|
||||||
|
$temp_brand=$this->idToField($brands_table,'brand',$this->idToField($items_table,'brand_id',$temp_item_id));
|
||||||
|
$temp_category=$this->idToField($categories_table,'category',$this->idToField($items_table,'category_id',$temp_item_id));
|
||||||
|
$temp_supplier=$this->idToField($suppliers_table,'supplier',$this->idToField($items_table,'supplier_id',$temp_item_id));
|
||||||
|
|
||||||
|
$query2=mysql_query("SELECT * FROM $sales_table WHERE date between \"$date1\" and \"$date2\" ORDER by id ASC",$this->conn);
|
||||||
|
$sale_row1=mysql_fetch_assoc($query2);
|
||||||
|
$low_sale_id=$sale_row1['id'];
|
||||||
|
|
||||||
|
$query3=mysql_query("SELECT * FROM $sales_table WHERE date between \"$date1\" and \"$date2\" ORDER by id DESC",$this->conn);
|
||||||
|
$sale_row2=mysql_fetch_assoc($query3);
|
||||||
|
$high_sale_id=$sale_row2['id'];
|
||||||
|
|
||||||
|
|
||||||
|
$query4="SELECT * FROM $sales_items_table WHERE item_id=\"$temp_item_id\" and sale_id between \"$low_sale_id\" and \"$high_sale_id\"";
|
||||||
|
$result4=mysql_query($query4,$this->conn);
|
||||||
|
|
||||||
|
$sub_total=0;
|
||||||
|
$total_cost=0;
|
||||||
|
$items_purchased=0;
|
||||||
|
|
||||||
|
while($row2=mysql_fetch_assoc($result4))
|
||||||
|
{
|
||||||
|
$sub_total+=$row2['item_total_cost']-$row2['item_total_tax'];
|
||||||
|
$accum_sub_total+=$row2['item_total_cost']-$row2['item_total_tax'];
|
||||||
|
|
||||||
|
$total_cost+=$row2['item_total_cost'];
|
||||||
|
$accum_total_cost+=$row2['item_total_cost'];
|
||||||
|
|
||||||
|
$items_purchased+=$row2['quantity_purchased'];
|
||||||
|
$accum_items_purhcased+=$row2['quantity_purchased'];
|
||||||
|
}
|
||||||
|
$row_counter++;
|
||||||
|
|
||||||
|
$sub_total=number_format($sub_total,2,'.', '');
|
||||||
|
$total_cost=number_format($total_cost,2,'.', '');
|
||||||
|
|
||||||
|
|
||||||
|
if($row_counter%2==0)
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor2>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$item_name</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$temp_brand</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$temp_category</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$temp_supplier</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$items_purchased</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$sub_total</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$total_cost</font>\n</td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</tr>";
|
||||||
|
}
|
||||||
|
echo '</table>';
|
||||||
|
$accum_sub_total=number_format($accum_sub_total,2,'.', '');
|
||||||
|
$accum_total_cost=number_format($accum_total_cost,2,'.', '');
|
||||||
|
|
||||||
|
echo "<br><table align='right' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='60%' border=0>";
|
||||||
|
echo "<tr><td>{$this->lang->totalItemsPurchased}:<b> $accum_items_purhcased</b></td></tr>
|
||||||
|
<tr><td>{$this->lang->totalWithOutTax}: <b>$this->currency_symbol$accum_sub_total</b></td></tr>
|
||||||
|
<tr><td>{$this->lang->totalWithTax}: <b> $this->currency_symbol$accum_total_cost</b></td></tr></table>";
|
||||||
|
}
|
||||||
|
elseif($total_type=='item')
|
||||||
|
{
|
||||||
|
echo "<center><b>{$this->lang->totalsShownBetween} $date1 {$this->lang->and} $date2</b></center>";
|
||||||
|
echo "<table align='center' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='60%' style=\"border: $this->border_style $this->border_color $this->border_width px\">";
|
||||||
|
|
||||||
|
echo "<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
|
||||||
|
for($k=0;$k< count($tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
|
||||||
|
$query="SELECT * FROM $items_table WHERE $where1=\"$where2\" ORDER BY item_name";
|
||||||
|
$item_result=mysql_query($query,$this->conn);
|
||||||
|
$row=mysql_fetch_assoc($item_result);
|
||||||
|
$temp_item_id=$row['id'];
|
||||||
|
$item_name=$this->formatData('item_id',$temp_item_id,$tableprefix);
|
||||||
|
$temp_brand=$this->idToField($brands_table,'brand',$this->idToField($items_table,'brand_id',$temp_item_id));
|
||||||
|
$temp_category=$this->idToField($categories_table,'category',$this->idToField($items_table,'category_id',$temp_item_id));
|
||||||
|
$temp_supplier=$this->idToField($suppliers_table,'supplier',$this->idToField($items_table,'supplier_id',$temp_item_id));
|
||||||
|
|
||||||
|
$item_name=$this->formatData('item_id',$temp_item_id,$tableprefix);
|
||||||
|
|
||||||
|
$query2=mysql_query("SELECT * FROM $sales_table WHERE date between \"$date1\" and \"$date2\" ORDER by id ASC",$this->conn);
|
||||||
|
$sale_row1=mysql_fetch_assoc($query2);
|
||||||
|
$low_sale_id=$sale_row1['id'];
|
||||||
|
|
||||||
|
$query3=mysql_query("SELECT * FROM $sales_table WHERE date between \"$date1\" and \"$date2\" ORDER by id DESC",$this->conn);
|
||||||
|
$sale_row2=mysql_fetch_assoc($query3);
|
||||||
|
$high_sale_id=$sale_row2['id'];
|
||||||
|
|
||||||
|
|
||||||
|
$query4="SELECT * FROM $sales_items_table WHERE item_id=\"$temp_item_id\" and sale_id between \"$low_sale_id\" and \"$high_sale_id\"";
|
||||||
|
$result4=mysql_query($query4,$this->conn);
|
||||||
|
|
||||||
|
|
||||||
|
$sub_total=0;
|
||||||
|
$total_cost=0;
|
||||||
|
$items_purchased=0;
|
||||||
|
|
||||||
|
while($row2=mysql_fetch_assoc($result4))
|
||||||
|
{
|
||||||
|
$sub_total+=$row2['item_total_cost']-$row2['item_total_tax'];
|
||||||
|
$total_cost+=$row2['item_total_cost'];
|
||||||
|
$items_purchased+=$row2['quantity_purchased'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$sub_total=number_format($sub_total,2,'.', '');
|
||||||
|
$total_cost=number_format($total_cost,2,'.', '');
|
||||||
|
|
||||||
|
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
|
||||||
|
echo "<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$item_name</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$temp_brand</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$temp_category</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$temp_supplier</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$items_purchased</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$sub_total</font>\n</td>
|
||||||
|
<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$total_cost</font>\n</td>
|
||||||
|
|
||||||
|
|
||||||
|
</tr>";
|
||||||
|
|
||||||
|
echo '</table>';
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($total_type=='profit')
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
echo "<center><b>{$this->lang->totalsShownBetween} $date1 {$this->lang->and} $date2</b></center>";
|
||||||
|
echo "<table align='center' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='40%' style=\"border: $this->border_style $this->border_color $this->border_width px\">";
|
||||||
|
|
||||||
|
echo "<tr bgcolor=$this->header_rowcolor>\n\n";
|
||||||
|
|
||||||
|
for($k=0;$k< count($tableheaders);$k++)
|
||||||
|
{
|
||||||
|
echo "<th align='center'>\n<font color='$this->header_text_color' face='$this->headerfont_face' size='$this->headerfont_size'>$tableheaders[$k]</font>\n</th>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr>'."\n\n";
|
||||||
|
|
||||||
|
$query="SELECT DISTINCT date FROM $sales_table WHERE date between \"$date1\" and \"$date2\" ORDER by date ASC";
|
||||||
|
$result=mysql_query($query);
|
||||||
|
|
||||||
|
$amount_sold=0;
|
||||||
|
$profit=0;
|
||||||
|
$total_amount_sold=0;
|
||||||
|
$total_profit=0;
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
|
||||||
|
$amount_sold=0;
|
||||||
|
$profit=0;
|
||||||
|
|
||||||
|
$distinct_date=$row['date'];
|
||||||
|
$result2=mysql_query("SELECT * FROM $sales_table WHERE date=\"$distinct_date\"",$this->conn);
|
||||||
|
|
||||||
|
echo "\n<tr bgcolor=$this->rowcolor1>\n";
|
||||||
|
|
||||||
|
echo "<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$distinct_date</font>\n</td>";
|
||||||
|
|
||||||
|
while($row2=mysql_fetch_assoc($result2))
|
||||||
|
{
|
||||||
|
$amount_sold+=$row2['sale_sub_total'];
|
||||||
|
$total_amount_sold+=$row2['sale_sub_total'];
|
||||||
|
$profit+=$this->getProfit($row2['id'],$tableprefix);
|
||||||
|
$total_profit+=$this->getProfit($row2['id'],$tableprefix);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$amount_sold=number_format($amount_sold,2,'.', '');
|
||||||
|
$profit=number_format($profit,2,'.', '');
|
||||||
|
|
||||||
|
echo "<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$amount_sold</font>\n</td>";
|
||||||
|
echo "<td align='center'>\n<font color='$this->rowcolor_text' face='$this->rowfont_face' size='$this->rowfont_size'>$this->currency_symbol$profit</font>\n</td>";
|
||||||
|
|
||||||
|
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</table>';
|
||||||
|
|
||||||
|
|
||||||
|
$total_amount_sold=number_format($total_amount_sold,2,'.', '');
|
||||||
|
$total_profit=number_format($total_profit,2,'.', '');
|
||||||
|
|
||||||
|
echo "<br><table align='right' cellspacing='$this->cellspacing' cellpadding='$this->cellpadding' bgcolor='$this->table_bgcolor' width='60%' border=0>";
|
||||||
|
echo "<tr><td>{$this->lang->totalAmountSold}: <b>$this->currency_symbol$total_amount_sold</b></td></tr>
|
||||||
|
<tr><td>{$this->lang->totalProfit}: <b>$this->currency_symbol$total_profit</b></td></tr>
|
||||||
|
</table>";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getProfit($sale_id,$tableprefix)
|
||||||
|
{
|
||||||
|
$sales_items_table="$tableprefix".'sales_items';
|
||||||
|
$query="SELECT * FROM $sales_items_table WHERE sale_id=\"$sale_id\"";
|
||||||
|
$result=mysql_query($query,$this->conn);
|
||||||
|
|
||||||
|
$profit=0;
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
$profit+=($row['item_unit_price']-$row['item_buy_price'])*$row['quantity_purchased'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $profit;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatData($field,$data,$tableprefix)
|
||||||
|
{
|
||||||
|
if($field=='unit_price' or $field=='total_cost' or $field=='buy_price' or $field=='sale_sub_total' or $field=='sale_total_cost' or $field=='item_unit_price' or $field=='item_total_cost' or $field=='item_total_tax' )
|
||||||
|
{
|
||||||
|
return "$this->currency_symbol"."$data";
|
||||||
|
}
|
||||||
|
elseif($field=='tax_percent' or $field=='percent_off')
|
||||||
|
{
|
||||||
|
return "$data".'%';
|
||||||
|
}
|
||||||
|
elseif($field=='brand_id')
|
||||||
|
{
|
||||||
|
return $this->idToField("$tableprefix".'brands','brand',$data);
|
||||||
|
}
|
||||||
|
elseif($field=='category_id')
|
||||||
|
{
|
||||||
|
return $this->idToField("$tableprefix".'categories','category',$data);
|
||||||
|
}
|
||||||
|
elseif($field=='supplier_id')
|
||||||
|
{
|
||||||
|
return $this->idToField("$tableprefix".'suppliers','supplier',$data);
|
||||||
|
}
|
||||||
|
elseif($field=='customer_id')
|
||||||
|
{
|
||||||
|
$field_first_name=$this->idToField("$tableprefix".'customers','first_name',$data);
|
||||||
|
$field_last_name=$this->idToField("$tableprefix".'customers','last_name',$data);
|
||||||
|
return $field_first_name.' '.$field_last_name;
|
||||||
|
}
|
||||||
|
elseif($field=='user_id')
|
||||||
|
{
|
||||||
|
$field_first_name=$this->idToField("$tableprefix".'users','first_name',$data);
|
||||||
|
$field_last_name=$this->idToField("$tableprefix".'users','last_name',$data);
|
||||||
|
return $field_first_name.' '.$field_last_name;
|
||||||
|
}
|
||||||
|
elseif($field=='item_id')
|
||||||
|
{
|
||||||
|
return $this->idToField("$tableprefix".'items','item_name',$data);
|
||||||
|
}
|
||||||
|
elseif($field=='sold_by')
|
||||||
|
{
|
||||||
|
$field_first_name=$this->idToField("$tableprefix".'users','first_name',$data);
|
||||||
|
$field_last_name=$this->idToField("$tableprefix".'users','last_name',$data);
|
||||||
|
return $field_first_name.' '.$field_last_name;
|
||||||
|
}
|
||||||
|
elseif($field=='supplier_id')
|
||||||
|
{
|
||||||
|
return $this->idToField("$tableprefix".'suppliers','supplier',$data);
|
||||||
|
}
|
||||||
|
elseif($field=='password')
|
||||||
|
{
|
||||||
|
return '*******';
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "$data";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
309
classes/form.php
Executable file
@ -0,0 +1,309 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class form
|
||||||
|
{
|
||||||
|
var $row_color,$text_color;
|
||||||
|
var $lang;
|
||||||
|
|
||||||
|
function form($form_action,$form_method,$form_name,$table_width,$theme,$language)
|
||||||
|
{
|
||||||
|
//pre: all parameters are strings.
|
||||||
|
//post: sets up the form header along with the table to display form
|
||||||
|
|
||||||
|
$this->lang=$language;
|
||||||
|
$getType=explode('_',$form_action);
|
||||||
|
$type=$getType[0];
|
||||||
|
|
||||||
|
if($type=='manage')
|
||||||
|
{
|
||||||
|
$url=$_SERVER['PHP_SELF'];
|
||||||
|
|
||||||
|
if(isset($_POST['search']) or isset($_GET['outofstock']) or isset($_GET['reorder']))
|
||||||
|
{
|
||||||
|
echo "<center><a href='$url'>[{$this->lang->clearSearch}]</a></center>";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "<form action='$form_action' method='$form_method' name='$form_name'>
|
||||||
|
<center>\n<table border='0' width='$table_width' cellspacing='2' cellpadding='0'>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "<form action='$form_action' method='$form_method' name='$form_name'>
|
||||||
|
<center><b>*{$this->lang->itemsInBoldRequired}</b>\n<table border='0' width='$table_width' cellspacing='2' cellpadding='0'>";
|
||||||
|
}
|
||||||
|
|
||||||
|
switch($theme)
|
||||||
|
{
|
||||||
|
//add more themes
|
||||||
|
case $theme=='serious':
|
||||||
|
$this->row_color='#DDDDDD';
|
||||||
|
$this->text_color='black';
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $theme=='big blue':
|
||||||
|
$this->row_color='#15759B';
|
||||||
|
$this->text_color='white';
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formBreak ($table_width,$theme)
|
||||||
|
{
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "<table border='0' width='$table_width' cellspacing='2' cellpadding='0'>";
|
||||||
|
}
|
||||||
|
|
||||||
|
switch($theme)
|
||||||
|
{
|
||||||
|
//add more themes
|
||||||
|
case $theme=='serious':
|
||||||
|
$this->row_color='#DDDDDD';
|
||||||
|
$this->text_color='black';
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $theme=='big blue':
|
||||||
|
$this->row_color='#15759B';
|
||||||
|
$this->text_color='white';
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function createInputField($field_title,$input_type,$input_name,$input_value,$input_size,$td_width,$disabled=NULL)
|
||||||
|
{
|
||||||
|
//pre: all parameters are strings.
|
||||||
|
//post: creates in inputField based on parameters.
|
||||||
|
|
||||||
|
echo"
|
||||||
|
<tr bgcolor=$this->row_color>
|
||||||
|
<td width='$td_width'><font color='$this->text_color'>$field_title</font></td>
|
||||||
|
<td><input type='$input_type' name='$input_name' value='$input_value' size='$input_size' $disabled></td>
|
||||||
|
</tr>\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function createCheckboxField($field_title,$check_name,$td_width,$disabled=NULL,$checked=NULL,$postlabel=NULL)
|
||||||
|
{
|
||||||
|
//pre: all parameters are strings option selected value is at pos 0.
|
||||||
|
//post: creates in CheckboxField based on parameters.
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr bgcolor=$this->row_color>
|
||||||
|
<td width='$td_width'><font color='$this->text_color'>$field_title</font></td>
|
||||||
|
<td>";
|
||||||
|
|
||||||
|
echo"<input type=checkbox name=$check_name $checked $disabled/>$postlabel<br />";
|
||||||
|
}
|
||||||
|
|
||||||
|
function createRadioField($field_title,$radio_name,$option_values,$option_titles,$td_width,$disabled=NULL,$selected=NULL)
|
||||||
|
{
|
||||||
|
//pre: all parameters are strings option selected value is at pos 0.
|
||||||
|
//post: creates in selectField based on parameters.
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr bgcolor=$this->row_color>
|
||||||
|
<td width='$td_width'><font color='$this->text_color'>$field_title</font></td>
|
||||||
|
<td>";
|
||||||
|
|
||||||
|
if($option_values[0]!='')
|
||||||
|
{
|
||||||
|
echo"<input type=radio name=$radio_name value=$option_values[0] $disabled>$option_titles[0]<br>";
|
||||||
|
}
|
||||||
|
for($k=1;$k< count($option_values); $k++)
|
||||||
|
{
|
||||||
|
if($option_values[$k]!=$option_values[0] )
|
||||||
|
{
|
||||||
|
if($selected==$option_values[$k]){
|
||||||
|
echo "<input type=radio name=$radio_name value=$option_values[$k] $disabled CHECKED>$option_titles[$k]<br>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
echo"<input type=radio name=$radio_name value=$option_values[$k] $disabled>$option_titles[$k]<br>";;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</select>
|
||||||
|
</td>
|
||||||
|
</tr>'."\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function createSelectField($field_title,$select_name,$option_values,$option_titles,$td_width,$disabled=NULL,$selected=NULL)
|
||||||
|
{
|
||||||
|
//pre: all parameters are strings option selected value is at pos 0.
|
||||||
|
//post: creates in selectField based on parameters.
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr bgcolor=$this->row_color>
|
||||||
|
<td width='$td_width'><font color='$this->text_color'>$field_title</font></td>
|
||||||
|
<td><select name='$select_name' $disabled>";
|
||||||
|
|
||||||
|
if($option_values[0]!='')
|
||||||
|
{
|
||||||
|
echo"<option value=\"$option_values[0]\">$option_titles[0]</option>";
|
||||||
|
}
|
||||||
|
for($k=1;$k< count($option_values); $k++)
|
||||||
|
{
|
||||||
|
if($option_values[$k]!=$option_values[0] )
|
||||||
|
{
|
||||||
|
if($selected==$option_values[$k]){ echo "<option value='$option_values[$k]' SELECTED>$option_titles[$k]</option>"; }
|
||||||
|
else { echo "<option value='$option_values[$k]'>$option_titles[$k]</option>"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</select>
|
||||||
|
</td>
|
||||||
|
</tr>'."\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function createDateSelectField()
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<tr bgcolor=<?php echo $this->row_color ?> ><td><b><font color=<?php echo $this->text_color ?>><?php echo" {$this->lang->fromMonth}"; ?>:</font></b> <select name=month1>
|
||||||
|
<?php
|
||||||
|
for($k=1;$k<=12;$k++)
|
||||||
|
if($k==date("n"))
|
||||||
|
echo "<option selected value=\"".$k."\">".date("M",mktime(0,0,0,$k,1,0))."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".date("M",mktime(0,0,0,$k,1,0))."</option>";
|
||||||
|
?>
|
||||||
|
</select></td>
|
||||||
|
<td><b><font color=<?php echo $this->text_color ?>><?php echo" {$this->lang->day}"; ?>:</font></b> <select name=day1>
|
||||||
|
<?php
|
||||||
|
for($k=1;$k<=31;$k++)
|
||||||
|
if($k==date("j"))
|
||||||
|
echo "<option selected value=\"".$k."\">".$k."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".$k."</option>";
|
||||||
|
?>
|
||||||
|
</select></td>
|
||||||
|
<td><b><font color=<?php echo $this->text_color ?>><?php echo" {$this->lang->year}"; ?>:</font></b> <select name=year1>
|
||||||
|
<?php
|
||||||
|
for($k=2003;$k<=date("Y");$k++)
|
||||||
|
if($k==date("Y"))
|
||||||
|
echo "<option selected value=\"".$k."\">".$k."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".$k."</option>";
|
||||||
|
?>
|
||||||
|
</select></td>
|
||||||
|
<td><b><font color=<?php echo $this->text_color ?>><?php echo" {$this->lang->toMonth}"; ?>:</font> <select name=month2>
|
||||||
|
<?php
|
||||||
|
for($k=1;$k<=12;$k++)
|
||||||
|
if($k==date("n"))
|
||||||
|
echo "<option selected value=\"".$k."\">".date("M",mktime(0,0,0,$k,1,0))."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".date("M",mktime(0,0,0,$k,1,0))."</option>";
|
||||||
|
?>
|
||||||
|
</select></td>
|
||||||
|
<td><b><font color=<?php echo $this->text_color ?>><?php echo" {$this->lang->day}"; ?>:</font></b> <select name=day2>
|
||||||
|
<?php
|
||||||
|
for($k=1;$k<=31;$k++)
|
||||||
|
if($k==date("j"))
|
||||||
|
echo "<option selected value=\"".$k."\">".$k."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".$k."</option>";
|
||||||
|
?>
|
||||||
|
</select></td>
|
||||||
|
<td><b><font color=<?php echo $this->text_color ?>><?php echo" {$this->lang->year}"; ?>:</font></b> <select name=year2>
|
||||||
|
<?php
|
||||||
|
for($k=2003;$k<=date("Y");$k++)
|
||||||
|
if($k==date("Y"))
|
||||||
|
echo "<option selected value=\"".$k."\">".$k."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".$k."</option>";
|
||||||
|
?>
|
||||||
|
</select></td></tr>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
function createSingleDateSelectField($selname=NULL)
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<tr bgcolor=<?php echo $this->row_color ?> ><td width='$td_width'><font color='<?php echo $this->text_color ?>'><?php echo $selname ?></font></td>
|
||||||
|
<td><select name=month>
|
||||||
|
<?php
|
||||||
|
for($k=1;$k<=12;$k++)
|
||||||
|
if($k==date("n"))
|
||||||
|
echo "<option selected value=\"".$k."\">".date("M",mktime(0,0,0,$k,1,0))."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".date("M",mktime(0,0,0,$k,1,0))."</option>";
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
<select name=day>
|
||||||
|
<?php
|
||||||
|
for($k=1;$k<=31;$k++)
|
||||||
|
if($k==date("j"))
|
||||||
|
echo "<option selected value=\"".$k."\">".$k."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".$k."</option>";
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
<select name=year>
|
||||||
|
<?php
|
||||||
|
$thisyear = date("Y");
|
||||||
|
for($k=$thisyear;$k<=date("Y");$k++)
|
||||||
|
if($k==date("Y"))
|
||||||
|
echo "<option selected value=\"".$k."\">".$k."</option>";
|
||||||
|
else
|
||||||
|
echo "<option value=\"".$k."\">".$k."</option>";
|
||||||
|
?>
|
||||||
|
</select></td>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function createTextareaField($field_title,$textarea_name,$textarea_rows,$textarea_cols,$textarea_value,$td_width)
|
||||||
|
{
|
||||||
|
//pre: all parameters are strings.
|
||||||
|
//post: creates a textarea field.
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr bgcolor=$this->row_color>
|
||||||
|
<td width='$td_width' valign='top'><font color='$this->text_color'>$field_title</font></td>
|
||||||
|
<td><textarea name='$textarea_name' rows='$textarea_rows' cols='$textarea_cols'>$textarea_value</textarea>";
|
||||||
|
}
|
||||||
|
|
||||||
|
function endForm()
|
||||||
|
{
|
||||||
|
//adds submit button and ends remainings tags.
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td colspan=2 align=center>$altbutton<input type=submit value=Submit></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</form>";
|
||||||
|
}
|
||||||
|
|
||||||
|
function endLibraryForm()
|
||||||
|
{
|
||||||
|
//adds submit button and ends remainings tags.
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td colspan=2 align=center><input type=submit name=signin value='Sign Bike In/Out'></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</form>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
258
classes/security_functions.php
Executable file
@ -0,0 +1,258 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class security_functions
|
||||||
|
{
|
||||||
|
var $conn;
|
||||||
|
var $lang;
|
||||||
|
var $tblprefix;
|
||||||
|
|
||||||
|
//defalt constructor which first checks if page is accessable.
|
||||||
|
function security_functions($dbf,$page_type,$language)
|
||||||
|
{
|
||||||
|
//pre: $dbf must be a db_functions object and $page_type must be a string
|
||||||
|
//post: denies access to page and stops php processing
|
||||||
|
|
||||||
|
//$page_type will be either: Public, Admin, Sales Clerk or Report Viewer.
|
||||||
|
//$usertype will be either: Admin, Sales Clerk or Report Viewer.
|
||||||
|
//Their must be a session present in order to execute authoization.
|
||||||
|
|
||||||
|
//sets class variables.
|
||||||
|
$this->conn=$dbf->conn;
|
||||||
|
$this->lang=$language;
|
||||||
|
$this->tblprefix=$dbf->tblprefix;
|
||||||
|
|
||||||
|
if(isset($_SESSION['session_user_id']))
|
||||||
|
{
|
||||||
|
$user_id=$_SESSION['session_user_id'];
|
||||||
|
|
||||||
|
$tablename="$this->tblprefix".'users';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$user_id\"",$this->conn);
|
||||||
|
//echo "$result";
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$usertype= $row['type'];
|
||||||
|
//echo "stupid";
|
||||||
|
|
||||||
|
|
||||||
|
//If the page is not public or the user is not an Admin, investigation must continue.
|
||||||
|
if($page_type!='Public' or $usertype!='Admin')
|
||||||
|
{
|
||||||
|
if($usertype!='Admin' and $usertype!='Sales Clerk' and $usertype!='Report Viewer')
|
||||||
|
{
|
||||||
|
//makes sure $usertype is not anything but Admin, Sales Clerk, Report Viewer
|
||||||
|
|
||||||
|
echo "{$this->lang->attemptedSecurityBreech}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
elseif($page_type!='Public' and $page_type!='Admin' and $page_type!='Sales Clerk' and $page_type!='Report Viewer')
|
||||||
|
{
|
||||||
|
//makes sure $page_type is not anything but Public, Admin, Sales Clerk or Report Viewer.
|
||||||
|
|
||||||
|
echo "{$this->lang->attemptedSecurityBreech}";
|
||||||
|
exit();
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif($usertype!='Admin' and $page_type=='Admin')
|
||||||
|
{
|
||||||
|
//if page is only intented for Admins but the user is not an admin, access is denied.
|
||||||
|
|
||||||
|
echo "{$this->lang->mustBeAdmin}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
elseif(($usertype=='Sales Clerk') and $page_type =='Report Viewer')
|
||||||
|
{
|
||||||
|
//Page is only intented for Report Viewers and Admins.
|
||||||
|
|
||||||
|
echo "{$this->lang->mustBeReportOrAdmin}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
elseif(($usertype=='Report Viewer') and $page_type =='Sales Clerk')
|
||||||
|
{
|
||||||
|
//Page is only intented for Sales Clerks and Admins.
|
||||||
|
|
||||||
|
echo "{$this->lang->mustBeSalesClerkOrAdmin}";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*if(!$this->isLoggedIn()){
|
||||||
|
header("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
if(!$this->isOpen()){
|
||||||
|
header("location: ../books/openshop.php");
|
||||||
|
exit();
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
function isLoggedIn()
|
||||||
|
{
|
||||||
|
//returns boolean based on if user is logged in.
|
||||||
|
|
||||||
|
if(isset($_SESSION['session_user_id']))
|
||||||
|
{
|
||||||
|
$user_id=$_SESSION['session_user_id'];
|
||||||
|
$tablename="$this->tblprefix".'users';
|
||||||
|
$result = mysql_query ("SELECT * FROM $tablename WHERE id=\"$user_id\"",$this->conn);
|
||||||
|
$num = @mysql_num_rows($result);
|
||||||
|
if($num> 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkLogin($username,$password)
|
||||||
|
{
|
||||||
|
//pre: $username and $password must be strings. ($password is encrypted)
|
||||||
|
//post: returns boolean based on if their login was succesfull.
|
||||||
|
|
||||||
|
$tablename="$this->tblprefix".'users';
|
||||||
|
$result = mysql_query ("SELECT * FROM $tablename WHERE username=\"$username\" and password=\"$password\"",$this->conn);
|
||||||
|
$num = @mysql_num_rows($result);
|
||||||
|
|
||||||
|
if($num > 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeSale()
|
||||||
|
{
|
||||||
|
//deletes sessions vars
|
||||||
|
session_unregister('items_in_sale');
|
||||||
|
session_unregister('current_sale_customer_id');
|
||||||
|
session_unregister('current_item_search');
|
||||||
|
session_unregister('current_customer_search');
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkMembership($userID)
|
||||||
|
{
|
||||||
|
global $cfg_membershipID;
|
||||||
|
// Construct the join query
|
||||||
|
$memquery = "SELECT sales.id, sales_items.sale_id, sales_items.item_id, DATE_ADD( sales.date, INTERVAL 1 YEAR ) AS expires
|
||||||
|
FROM sales, sales_items
|
||||||
|
WHERE sales.id = sales_items.sale_id
|
||||||
|
AND sales_items.item_id=$cfg_membershipID
|
||||||
|
AND sales.customer_id=$userID
|
||||||
|
ORDER BY sales.date DESC
|
||||||
|
LIMIT 1;";
|
||||||
|
//"SELECT sales.id, sales_items.sale_id, sales_items.item_id, DATE_ADD(sales.date, INTERVAL 1 YEAR) as expires ".
|
||||||
|
//"FROM sales, sales_items "."WHERE sales.id = sales_items.sale_id AND sales_items.item_id = '$cfg_membershipID' AND sales.customer_id = '$userID'";
|
||||||
|
$memresult = mysql_query($memquery) or die(mysql_error());
|
||||||
|
|
||||||
|
if(mysql_num_rows($memresult) < 1){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Get expiry date
|
||||||
|
$today = date('Y-m-d');
|
||||||
|
$row = mysql_fetch_array($memresult);
|
||||||
|
$expires = $row['expires'];
|
||||||
|
if($row[item_id] == "1" && $expires >= $today){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkWaiver($userID)
|
||||||
|
{
|
||||||
|
// If Membership is ok, check waiver
|
||||||
|
$waiverresult = mysql_query("SELECT waiver FROM customers WHERE id='$userID'");
|
||||||
|
if (!$waiverresult) { die("Query to check on status of liability waiver failed"); }
|
||||||
|
while ($waiverrow = mysql_fetch_array($waiverresult)) {
|
||||||
|
if ($waiverrow[waiver] == 0 || $waiverrow[waiver] == ""){ return false; } else { return true; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function signinMember($userID, $intime, $activity)
|
||||||
|
{
|
||||||
|
global $cfg_reqmembership;
|
||||||
|
$isinresult = mysql_query("SELECT userID FROM visits WHERE endout IS NULL");
|
||||||
|
if (!$isinresult) { die("Query to show fields from table failed"); }
|
||||||
|
|
||||||
|
while($isinrow = mysql_fetch_array($isinresult)){
|
||||||
|
if($userID == "$isinrow[userID]"){
|
||||||
|
die("<b>Bike Error!! User is already signed in...</b>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// MAKE SURE THEY'VE PAID THEIR MEMBERSHIP (IF REQUIRED BY CONFIG FILE)
|
||||||
|
if($cfg_reqmembership == "1" && !$this->checkMembership($userID)){
|
||||||
|
echo "Membership not paid or expired!<br /><a href=\"../home.php\">Go Home --></a>";
|
||||||
|
die('');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Have you been a naughty schoolchild and not signed your waiver? PUNISH!
|
||||||
|
if(!$this->checkWaiver($userID)){
|
||||||
|
echo "Waiver not signed. Sign waiver, or no shop access you naughty boy!<br /><a href=\"../home.php\">Go Home --></a>";
|
||||||
|
die('');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ADD IT TO THE VISITS DATABASE
|
||||||
|
|
||||||
|
$in = mktime($_POST[hour], $_POST[minute], 0, $_POST[month], $_POST[day], $_POST[year]);
|
||||||
|
$tdin = date('Y-m-d H:i:s');
|
||||||
|
//$activity = $_POST[activity];
|
||||||
|
|
||||||
|
if($userID){
|
||||||
|
$query = "INSERT INTO `visits` (`userID` ,`intime` ,`activity`) VALUES ('$userID', '$tdin', '$activity')";
|
||||||
|
// echo "IT FJDSFDSA $query";
|
||||||
|
mysql_query($query);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isOpen()
|
||||||
|
{
|
||||||
|
//include("settings.php");
|
||||||
|
//echo "must open = $cfg_company";
|
||||||
|
//if($cfg_mustOpen == "yes"){
|
||||||
|
//echo "$this->conn";
|
||||||
|
//return false;
|
||||||
|
//}
|
||||||
|
//return false;
|
||||||
|
//$tablename="$this->tblprefix".'users';
|
||||||
|
//$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$user_id\"",$this->conn);
|
||||||
|
|
||||||
|
/*$today = date("Y-m-d");
|
||||||
|
$le = mysql_query("SELECT event, date FROM books WHERE event='1' OR event='2' ORDER BY listID DESC LIMIT 1", $this->conn);
|
||||||
|
//$le = mysql_query("SELECT * FROM books");//, $this->conn) or die(mysql_error());// WHERE event='1' OR event='2' ORDER BY listID DESC LIMIT 1", $this->conn);
|
||||||
|
$lastevent = mysql_fetch_assoc($le);
|
||||||
|
if(!$lastevent || $lastevent['event'] == 2 || $lastevent[date] != $today){// || !mysql_num_rows(mysql_query("SELECT * FROM books WHERE date='$today' AND event='1'"))){
|
||||||
|
return false;
|
||||||
|
}*/return true;
|
||||||
|
//}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isMechanicHere()
|
||||||
|
{
|
||||||
|
return mysql_fetch_array(mysql_query("SELECT userID FROM visits WHERE endout IS NULL AND activity='Mechanic'"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function vaildMailman ($host)
|
||||||
|
{
|
||||||
|
$valid = @fsockopen("$host", 80, $errno, $errstr, 30);
|
||||||
|
if ($valid) return TRUE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
59
customers/customers_barcode.php
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
<?php session_start();
|
||||||
|
include ("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
if(isset($_GET['generateWith']))
|
||||||
|
{
|
||||||
|
$generateWith=$_GET['generateWith'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$generateWith='id';
|
||||||
|
}
|
||||||
|
|
||||||
|
$display->displayTitle("$lang->customersBarcode"." ($generateWith)");
|
||||||
|
echo "<a href='customers_barcode.php?generateWith=account_number'>$lang->accountNumber</a> / <a href='customers_barcode.php?generateWith=id'>id</a>";
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$customers_table=$cfg_tableprefix.'customers';
|
||||||
|
$result=mysql_query("SELECT * FROM $customers_table ORDER by last_name",$dbf->conn);
|
||||||
|
|
||||||
|
echo '<table border=0 width=85% align=center cellspacing=5 cellpadding=12>
|
||||||
|
|
||||||
|
<tr>';
|
||||||
|
|
||||||
|
$counter=0;
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
if($counter%2==0)
|
||||||
|
{
|
||||||
|
echo '</tr><tr>';
|
||||||
|
}
|
||||||
|
echo "<td align='center'><img src='../classes/barcode.php?barcode=$row[$generateWith]&width=227&text=*$row[last_name], $row[first_name]*'></td>";
|
||||||
|
|
||||||
|
$counter++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr></table>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
15
customers/error_log
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[10-Mar-2017 00:43:46 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:43:48 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:43:51 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:44:28 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:44:28 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:44:31 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:44:33 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:56:19 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:56:25 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:56:30 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:57:44 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:57:44 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 00:57:47 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 01:05:43 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
||||||
|
[10-Mar-2017 01:07:10 America/Toronto] PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/variousa/public_html/pos/classes/db_functions.php on line 24
|
102
customers/form_customers.php
Executable file
@ -0,0 +1,102 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$first_name_value='';
|
||||||
|
$last_name_value='';
|
||||||
|
$account_number_value='';
|
||||||
|
$phone_number_value='';
|
||||||
|
$email_value='';
|
||||||
|
$street_address_value='';
|
||||||
|
$comments_value='';
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
//decides if the form will be used to update or add a user.
|
||||||
|
if(isset($_GET['action']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="insert";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current users data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
$display->displayTitle("Update a Member");
|
||||||
|
|
||||||
|
if(isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$id=$_GET['id'];
|
||||||
|
$tablename = "$cfg_tableprefix".'customers';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$id\"",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$first_name_value=$row['first_name'];
|
||||||
|
$last_name_value=$row['last_name'];
|
||||||
|
$account_number_value=$row['account_number'];
|
||||||
|
$phone_number_value=$row['phone_number'];
|
||||||
|
$email_value=$row['email'];
|
||||||
|
$street_address_value=$row['street_address'];
|
||||||
|
$comments_value=$row['comments'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("Add a Member");
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_customers.php','POST','customers','450',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
$f1->createInputField("<b>$lang->firstName:</b> ",'text','first_name',"$first_name_value",'24','150');
|
||||||
|
$f1->createInputField("<b>$lang->lastName:</b> ",'text','last_name',"$last_name_value",'24','150');
|
||||||
|
$f1->createInputField("$lang->accountNumber: ",'text','account_number',"$account_number_value",'24','150');
|
||||||
|
$f1->createInputField("<b>$lang->phoneNumber</b> ",'text','phone_number',"$phone_number_value",'24','150');
|
||||||
|
$f1->createInputField("$lang->email:",'text','email',"$email_value",'24','150');
|
||||||
|
$f1->createInputField("$lang->streetAddress:",'text','street_address',"$street_address_value",'24','150');
|
||||||
|
$f1->createInputField("$lang->commentsOrOther:",'text','comments',"$comments_value",'40','150');
|
||||||
|
|
||||||
|
//sends 2 hidden varibles needed for process_form_users.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$id'>";
|
||||||
|
$f1->endForm();
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
57
customers/index.php
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
<?php session_start();
|
||||||
|
include ("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
$tablename = $cfg_tableprefix.'users';
|
||||||
|
$auth = $dbf->idToField($tablename,'type',$_SESSION['session_user_id']);
|
||||||
|
$first_name = $dbf->idToField($tablename,'first_name',$_SESSION['session_user_id']);
|
||||||
|
$last_name= $dbf->idToField($tablename,'last_name',$_SESSION['session_user_id']);
|
||||||
|
$today = date("Y-m-d");
|
||||||
|
if($auth=="Sales Clerk"){
|
||||||
|
if(!$sec->isOpen()){
|
||||||
|
header("location: ../books/openshop.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo "
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<table border=\"0\" width=\"500\">
|
||||||
|
<tr>
|
||||||
|
<td><img border=\"0\" src=\"../images/customers.gif\" width=\"41\" height=\"33\" valign='top'><font color='#005B7F' size='4'> <b>Members</b></font><br>
|
||||||
|
<br>
|
||||||
|
<font face=\"Verdana\" size=\"2\">Welcome to the Members panel! Here you can manage our members database. What would you like to do?</font>
|
||||||
|
<ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"../members/add.php?action=insert\">New Member</a></font></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"manage_customers.php\">Edit or remove Members</a></font></li>
|
||||||
|
|
||||||
|
|
||||||
|
<br /><br />
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"customers_barcode.php\">Member Barcode Sheet (don't even bother...)</a></font></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>";
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
74
customers/manage_customers.php
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<SCRIPT LANGUAGE="Javascript">
|
||||||
|
<!---
|
||||||
|
function decision(message, url)
|
||||||
|
{
|
||||||
|
if(confirm(message) )
|
||||||
|
{
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --->
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
$display->displayTitle("Manage Members");
|
||||||
|
|
||||||
|
$f1=new form('manage_customers.php','POST','customers','450',$cfg_theme,$lang);
|
||||||
|
$f1->createInputField("<b>$lang->searchForCustomer</b>",'text','search','','24','150');
|
||||||
|
|
||||||
|
$option_values2=array('first_name','last_name','account_number','id');
|
||||||
|
$option_titles2=array("$lang->firstName","$lang->lastName","$lang->accountNumber",'ID');
|
||||||
|
$f1->createSelectField("<b>$lang->searchBy</b>",'searching_by',$option_values2,$option_titles2,100);
|
||||||
|
|
||||||
|
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
|
||||||
|
$tableheaders=array("$lang->rowID","$lang->lastName","$lang->firstName","$lang->phoneNumber","$lang->email","$lang->streetAddress","Update/Edit Member","Remove Member","Get User Info/Records");
|
||||||
|
$tablefields=array('id','last_name','first_name','phone_number','email','street_address');
|
||||||
|
|
||||||
|
if(isset($_POST['search']))
|
||||||
|
{
|
||||||
|
$search=$_POST['search'];
|
||||||
|
$searching_by =$_POST['searching_by'];
|
||||||
|
echo "<center>$lang->searchedForItem: <b>$search</b> $lang->searchBy <b>$searching_by</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'customers',$tableheaders,$tablefields,"$searching_by","$search",'last_name');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'customers',$tableheaders,$tablefields,'','','last_name');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
111
customers/process_form_customers.php
Executable file
@ -0,0 +1,111 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
//creates 3 objects needed for this script.
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Sales Clerk',$lang);
|
||||||
|
|
||||||
|
//checks if user is logged in.
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//variables needed globably in this file.
|
||||||
|
$tablename="$cfg_tableprefix".'customers';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//checks to see if action is delete and an ID is specified. (only delete uses $_GET.)
|
||||||
|
if(isset($_GET['action']) and isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
$id=$_GET['id'];
|
||||||
|
|
||||||
|
}
|
||||||
|
//checks to make sure data is comming from form ($action is either delete or update)
|
||||||
|
elseif(isset($_POST['first_name']) and isset($_POST['last_name']) and isset($_POST['account_number'])
|
||||||
|
and isset($_POST['phone_number']) and isset($_POST['email']) and isset($_POST['street_address']) and isset($_POST['comments']) and isset($_POST['id']) and isset($_POST['action']) )
|
||||||
|
{
|
||||||
|
|
||||||
|
$action=$_POST['action'];
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
//gets variables entered by user.
|
||||||
|
$first_name = $_POST['first_name'];
|
||||||
|
$last_name = $_POST['last_name'];
|
||||||
|
$account_number = $_POST['account_number'];
|
||||||
|
$phone_number = $_POST['phone_number'];
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$street_address = $_POST['street_address'];
|
||||||
|
$comments = $_POST['comments'];
|
||||||
|
|
||||||
|
|
||||||
|
//insure all fields are filled in.
|
||||||
|
if($first_name=='' or $last_name=='' or $phone_number=='')
|
||||||
|
{
|
||||||
|
echo "$lang->forgottenFields";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$field_names=array('first_name','last_name','account_number','phone_number','email','street_address','comments');
|
||||||
|
$field_data=array("$first_name","$last_name","$account_number","$phone_number","$email","$street_address","$comments");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//outputs error message because user did not use form to fill out data.
|
||||||
|
echo "$lang->mustUseForm";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
//finds out what action needs to be taken and preforms it by calling methods from dbf class.
|
||||||
|
case $action=="insert":
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="update":
|
||||||
|
$dbf->update($field_names,$field_data,$tablename,$id,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="delete":
|
||||||
|
$dbf->deleteRow($tablename,$id);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
echo "$lang->noActionSpecified";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<br>
|
||||||
|
<a href="manage_customers.php">Manage Members--></a>
|
||||||
|
<br>
|
||||||
|
<a href="../biketree/users/add.php?action=insert">Add a New Member--></a>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
docker/.Dockerfile.swp
Normal file
20
docker/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#############
|
||||||
|
# biketree #
|
||||||
|
#############
|
||||||
|
# Password is password for &
|
||||||
|
|
||||||
|
# docker run -d --name bikebike --env VIRTUAL_HOST=bikebike.wvcompletestreets.org --expose 80 -v /home/freesource/public_html/bikebike:/usr/share/nginx/html nginx:1.11-alpine
|
||||||
|
|
||||||
|
FROM nginx:1.11-alpine
|
||||||
|
|
||||||
|
MAINTAINER Jonathan Rosenbaum <gnuser@gmail.com>
|
||||||
|
|
||||||
|
RUN rm -rf /usr/share/nginx/html; apk update; apk add git; apk add php5-mysql
|
||||||
|
RUN git clone https://github.com/fspc/biketree.git /usr/share/nginx/html
|
||||||
|
COPY settings.php /usr/share/nginx/html
|
||||||
|
COPY default.conf /etc/nginx/conf.d
|
||||||
|
RUN chown -R nginx:nginx /usr/share/nginx/html; mkdir /var/www; ln -sf /usr/share/nginx/html/ /var/www/html
|
||||||
|
RUN chown -R nginx:nginx /var/www/html/images/
|
||||||
|
|
||||||
|
VOLUME /usr/share/nginx/html
|
||||||
|
|
16
docker/Dockerfile-fpm
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#############
|
||||||
|
# biketree #
|
||||||
|
#############
|
||||||
|
# Password is password for &
|
||||||
|
|
||||||
|
FROM php:5-fpm-alpine
|
||||||
|
|
||||||
|
MAINTAINER Jonathan Rosenbaum <gnuser@gmail.com>
|
||||||
|
|
||||||
|
# better hardwire www-data in the future in /etc/password
|
||||||
|
# and make sure nginx also starts with same user
|
||||||
|
RUN chown -R www-data:www-data /var/www/html; apk update; \
|
||||||
|
apk add php5-mysql; \
|
||||||
|
cp -a /etc/php5/* /usr/local/etc/php; \
|
||||||
|
cp /usr/lib/php5/modules/mysql.so `php-config --extension-dir`/; \
|
||||||
|
|
BIN
docker/codeforbikebike.tar.gz
Normal file
69
docker/default.conf
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
#server_name localhost;
|
||||||
|
|
||||||
|
#charset koi8-r;
|
||||||
|
#access_log /var/log/nginx/log/host.access.log main;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root /var/www/html;
|
||||||
|
index index.php index.html index.htm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# location ~ \.(gif)$ {
|
||||||
|
# root /var/www/html;
|
||||||
|
# }
|
||||||
|
|
||||||
|
#error_page 404 /404.html;
|
||||||
|
|
||||||
|
# redirect server error pages to the static page /50x.html
|
||||||
|
#
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
|
||||||
|
#
|
||||||
|
#location ~ \.php$ {
|
||||||
|
# proxy_pass http://127.0.0.1;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
||||||
|
#
|
||||||
|
# location ~ \.php$ {
|
||||||
|
#@ root html;
|
||||||
|
# fastcgi_pass fpm:9000;
|
||||||
|
# fastcgi_index index.php;
|
||||||
|
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
|
||||||
|
# include fastcgi_params;
|
||||||
|
# }
|
||||||
|
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
fastcgi_pass fpm:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# location ~ \.php$ {
|
||||||
|
# fastcgi_pass fpm:9000;
|
||||||
|
# fastcgi_index index.php;
|
||||||
|
# include fastcgi_params;
|
||||||
|
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
# fastcgi_param HTTPS off;
|
||||||
|
# }
|
||||||
|
|
||||||
|
# deny access to .htaccess files, if Apache's document root
|
||||||
|
# concurs with nginx's one
|
||||||
|
#
|
||||||
|
#location ~ /\.ht {
|
||||||
|
# deny all;
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
|
71
docker/docker-compose.yml
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
version: '2'
|
||||||
|
|
||||||
|
# git clone https://github.com/fspc/biketree.git
|
||||||
|
# This compose file uses jrcs/letsencrypt-nginx-proxy-companion
|
||||||
|
|
||||||
|
# using nginx-alpine
|
||||||
|
services:
|
||||||
|
biketree:
|
||||||
|
container_name: biketree
|
||||||
|
build: .
|
||||||
|
network_mode: "bridge"
|
||||||
|
#restart: always
|
||||||
|
environment:
|
||||||
|
- VIRTUAL_HOST=biketree.bikelover.org
|
||||||
|
- LETSENCRYPT_HOST=biketree.bikelover.org
|
||||||
|
- LETSENCRYPT_EMAIL="bike@bikelover.org"
|
||||||
|
links:
|
||||||
|
- fpm
|
||||||
|
volumes:
|
||||||
|
- fpm:/usr/share/nginx/html
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
|
||||||
|
# https://hub.docker.com/_/php/
|
||||||
|
fpm:
|
||||||
|
container_name: biketree-fpm
|
||||||
|
build:
|
||||||
|
context: ./
|
||||||
|
dockerfile: Dockerfile-fpm
|
||||||
|
#image: php:5-fpm-alpine
|
||||||
|
network_mode: "bridge"
|
||||||
|
#restart: always
|
||||||
|
environment:
|
||||||
|
- PHP_INI_DIR=/etc/php/
|
||||||
|
links:
|
||||||
|
- mysql
|
||||||
|
volumes:
|
||||||
|
- fpm:/var/www/html
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
|
||||||
|
# https://hub.docker.com/_/mysql/
|
||||||
|
mysql:
|
||||||
|
container_name: biketree-mysql
|
||||||
|
image: mysql:5.5
|
||||||
|
network_mode: "bridge"
|
||||||
|
#restart: always
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=whatever
|
||||||
|
- MYSQL_USER=biketree
|
||||||
|
- MYSQL_PASSWORD=password
|
||||||
|
- MYSQL_DATABASE=biketree
|
||||||
|
volumes:
|
||||||
|
- data:/var/lib/mysql
|
||||||
|
- ./sql:/docker-entrypoint-initdb.d
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data:
|
||||||
|
fpm:
|
||||||
|
|
42
docker/settings.php
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
$cfg_company="The Bike Root";
|
||||||
|
$cfg_address="Positive Spin,
|
||||||
|
Morgantown,
|
||||||
|
WV, USA";
|
||||||
|
$cfg_phone="123-456-7890";
|
||||||
|
$cfg_email="jr@bikelover.org";
|
||||||
|
$cfg_fax="";
|
||||||
|
$cfg_website="http://biketree.wvcompletestreets.org";
|
||||||
|
$cfg_other="";
|
||||||
|
$cfg_server="mysql";
|
||||||
|
$cfg_database="biketree";
|
||||||
|
$cfg_username="biketree";
|
||||||
|
$cfg_password="password";
|
||||||
|
$cfg_tableprefix="";
|
||||||
|
$cfg_default_tax_rate="0";
|
||||||
|
$cfg_currency_symbol="$";
|
||||||
|
$cfg_theme="serious";
|
||||||
|
$cfg_numberForBarcode="Row ID";
|
||||||
|
$cfg_language="english.php";
|
||||||
|
$cfg_reqmembership="1";
|
||||||
|
$cfg_membershipID="1";
|
||||||
|
$cfg_sellToNonMembers="1";
|
||||||
|
$cfg_emailFromAddress="jr@bikelover.org";
|
||||||
|
$cfg_dailyLateFee="2";
|
||||||
|
$cfg_mailmanLocation="bikelover.org";
|
||||||
|
$cfg_mailmanListName1="newsletter";
|
||||||
|
$cfg_mailmanListName2="volunteers";
|
||||||
|
$cfg_mailmanListName3="steering";
|
||||||
|
$cfg_mailmanPass="yourpassword";
|
||||||
|
$cfg_adminAutoSignin="1";
|
||||||
|
$cfg_mechAutoSignin="option";
|
||||||
|
$cfg_administratorTitle="Administrator";
|
||||||
|
$cfg_mechanicTitle="Mechanic";
|
||||||
|
$cfg_mustOpen="0";
|
||||||
|
# weird stuff has to use mysql host, this time 172.17.0.32
|
||||||
|
$db_host = "localhost";
|
||||||
|
$db_user = "biketree";
|
||||||
|
$db_pwd = "password";
|
||||||
|
$database = "biketree";
|
||||||
|
|
||||||
|
?>
|
8368
docker/sql/biketree.sql
Normal file
340
general_public_license.txt
Executable file
@ -0,0 +1,340 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
43
generaltodo.php
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
<h3> General To-Do</h3>
|
||||||
|
<?
|
||||||
|
|
||||||
|
|
||||||
|
$querytwo = "SELECT * FROM todolist WHERE completed=0";
|
||||||
|
$todoquery = mysql_query("$querytwo",$dbf->conn);
|
||||||
|
echo mysql_error();
|
||||||
|
while($todoarray = mysql_fetch_array($todoquery)){
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<div style=\"background: #cccccc; text-align: center;\">
|
||||||
|
<b><em>To Do: $todoarray[name]</em></b>
|
||||||
|
</div><div style=\"width: 180px; background: #eeeeee; border: 1px solid #aaaaaa\">
|
||||||
|
|
||||||
|
<a href=\"javascript:toggleDivOL('todo$todoarray[id]');\">[Info/Edit +/-]</a>";
|
||||||
|
echo "<div id=\"todo$todoarray[id]\" class=\"repairDiv\" style=\"position: absolute; left: -4000px;\">";
|
||||||
|
echo "<form name=todo$todoarray[id] enctype=\"multipart/form-data\" method=\"POST\" action=\"todosubmit.php?id=$todoarray[id]&action=update\">";
|
||||||
|
echo "<textarea name=\"content\" rows=\"12\" style=\"margin: 0px; padding: 0px;\">$todoarray[content]</textarea>";
|
||||||
|
echo "<input type=\"submit\" value=\"Save Changes\"><br /></form>";
|
||||||
|
echo "<a href=\"todosubmit.php?action=update&completed=yes&id=$todoarray[id]\">[Task Completed]</a>";
|
||||||
|
echo "</div>";
|
||||||
|
|
||||||
|
//FORM FOR NEW TO DO ITEMS
|
||||||
|
echo " </div><br />";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<div style=\"background: #cccccc; text-align: center;\">
|
||||||
|
<b><em>To Do: Add a new item</em></b>
|
||||||
|
</div><div style=\"width: 180px; background: #eeeeee; border: 1px solid #aaaaaa\">";
|
||||||
|
echo "<form name=addtodo enctype=\"multipart/form-data\" method=\"POST\" action=\"todosubmit.php?action=insert\">";
|
||||||
|
echo "<input type=\"text\" value=\"...name goes here\" name=\"name\" size=\"16\">";
|
||||||
|
echo "<div id=\"addtodo\" class=\"repairDiv\">";
|
||||||
|
echo "<textarea name=\"content\" rows=\"8\" style=\"margin: 0px; padding: 0px;\">Description goes here..</textarea>";
|
||||||
|
echo "<input type=\"submit\" value=\"Add Item\"><br /></form>";
|
||||||
|
echo "</div>";
|
||||||
|
|
||||||
|
|
||||||
|
echo " </div><br />";
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
382
home.php
Executable file
@ -0,0 +1,382 @@
|
|||||||
|
<?php session_start();
|
||||||
|
|
||||||
|
include ("settings.php");
|
||||||
|
include ("language/$cfg_language");
|
||||||
|
include ("classes/db_functions.php");
|
||||||
|
include ("classes/security_functions.php");
|
||||||
|
|
||||||
|
function getdailycash() {
|
||||||
|
$today = date("Y-m-d");
|
||||||
|
$total = 0;
|
||||||
|
|
||||||
|
$cashresult = mysql_query("SELECT sale_total_cost FROM sales WHERE date='$today'");
|
||||||
|
while ($casharray = mysql_fetch_array($cashresult)){ $total = $total + $casharray[sale_total_cost]; }
|
||||||
|
return $total;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getdailyvisits() {
|
||||||
|
$today = date("Y-m-d");
|
||||||
|
return mysql_num_rows(mysql_query("SELECT DISTINCT userID FROM visits WHERE DATE_FORMAT(intime, '%Y-%m-%d')='$today' AND activity NOT IN ('Mechanic', 'Administrator')"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function getmembercount() {
|
||||||
|
return mysql_num_rows(mysql_query("SELECT DISTINCT sales.customer_id FROM sales, sales_items WHERE sales_items.item_id=1 AND sales.id=sales_items.sale_id AND DATE_ADD(sales.date, INTERVAL 1 YEAR)>=NOW()"));//SELECT id FROM customers"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function getvolunteerhours() {
|
||||||
|
|
||||||
|
/*$vquery = "SELECT *, DATE_FORMAT(endout,'%l:%i %p') as humanout, DATE_FORMAT(intime,'%b %e, %Y') as humanindate, DATE_FORMAT(intime,'%l:%i %p') as humanintime, UNIX_TIMESTAMP(intime) as unixin, UNIX_TIMESTAMP(endout) as unixout FROM visits WHERE endout IS NOT NULL AND activity!='dogfucking' AND activity!='using'";* /
|
||||||
|
$vresult = mysql_query($vquery);
|
||||||
|
if (!$vresult) { echo mysql_error(); }
|
||||||
|
$totalseconds=0;
|
||||||
|
while($row = mysql_fetch_array($vresult)){
|
||||||
|
$timespent = $row[unixout] - $row[unixin];
|
||||||
|
$totalseconds = $totalseconds + $timespent;
|
||||||
|
}
|
||||||
|
return round($totalseconds/3600);*/
|
||||||
|
$vquery = "SELECT ROUND(SUM(TIMESTAMPDIFF(MINUTE,intime,endout))/60) AS total FROM visits WHERE activity NOT IN ('volunteering', 'Administrator', 'Mechanic');";
|
||||||
|
$vresult = mysql_query($vquery);
|
||||||
|
$row = mysql_fetch_array($vresult);
|
||||||
|
return $row[total];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getmonth($m=0) {
|
||||||
|
return (($m==0 ) ? date("F") : date("F", mktime(0,0,0,$m)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Public',$lang);
|
||||||
|
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn()){
|
||||||
|
header ("location: login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$tablename = $cfg_tableprefix.'users';
|
||||||
|
$auth = $dbf->idToField($tablename,'type',$_SESSION['session_user_id']);
|
||||||
|
$first_name = $dbf->idToField($tablename,'first_name',$_SESSION['session_user_id']);
|
||||||
|
$last_name= $dbf->idToField($tablename,'last_name',$_SESSION['session_user_id']);
|
||||||
|
|
||||||
|
if(cfg_mustOpen && !$sec->isOpen()){
|
||||||
|
header("location: books/openshop.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$name=$first_name.' '.$last_name;
|
||||||
|
$dbf->optimizeTables();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<HTML>
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
body{
|
||||||
|
font-family: verdana;
|
||||||
|
font-size: 12px;
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
line-height: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3{
|
||||||
|
font-family: verdana;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: #9aadd0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#maincontainer{
|
||||||
|
width: 1000px; /*Width of main container*/
|
||||||
|
margin: 0 auto; /*Center container on page*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#topsection{
|
||||||
|
background: #91a4ac;
|
||||||
|
height: 60px; /*Height of top section*/
|
||||||
|
width: 998px;
|
||||||
|
border-right: 1px dotted #000000;
|
||||||
|
border-left: 1px dotted #000000;
|
||||||
|
border-bottom: 1px dotted #000000;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#topsection h1{
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#contentwrapper{
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#contentcolumn{
|
||||||
|
|
||||||
|
margin-left: 200px; /*Margin for content column. Should be (RightColumnWidth + LeftColumnWidth)*/
|
||||||
|
margin-right: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftcolumn{
|
||||||
|
|
||||||
|
border-right: 1px dotted black;
|
||||||
|
float: left;
|
||||||
|
width: 200px; /*Width of left column in pixel*/
|
||||||
|
margin-left: -1000px; /*Set left margin to -(MainContainerWidth)*/
|
||||||
|
background: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#rightcolumn{
|
||||||
|
|
||||||
|
border-left: 1px dotted black;
|
||||||
|
float: left;
|
||||||
|
width: 199px; /*Width of right column in pixels*/
|
||||||
|
margin-left: -400px; /*Set right margin to -(MainContainerWidth - LeftColumnWidth)*/
|
||||||
|
background: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#rightercolumn{
|
||||||
|
|
||||||
|
border-left: 1px dotted black;
|
||||||
|
float: left;
|
||||||
|
width: 198px; /*Width of right column in pixels*/
|
||||||
|
margin-left: -200px; /*Set right margin to -(MainContainerWidth - LeftColumnWidth)*/
|
||||||
|
background: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer{
|
||||||
|
clear: left;
|
||||||
|
width: 100%;
|
||||||
|
background: black;
|
||||||
|
color: #FFF;
|
||||||
|
text-align: center;
|
||||||
|
padding: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer a{
|
||||||
|
color: #FFFF80;
|
||||||
|
}
|
||||||
|
|
||||||
|
.innertube{
|
||||||
|
margin: 10px; /*Margins for inner DIV inside each column (to provide padding)*/
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.lateDiv {
|
||||||
|
width: 180px;
|
||||||
|
padding: 2px 2px 8px 2px;
|
||||||
|
background-color: #BBBBBB;
|
||||||
|
color: #000000;
|
||||||
|
border-top: 4px solid #000000;
|
||||||
|
border-right: 1px solid #000000;
|
||||||
|
border-bottom: 0px solid #000000;
|
||||||
|
border-left: 1px solid #000000;
|
||||||
|
|
||||||
|
}
|
||||||
|
.testDiv {
|
||||||
|
width: 180px;
|
||||||
|
padding: 2px;
|
||||||
|
margin-left: -2px;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
color: #000000;
|
||||||
|
border-top: 1px dashed #000000;
|
||||||
|
border-right: 0px solid #000000;
|
||||||
|
border-bottom: 1px solid #000000;
|
||||||
|
border-left: 0px solid #000000;
|
||||||
|
|
||||||
|
}
|
||||||
|
.repairDiv {
|
||||||
|
width: 176px;
|
||||||
|
padding: 2px;
|
||||||
|
margin-left: -1px;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
color: #000000;
|
||||||
|
border-top: 1px dashed #000000;
|
||||||
|
border-right: 1px solid #000000;
|
||||||
|
border-bottom: 1px solid #000000;
|
||||||
|
border-left: 1px solid #000000;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
|
function toggleDivOL( elemID )
|
||||||
|
{
|
||||||
|
var elem = document.getElementById( elemID );
|
||||||
|
if( elem.style.position != 'absolute' )
|
||||||
|
{
|
||||||
|
elem.style.position = 'absolute';
|
||||||
|
elem.style.left = '-4000px';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
elem.style.position = 'relative';
|
||||||
|
elem.style.left = '0px';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
if($auth=="Admin")
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<p>
|
||||||
|
<img border="0" src="images/home_print.gif" width="33" height="29" valign="top"><font color="#005B7F" size="4"> <b><?php echo $lang->home ?></b></font></p>
|
||||||
|
<p><font face="Verdana" size="2"><?php echo "$lang->welcomeTo $cfg_company's -BikeTree- bike co-op management software."; ?> </font></p>
|
||||||
|
<ul>
|
||||||
|
<li><font face="Verdana" size="2"><a href="<?php echo "backupDB.php?onlyDB=$cfg_database&StartBackup=complete&nohtml=1"?>" ><?php echo $lang->backupDatabase ?></a></font></li>
|
||||||
|
<li><font face="Verdana" size="2"><a href="sales/sale_ui.php"><?php echo $lang->processSale ?></a></font></li>
|
||||||
|
<li><font face="Verdana" size="2"><a href="users/index.php"><?php echo $lang->addRemoveManageUsers ?></a></font></li>
|
||||||
|
<li><font face="Verdana" size="2"><a href="customers/index.php"><?php echo $lang->addRemoveManageCustomers ?></a></font></li>
|
||||||
|
<li><font face="Verdana" size="2"><a href="items/index.php"><?php echo $lang->addRemoveManageItems ?></a></font></li>
|
||||||
|
<li><font face="Verdana" size="2"><a href="reports/index.php"><?php echo $lang->viewReports ?></a></font></li>
|
||||||
|
<li><font face="Verdana" size="2"><a href="settings/index.php"><?php echo $lang->configureSettings ?></a></font></li>
|
||||||
|
<li><font face="Verdana" size="2"><a href="http://forums.phppointofsale.com"><?php echo $lang->viewOnlineSupport ?></a><br> </font></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<?php } elseif($auth=="Sales Clerk") { ?>
|
||||||
|
<!---
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse"
|
||||||
|
|
||||||
|
bordercolor="#111111" width="550" id="AutoNumber1">
|
||||||
|
<tr>
|
||||||
|
<td width="37">
|
||||||
|
<img border="0" src="images/home_print.gif" width="33" height="29"></td>
|
||||||
|
<td width="513"><font face="Verdana" size="4" color="#336699"><?php echo "$name
|
||||||
|
$lang->home" ?></font></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
--->
|
||||||
|
<div id="maincontainer">
|
||||||
|
|
||||||
|
<div id="topsection"><div class="innertube"><b style="
|
||||||
|
border-top: 1px solid #FFFFFF;
|
||||||
|
border-left: 1px solid #FFFFFF;
|
||||||
|
border-right: 1px solid #000000;
|
||||||
|
border-bottom: 1px solid #000000;
|
||||||
|
background: #CCCCCC;
|
||||||
|
padding: 0px 2px 2px 2px;">Quick Tasks & Stats</b>
|
||||||
|
<span style="font-weight: bold; text-align: left; padding-left: 50px;">Today's Cash: $<? echo getdailycash(); ?></span><span style="font-weight: bold; text-align: left; padding-left: 50px;">Visitors Today: <? echo getdailyvisits(); ?></span><span style="font-weight: bold; text-align: left; padding-left: 50px;">Current Member Count: <? echo getmembercount(); ?></span><span style="font-weight: bold; text-align: left; padding-left: 50px;">Total Volunteer Hours: <? echo getvolunteerhours(); ?></span><div style="width: 980px; line-height: 0; border-bottom: 1px dashed #000000"> </div>
|
||||||
|
|
||||||
|
|
||||||
|
<?
|
||||||
|
// sending query
|
||||||
|
$userLogin = $_SESSION['session_user_id'];
|
||||||
|
$data = $dbf->idToField($cfg_tableprefix.'users', 'settings', $userLogin);
|
||||||
|
$firstlast = $data;// & 1);
|
||||||
|
$query = "SELECT id,first_name,last_name FROM customers ORDER BY ";
|
||||||
|
$sortedlink = "<a href=\"settingsupdate.php?mask=1";
|
||||||
|
//echo "$firstlast";
|
||||||
|
if($firstlast){
|
||||||
|
$query.= "first_name ASC";
|
||||||
|
$sortedlink.= "&op=1\">First
|
||||||
|
Last</a>";
|
||||||
|
}else{
|
||||||
|
$query.= "last_name ASC";
|
||||||
|
$sortedlink.= "\">Last, First</a>";
|
||||||
|
}
|
||||||
|
$result = mysql_query($query);
|
||||||
|
if (!$result) {
|
||||||
|
die("Query to show fields from table failed");
|
||||||
|
}
|
||||||
|
$fields_num = mysql_num_fields($result);
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!--div style="text-align: left;margin-top=-5px;padding-top=-10px;font-size=5px;">Last, First</div-->
|
||||||
|
<div width="450px" style="float: left;">
|
||||||
|
<form name=booking enctype="multipart/form-data" method="POST" action="members/signinsubmit.php" style="text-align: right; margin-bottom: 0px; padding-bottom: 0px">
|
||||||
|
<font face="Verdana" size="2">Sign In (<span style="font-size: 9px;"><? echo "$sortedlink"; ?></span>):</font>
|
||||||
|
<select name="userID">
|
||||||
|
<?
|
||||||
|
while($field = mysql_fetch_array($result)) {
|
||||||
|
if($firstlast){
|
||||||
|
echo "<option value=\"$field[id]\">$field[first_name] $field[last_name] </option> ";
|
||||||
|
}else{
|
||||||
|
echo "<option value=\"$field[id]\">$field[last_name], $field[first_name] </option> ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
<font face="Verdana" size="2">Doing:</font>
|
||||||
|
<select name="activity">
|
||||||
|
<? if(!$sec->isMechanicHere()){ echo "<option value=\"Mechanic\" SELECTED>Mechanic</option><option value=\"using\">";}else{echo "<option value=\"using\" SELECTED>";} ?>
|
||||||
|
Using the Shop</option>
|
||||||
|
<option value="volunteering">Volunteering</option>
|
||||||
|
<!--option value="Working">Mechanic/Admin</option-->
|
||||||
|
<option value="dogfucking">Hanging Out</option>
|
||||||
|
<option value="train_mech">Mechanic Training</option>
|
||||||
|
</select>
|
||||||
|
<input type="submit" name="submit" value="Sign IN" >
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div width="450px"><form name=booking enctype="multipart/form-data" method="POST" action="library/form_library.php" style="text-align: right;">
|
||||||
|
<font face="Verdana" size="2">Library sign in/out</font>
|
||||||
|
<input type="text" name="bikeID" value="Bike Number..." size="10" onfocus="this.value = '';">
|
||||||
|
<input type="submit" name="submit" value="Ok Go!">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
</div></div>
|
||||||
|
|
||||||
|
<div id="contentwrapper">
|
||||||
|
<div id="contentcolumn">
|
||||||
|
<div class="innertube"> <br /><? include('membersin.php'); ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="leftcolumn">
|
||||||
|
<div class="innertube"><br /><? include('latebikes.php'); ?></div>
|
||||||
|
<!--div class="innertube"><br /><? include('repairsneeded.php'); ?></div -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--div id="rightcolumn">
|
||||||
|
<div class="innertube"><br /><? include('repairsneeded.php'); ?></div>
|
||||||
|
</div-->
|
||||||
|
|
||||||
|
<div id="rightercolumn">
|
||||||
|
<div class="innertube"><br /><? include('generaltodo.php'); ?></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse"
|
||||||
|
|
||||||
|
bordercolor="#111111" width="550" id="AutoNumber1">
|
||||||
|
<tr>
|
||||||
|
<td width="37">
|
||||||
|
<img border="0" src="images/home_print.gif" width="33" height="29"></td>
|
||||||
|
<td width="513"><font face="Verdana" size="4" color="#336699"><?php echo "$name
|
||||||
|
$lang->home"?></font></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p><font face="Verdana" size="2"><?php echo "$lang->welcomeTo $cfg_company $lang->reportViewerHomeWelcomeMessage"; ?>
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
BIN
images/config.gif
Executable file
After Width: | Height: | Size: 997 B |
BIN
images/customers.gif
Executable file
After Width: | Height: | Size: 998 B |
BIN
images/home_print.gif
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
images/install_pos.gif
Executable file
After Width: | Height: | Size: 1.4 KiB |
BIN
images/items.gif
Executable file
After Width: | Height: | Size: 983 B |
BIN
images/login.gif
Executable file
After Width: | Height: | Size: 21 KiB |
BIN
images/login_01.gif
Executable file
After Width: | Height: | Size: 1.0 KiB |
BIN
images/login_02.gif
Executable file
After Width: | Height: | Size: 319 B |
BIN
images/login_03.gif
Executable file
After Width: | Height: | Size: 1.2 KiB |
BIN
images/login_04.gif
Executable file
After Width: | Height: | Size: 974 B |
BIN
images/login_05.gif
Executable file
After Width: | Height: | Size: 195 B |
BIN
images/login_06.gif
Executable file
After Width: | Height: | Size: 951 B |
BIN
images/login_07.gif
Executable file
After Width: | Height: | Size: 6.5 KiB |
BIN
images/login_08.gif
Executable file
After Width: | Height: | Size: 882 B |
BIN
images/login_09.gif
Executable file
After Width: | Height: | Size: 405 B |
BIN
images/login_10.gif
Executable file
After Width: | Height: | Size: 116 B |
BIN
images/login_bg.gif
Executable file
After Width: | Height: | Size: 174 B |
BIN
images/menubar_01.gif
Executable file
After Width: | Height: | Size: 6.9 KiB |
BIN
images/menubar_02.gif
Executable file
After Width: | Height: | Size: 2.0 KiB |
BIN
images/menubar_03.gif
Executable file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/menubar_04.gif
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/menubar_05.gif
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/menubar_06.gif
Executable file
After Width: | Height: | Size: 1.7 KiB |
BIN
images/menubar_07.gif
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/menubar_bg.gif
Executable file
After Width: | Height: | Size: 1.2 KiB |
BIN
images/menubar_bottom.gif
Executable file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/menubar_reports_01.gif
Executable file
After Width: | Height: | Size: 994 B |
BIN
images/menubar_reports_02.gif
Executable file
After Width: | Height: | Size: 997 B |
BIN
images/menubar_reports_03.gif
Executable file
After Width: | Height: | Size: 914 B |
BIN
images/menubar_reports_04.gif
Executable file
After Width: | Height: | Size: 918 B |
BIN
images/menubar_reports_05.gif
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/menubar_reports_06.gif
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/menubar_sales_01.gif
Executable file
After Width: | Height: | Size: 2.3 KiB |
BIN
images/menubar_sales_02.gif
Executable file
After Width: | Height: | Size: 2.6 KiB |
BIN
images/menubar_sales_03.gif
Executable file
After Width: | Height: | Size: 914 B |
BIN
images/menubar_sales_04.gif
Executable file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/menubar_sales_05.gif
Executable file
After Width: | Height: | Size: 2.2 KiB |
BIN
images/menubar_sales_06.gif
Executable file
After Width: | Height: | Size: 2.2 KiB |
BIN
images/reports.gif
Executable file
After Width: | Height: | Size: 986 B |
BIN
images/sales.gif
Executable file
After Width: | Height: | Size: 977 B |
BIN
images/spacer.gif
Executable file
After Width: | Height: | Size: 799 B |
BIN
images/uhohbg.gif
Executable file
After Width: | Height: | Size: 2.6 KiB |
45
index.php
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
<?php session_start();
|
||||||
|
include ("settings.php");
|
||||||
|
if(empty($cfg_language) or empty($cfg_database))
|
||||||
|
{
|
||||||
|
echo "It appears that you have not installed PHP Point Of Sale, please
|
||||||
|
go to the <a href='install/index.php'>install page</a>.";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
include ("language/$cfg_language");
|
||||||
|
include ("classes/db_functions.php");
|
||||||
|
include ("classes/security_functions.php");
|
||||||
|
|
||||||
|
//create 3 objects that are needed in this script.
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Public',$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$dbf->optimizeTables();
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<HTML>
|
||||||
|
<head>
|
||||||
|
<title>The Bike Tree :: Bike Co-op Management</title>
|
||||||
|
</head>
|
||||||
|
<frameset border="0" frameborder="no" framespacing="0" rows="100,*">
|
||||||
|
<frame name="TopFrame" noresize scrolling="no" src="menubar.php">
|
||||||
|
<frame name="MainFrame" noresize src="home.php">
|
||||||
|
</frameset>
|
||||||
|
<noframes>
|
||||||
|
<body bgcolor="#FFFFFF" text="#000000">
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</noframes>
|
||||||
|
</HTML>
|
31
install/index.php
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Language Select</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<form name="language" action="installer.php" method="POST">
|
||||||
|
Language Select: <select name="language" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1">
|
||||||
|
<?php
|
||||||
|
$handle = opendir('../language');
|
||||||
|
while (false !== ($file = readdir($handle)))
|
||||||
|
{
|
||||||
|
if ($file {0}!='.')
|
||||||
|
{
|
||||||
|
$temp_lang=ucfirst(substr($file,0,strpos($file,'.')));
|
||||||
|
echo "<option value='$file'>$temp_lang</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<input type="submit">
|
||||||
|
</form>
|
||||||
|
</center>
|
||||||
|
</body>
|
||||||
|
</html>
|
181
install/installer.php
Executable file
@ -0,0 +1,181 @@
|
|||||||
|
<?php
|
||||||
|
$language=$_POST['language'];
|
||||||
|
|
||||||
|
$info="
|
||||||
|
<?php
|
||||||
|
\$cfg_language=\"$language\";
|
||||||
|
|
||||||
|
?>";
|
||||||
|
$open = fopen( "../settings.php", "w+" ) or die ( "Operation Failed!" );
|
||||||
|
fputs( $open, "$info" );
|
||||||
|
fclose( $open );
|
||||||
|
|
||||||
|
|
||||||
|
include("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
$lang=new language();
|
||||||
|
?>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>PHP Point of Sale <?php echo $lang->installation ?></title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body leftmargin="0">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img border="0" src="../images/install_pos.gif" width="202" height="73"></p>
|
||||||
|
<form method="POST" action="makeinstall.php" name=install>
|
||||||
|
<p>
|
||||||
|
<font face="Verdana" size="2"><?php echo $lang->installerWelcomeMessage ?></font></p>
|
||||||
|
<div align="left">
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="432" id="AutoNumber1">
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->companyName ?>:</font></b></td>
|
||||||
|
<td width="242">
|
||||||
|
<p align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="companyName" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><?php echo $lang->address ?>:</font></td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<textarea name="companyAddress" rows="4" cols="27" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></textarea></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->phoneNumber ?>:</font></b></td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="companyPhone" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><?php echo $lang->email ?>:<i> </i></font>
|
||||||
|
</td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="companyEmail" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><?php echo $lang->fax ?>:<i> </i></font>
|
||||||
|
</td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="companyFax" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><?php echo $lang->website ?>:<i> </i></font>
|
||||||
|
</td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="companyWebsite" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><?php echo $lang->other ?>:<i> </i></font>
|
||||||
|
</td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="companyOther" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190"> </td>
|
||||||
|
<td width="242" align="center"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->databaseServer ?>:</font></b></td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="databaseServer" onClick="document.install.databaseServer.value=''" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1" value="localhost"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->databaseName ?>:</font></b></td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="databaseName" value="<?php echo $lang->mustExist ?>" onClick="document.install.databaseName.value=''" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->databaseUsername ?>:</font></b></td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="text" name="databaseUsername" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->databasePassword ?>:</font></b></td>
|
||||||
|
<td width="242" align="center"><font face="Verdana" size="2">
|
||||||
|
<input type="password" name="databasePassword" size="30" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->defaultTaxRate ?>:</font></b></td>
|
||||||
|
<td width="242" align="left"> <font face="Verdana" size="2">
|
||||||
|
<input type="text" name="settingsTaxRate" size="4" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"> <i>%</i></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->currencySymbol ?>:</font></b></td>
|
||||||
|
<td width="242" align="left"> <font face="Verdana" size="2">
|
||||||
|
<input type="text" name="currencySymbol" size="2" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><b><font face="Verdana" size="2"><?php echo $lang->theme ?>:</font></b></td>
|
||||||
|
<td width="242" align="left"> <font face="Verdana" size="2">
|
||||||
|
<select size="1" name="settingsDefaultTheme" style="border-style: solid; border-width: 1">
|
||||||
|
<option value="big blue"><?php echo $lang->bigBlue ?></option>
|
||||||
|
<option value="serious"><?php echo $lang->serious ?></option>
|
||||||
|
</select></font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><?php echo $lang->tablePrefix ?>:</font></td>
|
||||||
|
<td width="242" align="left"> <font face="Verdana" size="5">
|
||||||
|
<input type="text" name="tableprefix" size="5" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1">_</font></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><b><?php echo $lang->numberToUseForBarcode ?>:</b></font></td>
|
||||||
|
<td width="242" align="left"> <font face="Verdana" size="5">
|
||||||
|
<select size="1" name="numberForBarcode" style="border-style: solid; border-width: 1">
|
||||||
|
<option value="Row ID"><?php echo $lang->rowID ?></option>
|
||||||
|
<option value="Account/Item Number"><?php echo "$lang->accountNumber/$lang->itemNumber"?></option>
|
||||||
|
</select>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="190">
|
||||||
|
<p align="right"><font face="Verdana" size="2"><b><?php echo $lang->language ?>:</b></font></td>
|
||||||
|
<td width="242" align="left"> <font face="Verdana" size="5">
|
||||||
|
<select name="language" style="border-style: solid; border-width: 1; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1">
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$temp_lang=ucfirst(substr($cfg_language,0,strpos($cfg_language,'.')));
|
||||||
|
echo "<option selected value='$cfg_language'>$temp_lang</option>";
|
||||||
|
$handle = opendir('../language');
|
||||||
|
while (false !== ($file = readdir($handle)))
|
||||||
|
{
|
||||||
|
if ($file {0}!='.' && $file!=$cfg_language)
|
||||||
|
{
|
||||||
|
$temp_lang=ucfirst(substr($file,0,strpos($file,'.')));
|
||||||
|
echo "<option value='$file'>$temp_lang</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
</select></font></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p> *<?php echo $lang->whenYouFirstLogIn ?>:<b>admin</b> <?php echo $lang->and ?> <?php echo $lang->yourPasswordIs ?>:<b>pointofsale</b></p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<p> <b><font face="Verdana" size="2">*<?php echo $lang->itemsInBoldRequired ?></font></b><br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<input type="submit" value="<?php echo $lang->install ?>" name="installPOS" style="color: #006699; font-family: Verdana; font-size: 10pt; font-weight: bold; border: 1px solid #006699; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1; background-color: #C0C0C0"></p>
|
||||||
|
</form>
|
||||||
|
<p><font face="Verdana" size="2"><br>
|
||||||
|
<br>
|
||||||
|
</font></p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
332
install/makeinstall.php
Executable file
@ -0,0 +1,332 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>PHP Point Of Sale</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
//Gets the info that was typed in on the form.
|
||||||
|
$companyName=$_POST['companyName'];
|
||||||
|
$companyAddress=$_POST['companyAddress'];
|
||||||
|
$companyPhone=$_POST['companyPhone'];
|
||||||
|
$companyEmail=$_POST['companyEmail'];
|
||||||
|
$companyFax=$_POST['companyFax'];
|
||||||
|
$companyWebsite=$_POST['companyWebsite'];
|
||||||
|
$companyOther=$_POST['companyOther'];
|
||||||
|
$databaseServer=$_POST['databaseServer'];
|
||||||
|
$databaseName=$_POST['databaseName'];
|
||||||
|
$databaseUsername=$_POST['databaseUsername'];
|
||||||
|
$databasePassword=$_POST['databasePassword'];
|
||||||
|
$settingsDefaultTheme=$_POST['settingsDefaultTheme'];
|
||||||
|
$settingsCurrencySymbol=$_POST['currencySymbol'];
|
||||||
|
$settingsTaxPercent=$_POST['settingsTaxRate'];
|
||||||
|
$tableprefix=$_POST['tableprefix']!='' ? $_POST['tableprefix'].'_' :'';
|
||||||
|
$numberForBarcode=$_POST['numberForBarcode'];
|
||||||
|
$language=$_POST['language'];
|
||||||
|
|
||||||
|
include ("../language/$language");
|
||||||
|
$lang=new language();
|
||||||
|
//Checks to make sure the required fields were filled out.
|
||||||
|
if($companyName=='' or $companyPhone=='' or $databaseServer=='' or $databaseName=='' or $databaseUsername=='' or $databasePassword=='' or $settingsCurrencySymbol=='' or $settingsTaxPercent=='' or $language=='')
|
||||||
|
{
|
||||||
|
echo "<b>$lang->forgottenFields</b>";
|
||||||
|
exit;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!(@mysql_connect("$databaseServer", "$databaseUsername", "$databasePassword")) or !(@mysql_select_db($databaseName)))
|
||||||
|
{
|
||||||
|
echo"<center>
|
||||||
|
<table border='0'>
|
||||||
|
<tr>
|
||||||
|
<td background='message.gif' width='430' height='82'>
|
||||||
|
<center><font face='verdana' color='white'>$lang->problemConnectingToDB</center>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table></center>";
|
||||||
|
exit;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*Writes the info to a settings file which the program needs for all database connections
|
||||||
|
and displaying info about the company.
|
||||||
|
*/
|
||||||
|
$info="<?php
|
||||||
|
\$cfg_company=\"$companyName\";
|
||||||
|
\$cfg_address=\"$companyAddress\";
|
||||||
|
\$cfg_phone=\"$companyPhone\";
|
||||||
|
\$cfg_email=\"$companyEmail\";
|
||||||
|
\$cfg_fax=\"$companyFax\";
|
||||||
|
\$cfg_website=\"$companyWebsite\";
|
||||||
|
\$cfg_other=\"$companyOther\";
|
||||||
|
\$cfg_server=\"$databaseServer\";
|
||||||
|
\$cfg_database=\"$databaseName\";
|
||||||
|
\$cfg_username=\"$databaseUsername\";
|
||||||
|
\$cfg_password=\"$databasePassword\";
|
||||||
|
\$cfg_tableprefix=\"$tableprefix\";
|
||||||
|
\$cfg_default_tax_rate=\"$settingsTaxPercent\";
|
||||||
|
\$cfg_currency_symbol=\"$settingsCurrencySymbol\";
|
||||||
|
\$cfg_theme=\"$settingsDefaultTheme\";
|
||||||
|
\$cfg_numberForBarcode=\"$numberForBarcode\";
|
||||||
|
\$cfg_language=\"$language\";
|
||||||
|
?>";
|
||||||
|
$open = fopen( "../settings.php", "w+" ) or die ( "Operation Failed!" );
|
||||||
|
fputs( $open, "$info" );
|
||||||
|
fclose( $open );
|
||||||
|
|
||||||
|
//Creates the Database the user wants
|
||||||
|
include ("../settings.php");
|
||||||
|
$db = mysql_connect("$databaseServer", "$databaseUsername", "$databasePassword");
|
||||||
|
mysql_select_db("$databaseName",$db);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Puts the correct table structure in the database, so the user can begin to use the program!
|
||||||
|
$brands=$tableprefix.'brands';
|
||||||
|
$categories=$tableprefix.'categories';
|
||||||
|
$customers=$tableprefix.'customers';
|
||||||
|
$discounts=$tableprefix.'discounts';
|
||||||
|
$items=$tableprefix.'items';
|
||||||
|
$sales=$tableprefix.'sales';
|
||||||
|
$sales_items=$tableprefix.'sales_items';
|
||||||
|
$suppliers=$tableprefix.'suppliers';
|
||||||
|
$users=$tableprefix.'users';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$MAKETABLES="
|
||||||
|
|
||||||
|
# phpMyAdmin SQL Dump
|
||||||
|
# version 2.5.6
|
||||||
|
# http://www.phpmyadmin.net
|
||||||
|
#
|
||||||
|
# Host: localhost
|
||||||
|
# Generation Time: Aug 17, 2004 at 05:30 PM
|
||||||
|
# Server version: 4.0.15
|
||||||
|
# PHP Version: 4.3.6
|
||||||
|
#
|
||||||
|
# Database : `pos`
|
||||||
|
#
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `brands`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $brands (
|
||||||
|
brand varchar(30) NOT NULL default '',
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='Contains brands that items use to be more descriptive';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `brands`
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `categories`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $categories (
|
||||||
|
category varchar(30) NOT NULL default '',
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='Contains categories that items use to be more descriptive';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `categories`
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `customers`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $customers (
|
||||||
|
first_name varchar(75) NOT NULL default '',
|
||||||
|
last_name varchar(75) NOT NULL default '',
|
||||||
|
account_number varchar(10) NOT NULL default '',
|
||||||
|
phone_number varchar(25) NOT NULL default '',
|
||||||
|
email varchar(40) NOT NULL default '',
|
||||||
|
street_address varchar(150) NOT NULL default '',
|
||||||
|
comments blob NOT NULL,
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='Customer Info.';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `customers`
|
||||||
|
#
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `discounts`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $discounts (
|
||||||
|
item_id int(8) NOT NULL default '0',
|
||||||
|
percent_off varchar(60) NOT NULL default '' ,
|
||||||
|
comment blob NOT NULL,
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='This table keeps track of item discounts';
|
||||||
|
#
|
||||||
|
# Dumping data for table `discounts`
|
||||||
|
#
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `items`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $items (
|
||||||
|
item_name varchar(30) NOT NULL default '',
|
||||||
|
item_number varchar(15) NOT NULL default '',
|
||||||
|
description blob NOT NULL,
|
||||||
|
brand_id int(8) NOT NULL default '0',
|
||||||
|
category_id int(8) NOT NULL default '0',
|
||||||
|
supplier_id int(8) NOT NULL default '0',
|
||||||
|
buy_price varchar(30) NOT NULL default '',
|
||||||
|
unit_price varchar(30) NOT NULL default '',
|
||||||
|
supplier_catalogue_number varchar(60) NOT NULL default '',
|
||||||
|
tax_percent varchar(5) NOT NULL default '',
|
||||||
|
total_cost varchar(40) NOT NULL default '',
|
||||||
|
quantity int(8) NOT NULL default '0',
|
||||||
|
reorder_level int(8) NOT NULL default '0',
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='Item Info.';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `items`
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `sales`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $sales (
|
||||||
|
date date NOT NULL default '0000-00-00',
|
||||||
|
customer_id int(8) NOT NULL default '0',
|
||||||
|
sale_sub_total varchar(12) NOT NULL default '',
|
||||||
|
sale_total_cost varchar(30) NOT NULL default '',
|
||||||
|
paid_with varchar(25) NOT NULL default '',
|
||||||
|
items_purchased int(8) NOT NULL default '0',
|
||||||
|
sold_by int(8) NOT NULL default '0',
|
||||||
|
comment varchar(100) NOT NULL default '',
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='Contains overall sale details';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `sales`
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `sales_items`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $sales_items (
|
||||||
|
sale_id int(8) NOT NULL default '0',
|
||||||
|
item_id int(8) NOT NULL default '0',
|
||||||
|
quantity_purchased int(8) NOT NULL default '0',
|
||||||
|
item_unit_price varchar(15) NOT NULL default '',
|
||||||
|
item_buy_price varchar(30) NOT NULL default '',
|
||||||
|
item_tax_percent varchar(10) NOT NULL default '',
|
||||||
|
item_total_tax varchar(12) NOT NULL default '',
|
||||||
|
item_total_cost varchar(12) NOT NULL default '',
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='Table that holds item information for sales';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `sales_items`
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `suppliers`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $suppliers (
|
||||||
|
supplier varchar(60) NOT NULL default '',
|
||||||
|
address varchar(100) NOT NULL default '',
|
||||||
|
phone_number varchar(40) NOT NULL default '',
|
||||||
|
contact varchar(60) NOT NULL default '',
|
||||||
|
email varchar(50) NOT NULL default '',
|
||||||
|
other varchar(150) NOT NULL default '',
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='Hold information about suppliers';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `suppliers`
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
|
||||||
|
#
|
||||||
|
# Table structure for table `users`
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE $users (
|
||||||
|
first_name varchar(50) NOT NULL default '',
|
||||||
|
last_name varchar(50) NOT NULL default '',
|
||||||
|
username varchar(20) NOT NULL default '',
|
||||||
|
password varchar(60) NOT NULL default '',
|
||||||
|
type varchar(30) NOT NULL default '',
|
||||||
|
id int(8) NOT NULL auto_increment,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) TYPE=MyISAM COMMENT='User info. that the program needs';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dumping data for table `users`
|
||||||
|
#
|
||||||
|
|
||||||
|
INSERT INTO $users VALUES ('John', 'Doe', 'admin', '439a6de57d475c1a0ba9bcb1c39f0af6', 'Admin', 1);
|
||||||
|
|
||||||
|
";
|
||||||
|
|
||||||
|
//Does the query to put it in the database.
|
||||||
|
$array =explode (';' ,$MAKETABLES );
|
||||||
|
foreach($array as $single_query )
|
||||||
|
{
|
||||||
|
$result =mysql_query ($single_query ,$db );
|
||||||
|
}
|
||||||
|
|
||||||
|
echo"<center>
|
||||||
|
<table border='0'>
|
||||||
|
<tr>
|
||||||
|
<td background='message.gif' width='430' height='82'>
|
||||||
|
<center><font face='verdana' color='white' size='2'>$lang->installSuccessfull</center>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table></center>";
|
||||||
|
exit;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
install/message.gif
Executable file
After Width: | Height: | Size: 1.8 KiB |
85
items/brands/form_brands.php
Executable file
@ -0,0 +1,85 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
include ("../../classes/form.php");
|
||||||
|
include ("../../classes/display.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$brand_value='';
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
//decides if the form will be used to update or add a user.
|
||||||
|
if(isset($_GET['action']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="insert";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current users data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->updateBrand");
|
||||||
|
if(isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$id=$_GET['id'];
|
||||||
|
$tablename = "$cfg_tableprefix".'brands';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$id\"",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$brand_value=$row['brand'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->addBrand");
|
||||||
|
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_brands.php','POST','brands','300',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
$f1->createInputField("<b>$lang->brandName:</b>",'text','brand',"$brand_value",'24','150');
|
||||||
|
|
||||||
|
//sends 2 hidden varibles needed for process_form_users.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$id'>";
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
68
items/brands/manage_brands.php
Executable file
@ -0,0 +1,68 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<SCRIPT LANGUAGE="Javascript">
|
||||||
|
<!---
|
||||||
|
function decision(message, url)
|
||||||
|
{
|
||||||
|
if(confirm(message) )
|
||||||
|
{
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --->
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
include ("../../classes/display.php");
|
||||||
|
include ("../../classes/form.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
$display->displayTitle("$lang->manageBrands");
|
||||||
|
|
||||||
|
$f1=new form('manage_brands.php','POST','brands','425',$cfg_theme,$lang);
|
||||||
|
$f1->createInputField("<b>$lang->searchForBrand</b>",'text','search','','24','350');
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$tableheaders=array("$lang->rowID","$lang->brandName","$lang->updateBrand","$lang->deleteBrand");
|
||||||
|
$tablefields=array('id','brand');
|
||||||
|
|
||||||
|
if(isset($_POST['search']))
|
||||||
|
{
|
||||||
|
$search=$_POST['search'];
|
||||||
|
echo "<center>$lang->searchedForBrand: <b>$search</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'brands',$tableheaders,$tablefields,'brand',"$search",'brand');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'brands',$tableheaders,$tablefields,'','','brand');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
106
items/brands/process_form_brands.php
Executable file
@ -0,0 +1,106 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
|
||||||
|
//creates 3 objects needed for this script.
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
//checks if user is logged in.
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//variables needed globably in this file.
|
||||||
|
$tablename="$cfg_tableprefix".'brands';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//checks to see if action is delete and an ID is specified. (only delete uses $_GET.)
|
||||||
|
if(isset($_GET['action']) and isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
$id=$_GET['id'];
|
||||||
|
}
|
||||||
|
//checks to make sure data is comming from form ($action is either delete or update)
|
||||||
|
elseif(isset($_POST['brand']) and isset($_POST['id']) and isset($_POST['action']) )
|
||||||
|
{
|
||||||
|
|
||||||
|
$action=$_POST['action'];
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
//gets variables entered by user.
|
||||||
|
$brand = $_POST['brand'];
|
||||||
|
|
||||||
|
|
||||||
|
//insure all fields are filled in.
|
||||||
|
if($brand=='')
|
||||||
|
{
|
||||||
|
echo "$lang->forgottenFields";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$field_names=array('brand');
|
||||||
|
$field_data=array("$brand");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//outputs error message because user did not use form to fill out data.
|
||||||
|
echo "$lang->mustUseForm";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
//finds out what action needs to be taken and preforms it by calling methods from dbf class.
|
||||||
|
case $action=="insert":
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="update":
|
||||||
|
$dbf->update($field_names,$field_data,$tablename,$id,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="delete":
|
||||||
|
$dbf->deleteRow($tablename,$id);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
echo "$lang->noActionSpecified";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<br>
|
||||||
|
<a href="manage_brands.php"><?php echo "$lang->manageBrands" ?>--></a>
|
||||||
|
<br>
|
||||||
|
<a href="form_brands.php?action=insert"><?php echo "$lang->createBrand" ?>--></a>
|
||||||
|
</body>
|
||||||
|
</html>
|
86
items/categories/form_categories.php
Executable file
@ -0,0 +1,86 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
include ("../../classes/form.php");
|
||||||
|
include ("../../classes/display.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
$display= new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$category_value='';
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
//decides if the form will be used to update or add a user.
|
||||||
|
if(isset($_GET['action']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="insert";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current users data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->updateCategory");
|
||||||
|
|
||||||
|
if(isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$id=$_GET['id'];
|
||||||
|
$tablename = "$cfg_tableprefix".'categories';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$id\"",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$category_value=$row['category'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->addCategory");
|
||||||
|
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_categories.php','POST','categories','300',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
$f1->createInputField("<b>$lang->categoryName:</b>",'text','category',"$category_value",'24','150');
|
||||||
|
|
||||||
|
//sends 2 hidden varibles needed for process_form_users.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$id'>";
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
67
items/categories/manage_categories.php
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<SCRIPT LANGUAGE="Javascript">
|
||||||
|
<!---
|
||||||
|
function decision(message, url)
|
||||||
|
{
|
||||||
|
if(confirm(message) )
|
||||||
|
{
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --->
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
include ("../../classes/display.php");
|
||||||
|
include ("../../classes/form.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
$display->displayTitle("$lang->manageCategories");
|
||||||
|
|
||||||
|
$f1=new form('manage_categories.php','POST','categories','475',$cfg_theme,$lang);
|
||||||
|
$f1->createInputField("<b>$lang->searchForCategory</b>",'text','search','','24','375');
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$tableheaders=array("$lang->rowID","$lang->categoryName","$lang->updateCategory","$lang->deleteCategory");
|
||||||
|
$tablefields=array('id','category');
|
||||||
|
|
||||||
|
if(isset($_POST['search']))
|
||||||
|
{
|
||||||
|
$search=$_POST['search'];
|
||||||
|
echo "<center>$lang->searchedForCategory: <b>$search</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'categories',$tableheaders,$tablefields,'category',"$search",'category');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'categories',$tableheaders,$tablefields,'','','category');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
106
items/categories/process_form_categories.php
Executable file
@ -0,0 +1,106 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
|
||||||
|
//creates 3 objects needed for this script.
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
//checks if user is logged in.
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//variables needed globably in this file.
|
||||||
|
$tablename="$cfg_tableprefix".'categories';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//checks to see if action is delete and an ID is specified. (only delete uses $_GET.)
|
||||||
|
if(isset($_GET['action']) and isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
$id=$_GET['id'];
|
||||||
|
}
|
||||||
|
//checks to make sure data is comming from form ($action is either delete or update)
|
||||||
|
elseif(isset($_POST['category']) and isset($_POST['id']) and isset($_POST['action']) )
|
||||||
|
{
|
||||||
|
|
||||||
|
$action=$_POST['action'];
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
//gets variables entered by user.
|
||||||
|
$category = $_POST['category'];
|
||||||
|
|
||||||
|
|
||||||
|
//insure all fields are filled in.
|
||||||
|
if($category=='')
|
||||||
|
{
|
||||||
|
echo "$lang->forgottenFields";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$field_names=array('category');
|
||||||
|
$field_data=array("$category");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//outputs error message because user did not use form to fill out data.
|
||||||
|
echo "$lang->mustUseForm";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
//finds out what action needs to be taken and preforms it by calling methods from dbf class.
|
||||||
|
case $action=="insert":
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="update":
|
||||||
|
$dbf->update($field_names,$field_data,$tablename,$id,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="delete":
|
||||||
|
$dbf->deleteRow($tablename,$id);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
echo "$lang->noActionSpecified";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<br>
|
||||||
|
<a href="manage_categories.php"><?php echo $lang->manageCategories ?>--></a>
|
||||||
|
<br>
|
||||||
|
<a href="form_categories.php?action=insert"><?php echo $lang->createCategory ?>--></a>
|
||||||
|
</body>
|
||||||
|
</html>
|
101
items/discounts/form_discounts.php
Executable file
@ -0,0 +1,101 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
include ("../../classes/form.php");
|
||||||
|
include ("../../classes/display.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
$display= new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$item_id_value='';
|
||||||
|
$percent_off_value='';
|
||||||
|
$comment_value='';
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
//decides if the form will be used to update or add a user.
|
||||||
|
if(isset($_GET['action']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="insert";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current users data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->updateDiscount");
|
||||||
|
|
||||||
|
if(isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$id=$_GET['id'];
|
||||||
|
$tablename = "$cfg_tableprefix".'discounts';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$id\"",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$item_id_value=$row['item_id'];
|
||||||
|
$percent_off_value=$row['percent_off'];
|
||||||
|
$comment_value=$row['comment'];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->addDiscount");
|
||||||
|
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_discounts.php','POST','discounts','300',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
$itemtable = "$cfg_tableprefix".'items';
|
||||||
|
|
||||||
|
$item_option_titles=$dbf->getAllElements("$itemtable",'item_name','item_name');
|
||||||
|
$item_option_titles[0] = $dbf->idToField("$itemtable",'item_name',"$item_id_value");
|
||||||
|
$item_option_values=$dbf->getAllElements("$itemtable",'id','item_name');
|
||||||
|
$item_option_values[0] = $item_id_value;
|
||||||
|
|
||||||
|
$f1->createSelectField("<b>$lang->itemName:</b>",'item_id',$item_option_values,$item_option_titles,'160');
|
||||||
|
|
||||||
|
$f1->createInputField("<b>$lang->percentOff: (%)</b> ",'text','percent_off',"$percent_off_value",'24','150');
|
||||||
|
$f1->createInputField("$lang->comment: ",'text','comment',"$comment_value",'24','150');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//sends 2 hidden varibles needed for process_form_discounts.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$id'>";
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
67
items/discounts/manage_discounts.php
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<SCRIPT LANGUAGE="Javascript">
|
||||||
|
<!---
|
||||||
|
function decision(message, url)
|
||||||
|
{
|
||||||
|
if(confirm(message) )
|
||||||
|
{
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --->
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
include ("../../classes/display.php");
|
||||||
|
include ("../../classes/form.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
$display->displayTitle("$lang->manageDiscounts");
|
||||||
|
|
||||||
|
$f1=new form('manage_discounts.php','POST','discounts','475',$cfg_theme,$lang);
|
||||||
|
$f1->createInputField("<b>$lang->searchForDiscount</b>",'text','search','','24','375');
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$tableheaders=array("$lang->rowID","$lang->itemName","$lang->percentOff","$lang->comment","$lang->updateDiscount","$lang->deleteDiscount");
|
||||||
|
$tablefields=array('id','item_id','percent_off','comment');
|
||||||
|
|
||||||
|
if(isset($_POST['search']))
|
||||||
|
{
|
||||||
|
$search=$_POST['search'];
|
||||||
|
echo "<center>$lang->searchedForDiscount: <b>$search</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'discounts',$tableheaders,$tablefields,'percent_off',"$search",'percent_off');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'discounts',$tableheaders,$tablefields,'','','percent_off');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
108
items/discounts/process_form_discounts.php
Executable file
@ -0,0 +1,108 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
|
||||||
|
//creates 2 objects needed for this script.
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
//checks if user is logged in.
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//variables needed globably in this file.
|
||||||
|
$tablename="$cfg_tableprefix".'discounts';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//checks to see if action is delete and an ID is specified. (only delete uses $_GET.)
|
||||||
|
if(isset($_GET['action']) and isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
$id=$_GET['id'];
|
||||||
|
}
|
||||||
|
//checks to make sure data is comming from form ($action is either delete or update)
|
||||||
|
elseif(isset($_POST['item_id']) and isset($_POST['percent_off']) and isset($_POST['comment']) and isset($_POST['id']) and isset($_POST['action']) )
|
||||||
|
{
|
||||||
|
|
||||||
|
$action=$_POST['action'];
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
//gets variables entered by user.
|
||||||
|
$item_id=$_POST['item_id'];
|
||||||
|
$percent_off=$_POST['percent_off'];
|
||||||
|
$comment=$_POST['comment'];
|
||||||
|
|
||||||
|
|
||||||
|
//insure all fields are filled in.
|
||||||
|
if($item_id=='' or $percent_off=='')
|
||||||
|
{
|
||||||
|
echo "$lang->forgottenFields";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$field_names=array('item_id','percent_off','comment');
|
||||||
|
$field_data=array("$item_id","$percent_off","$comment");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//outputs error message because user did not use form to fill out data.
|
||||||
|
echo "$lang->mustUseForm";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
//finds out what action needs to be taken and preforms it by calling methods from dbf class.
|
||||||
|
case $action=="insert":
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="update":
|
||||||
|
$dbf->update($field_names,$field_data,$tablename,$id,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="delete":
|
||||||
|
$dbf->deleteRow($tablename,$id);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
echo "$lang->noActionSpecified";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<br>
|
||||||
|
<a href="manage_discounts.php"><?php echo $lang->manageDiscounts ?>--></a>
|
||||||
|
<br>
|
||||||
|
<a href="form_discounts.php?action=insert"><?php echo $lang->discountAnItem ?>--></a>
|
||||||
|
</body>
|
||||||
|
</html>
|
164
items/form_items.php
Executable file
@ -0,0 +1,164 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
$brandtable=$cfg_tableprefix.'brands';
|
||||||
|
$categorytable=$cfg_tableprefix.'categories';
|
||||||
|
$suppliertable=$cfg_tableprefix.'suppliers';
|
||||||
|
|
||||||
|
$tb1=mysql_query("SELECT id FROM $brandtable",$dbf->conn);
|
||||||
|
$tb2=mysql_query("SELECT id FROM $categorytable",$dbf->conn);
|
||||||
|
$tb3=mysql_query("SELECT id FROM $suppliertable",$dbf->conn);
|
||||||
|
|
||||||
|
if(mysql_num_rows($tb1)==0 or mysql_num_rows($tb2)==0 or mysql_num_rows($tb3)==0)
|
||||||
|
{
|
||||||
|
echo "$lang->brandsCategoriesSupplierError";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$item_name_value='';
|
||||||
|
$description_value='';
|
||||||
|
$item_number_value='';
|
||||||
|
$brand_id_value='';
|
||||||
|
$category_id_value='';
|
||||||
|
$supplier_id_value='';
|
||||||
|
$buy_price_value='';
|
||||||
|
$unit_price_value='';
|
||||||
|
$supplier_catalogue_number_value='';
|
||||||
|
$tax_percent_value="$cfg_default_tax_rate";
|
||||||
|
$total_cost_value='';
|
||||||
|
$quantity_value='';
|
||||||
|
$reorder_level_value='';
|
||||||
|
$id='unknown';
|
||||||
|
|
||||||
|
//decides if the form will be used to update or add a user.
|
||||||
|
if(isset($_GET['action']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="insert";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current users data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->updateItem");
|
||||||
|
if(isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$id=$_GET['id'];
|
||||||
|
$tablename = "$cfg_tableprefix".'items';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$id\"",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$item_name_value=$row['item_name'];
|
||||||
|
$item_number_value=$row['item_number'];
|
||||||
|
$description_value=$row['description'];
|
||||||
|
$brand_id_value=$row['brand_id'];
|
||||||
|
$category_id_value=$row['category_id'];
|
||||||
|
$supplier_id_value=$row['supplier_id'];
|
||||||
|
$buy_price_value=$row['buy_price'];
|
||||||
|
$unit_price_value=$row['unit_price'];
|
||||||
|
$supplier_catalogue_number_value=$row['supplier_catalogue_number'];
|
||||||
|
$tax_percent_value=$row['tax_percent'];
|
||||||
|
$total_cost_value=$row['total_cost'];
|
||||||
|
$quantity_value=$row['quantity'];
|
||||||
|
$reorder_level_value=$row['reorder_level'];
|
||||||
|
$id=$row['id'];
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->addItem");
|
||||||
|
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_items.php','POST','items','400',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
$f1->createInputField("<b>$lang->itemName:</b> ",'text','item_name',"$item_name_value",'24','160');
|
||||||
|
$f1->createInputField("$lang->description: ",'text','description',"$description_value",'24','160');
|
||||||
|
$f1->createInputField("$lang->itemNumber: ",'text','item_number',"$item_number_value",'24','160');
|
||||||
|
|
||||||
|
$brandtable = "$cfg_tableprefix".'brands';
|
||||||
|
|
||||||
|
$brand_option_titles=$dbf->getAllElements("$brandtable",'brand','brand');
|
||||||
|
$brand_option_titles[0] = $dbf->idToField("$brandtable",'brand',"$brand_id_value");
|
||||||
|
$brand_option_values=$dbf->getAllElements("$brandtable",'id','brand');
|
||||||
|
$brand_option_values[0] = $brand_id_value;
|
||||||
|
|
||||||
|
$f1->createSelectField("<b>$lang->brand:</b>",'brand_id',$brand_option_values,$brand_option_titles,'160');
|
||||||
|
|
||||||
|
|
||||||
|
$categorytable = "$cfg_tableprefix".'categories';
|
||||||
|
|
||||||
|
$category_option_titles=$dbf->getAllElements("$categorytable",'category','category');
|
||||||
|
$category_option_titles[0] = $dbf->idToField("$categorytable",'category',"$category_id_value");
|
||||||
|
$category_option_values=$dbf->getAllElements("$categorytable",'id','category');
|
||||||
|
$category_option_values[0] = $category_id_value;
|
||||||
|
|
||||||
|
$f1->createSelectField("<b>$lang->category:</b>",'category_id',$category_option_values,$category_option_titles,'160');
|
||||||
|
|
||||||
|
$suppliertable = "$cfg_tableprefix".'suppliers';
|
||||||
|
|
||||||
|
$supplier_option_titles=$dbf->getAllElements("$suppliertable",'supplier','supplier');
|
||||||
|
$supplier_option_titles[0] = $dbf->idToField("$suppliertable",'supplier',"$supplier_id_value");
|
||||||
|
$supplier_option_values=$dbf->getAllElements("$suppliertable",'id','supplier');
|
||||||
|
$supplier_option_values[0] = $supplier_id_value;
|
||||||
|
|
||||||
|
$f1->createSelectField("<b>$lang->supplier:</b>",'supplier_id',$supplier_option_values,$supplier_option_titles,'160');
|
||||||
|
|
||||||
|
$f1->createInputField("<b>$lang->buyingPrice:</b>",'text','buy_price',"$buy_price_value",'10','160');
|
||||||
|
$f1->createInputField("<b>$lang->sellingPrice ($lang->wo $lang->tax):</b>",'text','unit_price',"$unit_price_value",'10','160');
|
||||||
|
$f1->createInputField("<b>$lang->tax (%):</b> ",'text','tax_percent',"$tax_percent_value",'4','160');
|
||||||
|
$f1->createInputField("$lang->supplierCatalogue: ",'text','supplier_catalogue_number',"$supplier_catalogue_number_value",'24','160');
|
||||||
|
$f1->createInputField("<b>$lang->quantityStock:</b> ",'text','quantity',"$quantity_value",'3','160');
|
||||||
|
$f1->createInputField("<b>$lang->reorderLevel:</b> ",'text','reorder_level',"$reorder_level_value",'3','160');
|
||||||
|
|
||||||
|
|
||||||
|
//sends 2 hidden varibles needed for process_form_users.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$id'>";
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
58
items/index.php
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
<?php session_start();
|
||||||
|
include ("../settings.php");
|
||||||
|
include("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<table border=\"0\" width=\"500\">
|
||||||
|
<tr>
|
||||||
|
<td><img border=\"0\" src=\"../images/items.gif\" width=\"32\" height=\"33\" valign='top'><font color='#005B7F' size='4'> <b>$lang->items</b></font><br>
|
||||||
|
<br>
|
||||||
|
<font face=\"Verdana\" size=\"2\">$lang->itemsWelcomeScreen</font>
|
||||||
|
<ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"form_items.php?action=insert\">$lang->createNewItem</a></font></li>
|
||||||
|
<ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"discounts/form_discounts.php?action=insert\">$lang->discountAnItem</a></font></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"discounts/manage_discounts.php\">$lang->manageDiscounts</a></font></li>
|
||||||
|
</ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"manage_items.php\">$lang->manageItems</a></font></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"items_barcode.php\">$lang->itemsBarcode</a></font></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"brands/form_brands.php?action=insert\">$lang->createBrand</a></font></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"brands/manage_brands.php\">$lang->manageBrands</a></font></li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"categories/form_categories.php?action=insert\">$lang->createCategory</a></font></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"categories/manage_categories.php\">$lang->manageCategories</a></font></li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"suppliers/form_suppliers.php?action=insert\">$lang->createSupplier</a></font></li>
|
||||||
|
<li><font face=\"Verdana\" size=\"2\"><a href=\"suppliers/manage_suppliers.php\">$lang->manageSuppliers</a></font></li>
|
||||||
|
</ul>
|
||||||
|
<p> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>";
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
59
items/items_barcode.php
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
<?php session_start();
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
if(isset($_GET['generateWith']))
|
||||||
|
{
|
||||||
|
$generateWith=$_GET['generateWith'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$generateWith='id';
|
||||||
|
}
|
||||||
|
|
||||||
|
$display->displayTitle("$lang->itemsBarcode"." ($generateWith)");
|
||||||
|
echo "<a href='items_barcode.php?generateWith=item_number'>$lang->itemNumber</a> / <a href='items_barcode.php?generateWith=id'>id</a>";
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$items_table=$cfg_tableprefix.'items';
|
||||||
|
$result=mysql_query("SELECT * FROM $items_table ORDER by item_name",$dbf->conn);
|
||||||
|
|
||||||
|
echo '<table border=0 width=85% align=center cellspacing=5 cellpadding=12>
|
||||||
|
|
||||||
|
<tr>';
|
||||||
|
|
||||||
|
$counter=0;
|
||||||
|
while($row=mysql_fetch_assoc($result))
|
||||||
|
{
|
||||||
|
if($counter%2==0)
|
||||||
|
{
|
||||||
|
echo '</tr><tr>';
|
||||||
|
}
|
||||||
|
echo "<td align='center'><img src='../classes/barcode.php?barcode=$row[$generateWith]&width=256&text=*$row[item_name]*'></td>";
|
||||||
|
|
||||||
|
$counter++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tr></table>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
87
items/manage_items.php
Executable file
@ -0,0 +1,87 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<SCRIPT LANGUAGE="Javascript">
|
||||||
|
<!---
|
||||||
|
function decision(message, url)
|
||||||
|
{
|
||||||
|
if(confirm(message) )
|
||||||
|
{
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --->
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
include ("../classes/display.php");
|
||||||
|
include ("../classes/form.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
$display->displayTitle("$lang->manageItems");
|
||||||
|
|
||||||
|
$f1=new form('manage_items.php','POST','items','400',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
$f1->createInputField("<b>$lang->searchForItemBy</b>",'text','search','','24','150');
|
||||||
|
|
||||||
|
$option_values2=array('item_name','item_number','id','quantity','supplier_catalogue_number');
|
||||||
|
$option_titles2=array("$lang->itemName","$lang->itemNumber",'ID',"$lang->quantityStock","$lang->supplierCatalogue");
|
||||||
|
$f1->createSelectField("<b>$lang->searchBy</b>",'searching_by',$option_values2,$option_titles2,100);
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
echo "<a href='manage_items.php?outofstock=go'>$lang->showOutOfStock</a><br>";
|
||||||
|
echo "<a href='manage_items.php?reorder=go'>$lang->showReorder</a>";
|
||||||
|
|
||||||
|
|
||||||
|
$tableheaders=array("$lang->rowID","$lang->itemName","$lang->itemNumber","$lang->description","$lang->brand","$lang->category","$lang->supplier","$lang->buyingPrice","$lang->sellingPrice","$lang->tax $lang->percent","$lang->finalSellingPricePerUnit","$lang->quantityStock","$lang->reorderLevel","$lang->supplierCatalogue","$lang->updateItem","$lang->deleteItem");
|
||||||
|
$tablefields=array('id','item_name','item_number','description','brand_id','category_id','supplier_id','buy_price','unit_price','tax_percent','total_cost','quantity','reorder_level','supplier_catalogue_number');
|
||||||
|
|
||||||
|
if(isset($_POST['search']))
|
||||||
|
{
|
||||||
|
$search=$_POST['search'];
|
||||||
|
$searching_by =$_POST['searching_by'];
|
||||||
|
echo "<center>$lang->searchedForItem: <b>$search</b> $lang->searchBy <b>$searching_by</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'items',$tableheaders,$tablefields,"$searching_by","$search",'id');
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif(isset($_GET['outofstock']))
|
||||||
|
{
|
||||||
|
echo "<center>$lang->outOfStock</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'items',$tableheaders,$tablefields,'quantity',"outofstock",'id');
|
||||||
|
}
|
||||||
|
elseif(isset($_GET['reorder']))
|
||||||
|
{
|
||||||
|
echo "<center>$lang->reorder</b></center>";
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'items',$tableheaders,$tablefields,'quantity',"reorder",'id');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayManageTable("$cfg_tableprefix",'items',$tableheaders,$tablefields,'','','id');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
124
items/process_form_items.php
Executable file
@ -0,0 +1,124 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../settings.php");
|
||||||
|
include ("../language/$cfg_language");
|
||||||
|
include ("../classes/db_functions.php");
|
||||||
|
include ("../classes/security_functions.php");
|
||||||
|
|
||||||
|
//creates 3 objects needed for this script.
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
|
||||||
|
//checks if user is logged in.
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../login.php");
|
||||||
|
exit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//variables needed globably in this file.
|
||||||
|
$tablename="$cfg_tableprefix".'items';
|
||||||
|
$field_names=null;
|
||||||
|
$field_data=null;
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//checks to see if action is delete and an ID is specified. (only delete uses $_GET.)
|
||||||
|
if(isset($_GET['action']) and isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
$id=$_GET['id'];
|
||||||
|
}
|
||||||
|
//checks to make sure data is comming from form ($action is either delete or update)
|
||||||
|
elseif(isset($_POST['item_name']) and isset($_POST['description']) and isset($_POST['item_number']) and isset($_POST['brand_id'])
|
||||||
|
and isset($_POST['category_id']) and isset($_POST['supplier_id']) and isset($_POST['buy_price']) and isset($_POST['unit_price']) and isset($_POST['tax_percent'])
|
||||||
|
and isset($_POST['supplier_catalogue_number']) and isset($_POST['quantity']) and isset($_POST['id']) and isset($_POST['action']) )
|
||||||
|
{
|
||||||
|
|
||||||
|
$action=$_POST['action'];
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
//gets variables entered by user.
|
||||||
|
$item_name = $_POST['item_name'];
|
||||||
|
$description = $_POST['description'];
|
||||||
|
$item_number = $_POST['item_number'];
|
||||||
|
$brand_id = $_POST['brand_id'];
|
||||||
|
$category_id = $_POST['category_id'];
|
||||||
|
$supplier_id = $_POST['supplier_id'];
|
||||||
|
$buy_price = number_format($_POST['buy_price'],2,'.', '');
|
||||||
|
$unit_price = number_format($_POST['unit_price'],2,'.', '');
|
||||||
|
$tax_percent = $_POST['tax_percent'];
|
||||||
|
$supplier_catalogue_number = $_POST['supplier_catalogue_number'];
|
||||||
|
$quantity = $_POST['quantity'];
|
||||||
|
$reorder_level= $_POST['reorder_level'];
|
||||||
|
|
||||||
|
//insure all fields are filled in.
|
||||||
|
if($item_name=='' or $brand_id=='' or $category_id=='' or $supplier_id=='' or $buy_price=='' or $unit_price=='' or $tax_percent=='' or $quantity=='' or $reorder_level=='' )
|
||||||
|
{
|
||||||
|
echo "$lang->forgottenFields";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
elseif( (!is_numeric($buy_price)) or (!is_numeric($unit_price)) or (!is_numeric($tax_percent)) or (!is_numeric($quantity)) or (!is_numeric($reorder_level)))
|
||||||
|
{
|
||||||
|
echo "$lang->mustEnterNumeric";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$total_cost = number_format($unit_price*(1+($tax_percent/100)),2,'.', '');
|
||||||
|
$field_names=array('item_name','description','item_number','brand_id','category_id','supplier_id','buy_price','unit_price','tax_percent','supplier_catalogue_number','total_cost','quantity','reorder_level');
|
||||||
|
$field_data=array("$item_name","$description","$item_number","$brand_id","$category_id","$supplier_id","$buy_price","$unit_price","$tax_percent","$supplier_catalogue_number","$total_cost","$quantity","$reorder_level");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//outputs error message because user did not use form to fill out data.
|
||||||
|
echo "$lang->mustUseForm";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
switch ($action)
|
||||||
|
{
|
||||||
|
//finds out what action needs to be taken and preforms it by calling methods from dbf class.
|
||||||
|
case $action=="insert":
|
||||||
|
$dbf->insert($field_names,$field_data,$tablename,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="update":
|
||||||
|
$dbf->update($field_names,$field_data,$tablename,$id,true);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case $action=="delete":
|
||||||
|
$dbf->deleteRow($tablename,$id);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
echo "lang->noActionSpecified";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
?>
|
||||||
|
<br>
|
||||||
|
<a href="manage_items.php"><?php echo $lang->manageItems ?>--></a>
|
||||||
|
<br>
|
||||||
|
<a href="form_items.php?action=insert"><?php echo $lang->createNewItem ?>--></a>
|
||||||
|
</body>
|
||||||
|
</html>
|
100
items/suppliers/form_suppliers.php
Executable file
@ -0,0 +1,100 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include ("../../settings.php");
|
||||||
|
include ("../../language/$cfg_language");
|
||||||
|
include ("../../classes/db_functions.php");
|
||||||
|
include ("../../classes/security_functions.php");
|
||||||
|
include ("../../classes/form.php");
|
||||||
|
include ("../../classes/display.php");
|
||||||
|
|
||||||
|
$lang=new language();
|
||||||
|
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
|
||||||
|
$sec=new security_functions($dbf,'Admin',$lang);
|
||||||
|
$display= new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
|
||||||
|
|
||||||
|
if(!$sec->isLoggedIn())
|
||||||
|
{
|
||||||
|
header ("location: ../../login.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
//set default values, these will change if $action==update.
|
||||||
|
$supplier_value='';
|
||||||
|
$address_value='';
|
||||||
|
$phone_number_value='';
|
||||||
|
$contact_value='';
|
||||||
|
$email_value='';
|
||||||
|
$other_value='';
|
||||||
|
$id=-1;
|
||||||
|
|
||||||
|
//decides if the form will be used to update or add a user.
|
||||||
|
if(isset($_GET['action']))
|
||||||
|
{
|
||||||
|
$action=$_GET['action'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action="insert";
|
||||||
|
}
|
||||||
|
|
||||||
|
//if action is update, sets variables to what the current users data is.
|
||||||
|
if($action=="update")
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->updateSupplier");
|
||||||
|
|
||||||
|
if(isset($_GET['id']))
|
||||||
|
{
|
||||||
|
$id=$_GET['id'];
|
||||||
|
$tablename = "$cfg_tableprefix".'suppliers';
|
||||||
|
$result = mysql_query("SELECT * FROM $tablename WHERE id=\"$id\"",$dbf->conn);
|
||||||
|
|
||||||
|
$row = mysql_fetch_assoc($result);
|
||||||
|
$supplier_value=$row['supplier'];
|
||||||
|
$address_value=$row['address'];
|
||||||
|
$phone_number_value=$row['phone_number'];
|
||||||
|
$contact_value=$row['contact'];
|
||||||
|
$email_value=$row['email'];
|
||||||
|
$other_value=$row['other'];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$display->displayTitle("$lang->addSupplier");
|
||||||
|
|
||||||
|
}
|
||||||
|
//creates a form object
|
||||||
|
$f1=new form('process_form_suppliers.php','POST','suppliers','300',$cfg_theme,$lang);
|
||||||
|
|
||||||
|
//creates form parts.
|
||||||
|
$f1->createInputField("<b>$lang->supplierName:</b>",'text','supplier',"$supplier_value",'24','150');
|
||||||
|
$f1->createInputField("<b>$lang->address:</b>",'text','address',"$address_value",'24','150');
|
||||||
|
$f1->createInputField("<b>$lang->phoneNumber:</b>",'text','phone_number',"$phone_number_value",'24','150');
|
||||||
|
$f1->createInputField("<b>$lang->contact:</b>",'text','contact',"$contact_value",'24','150');
|
||||||
|
$f1->createInputField("$lang->email: ",'text','email',"$email_value",'24','150');
|
||||||
|
$f1->createInputField("$lang->other: ",'text','other',"$other_value",'24','150');
|
||||||
|
|
||||||
|
//sends 2 hidden varibles needed for process_form_suppliers.php.
|
||||||
|
echo "
|
||||||
|
<input type='hidden' name='action' value='$action'>
|
||||||
|
<input type='hidden' name='id' value='$id'>";
|
||||||
|
$f1->endForm();
|
||||||
|
|
||||||
|
$dbf->closeDBlink();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|