Portions created by the Initial Developer are Copyright (C) 2008-2023 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Luis Daniel Lucio Quiroz */ //includes files require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('contact_relation_edit') || permission_exists('contact_relation_add')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //action add or update if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) { $action = "update"; $contact_relation_uuid = $_REQUEST["id"]; } else { $action = "add"; } //get the contact uuid if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) { $contact_uuid = $_GET["contact_uuid"]; } //get http post variables and set them to php variables if (!empty($_POST)) { $relation_label = $_POST["relation_label"]; $relation_label_custom = $_POST["relation_label_custom"]; $relation_contact_uuid = $_POST["relation_contact_uuid"]; $relation_reciprocal = $_POST["relation_reciprocal"]; $relation_reciprocal_label = $_POST["relation_reciprocal_label"]; $relation_reciprocal_label_custom = $_POST["relation_reciprocal_label_custom"]; //use custom label(s), if set $relation_label = ($relation_label_custom != '') ? $relation_label_custom : $relation_label; $relation_reciprocal_label = ($relation_reciprocal_label_custom != '') ? $relation_reciprocal_label_custom : $relation_reciprocal_label; } //process the form data if (!empty($_POST) && empty($_POST["persistformvar"])) { //set the uuid if ($action == "update") { $contact_relation_uuid = $_POST["contact_relation_uuid"]; } //validate the token $token = new token; if (!$token->validate($_SERVER['PHP_SELF'])) { message::add($text['message-invalid_token'],'negative'); header('Location: contacts.php'); exit; } //check for all required data $msg = ''; if (!empty($msg) && empty($_POST["persistformvar"])) { require_once "resources/header.php"; require_once "resources/persist_form_var.php"; echo "
\n"; echo "
\n"; echo $msg."
"; echo "
\n"; persistformvar($_POST); echo "
\n"; require_once "resources/footer.php"; return; } //add or update the database if (empty($_POST["persistformvar"])) { //update last modified $array['contacts'][0]['contact_uuid'] = $contact_uuid; $array['contacts'][0]['domain_uuid'] = $domain_uuid; $array['contacts'][0]['last_mod_date'] = 'now()'; $array['contacts'][0]['last_mod_user'] = $_SESSION['username']; $p = new permissions; $p->add('contact_edit', 'temp'); $database = new database; $database->app_name = 'contacts'; $database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c'; $database->save($array); unset($array); $p->delete('contact_edit', 'temp'); //add the relation if ($action == "add" && permission_exists('contact_relation_add')) { $contact_relation_uuid = uuid(); $array['contact_relations'][0]['contact_relation_uuid'] = $contact_relation_uuid; if ($relation_reciprocal) { $contact_relation_uuid = uuid(); $array['contact_relations'][1]['contact_relation_uuid'] = $contact_relation_uuid; $array['contact_relations'][1]['domain_uuid'] = $_SESSION['domain_uuid']; $array['contact_relations'][1]['contact_uuid'] = $relation_contact_uuid; $array['contact_relations'][1]['relation_label'] = $relation_reciprocal_label; $array['contact_relations'][1]['relation_contact_uuid'] = $contact_uuid; } message::add($text['message-add']); } //update the relation if ($action == "update" && permission_exists('contact_relation_edit')) { $array['contact_relations'][0]['contact_relation_uuid'] = $contact_relation_uuid; message::add($text['message-update']); } //execute if (!empty($array)) { $array['contact_relations'][0]['contact_uuid'] = $contact_uuid; $array['contact_relations'][0]['domain_uuid'] = $_SESSION['domain_uuid']; $array['contact_relations'][0]['relation_label'] = $relation_label; $array['contact_relations'][0]['relation_contact_uuid'] = $relation_contact_uuid; $database = new database; $database->app_name = 'contacts'; $database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c'; $database->save($array); unset($array); } //redirect header("Location: contact_edit.php?id=".escape($contact_uuid)); exit; } } //pre-populate the form if (!empty($_GET) && empty($_POST["persistformvar"])) { $contact_relation_uuid = $_GET["id"] ?? ''; $sql = "select * from v_contact_relations "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and contact_relation_uuid = :contact_relation_uuid "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['contact_relation_uuid'] = $contact_relation_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && @sizeof($row) != 0) { $relation_label = $row["relation_label"]; $relation_contact_uuid = $row["relation_contact_uuid"]; } unset($sql, $parameters, $row); } //get contact details and contact_name $sql = "select contact_uuid, contact_organization, contact_name_given, contact_name_family, contact_nickname "; $sql .= "from v_contacts "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and contact_uuid <> :contact_uuid "; $sql .= "order by contact_organization desc, contact_name_given asc, contact_name_family asc "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['contact_uuid'] = $contact_relation_uuid; $database = new database; $contacts = $database->select($sql, $parameters, 'all'); if (!empty($contacts) && is_uuid($row['relation_contact_uuid'])) { foreach($contacts as $field) { if ($field['contact_uuid'] == $row['relation_contact_uuid']) { $name = array(); if (!empty($field['contact_organization'])) { $name[] = $field['contact_organization']; } if (!empty($field['contact_name_family'])) { $name[] = $field['contact_name_family']; } if (!empty($field['contact_name_given'])) { $name[] = $field['contact_name_given']; } if (empty($field['contact_name_family']) && empty($field['contact_name_given']) && !empty($field['contact_nickname'])) { $name[] = $field['contact_nickname']; } $contact_name = implode(', ', $name); break; } } } //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //show the header $document['title'] = $text['title-contact_relation']; require_once "resources/header.php"; ?> "; echo " function toggle_custom(field) {"; echo " $('#'+field).toggle();"; echo " document.getElementById(field).selectedIndex = 0;"; echo " document.getElementById(field+'_custom').value = '';"; echo " $('#'+field+'_custom').toggle();"; echo " if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').trigger('focus'); } else { $('#'+field).trigger('focus'); }"; echo " }"; echo ""; //show the content echo "
\n"; echo "
\n"; echo "
".$text['header-contact_relation']."
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]); echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']); echo "
\n"; echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if ($action == 'add') { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-contact_relation_label']."\n"; echo "\n"; if (!empty($_SESSION["contact"]["relation_label"])) { sort($_SESSION["contact"]["relation_label"]); foreach($_SESSION["contact"]["relation_label"] as $row) { $relation_label_options[] = ""; } $relation_label_found = (in_array($relation_label, $_SESSION["contact"]["relation_label"])) ? true : false; } else { $selected[!empty($relation_label)] = "selected"; $default_labels[] = $text['label-contact_relation_option_parent']; $default_labels[] = $text['label-contact_relation_option_child']; $default_labels[] = $text['label-contact_relation_option_employee']; $default_labels[] = $text['label-contact_relation_option_member']; $default_labels[] = $text['label-contact_relation_option_associate']; $default_labels[] = $text['label-contact_relation_option_other']; foreach ($default_labels as $default_label) { $relation_label_options[] = ""; } $relation_label_found = (in_array(!empty($relation_label), $default_labels)) ? true : false; } echo " \n"; echo " \n"; echo " \n"; echo "
\n"; echo !empty($text['description-relation_label'])."\n"; echo "
\n"; echo " ".$text['label-contact_relation_contact']."\n"; echo "\n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['label-contact_relation_reciprocal']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-contact_relation_reciprocal']."\n"; echo "
\n"; echo "\n"; } else { echo "\n"; } echo "

"; echo "\n"; if ($action == "update") { echo "\n"; } echo "\n"; echo "
"; //include the footer require_once "resources/footer.php"; ?>