diff --git a/app/contacts/contact_import.php b/app/contacts/contact_import.php
index 4a234ddb10..9bddf63ff7 100644
--- a/app/contacts/contact_import.php
+++ b/app/contacts/contact_import.php
@@ -83,21 +83,54 @@
}
}
-//match the column names to the field names
- if (strlen($delimiter) > 0 && file_exists($_SESSION['file']) && $action != 'import') {
+//get the schema
+ if (strlen($delimiter) > 0) {
//get the first line
$line = fgets(fopen($_SESSION['file'], 'r'));
$line_fields = explode($delimiter, $line);
- //column array
- $fields[] = 'contact_title';
- $fields[] = 'contact_name_given';
- $fields[] = 'contact_name_family';
- $fields[] = 'contact_organization';
- $fields[] = 'phone_number';
- $fields[] = 'email_address';
- $fields[] = 'url_address';
- $fields[] = 'contact_note';
+ //get the schema
+ $x = 0;
+ include ("app/contacts/app_config.php");
+ $i = 0;
+ foreach($apps[0]['db'] as $table) {
+ //get the table name and parent name
+ $table_name = $table["table"]['name'];
+ $parent_name = $table["table"]['parent'];
+
+ //remove the v_ table prefix
+ if (substr($table_name, 0, 2) == 'v_') {
+ $table_name = substr($table_name, 2);
+ }
+ if (substr($parent_name, 0, 2) == 'v_') {
+ $parent_name = substr($parent_name, 2);
+ }
+
+ //filter for specific tables and build the schema array
+ if ($table_name == "contacts" || $table_name == "contact_addresses" ||
+ $table_name == "contact_phones" || $table_name == "contact_emails" ||
+ $table_name == "contact_urls") {
+
+ $schema[$i]['table'] = $table_name;
+ $schema[$i]['parent'] = $parent_name;
+ foreach($table['fields'] as $row) {
+ if ($row['deprecated'] !== 'true') {
+ if (is_array($row['name'])) {
+ $field_name = $row['name']['text'];
+ }
+ else {
+ $field_name = $row['name'];
+ }
+ $schema[$i]['fields'][] = $field_name;
+ }
+ }
+ $i++;
+ }
+ }
+ }
+
+//match the column names to the field names
+ if (strlen($delimiter) > 0 && file_exists($_SESSION['file']) && $action != 'import') {
//form to match the fields to the column names
require_once "resources/header.php";
@@ -126,26 +159,35 @@
//echo " \n";
//echo "\n";
//echo "\n";
+
+ //loop through user columns
$x = 0;
foreach ($line_fields as $line_field) {
echo "
\n";
echo " \n";
echo " \n";
@@ -171,314 +213,90 @@
exit;
}
+//get the parent table
+ function get_parent($schema,$table_name) {
+ foreach ($schema as $row) {
+ if ($row['table'] == $table_name) {
+ return $row['parent'];
+ }
+ }
+ }
+
//upload the contact csv
if (file_exists($_SESSION['file']) && $action == 'import') {
+//form to match the fields to the column names
+require_once "resources/header.php";
-echo "\n";
-print_r($_POST);
-$fields = implode($delimiter, $_POST['fields']);
-echo $fields;
-echo " \n";
-exit;
+ //user selected fields
+ $fields = $_POST['fields'];
+
+ //set the domain_uuid
+ $domain_uuid = $_SESSION['domain_uuid'];
- //get the contents of the csv file
- $handle = @fopen($file, "r");
+ //get the contents of the csv file and convert them into an array
+ $handle = @fopen($_SESSION['file'], "r");
if ($handle) {
- $x = 0;
- while (($line = fgets($handle, 4096)) !== false) {
- if ($x == 0) {
+ //set the row id
+ $row_id = 0;
+
+ //loop through the array
+ while (($line = fgets($handle, 4096)) !== false) {
- //set the variables
- /*
- $contact_title = $data['Title'];
- $contact_name_given = $data['FirstName'];
- $contact_name_family = $data['LastName'];
- $contact_organization = $data['Company'];
- //$contact_email = $data['EmailAddress'];
- $contact_note = $data['Notes'];
- $contact_url = $data['Web Page'];
-
- $address_array[$x]['address_street'] = $data['BusinessStreet'];
- $address_array[$x]['address_locality'] = $data['BusinessCity'];
- $address_array[$x]['address_region'] = $data['BusinessState'];
- $address_array[$x]['address_postal_code'] = $data['BusinessPostalCode'];
- $address_array[$x]['address_country'] = $data['BusinessCountry'];
- $address_array[$x]['address_type'] = 'work';
-
- $address_array[$x]['address_street'] = $data['HomeStreet'];
- $address_array[$x]['address_locality'] = $data['HomeCity'];
- $address_array[$x]['address_region'] = $data['HomeState'];
- $address_array[$x]['address_postal_code'] = $data['HomePostalCode'];
- $address_array[$x]['address_country'] = $data['HomeCountry'];
- $address_array[$x]['address_type'] = 'home';
-
- $address_array[$x]['address_street'] = $data['OtherStreet'];
- $address_array[$x]['address_locality'] = $data['OtherCity'];
- $address_array[$x]['address_region'] = $data['OtherState'];
- $address_array[$x]['address_postal_code'] = $data['OtherPostalCode'];
- $address_array[$x]['address_country'] = $data['OtherCountry'];
-
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['BusinessFax']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['BusinessPhone']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['BusinessPhone2']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['CompanyMainPhone']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['HomeFax']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['HomePhone']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['HomePhone2']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['MobilePhone']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['OtherFax']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['OtherPhone']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['Pager']);
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['PrimaryPhone']);
- */
-
- //set the column array
- $column_array = str_getcsv($line, $delimiter, $enclosure);
-
-echo $line;
-print_r($column_array);
-exit;
- }
- else {
//format the data
$y = 0;
- foreach ($column_array as $column) {
+ foreach ($fields as $key => $value) {
+ //get the line
$result = str_getcsv($line, $delimiter, $enclosure);
- $data[$column] = $result[$y];
+
+ //get the table and field name
+ $field_array = explode(".",$value);
+ $table_name = $field_array[0];
+ $field_name = $field_array[1];
+ //echo "value: $value \n";
+ //echo "table_name: $table_name \n";
+ //echo "field_name: $field_name \n";
+
+ //get the parent table name
+ $parent = get_parent($schema, $table_name);
+
+ //remove formatting from the phone number
+ if ($field_name == "phone_number") {
+ $result[$key] = preg_replace('{\D}', '', $result[$key]);
+ }
+
+ //build the data array
+ if (strlen($parent) == 0) {
+ $array[$table_name][$row_id]['domain_uuid'] = $domain_uuid;
+ $array[$table_name][$row_id][$field_name] = $result[$key];
+ }
+ else {
+ $array[$parent][$row_id][$table_name][$y]['domain_uuid'] = $domain_uuid;
+ $array[$parent][$row_id][$table_name][$y][$field_name] = $result[$key];
+ }
+
+ //increment
$y++;
}
- //set the variables
- //$contact_type = '';
- $contact_title = $data['Title'];
- $contact_name_given = $data['FirstName'];
- $contact_name_family = $data['LastName'];
- $contact_organization = $data['Company'];
- //$contact_email = $data['EmailAddress'];
- $contact_note = $data['Notes'];
- $contact_url = $data['Web Page'];
-
- //add the contact
- $contact_uuid = uuid();
- $sql = "insert into v_contacts ";
- $sql .= "(";
- $sql .= "domain_uuid, ";
- $sql .= "contact_uuid, ";
- $sql .= "contact_type, ";
- $sql .= "contact_organization, ";
- $sql .= "contact_name_given, ";
- $sql .= "contact_name_family, ";
- //$sql .= "contact_nickname, ";
- $sql .= "contact_title, ";
- //$sql .= "contact_role, ";
- $sql .= "contact_url, ";
- //$sql .= "contact_time_zone, ";
- $sql .= "contact_note ";
- $sql .= ")";
- $sql .= "values ";
- $sql .= "(";
- $sql .= "'".$_SESSION['domain_uuid']."', ";
- $sql .= "'$contact_uuid', ";
- $sql .= "'$contact_type', ";
- $sql .= "'$contact_organization', ";
- $sql .= "'$contact_name_given', ";
- $sql .= "'$contact_name_family', ";
- //$sql .= "'$contact_nickname', ";
- $sql .= "'$contact_title', ";
- //$sql .= "'$contact_role', ";
- $sql .= "'$contact_url', ";
- //$sql .= "'$contact_time_zone', ";
- $sql .= "'$contact_note' ";
- $sql .= ")";
- $db->exec(check_sql($sql));
- unset($sql);
-
- //add the contact addresses
- $x=0;
- if (strlen($data['BusinessStreet']) > 0 && strlen($data['BusinessCity']) > 0 && strlen($data['BusinessState']) > 0) {
- $address_array[$x]['address_street'] = $data['BusinessStreet'];
- $address_array[$x]['address_locality'] = $data['BusinessCity'];
- $address_array[$x]['address_region'] = $data['BusinessState'];
- $address_array[$x]['address_postal_code'] = $data['BusinessPostalCode'];
- $address_array[$x]['address_country'] = $data['BusinessCountry'];
- $address_array[$x]['address_type'] = 'work';
- $x++;
- }
- if (strlen($data['HomeStreet']) > 0 && strlen($data['HomeCity']) > 0 && strlen($data['HomeState']) > 0) {
- $address_array[$x]['address_street'] = $data['HomeStreet'];
- $address_array[$x]['address_locality'] = $data['HomeCity'];
- $address_array[$x]['address_region'] = $data['HomeState'];
- $address_array[$x]['address_postal_code'] = $data['HomePostalCode'];
- $address_array[$x]['address_country'] = $data['HomeCountry'];
- $address_array[$x]['address_type'] = 'home';
- $x++;
- }
- if (strlen($data['OtherStreet']) > 0 && strlen($data['OtherCity']) > 0 && strlen($data['OtherState']) > 0) {
- $address_array[$x]['address_street'] = $data['OtherStreet'];
- $address_array[$x]['address_locality'] = $data['OtherCity'];
- $address_array[$x]['address_region'] = $data['OtherState'];
- $address_array[$x]['address_postal_code'] = $data['OtherPostalCode'];
- $address_array[$x]['address_country'] = $data['OtherCountry'];
- $address_array[$x]['address_type'] = 'work';
- }
- foreach ($address_array as $row) {
- $contact_address_uuid = uuid();
- $sql = "insert into v_contact_addresses ";
- $sql .= "(";
- $sql .= "domain_uuid, ";
- $sql .= "contact_uuid, ";
- $sql .= "contact_address_uuid, ";
- $sql .= "address_type, ";
- $sql .= "address_street, ";
- //$sql .= "address_extended, ";
- $sql .= "address_locality, ";
- $sql .= "address_region, ";
- $sql .= "address_postal_code, ";
- $sql .= "address_country ";
- //$sql .= "address_latitude, ";
- //$sql .= "address_longitude ";
- $sql .= ")";
- $sql .= "values ";
- $sql .= "(";
- $sql .= "'".$_SESSION['domain_uuid']."', ";
- $sql .= "'$contact_uuid', ";
- $sql .= "'$contact_address_uuid', ";
- $sql .= "'".$row['address_type']."', ";
- $sql .= "'".$row['address_street']."', ";
- //$sql .= "'$address_extended', ";
- $sql .= "'".$row['address_locality']."', ";
- $sql .= "'".$row['address_region']."', ";
- $sql .= "'".$row['address_postal_code']."', ";
- $sql .= "'".$row['address_country']."' ";
- //$sql .= "'$address_latitude', ";
- //$sql .= "'$address_longitude' ";
- $sql .= ")";
- $db->exec(check_sql($sql));
- unset($sql);
- }
- unset($address_array);
-
- //add the contact phone numbers
- $x = 0;
- if (strlen($data['BusinessFax']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['BusinessFax']);
- $phone_array[$x]['phone_type_fax'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-fax'];
- $phone_array[$x]['phone_description'] = $text['option-work'];
- $x++;
- }
- if (strlen($data['BusinessPhone']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['BusinessPhone']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-work'];
- $x++;
- }
- if (strlen($data['BusinessPhone2']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['BusinessPhone2']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-work'];
- $x++;
- }
- if (strlen($data['CompanyMainPhone']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['CompanyMainPhone']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-main'];
- $x++;
- }
- if (strlen($data['HomeFax']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['HomeFax']);
- $phone_array[$x]['phone_type_fax'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-fax'];
- $phone_array[$x]['phone_description'] = $text['option-home'];
- $x++;
- }
- if (strlen($data['HomePhone']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['HomePhone']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-home'];
- $x++;
- }
- if (strlen($data['HomePhone2']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['HomePhone2']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-home'];
- $x++;
- }
- if (strlen($data['MobilePhone']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['MobilePhone']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-mobile'];
- $x++;
- }
- if (strlen($data['OtherFax']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['OtherFax']);
- $phone_array[$x]['phone_type_fax'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-fax'];
- $x++;
- }
- if (strlen($data['OtherPhone']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['OtherPhone']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-other'];
- $x++;
- }
- if (strlen($data['Pager']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['Pager']);
- $phone_array[$x]['phone_type_text'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-pager'];
- $x++;
- }
- if (strlen($data['PrimaryPhone']) > 0) {
- $phone_array[$x]['phone_number'] = preg_replace('{\D}', '', $data['PrimaryPhone']);
- $phone_array[$x]['phone_type_voice'] = 1;
- $phone_array[$x]['phone_label'] = $text['option-main'];
- $x++;
- }
- foreach ($phone_array as $row) {
- $contact_phone_uuid = uuid();
- $sql = "insert into v_contact_phones ";
- $sql .= "(";
- $sql .= "domain_uuid, ";
- $sql .= "contact_uuid, ";
- $sql .= "contact_phone_uuid, ";
- $sql .= "phone_type_voice, ";
- $sql .= "phone_type_fax, ";
- $sql .= "phone_type_video, ";
- $sql .= "phone_type_text, ";
- $sql .= "phone_label, ";
- $sql .= "phone_number, ";
- $sql .= "phone_description ";
- $sql .= ")";
- $sql .= "values ";
- $sql .= "(";
- $sql .= "'$domain_uuid', ";
- $sql .= "'$contact_uuid', ";
- $sql .= "'$contact_phone_uuid', ";
- $sql .= (($row['phone_type_voice']) ? 1 : 0).", ";
- $sql .= (($row['phone_type_fax']) ? 1 : 0).", ";
- $sql .= (($row['phone_type_video']) ? 1 : 0).", ";
- $sql .= (($row['phone_type_text']) ? 1 : 0).", ";
- $sql .= "'".$row['phone_label']."', ";
- $sql .= "'".$row['phone_number']."', ";
- $sql .= "'".$row['phone_description']."' ";
- $sql .= ")";
- $db->exec(check_sql($sql));
- unset($sql);
- }
- unset($phone_array);
- //save the results into an array
- $results[] = $data;
- //clear the array
- unset($data);
+ //increment row id
+ $row_id++;
}
- //increment $x
- $x++;
- }
- if (!feof($handle)) {
- echo "Error: Unable to open the file.\n";
- }
- fclose($handle);
+ fclose($handle);
+
+ //save to the data
+ $database = new database;
+ $database->app_name = 'contacts';
+ $database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
+ //if (strlen($contact_uuid) > 0) {
+ // $database->uuid($contact_uuid);
+ //}
+ $database->save($array);
+ $message = $database->message;
+
+ //send the redirect header
+ header("Location: contacts.php");
+ return;
}
//show the header
@@ -621,4 +439,5 @@ exit;
//include the footer
require_once "resources/footer.php";
+
?>
|