function releaseLive($smarty, $msi, $user_id) { //echo '<pre>'.print_r($_POST,true)."</pre>"; /* First, get the data for the fields selected for release. Only consider fields that have been changed. User fields have data_id = 'u' Contact fields have data_id=address_id, phone_id, or e-mail_id for existing items, and -hold_id for adds. */ $contact_id = $_POST['contact_id']; $user_data = new UserData($msi, $smarty, $user_id, $contact_id); $contact_data = new ContactData($msi, $smarty, $user_id, $contact_id); $err_msg = ''; //echo '<pre>'.print_r($contact_data,true).'</pre>'; //echo '<pre>'.print_r($user_data,true).'</pre>'; $data_keys = array(); foreach ($_POST as $key => $px) { if (substr($key, 0, 1) == 's') { $data_type = substr($key, 1, 1); // a, p, e, u $field_name = substr($key, strpos($key, '_', 3) + 1); /*echo '<br />data type, field name: '.$data_type.' '. $field_name;*/ if ($data_type == 'u') { $data_id = 'u'; $trans_type = $user_data->getTransType($field_name); if ($trans_type != '') { $val = $user_data->getVal($field_name); $data_keys[] = array('data_type' => $data_type, 'data_id' => $data_id, 'trans_type' => $trans_type, 'field_name' => $field_name, 'val' => $val); } } else { $data_id = substr($key, 3, strpos($key, '_', 3) - 3); $trans_type = $contact_data->getTransType($data_type, $data_id, $field_name); //echo '<br />data id, trans type: '.$data_id.' '.$trans_type; if ($trans_type != '') { $val = $contact_data->getVal($data_type, $data_id, $field_name); $data_keys[] = array('data_type' => $data_type, 'data_id' => $data_id, 'trans_type' => $trans_type, 'field_name' => $field_name, 'val' => $val); } } } } //echo '<pre>'.print_r($data_keys,true).'</pre>'; sort($data_keys); //echo '<pre>data keys: '.print_r($data_keys,true).'</pre>'; $data_id = ''; $data_type = ''; foreach ($data_keys as $px) { if ($data_id != $px['data_id'] || $data_type != $px['data_type']) { if ($data_id != '') { // update db setQuery($msi, $user_id, $data_type, $data_id, $contact_id, $trans_type, $userq, $addfields, $addvals, $changeq, $changew, $err_msg); } // (re-) set variables $data_id = $px['data_id']; $data_type = $px['data_type']; $c_count = false; $userq = ''; $addfields = ''; $addvals = ''; $changeq = ''; $changew = ''; // where clause } $trans_type = $px['trans_type']; $field_name = $px['field_name']; $val = $px['val']; /*echo "<br />data_id, data_type, trans_type, field_name, val: ". "$data_id, $data_type, $trans_type, $field_name, $val";*/ if ($data_type == 'u') { // user data if ($c_count) { // if there is already something in the list $userq .= ','; } if ($field_name == 'birth_date') { $userq .= $field_name . "=str_to_date('{$val}','%m/%d/%Y')"; } else { $userq .= $field_name . "='" . $val . "'"; } } else { // address, phone, or e-mail switch ($trans_type) { case 'add': if ($val != '') { if ($data_type == 'p' && $field_name == 'number') { $val = str_replace(array('(', ')', ' ', '-'), "", $val); } if ($c_count) { $addfields .= ','; $addvals .= ','; } else { if ($data_type == 'p') { $addfields = 'owner_id,formatted,'; $addvals = $contact_id . ',0,'; } else { $addfields = 'owner_id,'; $addvals = $contact_id . ','; } } $addfields .= $field_name; $addvals .= "'" . $val . "'"; } break; case 'change': if ($data_type == 'p' && $field_name == 'number') { $val = str_replace(array('(', ')', ' ', '-'), '', $val); } if ($c_count) { $changeq .= ','; } else { if ($data_type == 'p') { $changeq = 'formatted=0,'; } else { $changeq = ''; } $changew = " where " . tableName($data_type) . "_id=" . $data_id; } $changeq .= $field_name . "='" . $val . "'"; break; //case 'del': /* delete query only uses $data_type, $data_id, and $contact_id, set elsewhere */ // break; } } $c_count = true; } setQuery($msi, $user_id, $data_type, $data_id, $contact_id, $trans_type, $userq, $addfields, $addvals, $changeq, $changew, $err_msg); unset($user_data, $contact_data); return $err_msg; }