function add(&$in, $id = null) { global $pommo; $dbo =& $pommo->_dbo; // set the registration date if not provided if (empty($in['registered'])) { $in['registered'] = time(); } if (!PommoSubscriber::validate($in)) { return false; } $insert = $id === null ? 'INSERT' : 'REPLACE'; $query = "\n\t\t\t{$insert} INTO " . $dbo->table['subscribers'] . "\n\t\t\tSET\n\t\t\t[subscriber_id=%I,]\n\t\t\temail='%s',\n\t\t\ttime_registered=FROM_UNIXTIME(%i),\n\t\t\tflag=%i,\n\t\t\tip=INET_ATON('%s'),\n\t\t\tstatus=%i"; $query = $dbo->prepare($query, @array($id, $in['email'], $in['registered'], $in['flag'], $in['ip'], $in['status'])); // fetch new subscriber's ID $id = $dbo->lastId($query); if (!$id) { return false; } // insert pending (if exists) if ($in['status'] == 2) { $query = "\n\t\t\tINSERT INTO " . $dbo->table['subscriber_pending'] . "\n\t\t\tSET\n\t\t\t[pending_array='%S',]\n\t\t\tsubscriber_id=%i,\n\t\t\tpending_code='%s',\n\t\t\tpending_type='%s'"; $query = $dbo->prepare($query, @array($in['pending_array'], $id, $in['pending_code'], $in['pending_type'])); if (!$dbo->query($query)) { return false; } } // insert data $values = array(); foreach ($in['data'] as $field_id => $value) { $values[] = $dbo->prepare("(%i,%i,'%s')", array($field_id, $id, $value)); } if (!empty($values)) { $query = "\n\t\t\tINSERT INTO " . $dbo->table['subscriber_data'] . "\n\t\t\t(field_id, subscriber_id, value)\n\t\t\tVALUES " . implode(',', $values); if (!$dbo->query($query)) { return false; } } return $id; }