예제 #1
0
 public function destroy()
 {
     $tag = $this->tag;
     $delete = InvoiceTag::transaction(function () use($tag) {
         return $tag->destroy();
     });
     if (!$delete) {
         return redirect_message(array('admin', $this->get_class()), array('_flash_message' => '刪除失敗!'));
     }
     return redirect_message(array('admin', $this->get_class()), array('_flash_message' => '刪除成功!'));
 }
예제 #2
0
 public function update()
 {
     if (!$this->has_post()) {
         return redirect_message(array('admin', $this->get_class(), $this->invoice->id, 'edit'), array('_flash_message' => '非 POST 方法,錯誤的頁面請求。'));
     }
     $posts = OAInput::post();
     $cover = OAInput::file('cover');
     // if (!((string)$this->invoice->cover || $cover))
     //   return redirect_message (array ('admin', $this->get_class (), $this->invoice->id, 'edit'), array (
     //       '_flash_message' => '請選擇圖片(gif、jpg、png)檔案!',
     //       'posts' => $posts
     //     ));
     if ($msg = $this->_validation_posts($posts)) {
         return redirect_message(array('admin', $this->get_class(), $this->invoice->id, 'edit'), array('_flash_message' => $msg, 'posts' => $posts));
     }
     if ($columns = array_intersect_key($posts, $this->invoice->table()->columns)) {
         foreach ($columns as $column => $value) {
             $this->invoice->{$column} = $value;
         }
     }
     $invoice = $this->invoice;
     $update = InvoiceTag::transaction(function () use($invoice, $cover) {
         if (!$invoice->save()) {
             return false;
         }
         if ($cover && !$invoice->cover->put($cover)) {
             return false;
         }
         return true;
     });
     if (!$update) {
         return redirect_message(array('admin', $this->get_class(), $this->invoice->id, 'edit'), array('_flash_message' => '更新失敗!', 'posts' => $posts));
     }
     if (($del_ids = array_diff(column_array($invoice->pictures, 'id'), $posts['pic_ids'])) && ($pictures = InvoicePicture::find('all', array('select' => 'id, name', 'conditions' => array('id IN (?)', $del_ids))))) {
         foreach ($pictures as $picture) {
             InvoicePicture::transaction(function () use($picture) {
                 return $picture->destroy();
             });
         }
     }
     if ($pictures = OAInput::file('pictures[]')) {
         foreach ($pictures as $picture) {
             InvoicePicture::transaction(function () use($picture, $invoice) {
                 return verifyCreateOrm($pic = InvoicePicture::create(array_intersect_key(array_merge($picture, array('invoice_id' => $invoice->id)), InvoicePicture::table()->columns))) && $pic->name->put($picture);
             });
         }
     }
     return redirect_message(array('admin', $this->get_class()), array('_flash_message' => '更新成功!'));
 }