コード例 #1
0
 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;
 }