<?php
$database = '../../data/file.txt';
$name_field = 'names';
$phone_field = 'phone';
$email_field = 'email';
$message = '';
define('ADMIN_MAIL','admin@example.com');
$times = array(
'',

'Saturday, December 6
10:00 am - 11:00 am
Nordstrom: Upstairs',

'Saturday, December 6
10:00 am-11:00 am
Downstairs',

'Saturday, December 6
11:00 am-12:00 noon
Nordstrom: Upstairs',

'Saturday, December 6
11:00 am - 12:00 noon
Downstairs',

'Saturday, December 6
12:00 noon - 1:00 pm
Nordstrom: Upstairs',

'Saturday, December 6
12:00 noon - 1:00 pm
Downstairs',

'Saturday, December 6
1:00 pm - 2:00 pm
Nordstrom: Upstairs',

'Saturday, December 6
1:00 pm - 2:00 pm
Downstairs',

'Saturday, December 6
2:00 pm - 3:00 pm
Nordstrom: Upstairs',

'Saturday, December 6
2:00 pm - 3:00 pm
Downstairs',

'Saturday, December 6
3:00 pm - 4:00 pm
Nordstrom: Upstairs',

'Saturday, December 6
3:00 pm - 4:00 pm
Downstairs',

'Sunday, December 7
10:00 am - 11:00 am
Nordstrom: Upstairs',

'Sunday, December 7
10:00 am - 11:00 am
Downstairs',

'Sunday, December 7
11:00 am - 12:00 noon
Nordstrom: Upstairs',

'Sunday, December 7
11:00 am - 12:00 noon
Downstairs',

'Sunday, December 7
12:00 noon - 1:00 pm
Nordstrom: Upstairs',

'Sunday, December 7
12:00 noon - 1:00 pm
Downstairs',

'Sunday, December 7
1:00 pm - 2:00 pm
Nordstrom: Upstairs',

'Sunday, December 7
1:00 pm - 2:00 pm
Downstairs',

'Sunday, December 7
2:00 pm - 3:00 pm
Nordstrom: Upstairs',

'Sunday, December 7
2:00 pm - 3:00 pm
Downstairs',

'Sunday, December 7
3:00 pm - 4:00 pm
Nordstrom: Upstairs',

'Sunday, December 7
3:00 pm - 4:00 pm
Nordstrom: Downstairs'
);
/**
* A really nice tool to clean strings or arrays.
*
* @param mixed $mxdInput A string or an array
* @return mixed same as input, but with trim and strip_tags applied to string or all elements of array, depending on imput format
* @author Walter Lee Davis
*/

function clean($mxdInput){
//recursive function for multidimensional arrays
if(is_string($mxdInput)) return trim(strip_tags($mxdInput));
$out = array();
foreach($mxdInput as $k=>$v){
$out[$k] = clean($v);
}
return $out;
}

/**
* Convenience wrapper for htmlentities, customized for UTF-8
*
* @param string $string Input text
* @return string, with non-browser-safe characters replaced with entities
* @author Walter Lee Davis
*/

function h($string)
{
return stripslashes(htmlentities($string,ENT_COMPAT,'UTF-8'));
}

/**
* Gracefully loads the contents of a text file and unserializes them.
*
* @param string $strPathToTextFile Filesystem path to the text file
* @return array
* @author Walter Lee Davis
*/

function load($strPathToTextFile){
if(
!file_exists($strPathToTextFile)
|| !$array = unserialize(file_get_contents($strPathToTextFile))
) $array = array();
ksort($array);
return $array;
}

/**
* Stores an array in a given text file, discarding duplicate entries
*
* @param array $arrData
* @param string $strPathToTextFile
* @return boolean
* @author Walter Lee Davis
*/

function store($arrData, $strPathToTextFile){
$input = clean($arrData);
$array = load($strPathToTextFile);
foreach($input as $key => $val){
if(!empty($val)){
if(!isset($array[$key])){
$array[$key][] = $val;
}elseif(is_array($array[$key]) && !in_array($val,$array[$key])){
$array[$key][] = $val;
}else{
continue;
}
}
}
return file_put_contents($strPathToTextFile,serialize($array),LOCK_EX);
}

/**
* Prints an array for debugging
*
* @param mixed $mxdInput
* @return string (HTML)
* @author Walter Lee Davis
*/

function pre_print($mxdInput){
print '<pre>';
print_r($mxdInput);
print '</pre>';
}

function notify($arrNames,$arrEmail,$arrPhone,$arrTimes){
$arrNames = clean($arrNames);
$arrEmail = clean($arrEmail);
$arrPhone = clean($arrPhone);
$count = 0;
foreach($arrNames as $key => $name){
$body = '';
if(!empty($name)){
$body = $name . "\n";
$body .= $arrEmail[$key] . "\n";
$body .= $arrPhone[$key] . "\n\n";
$body .= $arrTimes[$key] . "\n\n";
mail(ADMIN_MAIL,'New Bell-ringing registration',$body, 'From: ' . ADMIN_MAIL,'-f' . ADMIN_MAIL);
$count ++;
}
}
if($count > 0) return '<h2>Thanks!</h2>';
return '';
}
//main process
if(isset($_POST[$name_field])){
store($_POST[$name_field],$database);
$message = notify($_POST[$name_field],$_POST[$email_field],$_POST[$phone_field],$times);
}
$names = load($database);
//pre_print($names);
$fields = range(1,24);
foreach($fields as $f){
$field_name = 'names_' . $f;
if(array_key_exists($f,$names)){
${$field_name} = implode('<br />',array_map('h',$names[$f]));
}else{
${$field_name} = '';
}
}
?>