public function executePost(sfWebRequest $request) { $conn = opDoctrineQuery::getMasterConnection(); $conn->beginTransaction(); try { $params = $this->getRequestedFormParameter($request); $diary = $this->getDiaryObject($this->member->id, $request->getParameter('id')); $diary->setTitle($params['title']); $diary->setBody($params['body']); $diary->setPublicFlag($params['public_flag']); if ($diary->is_open && $params['public_flag'] !== 4) { $diary->is_open = 0; } $diary->save($conn); $oldDiaryImages = $diary->getDiaryImages(); foreach ($oldDiaryImages as $oldDiaryImage) { if ($request['diary_photo_' . $oldDiaryImage->number . '_photo_delete']) { $oldDiaryImage->delete($conn); unset($oldDiaryImages[$oldDiaryImage->number]); } } if ($params['image']) { foreach ($params['image'] as $key => $image) { $number = substr($key, -1); if ($oldDiaryImages[$number]) { throw new opDiaryPluginAPIException('invalid deleteCheck'); } $diaryImage = new DiaryImage(); $diaryImage->setDiaryId($diary->getId()); $diaryImage->setFile($image); $diaryImage->setNumber($number); $diaryImage->save($conn); //re-save because file name doesnt have prefix(refs #1643) $diaryImage->getFile()->save($conn); $diary->updateHasImages(); } } $conn->commit(); } catch (opDiaryPluginAPIException $e) { $conn->rollback(); $this->forward400($e->getMessage()); } catch (Exception $e) { $conn->rollback(); throw $e; } $this->diary = $diary; }