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;
     }
 }
Esempio n. 4
0
 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);
 }