$rpdrefid = ''; if (isset($mail->msgscore->item)) { foreach ($mail->msgscore->item as $score) { if ($score->first == 3) { list($rpdscore, $rpdrefid) = explode('|', $score->second); } } } $q2 = $dbh->prepare('UPDATE release_sender SET found=1,msgfrom=:msgfrom,msgsubject=:msgsubject,msgrpdscore=:msgrpdscore,msgrpdrefid=:msgrpdrefid WHERE id = :id;'); $q2->execute([':id' => $row['id'], ':msgfrom' => $mail->msgfrom, ':msgsubject' => $mail->msgsubject, ':msgrpdscore' => $rpdscore, ':msgrpdrefid' => $rpdrefid]); foreach ($items->result->item as $mail) { sleep(3); // Move to long-term quarantine try { $client = new SoapClient('https://' . $host . '/remote/?wsdl', ['features' => SOAP_SINGLE_ELEMENT_ARRAYS, 'location' => 'https://' . $host . '/remote/', 'uri' => 'urn:halon', 'login' => $soap_user, 'password' => $soap_pass]); $items = $client->mailQueueUpdateBulk(array('filter' => 'messageid=' . $id . ' quarantine=' . $quarantine_short, 'fields' => [["first" => "quarantine", "second" => $quarantine_long]])); } catch (Exception $e) { echo $e->getMessage(); continue; } $token = bin2hex(openssl_random_pseudo_bytes(12)); $q2 = $dbh->prepare('INSERT INTO release_rcpt (release_id,queueid,msgto,token) VALUES (:id,:queueid,:msgto,:token);'); $q2->execute([':id' => $row['id'], ':queueid' => $mail->id, ':msgto' => $mail->msgto, ':token' => $token]); $insertid = $dbh->lastInsertId(); if ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') { // XXX PDO lastInsertId() doesnt work for PostgreSQL $q2 = $dbh->prepare('SELECT id FROM release_rcpt WHERE release_id = :id AND queueid = :queueid AND token = :token;'); $q2->execute([':id' => $row['id'], ':queueid' => $mail->id, ':token' => $token]); $row2 = $q2->fetch(PDO::FETCH_ASSOC); $insertid = $row2['id']; }