function getLettersEmailsCount($letters_ids) { global $application; if (empty($letters_ids)) { return array(); } $tables = $this->getTables(); $ntables = modApiFunc('Newsletter', 'getTables'); $ltable = 'newsletter_topics'; $lcolumns =& $ntables[$ltable]['columns']; $ttable = 'subscription_topic'; $tcolumns =& $tables[$ttable]['columns']; $etable = 'subscription_email'; $ecolumns =& $tables[$etable]['columns']; $query = new DB_Select($ltable); $query->addSelectField($lcolumns['letter_id']); $query->addSelectField($ecolumns['email_id']); $query->addInnerJoin($ttable, $lcolumns['topic_id'], DB_EQ, $tcolumns['topic_id']); $query->addSelectField(DB_Select::fCountDistinct($ecolumns['email_id']), 'topic_emails'); $query->addLeftJoin($etable, $ecolumns['topic_id'], DB_EQ, $tcolumns['topic_id']); $query->Where($lcolumns['letter_id'], DB_IN, DBQuery::arrayToIn($letters_ids)); $query->SelectGroup($lcolumns['letter_id']); $res = $application->db->getDB_Result($query); $counts = array(); foreach (array_keys($res) as $i) { $r =& $res[$i]; $counts[$r['letter_id']] = $r['topic_emails']; } return $counts; }
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; }
function __loadCODevaultVariantAttrs() { global $application; loadClass('Checkout'); $co_tables = Checkout::getTables(); $pit_table = $co_tables['person_info_types']['columns']; $piv_table = $co_tables['person_info_variants']['columns']; $piva_table = $co_tables['person_info_variants_to_attributes']['columns']; $query = new DB_Select(); $query->addSelectField($piva_table['attribute_id'], 'attribute_id'); $query->addSelectField($piva_table['visible'], 'visible'); $query->addSelectField($pit_table['id'], 'type_id'); $query->addInnerJoin('person_info_variants', $piv_table['id'], DB_EQ, $piva_table['variant_id']); $query->addInnerJoin('person_info_types', $pit_table['id'], DB_EQ, $piv_table['type_id'] . ' AND ' . $piv_table['tag'] . " = 'default' "); $query_res = $application->db->getDB_Result($query); $this->_co_default_variant_attrs = array(); foreach ($query_res as $attr_info) { if (!isset($this->_co_default_variant_attrs[$attr_info['type_id']])) { $this->_co_default_variant_attrs[$attr_info['type_id']] = array(); } $this->_co_default_variant_attrs[$attr_info['type_id']][$attr_info['attribute_id']] = $attr_info; } }
function initQuery($params) { $key = $params['key']; $otables = Customer_Account::getTables(); $atable = 'ca_person_info_attrs'; $gtable = 'ca_attrs_to_groups'; $dtable = 'ca_person_info_data'; $stables = Subscriptions::getTables(); $stable = 'subscription_temp'; $this->setModifiers(DB_IGNORE); $this->setInsertFields(array($stables[$stable]['columns']['action_key'])); $this->setInsertFields(array($stables[$stable]['columns']['email'])); $squery = new DB_Select($dtable); $squery->addSelectField(DBQuery::quoteValue($key)); $squery->addSelectField(DBQuery::fLower($otables[$dtable]['columns']['data_value'])); $squery->addInnerJoin($gtable, $otables[$dtable]['columns']['ag_id'], DB_EQ, $otables[$gtable]['columns']['ag_id']); $squery->addInnerJoin($atable, $otables[$gtable]['columns']['attr_id'], DB_EQ, $otables[$atable]['columns']['attr_id']); $squery->WhereValue($otables[$atable]['columns']['attr_name'], DB_EQ, 'Email'); $this->setSelectQuery($squery); unset($squery); }