Pommo_Subscribers::validate PHP Method

validate() public static method

NOTE: has the magic functionality of converting english status to bool equiv.
public static validate ( &$in )
    public static function validate(&$in)
    {
        $logger = Pommo::$_logger;
        $invalid = array();
        if (!Pommo_Helper::isEmail($in['email'])) {
            $invalid[] = 'email';
        }
        if (!is_numeric($in['registered'])) {
            $invalid[] = 'registered';
        }
        if (!empty($in['flag']) && !is_numeric($in['flag'])) {
            $invalid[] = 'flag';
        }
        if (!is_array($in['data'])) {
            $invalid[] = 'data';
        }
        switch ($in['status']) {
            case 0:
            case 1:
            case 2:
                break;
            default:
                $invalid[] = 'status';
        }
        if ($in['status'] == 2) {
            if (empty($in['pending_code'])) {
                $invalid[] = 'pending_code';
            }
            switch ($in['pending_type']) {
                case 'add':
                case 'del':
                case 'change':
                case 'password':
                    break;
                default:
                    $invalid[] = 'pending_type';
            }
        }
        if (!empty($invalid)) {
            $logger->addErr("Subscriber failed validation on; " . implode(',', $invalid), 1);
            return false;
        }
        return true;
    }

Usage Example

コード例 #1
0
ファイル: Pommo_Subscribers.php プロジェクト: soonick/poMMo
 public static function add($in, $id = null)
 {
     $dbo = Pommo::$_dbo;
     // set the registration date if not provided
     if (empty($in['registered'])) {
         $in['registered'] = time();
     }
     if (!Pommo_Subscribers::validate($in)) {
         return false;
     }
     $insert = $id === null ? 'INSERT' : 'REPLACE';
     $query = $insert . ' INTO ' . $dbo->table['subscribers'] . '
             SET
             [subscriber_id=%I,]
             email="%s",
             time_registered=FROM_UNIXTIME(%i),
             flag=%i,
             ip=INET_ATON("%s"),
             status=%i';
     $query = $dbo->prepare($query, @array($id, $in['email'], $in['registered'], $in['flag'], $in['ip'], $in['status']));
     // fetch new subscriber's ID
     $id = $dbo->lastId($query);
     if (!$id) {
         return false;
     }
     // insert pending (if exists)
     if ($in['status'] == 2) {
         $query = "\n            INSERT INTO " . $dbo->table['subscriber_pending'] . "\n            SET\n            [pending_array='%S',]\n            subscriber_id=%i,\n            pending_code='%s',\n            pending_type='%s'";
         $query = $dbo->prepare($query, @array($in['pending_array'], $id, $in['pending_code'], $in['pending_type']));
         if (!$dbo->query($query)) {
             return false;
         }
     }
     // insert data
     $values = array();
     foreach ($in['data'] as $fieldId => $value) {
         $values[] = $dbo->prepare("(%i,%i,'%s')", array($fieldId, $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 $id;
 }