function subscribeTempEmails($key, $topics_ids) { global $application; $tables = Subscriptions::getTables(); $stable = 'subscription_temp'; $scolumns =& $tables[$stable]['columns']; $itable = 'subscription_email'; $icolumns =& $tables[$itable]['columns']; foreach ($topics_ids as $topic_id) { unset($squery); $squery = new DB_Select($stable); $squery->addSelectField($topic_id); $squery->addSelectField($scolumns['email_id']); $squery->Where($scolumns['action_key'], DB_EQ, DBQuery::quoteValue($key)); unset($iquery); $iquery = new DB_Insert_Select($itable); $iquery->setModifiers(DB_IGNORE); $iquery->setInsertFields(array('topic_id', 'email_id')); $iquery->setSelectQuery($squery); $application->db->getDB_Result($iquery); } }
function prepareSendMessage3($letter_id) { global $application; $delivery_num = $this->getNextNum(); $topics_ids = modApiFunc('Subscriptions', 'getLetterTopics', $letter_id); if (!$topics_ids) { return; } $this->createUnsubscribeKeys($letter_id, $delivery_num, $topics_ids); $this->_currentMessage = $this->getMessageInfo($letter_id); // copy emails to temp table $ntables = $this->getTables(); $stables = modApiFunc('Subscriptions', 'getTables'); $itable = 'newsletter_temp'; $icolumns = $ntables[$itable]['columns']; $utable = 'newsletter_unsubscribe'; $ucolumns = $ntables[$utable]['columns']; $atable = 'email_address'; $acolumns = $stables[$atable]['columns']; $iquery = new DB_Insert_Select($itable); $iquery->setModifiers(DB_IGNORE); $iquery->setInsertFields(array('recipient_num', 'recipient_value', 'key_unsubscribe', 'lng')); $squery = new DB_Select($atable); $squery->addSelectField($delivery_num); $squery->addSelectField($acolumns['email']); $squery->addSelectField($ucolumns['key_unsubscribe']); $squery->addSelectField($acolumns['lng']); $squery->addInnerJoin($atable, $acolumns['email_id'], DB_EQ, $ucolumns['email_id']); $squery->WhereValue($ucolumns['delivery_num'], DB_EQ, $delivery_num); $squery->SelectOrder($ucolumns['email_id'], 'ASC'); $iquery->setSelectQuery($squery); $application->db->getDB_Result($iquery); $this->_totalRecipients = $this->countTempEmails($delivery_num); $this->_sentCountTotal = 0; $result = array('Errors' => array($application->db->_getSQL($iquery)), 'Warnings' => array(), 'TotalCount' => $this->_totalRecipients, 'Num' => $delivery_num); return $result; }