array($mailingID, 'Integer')); return CRM_Core_DAO::singleValueQuery($sql, $params); } /** * @param $mailingID * @param null $offset * @param null $limit * * @return Object */ static function mailingQuery($mailingID, $offset = NULL, $limit = NULL ) { $limitString = NULL; if ($limit && $offset !== NULL) { $offset = CRM_Utils_Type::escape($offset, 'Int'); $limit = CRM_Utils_Type::escape($limit, 'Int'); $limitString = "LIMIT $offset, $limit"; } $sql = " SELECT contact_id, email_id, phone_id FROM civicrm_mailing_recipients WHERE mailing_id = %1 $limitString "; $params = array(1 => array($mailingID, 'Integer')); return CRM_Core_DAO::executeQuery($sql, $params); } /** * Moves a number of randomly-chosen recipients of one Mailing to another Mailing. * * @param int $mailingIdC * Source mailing ID * @param int $newMailingID * Destination mailing ID * @param int $totalLimit * Number of recipients to move */ static function updateRandomRecipients($mailingIdC, $newMailingID, $totalLimit = NULL) { $limitString = NULL; if ($totalLimit) { $limitString = "LIMIT 0, $totalLimit"; } CRM_Core_DAO::executeQuery("DROP TEMPORARY TABLE IF EXISTS mail_C_$mailingIdC"); $sql = " CREATE TEMPORARY TABLE mail_C_$mailingIdC (mailing_recipient_id int, id int PRIMARY KEY AUTO_INCREMENT, INDEX(mailing_recipient_id)) ENGINE=HEAP"; CRM_Core_DAO::executeQuery($sql); $sql = " INSERT INTO mail_C_$mailingIdC (mailing_recipient_id) SELECT mr.id FROM civicrm_mailing_recipients mr WHERE mr.mailing_id = $mailingIdC ORDER BY RAND() $limitString "; CRM_Core_DAO::executeQuery($sql); $sql = " UPDATE civicrm_mailing_recipients mr INNER JOIN mail_C_$mailingIdC temp_mr ON temp_mr.mailing_recipient_id = mr.id SET mr.mailing_id = $newMailingID "; CRM_Core_DAO::executeQuery($sql); } }