1
0
mirror of https://github.com/fspc/Yellow-Bike-Database.git synced 2025-02-23 01:03:23 -05:00
Yellow-Bike-Database-Mirror/Connections/database_functions.php
Jonathan Rosenbaum c31551d66a Fixed the payement type label bug, but altering the selector.
1).  This selector turned of edit when clicked, but because of the way it was construed it was hiding the label.  Only became obvious when the validation tests were added.
2015-01-28 08:12:13 +00:00

526 lines
21 KiB
PHP

<?php
require_once('YBDB.php');
// User defined constants - read sql/populate.sql for an explanation
define("STORAGE_PERIOD", 14);
define("ACCOUNTING_GROUP", "Sales");
define("DEFAULT_TRANSACTION_TYPE", "Sale - Used Parts");
define("DEFAULT_SHOP_USER", "Volunteer");
/* Change Fund - A specific amount of money for the purpose of making change.
The amount on hand should remain the same at all times;
therefore a change funds does not require replenishment.
*/
define("CHANGE_FUND", 20);
// How many hours should the shop be open from the time a person logins? Hours display in pulldown in shop_log.php
// No overtime for volunteers. :)
// shop will be current shop for the 24hr day yyyy-mm-dd (currently no check for hrs, only date)
define("SHOP_HOURS_LENGTH", 10);
/*
Choose your timezone from http://php.net/manual/en/timezones.php
Eastern ........... America/New_York
Central ........... America/Chicago
Mountain .......... America/Denver
Mountain no DST ... America/Phoenix
Pacific ........... America/Los_Angeles
Alaska ............ America/Anchorage
Hawaii ............ America/Adak
Hawaii no DST ..... Pacific/Honolulu
*/
define("TIMEZONE", "America/New_York");
/* If you elect to keep records for non-shop hours, decide which shop should be used for that purpose.
The first shop created, 1, makes sense. A link will show in start_shop.php.
If you do not want this functionality at all, choose 0.
*/
define("NONSHOP",0);
// How many transactions do you want shown by default
define("NUMBER_OF_TRANSACTIONS", 11);
// Define csv directory (see directions below for creating it)
define("CSV_DIRECTORY","csv");
// Make a directory to store csv accounting files. Currently used for GnuCash format.
// Assuming the root of the website, and directory is called csv, and a Debian-based distribution:
// mkdir csv
// chown www-data:www-data csv
// chmod 0700 csv
// Define array mapping for Accounts. Usually Asset Accounts since Income is generally the main type of transaction.
// Currently three types of accounts are supported: checking, credit, account_receivable
// checking/credit = transaction has been 1) paid and is 2) cash & check [checking] or a credit card [credit] and 3) deposited
// account_receivable = there is an 1). account receivable invoice and it has been 2) paid and 3) deposited
$gnucash_accounts = array( "Assets:Current Assets:Checking" => "checking",
"Assets:Current Assets:PayPal" => "credit",
"Assets:Account Receivable" => "account_receivable"
);
// Most collectives require only one shop at a time, but YBDB provides a way to handle 2 concurrent
// shops in the same location. The current shop will be shown, and users will have to remember the
// number of the previous shop to enter into the transaction.
// Note: Remote shops function independently via their IP identification.
//
// Normally, you will want this set at 0.
define('SHOW_SHOP_ID',0);
// other constants
define("PAGE_START_SHOP", "/start_shop.php");
define("PAGE_SHOP_LOG", "/shop_log.php");
define("PAGE_EDIT_CONTACT", "/contact_add_edit.php");
define("PAGE_SELECT_CONTACT", "/contact_add_edit_select.php");
define("PAGE_SHOP_LOG_DELETE_VISIT", "/shop_log_delete_shopvisitid.php");
define("INDIVIDUAL_HOURS_LOG", "/individual_hours_log.php");
define("INDIVIDUAL_HISTORY_LOG", "/individual_history_log.php");
define("PAGE_SALE_LOG", "/transaction_log.php");
define("PAGE_EDIT_LOCATION", "/location_add_edit.php");
define("PAGE_SELECT_LOCATION", "/location_add_edit_select.php");
//This is a general function to generate the contents of a list box based on a MySQL query. All necessary parameters for the query are passed
function generate_list($querySQL,$list_value,$list_text, $form_name, $default_value)
{
global $database_YBDB, $YBDB;
mysql_select_db($database_YBDB, $YBDB);
$recordset = mysql_query($querySQL, $YBDB) or die(mysql_error());
$row_recordset = mysql_fetch_assoc($recordset);
$totalRows_recordset = mysql_num_rows($recordset);
$default_delimiter = '';
// if a form name is supplied HTML listbox code is inserted
if($form_name == "transaction_type" || $form_name == "gnucash_csv_year"){
echo "<select class=\"yb_standard\" name=\"$form_name\">";
} elseif($form_name <> "none"){
echo "<select name=\"$form_name\">";
}
echo "\n";
do {
if( $default_value == $row_recordset[$list_value]){
$default_delimiter = 'selected="selected"';
} else { $default_delimiter = '';}
echo '<option value="' . $row_recordset[$list_value] . '"' . $default_delimiter .'>' . $row_recordset[$list_text] . '</option>\n';
} while ($row_recordset = mysql_fetch_assoc($recordset));
$rows = mysql_num_rows($recordset);
if($rows > 0) {
mysql_data_seek($recordset, 0);
$row_recordset = mysql_fetch_assoc($recordset);
}
mysql_free_result($recordset);
// if a form name is supplied HTML listbox code is inserted
if($form_name <> "none"){echo "</select>";}
}
function list_CurrentShopUsers($form_name = "none", $default_value = "", $max_name_length = 20){
$current_shop = current_shop_by_ip();
$querySQL = "SELECT full_name, shop_hours.contact_id ,hidden FROM shop_hours
LEFT JOIN (SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),$max_name_length) AS full_name, contact_id, hidden FROM contacts) as contacts ON shop_hours.contact_id=contacts.contact_id
WHERE shop_hours.shop_id = $current_shop
ORDER BY full_name;";
$list_value = "contact_id";
$list_text = "full_name";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// #####################
// Drop down list queries - functions below could be made into one function if query, $list_value and $list_text parameters were passed
// Function provides specific MySQL parameters to the function that generates the list box code
function list_contacts($form_name = "none", $default_value = "", $max_name_length = 20){
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),$max_name_length) AS full_name, contact_id, hidden FROM contacts WHERE (first_name <> '' OR last_name <> '') AND hidden <> 1 ORDER BY last_name, first_name, middle_initial";
$list_value = "contact_id";
$list_text = "full_name";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
function list_coordinators($form_name = "none", $default_value = "", $max_name_length = 20){
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),40) AS full_name, contacts.contact_id, hidden, shop_user_role FROM contacts
LEFT JOIN (SELECT contact_id, shop_user_role, sales FROM shop_hours
LEFT JOIN shop_user_roles ON shop_user_roles.shop_user_role_id = shop_hours.shop_user_role
WHERE shop_user_roles.sales = 1 GROUP BY contact_id) as shop_hours ON shop_hours.contact_id=contacts.contact_id
WHERE (first_name <> '' OR last_name <> '') AND hidden <> 1 AND shop_hours.sales = 1
GROUP BY contacts.contact_id
ORDER BY last_name, first_name, middle_initial;";
$list_value = "contact_id";
$list_text = "full_name";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
function list_current_coordinators($form_name = "none", $default_value = "", $max_name_length = 20){
$current_shop = current_shop_by_ip();
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),40) AS full_name, contacts.contact_id, hidden, shop_user_role FROM contacts
LEFT JOIN (SELECT contact_id, shop_user_role, sales FROM shop_hours LEFT JOIN shop_user_roles ON shop_user_roles.shop_user_role_id = shop_hours.shop_user_role WHERE shop_user_roles.sales = 1 AND shop_id = $current_shop GROUP BY contact_id) as shop_hours ON shop_hours.contact_id=contacts.contact_id
WHERE (first_name <> '' OR last_name <> '') AND hidden <> 1 AND shop_hours.sales = 1
GROUP BY contacts.contact_id
ORDER BY last_name, first_name, middle_initial;";
$list_value = "contact_id";
$list_text = "full_name";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// Function provides specific MySQL parameters to the function that generates the list box code
function list_projects($form_name = "none", $default_value = ""){
$querySQL = "SELECT project_id FROM projects WHERE active = 1 AND public = 1 ORDER BY project_id";
$list_value = "project_id";
$list_text = "project_id";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// Function provides specific MySQL parameters to the function that generates the list box code
function list_projects_collective($form_name = "none", $default_value = ""){
$querySQL = "SELECT project_id FROM projects WHERE active = 1 ORDER BY public DESC, project_id";
$list_value = "project_id";
$list_text = "project_id";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// Function provides specific MySQL parameters to the function that generates the list box code
function list_shop_types($form_name = "none", $default_value = ""){
$querySQL = "SELECT shop_type_id FROM shop_types ORDER BY list_order;";
$list_value = "shop_type_id";
$list_text = "shop_type_id";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// Function provides specific MySQL parameters to the function that generates the list box code
function list_shop_user_roles($form_name = "none", $default_value = ""){
$querySQL = "SELECT shop_user_role_id FROM shop_user_roles ORDER BY shop_user_role_id;";
$list_value = "shop_user_role_id";
$list_text = "shop_user_role_id";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// Function provides specific MySQL parameters to the function that generates the list box code
function list_shop_locations($form_name = "none", $default_value = ""){
$querySQL = "SELECT shop_location_id FROM shop_locations WHERE active = 1 ORDER BY shop_location_id;";
$list_value = "shop_location_id";
$list_text = "shop_location_id";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// Function provides specific MySQL parameters to the function that generates the list box code
function list_transaction_types($form_name = "none", $default_value = ""){
$querySQL = "SELECT transaction_type_id FROM transaction_types ORDER BY rank + 0;";
$list_value = "transaction_type_id";
$list_text = "transaction_type_id";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
function list_donation_types($form_name = "none", $default_value = ""){
$querySQL = "SELECT transaction_type_id FROM transaction_types WHERE community_bike = 1;";
$list_value = "transaction_type_id";
$list_text = "transaction_type_id";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
function list_donation_locations($form_name = "none", $default_value = "", $max_name_length = 20){
$querySQL = "SELECT LEFT(CONCAT(last_name, ', ', first_name, ' ',middle_initial),$max_name_length) AS full_name,
location_name, contact_id FROM contacts WHERE location_type IS NULL ORDER BY location_name";
$list_value = "contact_id";
$list_text = "full_name";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// Function provides specific MySQL parameters to the function that generates the list box code
function list_distinct_shop_years($form_name = "none", $default_value = ""){
$querySQL = "SELECT DISTINCT YEAR(date) AS date FROM shops WHERE date!='NULL' ORDER BY date DESC;";
$list_value = "date";
$list_text = "date";
generate_list($querySQL,$list_value,$list_text,$form_name, $default_value);
}
// #####################
// Date/Time functions
function currency_format($value, $places = 2){
echo "$ ";
if(is_null($value)) echo number_format(0,$places);
else echo number_format($value,$places);
}
//function to convert server time to local time. To be used by all other current date / time requests.
function local_datetime(){
date_default_timezone_set(TIMEZONE);
return time();
}
//function converts the current date/time into h:m am format
function current_datetime(){
return date("Y-m-d H:i:s",local_datetime());
}
//function converts the current date/time into YYYY-MM-DD am format
function current_date(){
return date("Y-m-d",local_datetime());
}
//function converts the current date/time into h:m am format
function date_to_time($date_in){
list($date, $time) = split('[ ]', $date_in);
list($H, $i, $s) = split('[:]', $time);
$time_out = date("g:i a", mktime($H, $i, $s, 1,1,2000));
return $time_out;
}
//takes a date in and adds current time if date has changed
function date_update_wo_timestamp($date_in, $database_date){
list($date, $time) = split('[ ]', $database_date);
$timestamp_out = (($date == $date_in) ? $database_date : $date_in);
return $timestamp_out;
}
function date_to_timestamp($date_in){
list($date, $time) = split('[ ]', $start_time);
list($Y, $m, $d) = split('[-]', $date);
list($H, $i, $s) = split('[:]', $time);
$time_out = mktime($H, $i, $s, $m, $d, $Y);
return $time_out;
}
//
function datetime_to_time($date_in){
list($date, $time) = split('[ ]', $date_in);
list($H, $i, $s) = split('[:]', $time);
$time_out = date("H:i:s", mktime($H, $i, $s, 1,1,2000));
return $time_out;
}
//
function datetime_to_date($date_in){
list($date, $time) = split('[ ]', $date_in);
list($Y, $m, $d) = split('[-]', $date);
$date_out = date("Y-m-d", mktime($H, $i, $s, $m,$d,$Y));
return $date_out;
}
// END Date/Time functions
//Function creates list box with times every 15 minutes for the specified number of hours
function list_15min($start_time, $start_offset_min, $form_name, $hours, $display_elapsed_hours, $default_value){
list($date, $time) = split('[ ]', $start_time);
list($Y, $m, $d) = split('[-]', $date);
list($H, $i, $s) = split('[:]', $time);
//$min_inc is used to round round to nearest 15min
$min_inc = 15 - intval($i) % 15;
$start_tim15 = mktime($H, $i, 0, $m,$d,$Y) + $min_inc * 60 + $start_offset_min*60 ;
//$start_time_am = date("H:i a", mktime($H, $i, $s, 1,1,2000));
echo "<select name=\"$form_name\">";
if($default_value <> "none" && $default_value <> "0000-00-00 00:00:00"){
//if a default value is requested it is displayed at the top of the list
echo '<option value="' . $default_value . '">' . date_to_time($default_value) . '</option>';
}
if (current_date() == $date) {
// if current date does not match shop date current date will no be an option
echo '<option value="current_time">Current Time</option>';
echo '<option value="current_time">--------------------</option>';
}
for ($j = 0; $j <= $hours*4; $j++) {
$list_time_15 = $start_tim15 + $j*15*60;
if ($display_elapsed_hours == 1) {
$elapsed_hours = " &nbsp;&nbsp;[" . date("G:i",mktime(0, 0, 0, 1,1,2000) + ($j+1)*15*60). " hrs]";
} else {
$elapsed_hours = "";
}
$list_time_15_return = date("Y-m-d H:i:s", $list_time_15);
$list_time_15_display = date("g:i a", $list_time_15). $elapsed_hours;
echo "<option value=\"". $list_time_15_return ."\">" . $list_time_15_display . "</option>";
}
echo "</select>";
}
function list_time($time_list_start, $time, $form_name = "none", $start_offset_min = 0 , $display_elapsed_hours = 0, $default_value = "none", $hours_listed = 8, $et = ""){
if($time == "0000-00-00 00:00:00" || $default_value <> "none"){
//create drop down
//echo list_15min("0000-00-00 01:20:00", 4, "frm_time_out" );
echo list_15min($time_list_start,$start_offset_min, $form_name, $hours_listed, $display_elapsed_hours, $default_value );
} else {
//list time out
echo date_to_time($time) . "&nbsp;&nbsp;[{$et} hrs]";
}
}
function sign_out($time_out, $first_name){
if($time_out == "0000-00-00 00:00:00"){
echo '<input type="submit" name="submit" value="Sign Out: ' . $first_name . '" />';
}
}
//This function corrects the datatype for form submitted variables
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
if(($theValue == 'current_time') || ($theValue == 'Current Date')){
$theValue = current_datetime();
}
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
function dateandtimein($date, $time){
if ($time <> 'current_time'){
$time = $date . ' ' . datetime_to_time($time);
}
return $time;
}
// Drop-Down lists
function list_contacts_edit_add($form_name = "contact_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='new_contact'>Add New Contact</option>\n";
echo "<option value='new_contact'>--------------</option>";
list_contacts("none",$default_value);
echo "</select>\n";
}
function list_contacts_select_user($form_name = "contact_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='no_selection'>Select User</option>\n";
echo "<option value='no_selection'>--------------</option>";
list_contacts("none",$default_value);
echo "</select>\n";
}
function list_CurrentShopUsers_select($form_name = "contact_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='no_selection'>Select Patron</option>\n";
echo "<option value='no_selection'>--------------</option>";
list_CurrentShopUsers("none",$default_value);
echo "</select>\n";
}
function list_contacts_YBP_project($form_name = "contact_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='1269'>Yellow Bike Project</option>\n";
echo "<option value='no_selection'>--------------</option>";
list_contacts("none",$default_value);
echo "</select>\n";
}
function list_contacts_coordinators($form_name = "coordinator_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='no_selection'>Select Coordinator</option>\n";
echo "<option value='no_selection'>--------------</option>";
list_coordinators("none",$default_value);
echo "</select>\n";
}
function list_current_coordinators_select($form_name = "coordinator_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='no_selection'>Select Coordinator</option>\n";
echo "<option value='no_selection'>--------------</option>";
list_current_coordinators("none",$default_value);
echo "</select>\n";
}
function list_donation_locations_withheader($form_name = "coordinator_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='no_selection'>Select Patron</option>\n";
echo "<option value='no_selection'>--------------</option>";
list_donation_locations("none",$default_value);
echo "</select>\n";
}
function list_donation_locations_edit_add($form_name = "contact_id", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='new_contact'>Add New Location</option>\n";
echo "<option value='new_contact'>--------------</option>";
list_donation_locations("none",$default_value);
echo "</select>\n";
}
function list_transaction_types_withheader($form_name = "transaction_types", $default_value = "")
{
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='all_types'>All Types</option>\n";
echo "<option value='all_types'>--------------</option>";
list_transaction_types("none",$default_value);
echo "</select>\n";
}
function list_yes_no($form_name = "list_yes_no", $default_value = 0)
{
if ($default_value == 1){
$select_yes = 'selected="selected"';
$select_no = '';
} else {
$select_yes = '';
$select_no = 'selected="selected"';
}
echo "<select name={$form_name} class='yb_standard'>\n";
echo "<option value='1'". $select_yes .">Yes</option>\n";
echo "<option value='0'". $select_no .">No</option>";
echo "</select>\n";
}
// END Drop-Down lists
function max_shop_id(){
global $database_YBDB, $YBDB;
mysql_select_db($database_YBDB, $YBDB);
$query_Recordset1 = "SELECT max(shop_id) as shop_id FROM shops;";
$Recordset1 = mysql_query($query_Recordset1, $YBDB) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
return $row_Recordset1['shop_id'];
}
// Is there currently a shop?
function current_shop_by_ip(){
global $database_YBDB, $YBDB;
$IP = $_SERVER['REMOTE_ADDR'];
$current_date = current_date();
mysql_select_db($database_YBDB, $YBDB);
$query_Recordset1 = "SELECT shop_id FROM shops WHERE ip_address = '{$IP}' AND date = '{$current_date}' ORDER BY shop_id DESC;";
$Recordset1 = mysql_query($query_Recordset1, $YBDB) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
return $row_Recordset1['shop_id'];
}
?>