Ejemplo n.º 1
0
 public function addPhone($number, $type = 'phone')
 {
     //remove non-numerican chars from number
     if (!($number = PhoneTable::formatForDb($number))) {
         return false;
     }
     //make sure Entity doesn't already have phone
     foreach ($this->Phone as $phone) {
         if ($phone->number == $number) {
             return false;
         }
     }
     //type must be phone or fax
     if (!in_array($type, PhoneTable::$types)) {
         throw new Exception("Invalid phone type: " . $type);
     }
     //create new phone
     $phone = new Phone();
     $phone->number = $number;
     $phone->type = $type;
     $this->Phone[] = $phone;
     return $phone;
 }
Ejemplo n.º 2
0
 public function executeEditPhone($request)
 {
     $this->phone = Doctrine::getTable('Phone')->find($request->getParameter('id'));
     $this->forward404Unless($this->phone);
     $this->entity = $this->phone->Entity;
     $this->forward404Unless($this->entity);
     $this->phone_form = new PhoneForm($this->phone);
     $this->reference_form = new ReferenceForm();
     $this->reference_form->setSelectObject($this->entity, false, true);
     if ($request->isMethod('post')) {
         $params = $request->getParameter('phone');
         $refParams = $request->getParameter('reference');
         $this->phone_form->bind($params);
         $this->reference_form->bind($refParams);
         if ($this->phone_form->isValid() && $this->reference_form->isValid()) {
             //make sure number is unique
             $unique = true;
             $cleanNumber = PhoneTable::formatForDb($params['number']);
             foreach ($this->entity->Phone as $existingPhone) {
                 if ($existingPhone->id != $this->phone->id && $existingPhone->number == $cleanNumber) {
                     $unique = false;
                     break;
                 }
             }
             if ($unique) {
                 $this->phone->number = $cleanNumber;
                 $this->phone->type = $params['type'];
                 //save phone and reference
                 $this->phone->saveWithRequiredReference($refParams);
                 $this->clearCache($this->entity);
                 $this->redirect($this->entity->getInternalUrl('editContact'));
             } else {
                 $validator = new sfValidatorString(array(), array('invalid' => 'This ' . strtolower($this->entity->getPrimaryExtension()) . ' already has that ' . $phone->type . ' number'));
                 $this->phone_form->getErrorSchema()->addError(new sfValidatorError($validator, 'invalid'));
             }
         }
     }
 }