@ -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; |
|||
} |
@ -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>'; |
|||
} |
|||
|
|||
?> |
@ -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(); |
|||
|
|||
?> |
@ -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> |
|||
|
|||
|
|||
|
|||
|
@ -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(); |
|||
|
|||
|
|||
?> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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 |
@ -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; |
|||
} |
@ -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> |
|||
|
|||
|
|||
|
|||
|
@ -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> |
|||
|
|||
|
|||
|
|||
|
@ -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> |
@ -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> |
|||
|
|||
|
|||
|
|||
|
@ -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"; |
|||
} |
|||
} |
|||
|
|||
|
|||
?> |
@ -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); |
|||
} |
|||
} |
|||
|
|||
?> |
@ -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"; |
|||
} |
|||
|
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
?> |
@ -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>"; |
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
?> |
@ -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; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
?> |
@ -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(); |
|||
|
|||
?> |
@ -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 |
@ -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> |
|||
|
|||
|
|||
|
|||
|
@ -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(); |
|||
|
|||
|
|||
?> |
@ -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> |
@ -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> |
@ -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 |
|||
|
@ -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`/; \ |
|||
|
@ -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; |
|||
#} |
|||
} |
|||
|
@ -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: |
|||
|
@ -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"; |
|||
|
|||
?> |
@ -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. |
@ -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 />"; |
|||
|
|||
?> |
|||
|
|||
|
@ -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(); |
|||
|
|||
?> |
After Width: | Height: | Size: 997 B |
After Width: | Height: | Size: 998 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 983 B |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 319 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 974 B |
After Width: | Height: | Size: 195 B |
After Width: | Height: | Size: 951 B |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 882 B |
After Width: | Height: | Size: 405 B |
After Width: | Height: | Size: 116 B |
After Width: | Height: | Size: 174 B |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 994 B |
After Width: | Height: | Size: 997 B |
After Width: | Height: | Size: 914 B |
After Width: | Height: | Size: 918 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 914 B |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 986 B |
After Width: | Height: | Size: 977 B |
After Width: | Height: | Size: 799 B |
After Width: | Height: | Size: 2.6 KiB |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
After Width: | Height: | Size: 1.8 KiB |
@ -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> |
|||
|
|||
|
|||
|
@ -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> |
@ -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> |
@ -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> |
|||
|
|||
|
|||
|
|||
|
@ -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> |
@ -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> |
@ -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> |
|||
|
|||
|
|||
|
|||
|
@ -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> |
@ -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> |
@ -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> |
|||
|
|||
|
|||
|
|||
|
|||
|
@ -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(); |
|||
|
|||
?> |
@ -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(); |
|||
|
|||
?> |
@ -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> |
@ -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> |
@ -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> |
|||
|
|||
|
|||
|
|||
|