Ejemplo n.º 1
0
 public function executeAdd(sfWebRequest $request)
 {
     if ($this->getUser()->isA(Users::REGISTERED_USER)) {
         $this->forwardToSecureAction();
     }
     $file_record = null;
     if ($request->hasParameter('rid')) {
         $file_record = Doctrine::getTable('Multimedia')->find($request->getParameter('rid'));
     }
     if (!$file_record) {
         $this->forward404Unless($request->hasParameter('id') && $request->hasParameter('table') && $request->hasParameter('file_id'));
         $file = $this->getUser()->getAttribute($request->getParameter('file_id'));
         $file_record = new Multimedia();
         $file_record->fromArray($file);
         $file_record->setReferencedRelation($request->getParameter('table'));
         $file_record->setRecordId($request->getParameter('id'));
     }
     $this->form = new MultimediaForm($file_record);
     if ($request->isMethod('post')) {
         $this->form->bind($request->getParameter('multimedia'));
         if ($this->form->isValid()) {
             try {
                 if ($this->form->getObject()->isNew()) {
                     $this->form->setRecordRef($request->getParameter('table'), $request->getParameter('id'));
                 }
                 $this->form->save();
                 $this->form->getObject()->refreshRelated();
                 $this->form = new MultimediaForm($this->form->getObject());
                 //Ugly refresh
                 return $this->renderText('ok');
             } catch (Doctrine_Exception $ne) {
                 $e = new DarwinPgErrorParser($ne);
                 $error = new sfValidatorError(new savedValidator(), $e->getMessage());
                 $this->form->getErrorSchema()->addError($error);
             }
         }
     }
 }