/** * This function handle the "delete" http request * * @param string|null correspond to the URL after /Lan * * @throws RestException */ public function delete($padId = null) { if (isset($padId)) { $data = RestHandler::getData(); $pad = NotesFactory::build(PadComponent::getClass(), array('id' => $padId)); if (!$pad) { throw new RestException("Pad not found", 404); } else { if ($pad->mail_owner != Auth::user()->email) { throw new RestException("Access denied", 403); } else { // Export datas if asked if (isset($data->exportContent) && $data->exportContent === true) { $padContent = $this->exportPadContent($pad); // Setting informations $infos = array(array('pad' => array('pad_name' => $pad->pad_name))); // Send by mail to pad owner $attachment = new MailAttachment(str_ireplace(' ', '', $pad->pad_name) . '_' . date('YmdHis') . '.html'); $attachment->content = $padContent; $attachment->build(); $this->sendPadInformationsByMail($pad, Auth::user()->email, 'delete_pad', $infos, $attachment); } $cdatas = array('padID' => $pad->pad_name, 'apikey' => $this->etherpadApiKey); $result = RestUtilities::callAPI($this->etherpadURLApi . 'deletePad', RestMethods::GET, $cdatas); // $result = json_encode(array('code' => 0)); if ($result) { if (isset($result->error)) { throw new RestException($result->error); } else { if ($result->code == 0) { $pad->delete(); return array('status' => "success", 'content' => $pad); } else { throw new RestException("Pad not found", 404); } } } } } } else { throw new RestException("Invalid pad ID", 500); } }
/** * Save in database */ public function customSave() { //TODO : manage guests // // TODO: Manage date if ($this->id) { // Get new guests lists (this) $cPad = NotesFactory::build(PadComponent::getClass(), $this->id); // If guest list differs if ($this->guests !== $cPad->guests) { foreach (PadGuestComponent::getByPadID($this->id) as $padGuest) { $padGuest->delete(); } foreach ($this->guests as $guest) { $cGuest = GuestComponent::getByEmail($guest->email); // If guest not found in DB, creating it if (!$cGuest) { $cGuest = NotesFactory::build(GuestComponent::getClass(), $guest); $cGuest->save(); } // Create the PadGuest link $padGuest = NotesFactory::build(PadGuestComponent::getClass(), array('pad_id' => $this->id, 'guest_id' => $cGuest->id)); $padGuest->save(); } } $this->updateRecord($this->toDBData(), 'id'); } else { // Insert record $this->insertRecord($this->toDBData()); $this->id = (int) DBI::lastInsertId(); if (count($this->guests) > 0) { foreach ($this->guests as $tmpGuest) { if (!$tmpGuest->id) { $tmpGuest->save(); } $joint = NotesFactory::build(PadGuestComponent::getClass(), array('pad_id' => $this->id, 'guest_id' => $tmpGuest->id)); $joint->save(); } } } self::$objectCache[get_class()][$this->id] = $this; }