Contacts: Ability to add unlimited Emails and URLs. Ability to specify a primary Email, Address, URL, and Number. Ability to select or define a custom label for Emails, Addresses, URLs, and Numbers (similar to Google Contacts).

This commit is contained in:
Nate Jones
2014-11-19 03:44:41 +00:00
parent 0bfd57c148
commit be47e75eab
30 changed files with 2272 additions and 743 deletions
+131 -153
View File
@@ -55,13 +55,22 @@ if (strlen($_GET["contact_uuid"]) > 0) {
//get http post variables and set them to php variables
if (count($_POST)>0) {
$phone_type = check_str($_POST["phone_type"]);
$phone_type_voice = check_str($_POST["phone_type_voice"]);
$phone_type_fax = check_str($_POST["phone_type_fax"]);
$phone_type_video = check_str($_POST["phone_type_video"]);
$phone_type_text = check_str($_POST["phone_type_text"]);
$phone_label = check_str($_POST["phone_label"]);
$phone_label_custom = check_str($_POST["phone_label_custom"]);
$phone_number = check_str($_POST["phone_number"]);
$phone_extension = check_str($_POST["phone_extension"]);
$phone_primary = check_str($_POST["phone_primary"]);
$phone_description = check_str($_POST["phone_description"]);
//remove any phone number formatting
$phone_number = preg_replace('{\D}', '', $phone_number);
//use custom label if set
$phone_label = ($phone_label_custom != '') ? $phone_label_custom : $phone_label;
}
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
@@ -72,8 +81,6 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
}
//check for all required data
//if (strlen($phone_type) == 0) { $msg .= $text['message-required'].$text['label-phone_type']."<br>\n"; }
//if (strlen($phone_number) == 0) { $msg .= $text['message-required'].$text['label-phone_number']."<br>\n"; }
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
require_once "resources/header.php";
require_once "resources/persist_form_var.php";
@@ -89,6 +96,16 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//add or update the database
if ($_POST["persistformvar"] != "true") {
//if primary, unmark other primary numbers
if ($phone_primary) {
$sql = "update v_contact_phones set phone_primary = 0 ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
}
if ($action == "add") {
$contact_phone_uuid = uuid();
$sql = "insert into v_contact_phones ";
@@ -96,20 +113,30 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "contact_phone_uuid, ";
$sql .= "phone_type, ";
$sql .= "phone_type_voice, ";
$sql .= "phone_type_fax, ";
$sql .= "phone_type_video, ";
$sql .= "phone_type_text, ";
$sql .= "phone_label, ";
$sql .= "phone_number, ";
$sql .= "phone_extension, ";
$sql .= "phone_primary, ";
$sql .= "phone_description ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$domain_uuid', ";
$sql .= "'$contact_uuid', ";
$sql .= "'$contact_phone_uuid', ";
$sql .= "'$phone_type', ";
$sql .= "'$phone_number', ";
$sql .= "'$phone_extension', ";
$sql .= "'$phone_description' ";
$sql .= "'".$domain_uuid."', ";
$sql .= "'".$contact_uuid."', ";
$sql .= "'".$contact_phone_uuid."', ";
$sql .= (($phone_type_voice) ? 1 : 'null').", ";
$sql .= (($phone_type_fax) ? 1 : 'null').", ";
$sql .= (($phone_type_video) ? 1 : 'null').", ";
$sql .= (($phone_type_text) ? 1 : 'null').", ";
$sql .= "'".$phone_label."', ";
$sql .= "'".$phone_number."', ";
$sql .= "'".$phone_extension."', ";
$sql .= (($phone_primary) ? 1 : 0).", ";
$sql .= "'".$phone_description."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
@@ -122,12 +149,17 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
if ($action == "update") {
$sql = "update v_contact_phones set ";
$sql .= "contact_uuid = '$contact_uuid', ";
$sql .= "phone_type = '$phone_type', ";
$sql .= "phone_number = '$phone_number', ";
$sql .= "phone_extension = '$phone_extension', ";
$sql .= "phone_description = '$phone_description' ";
$sql .= "where domain_uuid = '$domain_uuid'";
$sql .= "and contact_phone_uuid = '$contact_phone_uuid'";
$sql .= "phone_type_voice = ".(($phone_type_voice) ? 1 : 'null').", ";
$sql .= "phone_type_fax = ".(($phone_type_fax) ? 1 : 'null').", ";
$sql .= "phone_type_video = ".(($phone_type_video) ? 1 : 'null').", ";
$sql .= "phone_type_text = ".(($phone_type_text) ? 1 : 'null').", ";
$sql .= "phone_label = '".$phone_label."', ";
$sql .= "phone_number = '".$phone_number."', ";
$sql .= "phone_extension = '".$phone_extension."', ";
$sql .= "phone_primary = ".(($phone_primary) ? 1 : 0).", ";
$sql .= "phone_description = '".$phone_description."' ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_phone_uuid = '".$contact_phone_uuid."'";
$db->exec(check_sql($sql));
unset($sql);
@@ -148,9 +180,14 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$phone_type = $row["phone_type"];
$phone_type_voice = $row["phone_type_voice"];
$phone_type_fax = $row["phone_type_fax"];
$phone_type_video = $row["phone_type_video"];
$phone_type_text = $row["phone_type_text"];
$phone_label = $row["phone_label"];
$phone_number = $row["phone_number"];
$phone_extension = $row["phone_extension"];
$phone_primary = $row["phone_primary"];
$phone_description = $row["phone_description"];
}
unset ($prep_statement);
@@ -165,18 +202,22 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$document['title'] = $text['title-contact_phones-add'];
}
//show the content
echo "<div align='center'>";
echo "<table width='100%' border='0' cellpadding='0' cellspacing=''>\n";
echo "<tr class='border'>\n";
echo " <td align=\"left\">\n";
echo " <br>";
//javascript to toggle input/select boxes
echo "<script type='text/javascript'>\n";
echo " function toggle_custom(field) {\n";
echo " $('#'+field).toggle();\n";
echo " document.getElementById(field).selectedIndex = 0;\n";
echo " document.getElementById(field+'_custom').value = '';\n";
echo " $('#'+field+'_custom').toggle();\n";
echo " if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').focus(); } else { $('#'+field).focus(); }\n";
echo " }";
echo "</script>";
//show the content
echo "<form method='post' name='frm' action=''>\n";
echo "<div align='center'>\n";
echo "<table width='100%' align='left' border='0' cellpadding='6' cellspacing='0'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' width='30%' nowrap='nowrap'><b>";
echo "<td align='left' valign='top' nowrap='nowrap'><b>";
if ($action == "update") {
echo $text['header-contact_phones-edit'];
}
@@ -184,136 +225,63 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo $text['header-contact_phones-add'];
}
echo "</b></td>\n";
echo "<td width='70%' align='right'>";
echo "<td align='right' valign='top'>";
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='contact_edit.php?id=$contact_uuid'\" value='".$text['button-back']."'>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' colspan='2'>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-phone_label']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
if (is_array($_SESSION["contact"]["phone_label"])) {
sort($_SESSION["contact"]["phone_label"]);
foreach($_SESSION["contact"]["phone_label"] as $row) {
$phone_label_options[] = "<option value='".$row."' ".(($row == $phone_label) ? "selected='selected'" : null).">".$row."</option>";
}
$phone_label_found = (in_array($phone_label, $_SESSION["contact"]["phone_label"])) ? true : false;
}
else {
$selected[$phone_label] = "selected";
$default_labels[] = $text['option-work'];
$default_labels[] = $text['option-home'];
$default_labels[] = $text['option-mobile'];
$default_labels[] = $text['option-main'];
$default_labels[] = $text['option-fax'];
$default_labels[] = $text['option-pager'];
$default_labels[] = $text['option-voicemail'];
$default_labels[] = $text['option-text'];
$default_labels[] = $text['option-other'];
foreach ($default_labels as $default_label) {
$phone_label_options[] = "<option value='".$default_label."' ".$selected[$default_label].">".$default_label."</option>";
}
$phone_label_found = (in_array($phone_label, $default_labels)) ? true : false;
}
echo " <select class='formfld' ".((!$phone_label_found && $phone_label != '') ? "style='display: none;'" : null)." name='phone_label' id='phone_label' onchange=\"getElementById('phone_label_custom').value='';\">\n";
echo " <option value=''></option>\n";
echo (is_array($phone_label_options)) ? implode("\n", $phone_label_options) : null;
echo " </select>\n";
echo " <input type='text' class='formfld' ".(($phone_label_found || $phone_label == '') ? "style='display: none;'" : null)." name='phone_label_custom' id='phone_label_custom' value=\"".((!$phone_label_found) ? htmlentities($phone_label) : null)."\">\n";
echo " <input type='button' id='btn_toggle_type' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('phone_label');\">\n";
echo "<br />\n";
echo $text['description-phone_label']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-phone_type'].":\n";
echo " ".$text['label-phone_type']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
if (is_array($_SESSION["contact"]["phone_type"])) {
sort($_SESSION["contact"]["phone_type"]);
echo " <select class='formfld' style='width:85%;' name='phone_type'>\n";
echo " <option value=''></option>\n";
foreach($_SESSION["contact"]["phone_type"] as $row) {
if ($row == $phone_type) {
echo " <option value='".$row."' selected='selected'>".$row."</option>\n";
}
else {
echo " <option value='".$row."'>".$row."</option>\n";
}
}
echo " </select>\n";
}
else {
echo " <select class='formfld' name='phone_type'>\n";
echo " <option value=''></option>\n";
if ($phone_type == "home") {
echo " <option value='home' selected='selected'>Home</option>\n";
}
else {
echo " <option value='home'>Home</option>\n";
}
if ($phone_type == "work") {
echo " <option value='work' selected='selected'>Work</option>\n";
}
else {
echo " <option value='work'>Work</option>\n";
}
if ($phone_type == "pref") {
echo " <option value='pref' selected='selected'>Pref</option>\n";
}
else {
echo " <option value='pref'>Pref</option>\n";
}
if ($phone_type == "voice") {
echo " <option value='voice' selected='selected'>Voice</option>\n";
}
else {
echo " <option value='voice'>Voice</option>\n";
}
if ($phone_type == "fax") {
echo " <option value='fax' selected='selected'>Fax</option>\n";
}
else {
echo " <option value='fax'>Fax</option>\n";
}
if ($phone_type == "msg") {
echo " <option value='msg' selected='selected'>MSG</option>\n";
}
else {
echo " <option value='msg'>MSG</option>\n";
}
if ($phone_type == "cell") {
echo " <option value='cell' selected='selected'>Cell</option>\n";
}
else {
echo " <option value='cell'>Cell</option>\n";
}
if ($phone_type == "pager") {
echo " <option value='pager' selected='selected'>Pager</option>\n";
}
else {
echo " <option value='pager'>Pager</option>\n";
}
if ($phone_type == "bbs") {
echo " <option value='bbs' selected='selected'>BBS</option>\n";
}
else {
echo " <option value='bbs'>BBS</option>\n";
}
if ($phone_type == "modem") {
echo " <option value='modem' selected='selected'>Modem</option>\n";
}
else {
echo " <option value='modem'>Modem</option>\n";
}
if ($phone_type == "car") {
echo " <option value='car' selected='selected'>Car</option>\n";
}
else {
echo " <option value='car'>Car</option>\n";
}
if ($phone_type == "isdn") {
echo " <option value='isdn' selected='selected'>ISDN</option>\n";
}
else {
echo " <option value='isdn'>ISDN</option>\n";
}
if ($phone_type == "video") {
echo " <option value='video' selected='selected'>Video</option>\n";
}
else {
echo " <option value='video'>Video</option>\n";
}
if ($phone_type == "pcs") {
echo " <option value='pcs' selected='selected'>PCS</option>\n";
}
else {
echo " <option value='pcs'>PCS</option>\n";
}
if ($phone_type == "iana-token") {
echo " <option value='iana-token' selected='selected'>iana-token</option>\n";
}
else {
echo " <option value='iana-token'>iana-token</option>\n";
}
if ($phone_type == "x-name") {
echo " <option value='x-name' selected='selected'>x-name</option>\n";
}
else {
echo " <option value='x-name'>x-name</option>\n";
}
echo " </select>\n";
}
echo " <input type='checkbox' name='phone_type_voice' id='phone_type_voice' value='1' ".(($phone_type_voice) ? "checked='checked'" : null)."><label for='phone_type_voice'>&nbsp;".$text['label-voice']."</label>&nbsp;\n";
echo " <input type='checkbox' name='phone_type_fax' id='phone_type_fax' value='1' ".(($phone_type_fax) ? "checked='checked'" : null)."><label for='phone_type_fax'>&nbsp;".$text['label-fax']."</label>&nbsp;\n";
echo " <input type='checkbox' name='phone_type_video' id='phone_type_video' value='1' ".(($phone_type_video) ? "checked='checked'" : null)."><label for='phone_type_video'>&nbsp;".$text['label-video']."</label>&nbsp;\n";
echo " <input type='checkbox' name='phone_type_text' id='phone_type_text' value='1' ".(($phone_type_text) ? "checked='checked'" : null)."><label for='phone_type_text'>&nbsp;".$text['label-text']."</label>\n";
echo "<br />\n";
echo $text['description-phone_type']."\n";
echo "</td>\n";
@@ -321,7 +289,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-phone_number'].":\n";
echo " ".$text['label-phone_number']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='phone_number' maxlength='255' value=\"$phone_number\">\n";
@@ -332,7 +300,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-phone_extension'].":\n";
echo " ".$text['label-phone_extension']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='phone_extension' maxlength='255' value=\"$phone_extension\">\n";
@@ -343,7 +311,21 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-phone_description'].":\n";
echo " ".$text['label-primary']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='phone_primary' id='phone_primary'>\n";
echo " <option value='0'>".$text['option-false']."</option>\n";
echo " <option value='1' ".(($phone_primary) ? "selected" : null).">".$text['option-true']."</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-phone_primary']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-phone_description']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='phone_description' maxlength='255' value=\"$phone_description\">\n";
@@ -354,6 +336,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>\n";
echo " <input type='hidden' name='contact_uuid' value='$contact_uuid'>\n";
if ($action == "update") {
echo " <input type='hidden' name='contact_phone_uuid' value='$contact_phone_uuid'>\n";
@@ -364,11 +347,6 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "</table>";
echo "</form>";
echo " </td>";
echo " </tr>";
echo "</table>";
echo "</div>";
//include the footer
require_once "resources/footer.php";
?>