2016-04-26 03:30:23 +02:00
< ? php
/*
FusionPBX
Version : MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 ( the " License " ); you may not use this file except in compliance with
the License . You may obtain a copy of the License at
http :// www . mozilla . org / MPL /
Software distributed under the License is distributed on an " AS IS " basis ,
WITHOUT WARRANTY OF ANY KIND , either express or implied . See the License
for the specific language governing rights and limitations under the
License .
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane < markjcrane @ fusionpbx . com >
2020-03-04 15:07:37 +01:00
Portions created by the Initial Developer are Copyright ( C ) 2008 - 2020
2016-04-26 03:30:23 +02:00
the Initial Developer . All Rights Reserved .
Contributor ( s ) :
Mark J Crane < markjcrane @ fusionpbx . com >
*/
2020-03-04 15:07:37 +01:00
2022-10-11 00:35:14 +02:00
//set the include path
$conf = glob ( " { /usr/local/etc,/etc}/fusionpbx/config.conf " , GLOB_BRACE );
set_include_path ( parse_ini_file ( $conf [ 0 ])[ 'document.root' ]);
//includes files
2020-03-04 15:07:37 +01:00
require_once " resources/require.php " ;
require_once " resources/check_auth.php " ;
require_once " resources/functions/google_get_groups.php " ;
require_once " resources/functions/google_get_contacts.php " ;
//check permissions
if ( permission_exists ( 'contact_add' )) {
//access granted
}
else {
echo " access denied " ;
exit ;
}
2016-04-26 03:30:23 +02:00
//add multi-lingual support
$language = new text ;
$text = $language -> get ();
//handle import
if ( $_POST [ 'a' ] == 'import' ) {
if ( sizeof ( $_POST [ 'group_id' ]) > 0 ) {
//get contact ids for those in the submitted groups
if ( sizeof ( $_SESSION [ 'contact_auth' ][ 'google' ]) > 0 ) {
foreach ( $_SESSION [ 'contact_auth' ][ 'google' ] as $contact [ 'id' ] => $contact ) {
foreach ( $contact [ 'groups' ] as $contact_group [ 'id' ] => $meh ) {
if ( in_array ( $contact_group [ 'id' ], $_POST [ 'group_id' ])) {
$import_ids [] = $contact [ 'id' ];
}
}
}
}
}
if ( sizeof ( $_POST [ 'contact_id' ]) > 0 ) {
foreach ( $_POST [ 'contact_id' ] as $contact_id ) {
$import_ids [] = $contact_id ;
}
}
//iterate selected contact ids, insert contact into database
$contacts_imported = 0 ;
$contacts_skipped = 0 ;
$contacts_replaced = 0 ;
if ( sizeof ( $import_ids ) > 0 ) {
$import_ids = array_unique ( $import_ids );
2019-07-27 17:03:55 +02:00
foreach ( $import_ids as $index_1 => $contact_id ) {
2016-04-26 03:30:23 +02:00
//check for duplicate contact (already exists, previously imported, etc)
$sql = " select contact_uuid from v_contact_settings " ;
2019-07-27 17:03:55 +02:00
$sql .= " where domain_uuid = :domain_uuid " ;
2016-04-26 03:30:23 +02:00
$sql .= " and contact_setting_category = 'google' " ;
$sql .= " and contact_setting_subcategory = 'id' " ;
2019-07-27 17:03:55 +02:00
$sql .= " and contact_setting_value = :contact_setting_value " ;
2016-04-26 03:30:23 +02:00
$sql .= " and contact_setting_enabled = 'true' " ;
2019-07-27 17:03:55 +02:00
$parameters [ 'domain_uuid' ] = $_SESSION [ 'domain_uuid' ];
$parameters [ 'contact_setting_value' ] = $contact_id ;
$database = new database ;
$result = $database -> select ( $sql , $parameters , 'row' );
if ( is_uuid ( $result [ 'contact_uuid' ])) {
2016-04-26 03:30:23 +02:00
$duplicate_exists = true ;
$duplicate_contact_uuid = $result [ 'contact_uuid' ];
}
else {
$duplicate_exists = false ;
}
2019-07-27 17:03:55 +02:00
unset ( $sql , $parameters , $result );
2016-04-26 03:30:23 +02:00
//skip importing contact
if ( $duplicate_exists && $_POST [ 'import_duplicates' ] == 'skip' ) {
$contacts_skipped ++ ;
continue ;
}
//replace contact (delete before inserts below)
else if ( $duplicate_exists && $_POST [ 'import_duplicates' ] == 'replace' ) {
2020-03-04 15:07:37 +01:00
//build array
$array [ 0 ][ 'checked' ] = 'true' ;
$array [ 0 ][ 'uuid' ] = $duplicate_contact_uuid ;
unset ( $duplicate_contact_uuid );
//grant temporary permissions
$p = new permissions ;
$p -> add ( 'contact_delete' , 'temp' );
//delete duplicate contact
$obj = new contacts ;
$obj -> delete ( $array );
2020-06-17 18:14:23 +02:00
unset ( $array );
2020-03-04 15:07:37 +01:00
//revoke temporary permissions
$p -> delete ( 'contact_delete' , 'temp' );
//increase counter
$contacts_replaced ++ ;
2016-04-26 03:30:23 +02:00
}
//extract contact record from array using contact id
$contact = $_SESSION [ 'contact_auth' ][ 'google' ][ $contact_id ];
//insert contact
$contact_uuid = uuid ();
2019-07-27 17:03:55 +02:00
$array [ 'contacts' ][ $index_1 ][ 'domain_uuid' ] = $_SESSION [ 'domain_uuid' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_uuid' ] = $contact_uuid ;
$array [ 'contacts' ][ $index_1 ][ 'contact_type' ] = $_POST [ 'import_type' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_organization' ] = $contact [ 'organization' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_name_prefix' ] = $contact [ 'name_prefix' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_name_given' ] = $contact [ 'name_given' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_name_middle' ] = $contact [ 'name_middle' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_name_family' ] = $contact [ 'name_family' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_name_suffix' ] = $contact [ 'name_suffix' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_nickname' ] = $contact [ 'nickname' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_title' ] = $contact [ 'title' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_category' ] = $_POST [ 'import_category' ];
$array [ 'contacts' ][ $index_1 ][ 'contact_note' ] = $contact [ 'notes' ];
2016-04-26 03:30:23 +02:00
//set sharing
if ( $_POST [ 'import_shared' ] != 'true' ) {
2019-07-27 17:03:55 +02:00
$contact_group_uuid = uuid ();
$array [ 'contact_groups' ][ $index_1 ][ 'contact_group_uuid' ] = $contact_group_uuid ;
$array [ 'contact_groups' ][ $index_1 ][ 'domain_uuid' ] = $_SESSION [ 'domain_uuid' ];
$array [ 'contact_groups' ][ $index_1 ][ 'contact_uuid' ] = $contact_uuid ;
$array [ 'contact_groups' ][ $index_1 ][ 'group_uuid' ] = $_SESSION [ " user_uuid " ];
2016-04-26 03:30:23 +02:00
}
//insert emails
2019-07-27 17:03:55 +02:00
if ( $_POST [ 'import_fields' ][ 'email' ] && is_array ( $contact [ 'emails' ]) && @ sizeof ( $contact [ 'emails' ]) != 0 ) {
foreach ( $contact [ 'emails' ] as $index_2 => $contact_email ) {
$contact_email_uuid = uuid ();
$array [ 'contact_emails' ][ $index_2 ][ 'domain_uuid' ] = $_SESSION [ 'domain_uuid' ];
$array [ 'contact_emails' ][ $index_2 ][ 'contact_uuid' ] = $contact_uuid ;
$array [ 'contact_emails' ][ $index_2 ][ 'contact_email_uuid' ] = $contact_email_uuid ;
$array [ 'contact_emails' ][ $index_2 ][ 'email_label' ] = $contact_email [ 'label' ];
$array [ 'contact_emails' ][ $index_2 ][ 'email_address' ] = $contact_email [ 'address' ];
$array [ 'contact_emails' ][ $index_2 ][ 'email_primary' ] = $contact_email [ 'primary' ] ? 1 : 0 ;
2016-04-26 03:30:23 +02:00
}
}
//insert numbers
2019-07-27 17:03:55 +02:00
if ( $_POST [ 'import_fields' ][ 'number' ] && is_array ( $contact [ 'numbers' ]) && @ sizeof ( $contact [ 'numbers' ]) != 0 ) {
foreach ( $contact [ 'numbers' ] as $index_3 => $contact_number ) {
$contact_phone_uuid = uuid ();
$array [ 'contact_phones' ][ $index_3 ][ 'domain_uuid' ] = $domain_uuid ;
$array [ 'contact_phones' ][ $index_3 ][ 'contact_uuid' ] = $contact_uuid ;
$array [ 'contact_phones' ][ $index_3 ][ 'contact_phone_uuid' ] = $contact_phone_uuid ;
$array [ 'contact_phones' ][ $index_3 ][ 'phone_type_voice' ] = substr_count ( strtoupper ( $contact_number [ 'label' ]), strtoupper ( $text [ 'label-fax' ])) == 0 ? 1 : null ;
$array [ 'contact_phones' ][ $index_3 ][ 'phone_type_fax' ] = substr_count ( strtoupper ( $contact_number [ 'label' ]), strtoupper ( $text [ 'label-fax' ])) != 0 ? 1 : null ;
$array [ 'contact_phones' ][ $index_3 ][ 'phone_label' ] = $contact_number [ 'label' ];
$array [ 'contact_phones' ][ $index_3 ][ 'phone_number' ] = $contact_number [ 'number' ];
$array [ 'contact_phones' ][ $index_3 ][ 'phone_primary' ] = @ sizeof ( $contact [ 'numbers' ]) == 1 ? 1 : 0 ;
2016-04-26 03:30:23 +02:00
}
}
//insert urls
2019-07-27 17:03:55 +02:00
if ( $_POST [ 'import_fields' ][ 'url' ] && is_array ( $contact [ 'urls' ]) && @ sizeof ( $contact [ 'urls' ]) != 0 ) {
foreach ( $contact [ 'urls' ] as $index_4 => $contact_url ) {
$contact_url_uuid = uuid ();
$array [ 'contact_urls' ][ $index_4 ][ 'domain_uuid' ] = $_SESSION [ 'domain_uuid' ];
$array [ 'contact_urls' ][ $index_4 ][ 'contact_uuid' ] = $contact_uuid ;
$array [ 'contact_urls' ][ $index_4 ][ 'contact_url_uuid' ] = $contact_url_uuid ;
$array [ 'contact_urls' ][ $index_4 ][ 'url_label' ] = $contact_url [ 'label' ];
$array [ 'contact_urls' ][ $index_4 ][ 'url_address' ] = $contact_url [ 'url' ];
$array [ 'contact_urls' ][ $index_4 ][ 'url_primary' ] = @ sizeof ( $contact [ 'urls' ]) == 1 ? 1 : 0 ;
2016-04-26 03:30:23 +02:00
}
}
//insert addresses
2019-07-27 17:03:55 +02:00
if ( $_POST [ 'import_fields' ][ 'address' ] && is_array ( $contact [ 'addresses' ]) && @ sizeof ( $contact [ 'addresses' ]) != 0 ) {
foreach ( $contact [ 'addresses' ] as $index_5 => $contact_address ) {
$contact_address_uuid = uuid ();
$array [ 'contact_addresses' ][ $index_5 ][ 'domain_uuid' ] = $_SESSION [ 'domain_uuid' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'contact_uuid' ] = $contact_uuid ;
$array [ 'contact_addresses' ][ $index_5 ][ 'contact_address_uuid' ] = $contact_address_uuid ;
2016-04-26 03:30:23 +02:00
if ( substr_count ( strtoupper ( $contact_address [ 'label' ]), strtoupper ( $text [ 'option-home' ])) != 0 ) {
2019-07-27 17:03:55 +02:00
$array [ 'contact_addresses' ][ $index_5 ][ 'address_type' ] = 'home' ;
2016-04-26 03:30:23 +02:00
}
else if ( substr_count ( strtoupper ( $contact_address [ 'label' ]), strtoupper ( $text [ 'option-work' ])) != 0 ) {
2019-07-27 17:03:55 +02:00
$array [ 'contact_addresses' ][ $index_5 ][ 'address_type' ] = 'work' ;
2016-04-26 03:30:23 +02:00
}
else {
2019-07-27 17:03:55 +02:00
$array [ 'contact_addresses' ][ $index_5 ][ 'address_type' ] = null ;
2016-04-26 03:30:23 +02:00
}
2019-07-27 17:03:55 +02:00
$array [ 'contact_addresses' ][ $index_5 ][ 'address_label' ] = $contact_address [ 'label' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_street' ] = $contact_address [ 'street' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_extended' ] = $contact_address [ 'extended' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_community' ] = $contact_address [ 'community' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_locality' ] = $contact_address [ 'locality' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_region' ] = $contact_address [ 'region' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_postal_code' ] = $contact_address [ 'postal_code' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_country' ] = $contact_address [ 'country' ];
$array [ 'contact_addresses' ][ $index_5 ][ 'address_primary' ] = @ sizeof ( $contact [ 'addresses' ]) == 1 ? 1 : 0 ;
2016-04-26 03:30:23 +02:00
}
}
//add google contact id, etag and updated date to contact settings
$contact [ 'updated' ] = str_replace ( 'T' , ' ' , $contact [ 'updated' ]);
$contact [ 'updated' ] = str_replace ( 'Z' , '' , $contact [ 'updated' ]);
2019-07-27 17:03:55 +02:00
$contact_setting_columns = array ( 'contact_setting_category' , 'contact_setting_subcategory' , 'contact_setting_name' , 'contact_setting_value' , 'contact_setting_order' , 'contact_setting_enabled' );
$contact_setting_array [] = array ( 'sync' , 'source' , 'array' , 'google' , 0 , 'true' );
$contact_setting_array [] = array ( 'google' , 'id' , 'text' , $contact_id , 0 , 'true' );
$contact_setting_array [] = array ( 'google' , 'updated' , 'date' , $contact [ 'updated' ], 0 , 'true' );
$contact_setting_array [] = array ( 'google' , 'etag' , 'text' , $contact [ 'etag' ], 0 , 'true' );
foreach ( $contact_setting_array as $index_6 => $values ) {
$contact_setting_uuid = uuid ();
$array [ 'contact_settings' ][ $index_6 ][ 'contact_setting_uuid' ] = $contact_setting_uuid ;
$array [ 'contact_settings' ][ $index_6 ][ 'contact_uuid' ] = $contact_uuid ;
$array [ 'contact_settings' ][ $index_6 ][ 'domain_uuid' ] = $_SESSION [ 'domain_uuid' ];
foreach ( $values as $index_7 => $value ) {
foreach ( $contact_setting_columns as $column ) {
$array [ 'contact_settings' ][ $index_6 ][ $contact_setting_columns [ $index_7 ]] = $value ;
}
}
}
unset ( $contact_setting_columns , $contact_setting_array );
//insert records
$database = new database ;
$database -> app_name = 'contacts' ;
$database -> app_uuid = '04481e0e-a478-c559-adad-52bd4174574c' ;
$database -> save ( $array );
unset ( $array );
2016-04-26 03:30:23 +02:00
2019-07-27 17:03:55 +02:00
//increment counter
2016-04-26 03:30:23 +02:00
$contacts_imported ++ ;
}
$message = $text [ 'message-contacts_imported' ] . " " . $contacts_imported ;
if ( $contacts_replaced > 0 ) { $message .= " ( " . $text [ 'message_contacts_imported_replaced' ] . " " . $contacts_replaced . " ) " ; }
if ( $contacts_skipped > 0 ) { $message .= " , " . $text [ 'message_contacts_imported_skipped' ] . " " . $contacts_skipped ; }
2019-07-27 17:03:55 +02:00
message :: add ( $message );
2016-04-26 03:30:23 +02:00
header ( " Location: contacts.php " );
exit ;
}
else {
// no contacts imported
2018-08-31 05:09:01 +02:00
message :: add ( $text [ 'message-contacts_imported' ] . " " . $contacts_imported , 'negative' );
2016-04-26 03:30:23 +02:00
}
}
//*******************************************************************************************
//check if authenticated
if ( $_SESSION [ 'contact_auth' ][ 'token' ] == '' ) {
$_SESSION [ 'contact_auth' ][ 'referer' ] = substr ( $_SERVER [ " HTTP_REFERER " ], strrpos ( $_SERVER [ " HTTP_REFERER " ], '/' ) + 1 );
header ( " Location: contact_auth.php?source=google&target= " . substr ( $_SERVER [ " PHP_SELF " ], strrpos ( $_SERVER [ " PHP_SELF " ], '/' ) + 1 ));
exit ;
}
unset ( $_SESSION [ 'contact_auth' ][ 'source' ], $_SESSION [ 'contact_auth' ][ 'target' ]);
//get groups & contacts
$groups = google_get_groups ( $_SESSION [ 'contact_auth' ][ 'token' ]);
$contacts = google_get_contacts ( $_SESSION [ 'contact_auth' ][ 'token' ], 1000 );
//store in session variable for use on import
$_SESSION [ 'contact_auth' ][ 'google' ] = $contacts ;
//include the header
$document [ 'title' ] = $text [ 'title-contacts_import_google' ];
require_once " resources/header.php " ;
echo " <table cellpadding='0' cellspacing='0' border='0' align='right'> " ;
echo " <tr> " ;
echo " <td style='text-align: right;'> " ;
echo " <input type='button' class='btn' id='btn_back' onclick= \" document.location.href='contact_import.php'; \" value= \" " . $text [ 'button-back' ] . " \" > " ;
echo " <input type='button' class='btn' id='btn_refresh' onclick='document.location.reload();' value= \" " . $text [ 'button-reload' ] . " \" > " ;
echo " <input type='button' class='btn' id='btn_signout' onclick= \" document.location.href='contact_auth.php?source=google&signout' \" value= \" " . $text [ 'button-sign_out' ] . " \" > " ;
echo " </td> " ;
echo " </tr> " ;
echo " <tr> " ;
echo " <td style='text-align: right; white-space: nowrap; padding-top: 8px;'><span style='font-weight: bold; color: #000;'> " . $_SESSION [ 'contact_auth' ][ 'name' ] . " </a> (<a href='https://www.google.com/contacts/#contacts' target='_blank'> " . $_SESSION [ 'contact_auth' ][ 'email' ] . " </a>) " . " </td> " ;
echo " </tr> " ;
echo " </table> " ;
echo " <b> " . $text [ 'header-contacts_import_google' ] . " </b> " ;
echo " <br><br> " ;
echo $text [ 'description-contacts_import_google' ];
echo " <br><br><br> " ;
$row_style [ " 0 " ] = " row_style0 " ;
$row_style [ " 1 " ] = " row_style1 " ;
echo " <form name='frm_import' id='frm_import' method='post'> \n " ;
echo " <input type='hidden' name='a' value='import'> \n " ;
echo " <table width='100%' border='0' cellpadding='0' cellspacing='0'> \n " ;
echo " <tr> \n " ;
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'> \n " ;
echo " " . $text [ 'label-import_fields' ] . " \n " ;
echo " </td> \n " ;
echo " <td width='70%' class='vtable' align='left'> \n " ;
echo " <input type='checkbox' disabled='disabled' checked> " . $text [ 'label-contact_name' ] . " \n " ;
echo " <input type='checkbox' disabled='disabled' checked> " . $text [ 'label-contact_organization' ] . " \n " ;
echo " <input type='checkbox' name='import_fields[email]' id='field_email' value='1' checked><label for='field_email'> " . $text [ 'label-contact_email' ] . " </label> \n " ;
echo " <input type='checkbox' name='import_fields[number]' id='field_number' value='1' checked><label for='field_number'> " . $text [ 'label-phone_number' ] . " </label> \n " ;
echo " <input type='checkbox' name='import_fields[url]' id='field_url' value='1' checked><label for='field_url'> " . $text [ 'label-contact_url' ] . " </label> \n " ;
echo " <input type='checkbox' name='import_fields[address]' id='field_address' value='1' checked><label for='field_address'> " . $text [ 'label-address_address' ] . " </label> \n " ;
echo " <br /> \n " ;
echo $text [ 'description-import_fields' ] . " \n " ;
echo " </td> \n " ;
echo " </tr> \n " ;
echo " <tr> \n " ;
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'> \n " ;
echo " " . $text [ 'label-contact_type' ] . " \n " ;
echo " </td> \n " ;
echo " <td class='vtable' align='left'> \n " ;
if ( is_array ( $_SESSION [ " contact " ][ " type " ])) {
sort ( $_SESSION [ " contact " ][ " type " ]);
echo " <select class='formfld' name='import_type'> \n " ;
echo " <option value=''></option> \n " ;
foreach ( $_SESSION [ " contact " ][ " type " ] as $row ) {
echo " <option value=' " . $row . " '> " . $row . " </option> \n " ;
}
echo " </select> \n " ;
}
else {
echo " <select class='formfld' name='import_type'> \n " ;
echo " <option value=''></option> \n " ;
echo " <option value='customer'> " . $text [ 'option-contact_type_customer' ] . " </option> \n " ;
echo " <option value='contractor'> " . $text [ 'option-contact_type_contractor' ] . " </option> \n " ;
echo " <option value='friend'> " . $text [ 'option-contact_type_friend' ] . " </option> \n " ;
echo " <option value='lead'> " . $text [ 'option-contact_type_lead' ] . " </option> \n " ;
echo " <option value='member'> " . $text [ 'option-contact_type_member' ] . " </option> \n " ;
echo " <option value='family'> " . $text [ 'option-contact_type_family' ] . " </option> \n " ;
echo " <option value='subscriber'> " . $text [ 'option-contact_type_subscriber' ] . " </option> \n " ;
echo " <option value='supplier'> " . $text [ 'option-contact_type_supplier' ] . " </option> \n " ;
echo " <option value='provider'> " . $text [ 'option-contact_type_provider' ] . " </option> \n " ;
echo " <option value='user'> " . $text [ 'option-contact_type_user' ] . " </option> \n " ;
echo " <option value='volunteer'> " . $text [ 'option-contact_type_volunteer' ] . " </option> \n " ;
echo " </select> \n " ;
}
echo " <br /> \n " ;
echo $text [ 'description-contact_type_import' ] . " \n " ;
echo " </td> \n " ;
echo " </tr> \n " ;
echo " <tr> \n " ;
echo " <td class='vncell' valign='top' align='left' nowrap='nowrap'> \n " ;
echo " " . $text [ 'label-contact_category' ] . " \n " ;
echo " </td> \n " ;
echo " <td class='vtable' align='left'> \n " ;
if ( is_array ( $_SESSION [ " contact " ][ " category " ])) {
sort ( $_SESSION [ " contact " ][ " category " ]);
echo " <select class='formfld' name='import_category'> \n " ;
echo " <option value=''></option> \n " ;
foreach ( $_SESSION [ " contact " ][ " category " ] as $row ) {
echo " <option value=' " . $row . " '> " . $row . " </option> \n " ;
}
echo " </select> \n " ;
}
else {
echo " <input class='formfld' type='text' name='import_category' maxlength='255'> \n " ;
}
echo " <br /> \n " ;
echo $text [ 'description-contact_category_import' ] . " \n " ;
echo " </td> \n " ;
echo " </tr> \n " ;
echo " <tr> \n " ;
echo " <td class='vncell' valign='top' align='left' nowrap='nowrap'> \n " ;
echo " " . $text [ 'label-shared' ] . " \n " ;
echo " </td> \n " ;
echo " <td class='vtable' align='left'> \n " ;
echo " <select class='formfld' name='import_shared' id='import_shared'> \n " ;
echo " <option value='false'> " . $text [ 'option-false' ] . " </option> \n " ;
echo " <option value='true'> " . $text [ 'option-true' ] . " </option> \n " ;
echo " </select> \n " ;
echo " <br /> \n " ;
echo $text [ 'description-shared_import' ] . " \n " ;
echo " </td> \n " ;
echo " </tr> \n " ;
echo " <tr> \n " ;
echo " <td class='vncell' valign='top' align='left' nowrap='nowrap'> \n " ;
echo " " . $text [ 'label-import_duplicates' ] . " \n " ;
echo " </td> \n " ;
echo " <td class='vtable' align='left'> \n " ;
echo " <select class='formfld' style='width: 150px;' name='import_duplicates'> \n " ;
echo " <option value='skip'> " . $text [ 'option-import_duplicates_skip' ] . " </option> \n " ;
echo " <option value='replace'> " . $text [ 'option-import_duplicates_replace' ] . " </option> \n " ;
echo " </select> \n " ;
echo " <br /> \n " ;
echo $text [ 'description-import_duplicates' ] . " \n " ;
echo " </td> \n " ;
echo " </tr> \n " ;
echo " </table> " ;
echo " <br><br> " ;
//display groups
echo " <b> " . $text [ 'label-groups' ] . " </b> " ;
echo " <br><br> " ;
echo " <table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'> \n " ;
echo " <tr> \n " ;
echo " <th style='width: 30px; text-align: center; padding: 0px;'> </th> " ;
echo " <th> " . $text [ 'label-contact_name' ] . " </th> \n " ;
echo " </tr> \n " ;
//determine contact count in groups
foreach ( $contacts as $contact ) {
foreach ( $contact [ 'groups' ] as $group_id => $meh ) {
$groups [ $group_id ][ 'count' ] ++ ;
}
}
$c = 0 ;
foreach ( $groups as $group [ 'id' ] => $group ) {
if ( $group [ 'count' ] > 0 ) {
echo " <tr> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='text-align: center; padding: 3px 0px 0px 0px;'><input type='checkbox' name='group_id[]' id='group_id_ " . $group [ 'id' ] . " ' value=' " . $group [ 'id' ] . " '></td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' onclick= \" document.getElementById('group_id_ " . $group [ 'id' ] . " ').checked = (document.getElementById('group_id_ " . $group [ 'id' ] . " ').checked) ? false : true; \" > " . $group [ 'name' ] . " ( " . $group [ 'count' ] . " )</td> \n " ;
echo " </tr> \n " ;
$c = ( $c ) ? 0 : 1 ;
}
}
echo " </table> \n " ;
echo " <br> " ;
echo " <div style='text-align: right;'><input type='submit' class='btn' id='btn_submit' value= \" " . $text [ 'button-import' ] . " \" ></div> " ;
echo " <br> " ;
//display contacts
echo " <b> " . $text [ 'header-contacts' ] . " </b> " ;
echo " <br><br> " ;
echo " <table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'> \n " ;
echo " <tr> \n " ;
echo " <th style='width: 30px; text-align: center; padding: 0px;'><input type='checkbox' onchange= \" (this.checked) ? check('all') : check('none'); \" ></th> " ;
echo " <th> " . $text [ 'label-contact_name' ] . " </th> \n " ;
echo " <th> " . $text [ 'label-contact_organization' ] . " </th> \n " ;
echo " <th> " . $text [ 'label-contact_email' ] . " </th> \n " ;
echo " <th> " . $text [ 'label-phone_number' ] . " </th> \n " ;
echo " <th> " . $text [ 'label-contact_url' ] . " </th> \n " ;
echo " <th> " . $text [ 'label-address_address' ] . " </th> \n " ;
echo " <th> " . $text [ 'label-group' ] . " </th> \n " ;
echo " </tr> \n " ;
$c = 0 ;
foreach ( $contacts as $contact [ 'id' ] => $contact ) {
$contact_ids [] = $contact [ 'id' ];
echo " <tr> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='text-align: center; padding: 3px 0px 0px 0px;'><input type='checkbox' name='contact_id[]' id='contact_id_ " . $contact [ 'id' ] . " ' value=' " . $contact [ 'id' ] . " '></td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' onclick= \" document.getElementById('contact_id_ " . $contact [ 'id' ] . " ').checked = (document.getElementById('contact_id_ " . $contact [ 'id' ] . " ').checked) ? false : true; \" > " ;
$contact_name [] = $contact [ 'name_prefix' ];
$contact_name [] = $contact [ 'name_given' ];
$contact_name [] = $contact [ 'name_middle' ];
$contact_name [] = $contact [ 'name_family' ];
$contact_name [] = $contact [ 'name_suffix' ];
echo " " . implode ( ' ' , $contact_name ) . " " ;
unset ( $contact_name );
echo " </td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'> " ;
echo " " . (( $contact [ 'title' ]) ? $contact [ 'title' ] . " <br> " : null ) . $contact [ 'organization' ] . " " ;
echo " </td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'> " ;
if ( sizeof ( $contact [ 'emails' ]) > 0 ) {
foreach ( $contact [ 'emails' ] as $contact_email ) {
$contact_emails [] = " <span style='font-size: 80%;'> " . $contact_email [ 'label' ] . " :</span> <a href='mailto: " . $contact_email [ 'address' ] . " '> " . $contact_email [ 'address' ] . " </a> " ;
}
echo implode ( '<br>' , $contact_emails );
unset ( $contact_emails );
} else { echo " " ; }
echo " </td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'> " ;
if ( sizeof ( $contact [ 'numbers' ]) > 0 ) {
foreach ( $contact [ 'numbers' ] as $contact_number ) {
$contact_number_part = " <span style='font-size: 80%;'> " . $contact_number [ 'label' ] . " :</span> " ;
if ( substr_count ( strtoupper ( $contact_number [ 'label' ]), 'FAX' ) == 0 ) {
$contact_number_part .= " <a href='javascript:void(0);' onclick= \" send_cmd(' " . PROJECT_PATH . " /app/click_to_call/click_to_call.php?src_cid_name= " . urlencode ( $contact_number [ 'number' ]) . " &src_cid_number= " . urlencode ( $contact_number [ 'number' ]) . " &dest_cid_name= " . urlencode ( $_SESSION [ 'user' ][ 'extension' ][ 0 ][ 'outbound_caller_id_name' ]) . " &dest_cid_number= " . urlencode ( $_SESSION [ 'user' ][ 'extension' ][ 0 ][ 'outbound_caller_id_number' ]) . " &src= " . urlencode ( $_SESSION [ 'user' ][ 'extension' ][ 0 ][ 'user' ]) . " &dest= " . urlencode ( $contact_number [ 'number' ]) . " &rec=false&ringback=us-ring&auto_answer=true'); \" > " ;
}
$contact_number_part .= format_phone ( $contact_number [ 'number' ]);
if ( substr_count ( strtoupper ( $contact_number [ 'label' ]), 'FAX' ) == 0 ) {
$contact_number_part .= " </a> " ;
}
$contact_numbers [] = $contact_number_part ;
unset ( $contact_number_part );
}
echo implode ( '<br>' , $contact_numbers );
unset ( $contact_numbers );
} else { echo " " ; }
echo " </td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'> " ;
if ( sizeof ( $contact [ 'urls' ]) > 0 ) {
foreach ( $contact [ 'urls' ] as $contact_url ) {
$contact_urls [] = " <span style='font-size: 80%;'> " . $contact_url [ 'label' ] . " :</span> <a href=' " . $contact_url [ 'url' ] . " ' target='_blank'> " . str_replace ( " http:// " , " " , str_replace ( " https:// " , " " , $contact_url [ 'url' ])) . " </a> " ;
}
echo implode ( '<br>' , $contact_urls );
unset ( $contact_urls );
} else { echo " " ; }
echo " </td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='width: 15%; max-width: 50px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'> " ;
if ( sizeof ( $contact [ 'addresses' ]) > 0 ) {
foreach ( $contact [ 'addresses' ] as $contact_address ) {
if ( $contact_address [ 'street' ] != '' ) { $contact_address_parts [] = $contact_address [ 'street' ]; }
if ( $contact_address [ 'extended' ] != '' ) { $contact_address_parts [] = $contact_address [ 'extended' ]; }
if ( $contact_address [ 'community' ] != '' ) { $contact_address_parts [] = $contact_address [ 'community' ]; }
if ( $contact_address [ 'locality' ] != '' ) { $contact_address_parts [] = $contact_address [ 'locality' ]; }
if ( $contact_address [ 'region' ] != '' ) { $contact_address_parts [] = $contact_address [ 'region' ]; }
if ( $contact_address [ 'postal_code' ] != '' ) { $contact_address_parts [] = $contact_address [ 'postal_code' ]; }
if ( $contact_address [ 'country' ] != '' ) { $contact_address_parts [] = $contact_address [ 'country' ]; }
$contact_addresses [] = " <span style='font-size: 80%;'> " . $contact_address [ 'label' ] . " :</span> " . implode ( ', ' , $contact_address_parts );
unset ( $contact_address_parts );
}
echo implode ( '<br>' , $contact_addresses );
unset ( $contact_addresses );
} else { echo " " ; }
echo " </td> \n " ;
echo " <td valign='top' class=' " . $row_style [ $c ] . " ' style='white-space: nowrap;'> " ;
foreach ( $contact [ 'groups' ] as $contact_group [ 'id' ] => $contact_group [ 'name' ]) {
$contact_groups [] = $contact_group [ 'name' ];
}
echo " " . implode ( '<br>' , $contact_groups );
unset ( $contact_groups );
echo " </td> \n " ;
echo " </tr> \n " ;
$c = ( $c ) ? 0 : 1 ;
}
echo " </table> \n " ;
echo " <br> " ;
echo " <div style='text-align: right;'><input type='submit' class='btn' id='btn_submit' value= \" " . $text [ 'button-import' ] . " \" ></div> " ;
echo " </form> " ;
echo " <br><br> " ;
// check or uncheck all contact checkboxes
if ( sizeof ( $contact_ids ) > 0 ) {
echo " <script> \n " ;
echo " function check(what) { \n " ;
foreach ( $contact_ids as $contact_id ) {
echo " document.getElementById('contact_id_ " . $contact_id . " ').checked = (what == 'all') ? true : false; \n " ;
}
echo " } \n " ;
echo " </script> \n " ;
}
/*
echo " <pre> " ;
print_r ( $contacts );
echo " </pre> " ;
echo " <br><br> " ;
echo " <hr> " ;
echo " <br><br><b>SOURCE JSON DECODED ARRAY</b>...<br><br><pre> " ;
print_r ( $records );
echo " </pre> " ;
*/
//include the footer
require_once " resources/footer.php " ;
// used above
function curl_file_get_contents ( $url ) {
$curl = curl_init ();
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)' ;
2019-08-29 05:02:08 +02:00
curl_setopt ( $curl , CURLOPT_URL , $url ); //The URL to retrieve. This can also be set when initializing a session with curl_init().
2016-04-26 03:30:23 +02:00
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , TRUE ); //TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt ( $curl , CURLOPT_CONNECTTIMEOUT , 5 ); //The number of seconds to wait while trying to connect.
curl_setopt ( $curl , CURLOPT_USERAGENT , $userAgent ); //The contents of the "User-Agent: " header to be used in a HTTP request.
curl_setopt ( $curl , CURLOPT_FOLLOWLOCATION , TRUE ); //To follow any "Location: " header that the server sends as part of the HTTP header.
curl_setopt ( $curl , CURLOPT_AUTOREFERER , TRUE ); //To automatically set the Referer: field in requests where it follows a Location: redirect.
curl_setopt ( $curl , CURLOPT_TIMEOUT , 10 ); //The maximum number of seconds to allow cURL functions to execute.
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , FALSE ); //To stop cURL from verifying the peer's certificate.
$contents = curl_exec ( $curl );
curl_close ( $curl );
return $contents ;
}
2020-06-17 18:14:23 +02:00
?>