function update(&$in, $mode = 'REPLACE_PASSED')
{
$dbo = Pommo::$_dbo;
$query = "\n UPDATE " . $dbo->table['subscribers'] . "\n SET\n [email='%S',]\n [time_registered='%S',]\n [ip=INET_ATON('%S'),]\n [status=%I,]\n [flag=%I,]\n time_touched=CURRENT_TIMESTAMP\n WHERE subscriber_id=%i";
$query = $dbo->prepare($query, @array($in['email'], $in['registered'], $in['ip'], $in['status'], $in['flag'], $in['id']));
if (!$dbo->query($query) || $dbo->affected() != 1) {
return false;
}
if (!empty($in['data']) || $mode == 'REPLACE_ALL') {
switch ($mode) {
case "REPLACE_ACTIVE":
require_once Pommo::$_baseDir . 'classes/Pommo_Fields.php';
$fields = Pommo_Fields::get(array('active' => TRUE));
$select = array_keys($fields);
break;
case "REPLACE_ALL":
$select = NULL;
break;
case "REPLACE_PASSED":
default:
$select = array_keys($in['data']);
break;
}
$query = "\n DELETE\n FROM " . $dbo->table['subscriber_data'] . "\n WHERE subscriber_id=%i\n [AND field_id IN (%C)]";
$query = $dbo->prepare($query, array($in['id'], $select));
if (!$dbo->query($query)) {
return false;
}
}
$values = array();
foreach ($in['data'] as $fieldId => $value) {
if (!empty($value)) {
$values[] = $dbo->prepare("(%i,%i,'%s')", array($fieldId, $in['id'], $value));
}
}
if (!empty($values)) {
$query = "\n INSERT INTO " . $dbo->table['subscriber_data'] . "\n (field_id, subscriber_id, value)\n VALUES " . implode(',', $values);
if (!$dbo->query($query)) {
return false;
}
}
return true;
}