Pommo_Subscribers::update PHP Method

update() public method

Does not change the subscriber_id --> paves the path to add manually assign subs to a group?
public update ( &$in, $mode = 'REPLACE_PASSED' )
    function update(&$in, $mode = 'REPLACE_PASSED')
    {
        $dbo = Pommo::$_dbo;
        $query = "\n            UPDATE " . $dbo->table['subscribers'] . "\n            SET\n            [email='%S',]\n            [time_registered='%S',]\n            [ip=INET_ATON('%S'),]\n            [status=%I,]\n            [flag=%I,]\n            time_touched=CURRENT_TIMESTAMP\n            WHERE subscriber_id=%i";
        $query = $dbo->prepare($query, @array($in['email'], $in['registered'], $in['ip'], $in['status'], $in['flag'], $in['id']));
        if (!$dbo->query($query) || $dbo->affected() != 1) {
            return false;
        }
        if (!empty($in['data']) || $mode == 'REPLACE_ALL') {
            switch ($mode) {
                case "REPLACE_ACTIVE":
                    require_once Pommo::$_baseDir . 'classes/Pommo_Fields.php';
                    $fields = Pommo_Fields::get(array('active' => TRUE));
                    $select = array_keys($fields);
                    break;
                case "REPLACE_ALL":
                    $select = NULL;
                    break;
                case "REPLACE_PASSED":
                default:
                    $select = array_keys($in['data']);
                    break;
            }
            $query = "\n                DELETE\n                FROM " . $dbo->table['subscriber_data'] . "\n                WHERE subscriber_id=%i\n                [AND field_id IN (%C)]";
            $query = $dbo->prepare($query, array($in['id'], $select));
            if (!$dbo->query($query)) {
                return false;
            }
        }
        $values = array();
        foreach ($in['data'] as $fieldId => $value) {
            if (!empty($value)) {
                $values[] = $dbo->prepare("(%i,%i,'%s')", array($fieldId, $in['id'], $value));
            }
        }
        if (!empty($values)) {
            $query = "\n            INSERT INTO " . $dbo->table['subscriber_data'] . "\n            (field_id, subscriber_id, value)\n            VALUES " . implode(',', $values);
            if (!$dbo->query($query)) {
                return false;
            }
        }
        return true;
    }

Usage Example

コード例 #1
0
ファイル: manage.rpc.php プロジェクト: systemfirez/poMMo
     $validateOptions = array('skipReq' => TRUE, 'active' => FALSE);
     // check if email is valid
     if (!Pommo_Helper::isEmail($subscriber['email'])) {
         $json->fail(Pommo::_T('Invalid email.'));
     }
     // check for dupe
     $lookupID = current(Pommo_Subscribers::getIDByEmail($subscriber['email'], array(1, 2)));
     if ($lookupID && $lookupID != $subscriber['id']) {
         $json->fail(Pommo::_T('Email address already exists. Duplicates are not allowed.'));
     }
     if (!Pommo_Validate::subscriberData($subscriber['data'], $validateOptions) && !isset($_REQUEST['force'])) {
         $json->addErr(Pommo::_T('Fields failed validation') . " >>> ");
         $json->addErr($logger->getAll());
         $json->fail(Pommo::_T('Error updating subscriber.'));
     }
     if (!Pommo_Subscribers::update($subscriber, 'REPLACE_ALL')) {
         $json->fail(Pommo::_T('Error updating subscriber.'));
     }
     // subscriber updated successfully, build output
     $out = array('email' => $subscriber['email'], 'id' => $subscriber['id']);
     // return human readable date formatting
     require_once Pommo::$_baseDir . 'classes/Pommo_Fields.php';
     $dateFields = Pommo_Fields::getByType('date');
     foreach ($subscriber['data'] as $k => $val) {
         $out['d' . $k] = in_array($k, $dateFields) ? Pommo_Helper::timeToStr($val) : htmlspecialchars($val);
     }
     $json->add('callbackFunction', 'editSubscriber');
     $json->add('callbackParams', $out);
     $json->addMsg(Pommo::_T('Subscriber Updated'));
     break;
 default:
All Usage Examples Of Pommo_Subscribers::update