Ejemplo n.º 1
0
 /**
  * Save the provided item to database
  *
  */
 public function ___save(Saveable $item)
 {
     $blank = $this->makeBlankItem();
     if (!$item instanceof $blank) {
         throw new WireException("WireSaveableItems::save(item) requires item to be of type '" . $blank->className() . "'");
     }
     $db = $this->getFuel('db');
     $table = $this->getTable();
     $sql = "`{$table}` SET ";
     $id = (int) $item->id;
     $data = $item->getTableData();
     foreach ($data as $key => $value) {
         if (!$this->saveItemKey($key)) {
             continue;
         }
         if ($key == 'data') {
             if (is_array($value)) {
                 $value = $this->encodeData($value);
             } else {
                 $value = '';
             }
         }
         $sql .= "`{$key}`='" . $db->escape_string("{$value}") . "', ";
     }
     $sql = rtrim($sql, ", ");
     if ($id) {
         $result = $db->query("UPDATE {$sql} WHERE id={$id}");
     } else {
         $result = $db->query("INSERT INTO {$sql}");
         if ($result) {
             $item->id = $db->insert_id;
             $this->getAll()->add($item);
         }
     }
     if ($result) {
         $this->resetTrackChanges();
     }
     return $result;
 }