| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 | <?php/** * * PHP Pro Bid $Id$ IdzhVuypRXQ/FsJC7Y7dyBy7ikL2xkuzLaf2iCtdwZg= * * @link        http://www.phpprobid.com * @copyright   Copyright (c) 2014 Online Ventures Software LTD & CodeCube SRL * @license     http://www.phpprobid.com/license Commercial License * * @version     7.9 [rev.7.9.01] *//** * newsletters table service class */namespace Ppb\Service;use Cube\Db\Expr,    Ppb\Db\Table;class Newsletters extends AbstractService{    /**     *     * newsletters recipients array     *     * @var array     */    protected $_recipients = array(        'all'         => array(            'name'  => 'All Users',            'query' => '1',            'table' => '\\Ppb\\Db\\Table\\Users',        ),        'active'      => array(            'name'  => 'Active Users',            'query' => 'active = 1',            'table' => '\\Ppb\\Db\\Table\\Users',        ),        'suspended'   => array(            'name'  => 'Suspended Users',            'query' => 'active = 0',            'table' => '\\Ppb\\Db\\Table\\Users',        ),        'subscribers' => array(            'name'  => 'Newsletter Subscribers',            'query' => '1',            'table' => '\\Ppb\\Db\\Table\\NewslettersSubscribers',        ),        'store'       => array(            'name'  => 'Store Owners',            'query' => 'active = 1 AND store_active = 1',            'table' => '\\Ppb\\Db\\Table\\Users',        ),    );    /**     *     * class constructor     */    public function __construct()    {        parent::__construct();        $this->setTable(            new Table\Newsletters());    }    /**     *     * set recipients array     *     * @param array $recipients     *     * @return $this     */    public function setRecipients(array $recipients)    {        $this->_recipients = $recipients;        return $this;    }    /**     *     * get recipients array     *     * @return array     */    public function getRecipients()    {        return $this->_recipients;    }    /**     *     * get recipient by key     *     * @param string $key     *     * @return array|false     */    public function getRecipient($key)    {        if (array_key_exists($key, $this->_recipients)) {            return $this->_recipients[$key];        }        return false;    }    /**     *     * save newsletter recipients in the recipients table     * return the number recipients saved or false     *     * @param string $key recipients to send to     * @param int    $id  newsletter id     *     * @return int|false     */    public function saveRecipients($key, $id)    {        if (($recipient = $this->getRecipient($key)) !== false) {            $newslettersRecipients = new Table\NewslettersRecipients();            $tableClassName = $recipient['table'];            /** @var \Cube\Db\Table\AbstractTable $tableClass */            $tableClass = new $tableClassName();            $newslettersRecipients->getAdapter()                ->query("INSERT INTO " . $newslettersRecipients->getPrefix() . $newslettersRecipients->getName() . "                    (newsletter_id, email)                    SELECT {$id}, email                    FROM " . $tableClass->getPrefix() . $tableClass->getName() . "                    WHERE {$recipient['query']}");            return true;        }        return false;    }    /**     *     * create or update a newsletter     *     * @param array $data     *     * @return $this     */    public function save($data)    {        $row = null;        $data = $this->_prepareSaveData($data);        if (array_key_exists('id', $data)) {            $select = $this->_table->select()                ->where("id = ?", $data['id']);            unset($data['id']);            $row = $this->_table->fetchRow($select);        }        if (count($row) > 0) {//            $data['updated_at'] = new Expr('now()');            $this->_table->update($data, "id='{$row['id']}'");        }        else {            $data['created_at'] = new Expr('now()');            $this->_table->insert($data);        }        return $this;    }    /**     *     * delete a newsletter from the table     *     * @param integer $id the id of the newsletter     *     * @return integer     returns the number of affected rows     */    public function delete($id)    {        return $this->_table->delete(            $this->_table->getAdapter()->quoteInto('id = ?', $id));    }}
 |