Report abuse

<?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} = '';
	}
}
?>