Ejemplo n.º 1
0
 /**
  * @method setMobileNumber
  * @param {string} $mobileNumber
  * @param {boolean} [$verified=false]
  * @throws {Q_Exception_MissingRow}
  *	If mobile number is missing
  * @throws {Users_Exception_AlreadyVerified}
  *	If user was already verified
  * @throws {Users_Exception_WrongState}
  *	If verification state is wrong
  */
 function setMobileNumber($mobileNumber, $verified = false)
 {
     Q_Valid::phone($mobileNumber, $normalized);
     $mobile = new Users_Mobile();
     $mobile->number = $normalized;
     $retrieved = $mobile->retrieve('*', array('ignoreCache' => true));
     if (empty($mobile->activationCode)) {
         $mobile->activationCode = '';
         $mobile->activationCodeExpires = '0000-00-00 00:00:00';
     }
     $mobile->authCode = md5(microtime() + mt_rand());
     if ($verified) {
         $mobile->userId = $this->id;
     } else {
         if (!$retrieved) {
             throw new Q_Exception_MissingRow(array('table' => "a mobile phone", 'criteria' => "number {$normalized}"), 'mobileNumber');
         }
         if ($mobile->userId != $this->id) {
             // We're going to tell them it's verified for someone else,
             // even though it may not have been verified yet.
             // In the future, might throw a more accurate exception.
             throw new Users_Exception_AlreadyVerified(array('key' => 'mobile number', 'userId' => $mobile->userId));
         }
         if (!in_array($mobile->state, array('unverified', 'active'))) {
             throw new Users_Exception_WrongState(array('key' => $mobile->number, 'state' => $mobile->state), 'mobileNumber');
         }
     }
     // Everything is okay. Assign it!
     $mobile->state = 'active';
     $mobile->save();
     $ui = new Users_Identify();
     $ui->identifier = "mobile_hashed:" . Q_Utils::hash($normalized);
     $ui->state = 'verified';
     $ui->userId = $this->id;
     $ui->save(true);
     $this->mobileNumberPending = '';
     $this->mobileNumber = $normalized;
     $this->save();
     $user = $this;
     /**
      * @event Users/setMobileNumber {after}
      * @param {string} user
      * @param {string} mobile
      */
     Q::event('Users/setMobileNumber', compact('user', 'mobile'), 'after');
     return true;
 }
Ejemplo n.º 2
0
 function setMobileNumber($mobile_number)
 {
     // TODO: implement Users_Mobile::sendMessage
     $m = new Users_Mobile();
     $m->number = $mobile_number;
     if (!$m->retrieve()) {
         throw new Pie_Exception_MissingRow(array('table' => "a mobile phone", 'criteria' => "number {$mobile_number}"), 'mobile_number');
     }
     if ($m->user_id != $this->id) {
         // We're going to tell them it's verified for someone else,
         // even though it may not have been verified yet.
         // In the future, might throw a more accurate exception.
         throw new Users_Exception_AlreadyVerified(array('key' => $m->number, 'user_id' => $m->user_id));
     }
     if ($m->state != 'unverified') {
         throw new Users_Exception_WrongState(array('key' => $m->number, 'state' => $m->state), 'mobile_number');
     }
     // Everything is okay. Assign it!
     $this->mobile_number = $mobile_number;
     $m->state = 'active';
     $m->save();
     Pie::event('users/setMobileNumber', compact('mobile_number'), 'after');
     return true;
 }