Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('contact_view')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //action add or update if (is_uuid($_REQUEST["id"])) { $contact_uuid = $_REQUEST["id"]; } else { header("Location: contacts.php"); } //main contact details $sql = "select * from v_contacts "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and contact_uuid = :contact_uuid "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['contact_uuid'] = $contact_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && @sizeof($row) != 0) { $contact_type = $row["contact_type"]; $contact_organization = $row["contact_organization"]; $contact_name_prefix = $row["contact_name_prefix"]; $contact_name_given = $row["contact_name_given"]; $contact_name_middle = $row["contact_name_middle"]; $contact_name_family = $row["contact_name_family"]; $contact_name_suffix = $row["contact_name_suffix"]; $contact_nickname = $row["contact_nickname"]; $contact_title = $row["contact_title"]; $contact_category = $row["contact_category"]; $contact_role = $row["contact_role"]; $contact_time_zone = $row["contact_time_zone"]; $contact_note = $row["contact_note"]; } unset($sql, $parameters, $row); //get the available users for this contact $sql = "select * from v_users "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "order by username asc "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $users = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //determine if contact assigned to a user if (is_array($users) && sizeof($users) != 0) { foreach ($users as $user) { if ($user['contact_uuid'] == $contact_uuid) { $contact_user_uuid = $user['user_uuid']; break; } } } //get the assigned users that can view this contact $sql = "select u.username, u.user_uuid, a.contact_user_uuid from v_contacts as c, v_users as u, v_contact_users as a "; $sql .= "where c.contact_uuid = :contact_uuid "; $sql .= "and c.domain_uuid = :domain_uuid "; $sql .= "and u.user_uuid = a.user_uuid "; $sql .= "and c.contact_uuid = a.contact_uuid "; $sql .= "order by u.username asc "; $parameters['contact_uuid'] = $contact_uuid; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $contact_users_assigned = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the assigned groups that can view this contact $sql = "select g.*, cg.contact_group_uuid "; $sql .= "from v_groups as g, v_contact_groups as cg "; $sql .= "where cg.group_uuid = g.group_uuid "; $sql .= "and cg.domain_uuid = :domain_uuid "; $sql .= "and cg.contact_uuid = :contact_uuid "; $sql .= "and cg.group_uuid <> :group_uuid "; $sql .= "order by g.group_name asc "; $parameters['domain_uuid'] = $domain_uuid; $parameters['contact_uuid'] = $contact_uuid; $parameters['group_uuid'] = $_SESSION["user_uuid"]; $database = new database; $contact_groups_assigned = $database->select($sql, $parameters, 'all'); if (is_array($contact_groups_assigned) && @sizeof($contact_groups_assigned) != 0) { foreach ($contact_groups_assigned as $field) { $contact_groups[] = "'".$field['group_uuid']."'"; } } unset($sql, $parameters); //get the available groups for this contact $sql = "select group_uuid, group_name from v_groups "; $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; if (is_array($contact_groups) && @sizeof($contact_groups) != 0) { $sql .= "and group_uuid not in (".implode(',', $contact_groups).") "; } $sql .= "order by group_name asc "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $contact_groups_available = $database->select($sql, $parameters, 'all'); unset($sql, $parameters, $contact_groups); //determine title name if ($contact_name_given || $contact_name_family) { $contact_name = $contact_name_prefix ? escape($contact_name_prefix).' ' : null; $contact_name .= $contact_name_given ? escape($contact_name_given).' ' : null; $contact_name .= $contact_name_middle ? escape($contact_name_middle).' ' : null; $contact_name .= $contact_name_family ? escape($contact_name_family).' ' : null; $contact_name .= $contact_name_suffix ? escape($contact_name_suffix).' ' : null; } else { $contact_name = $contact_organization; } //show the header $document['title'] = $text['title-contact-edit'].($contact_name ? ': '.$contact_name : null); require_once "resources/header.php"; //determine qr branding if ($_SESSION['theme']['qr_brand_type']['text'] == 'image' && $_SESSION['theme']['qr_brand_image']['text'] != '') { echo ""; $qr_option = "image: $('#img-buffer')[0],"; $qr_mode = '4'; $qr_size = '0.2'; } else if ($_SESSION['theme']['qr_brand_type']['text'] == 'text' && $_SESSION['theme']['qr_brand_text']['text'] != '') { $qr_option = 'label: "'.$_SESSION['theme']['qr_brand_text']['text'].'"'; $qr_mode = '2'; $qr_size = '0.05'; } else { echo ""; $qr_option = "image: $('#img-buffer')[0],"; $qr_mode = '4'; $qr_size = '0.2'; } //qr code generation $_GET['type'] = "text"; $qr_vcard = true; include "contacts_vcard.php"; echo ""; echo ""; echo ""; echo ""; //show the content echo "
\n"; echo "
".($contact_name ? $contact_name : $text['header-contact-edit'])."
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','collapse'=>'hide-sm-dn','style'=>'margin-right: 15px;','link'=>'contacts.php']); if (permission_exists('contact_time_add')) { //detect timer state (and start time) $sql = "select "; $sql .= "time_start "; $sql .= "from v_contact_times "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and user_uuid = :user_uuid "; $sql .= "and contact_uuid = :contact_uuid "; $sql .= "and time_start is not null "; $sql .= "and time_stop is null "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['user_uuid'] = $_SESSION['user']['user_uuid']; $parameters['contact_uuid'] = $contact_uuid; $database = new database; $time_start = $database->select($sql, $parameters, 'column'); $btn_style = $time_start ? 'color: #fff; background-color: #3693df; background-image: none;' : null; unset($sql, $parameters); echo button::create(['type'=>'button','label'=>$text['button-timer'],'icon'=>'clock','style'=>$btn_style,'title'=>$time_start,'collapse'=>'hide-sm-dn','onclick'=>"window.open('contact_timer.php?domain_uuid=".urlencode($domain_uuid)."&contact_uuid=".urlencode($contact_uuid)."','contact_time_".escape($contact_uuid)."','width=300, height=375, top=30, left='+(screen.width - 350)+', menubar=no, scrollbars=no, status=no, toolbar=no, resizable=no');"]); } echo button::create(['type'=>'button','label'=>$text['button-qr_code'],'icon'=>'qrcode','collapse'=>'hide-sm-dn','onclick'=>"$('#qr_code_container').fadeIn(400);"]); echo button::create(['type'=>'button','label'=>$text['button-vcard'],'icon'=>'address-card','collapse'=>'hide-sm-dn','link'=>'contacts_vcard.php?id='.urlencode($contact_uuid).'&type=download']); if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/invoices')) { echo button::create(['type'=>'button','label'=>$text['button-invoices'],'icon'=>'file-invoice-dollar','collapse'=>'hide-sm-dn','link'=>'../invoices/invoices.php?id='.urlencode($contact_uuid)]); } if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/certificates')) { echo button::create(['type'=>'button','label'=>$text['button-certificate'],'icon'=>'certificate','collapse'=>'hide-sm-dn','link'=>'../certificates/index.php?name='.urlencode($contact_name_given." ".$contact_name_family)]); } if (permission_exists('user_edit') && is_uuid($contact_user_uuid)) { echo button::create(['type'=>'button','label'=>$text['button-user'],'icon'=>'user','collapse'=>'hide-sm-dn','link'=>'../../core/users/user_edit.php?id='.urlencode($contact_user_uuid)]); } if ( permission_exists('contact_phone_add') || permission_exists('contact_address_add') || permission_exists('contact_email_add') || permission_exists('contact_url_add') || permission_exists('contact_relation_add') || permission_exists('contact_note_add') || permission_exists('contact_time_add') || permission_exists('contact_setting_add') || permission_exists('contact_attachment_add') ) { echo ""; } if (permission_exists('contact_edit')) { echo button::create(['type'=>'button','label'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'id'=>'btn_edit','style'=>'margin-left: 15px;','collapse'=>'hide-sm-dn','link'=>'contact_edit.php?id='.urlencode($contact_uuid)]); } echo "
\n"; echo "
\n"; echo "
\n"; if ( $action == "update" && ( permission_exists('contact_delete') || permission_exists('contact_user_delete') || permission_exists('contact_group_delete') || permission_exists('contact_phone_delete') || permission_exists('contact_address_delete') || permission_exists('contact_email_delete') || permission_exists('contact_url_delete') || permission_exists('contact_relation_delete') || permission_exists('contact_note_delete') || permission_exists('contact_time_delete') || permission_exists('contact_setting_delete') || permission_exists('contact_attachment_delete') )) { echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]); } if ($contact_title || $contact_organization) { echo ($contact_title ? ''.$contact_title.'' : null).($contact_title && $contact_organization ? ', ' : null).($contact_organization ? ''.$contact_organization.'' : null)."\n"; } else { echo $contact_note."\n"; } echo "

\n"; echo "
\n"; //general info echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; //nickname if ($contact_nickname) { echo "
".$text['label-contact_nickname']."
\n"; echo "
\"".escape($contact_nickname)."\"
\n"; } //contact type if ($contact_type) { echo "
".$text['label-contact_type']."
\n"; echo "
"; if (is_array($_SESSION["contact"]["type"])) { sort($_SESSION["contact"]["type"]); foreach ($_SESSION["contact"]["type"] as $type) { if ($contact_type == $type) { echo escape($type); } } } else if ($text['option-contact_type_'.$contact_type]) { echo $text['option-contact_type_'.$contact_type]; } else { echo escape($contact_type); } echo "
\n"; } //category if ($contact_category) { echo "
".$text['label-contact_category']."
\n"; echo "
"; if (is_array($_SESSION["contact"]["category"])) { sort($_SESSION["contact"]["category"]); foreach ($_SESSION["contact"]["category"] as $category) { if ($contact_category == $category) { echo escape($category); break; } } } else { echo escape($contact_category); } echo "
\n"; } //role if ($contact_role) { echo "
".$text['label-contact_role']."
\n"; echo "
"; if (is_array($_SESSION["contact"]["role"])) { sort($_SESSION["contact"]["role"]); foreach ($_SESSION["contact"]["role"] as $role) { if ($contact_role == $role) { echo escape($role); break; } } } else { echo escape($contact_role); } echo "
\n"; } //time_zone if ($contact_time_zone) { echo "
".$text['label-contact_time_zone']."
\n"; echo "
"; echo $contact_time_zone."
\n"; echo "
\n"; } //users (viewing contact) if (permission_exists('contact_user_view') && is_array($contact_users_assigned) && @sizeof($contact_users_assigned) != 0) { echo "
".$text['label-users']."
\n"; echo "
"; foreach ($contact_users_assigned as $field) { echo escape($field['username'])."
\n"; } echo "
\n"; } //groups (viewing contact) if (permission_exists('contact_group_view') && is_array($contact_groups_assigned) && @sizeof($contact_groups_assigned) != 0) { echo "
".$text['label-groups']."
\n"; echo "
"; foreach ($contact_groups_assigned as $field) { echo escape($field['group_name'])."
\n"; } echo "
\n"; } echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; //numbers if (permission_exists('contact_phone_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require 'contact_phones_view.php'; echo "
\n"; echo "
\n"; echo "
\n"; } //emails if (permission_exists('contact_email_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require 'contact_emails_view.php'; echo "
\n"; echo "
\n"; echo "
\n"; } //addresses if (permission_exists('contact_address_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require 'contact_addresses_view.php'; echo "
\n"; echo "
\n"; echo "
\n"; } //urls if (permission_exists('contact_url_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require "contact_urls_view.php"; echo "
\n"; echo "
\n"; echo "
\n"; } //relations if (permission_exists('contact_relation_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require "contact_relations_view.php"; echo "
\n"; echo "
\n"; echo "
\n"; } //attachments if (permission_exists('contact_attachment_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require "contact_attachments_view.php"; echo "
\n"; echo "
\n"; echo "
\n"; } //times if (permission_exists('contact_time_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require "contact_times_view.php"; echo "
\n"; echo "
\n"; echo "
\n"; } //extensions if (permission_exists('contact_extension_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require "contact_extensions_view.php"; echo "
\n"; echo "
\n"; echo "
\n"; } echo "
\n"; echo "
\n"; //notes if (permission_exists('contact_note_view')) { echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; require "contact_notes_view.php"; echo "
\n"; echo "
\n"; echo "
\n"; } echo "
\n"; echo "

\n"; //include the footer require_once "resources/footer.php"; ?>