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); } } } }