release; } public function require_all_upgrades() { return true; } /** * * @return Array */ function concern() { return $this->concern; } function apply(base &$databox) { $sql = 'SELECT m . * FROM metadatas_structure s, metadatas m WHERE m.meta_struct_id = s.id AND s.multi = "1"'; $stmt = $databox->get_connection()->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(); $stmt->closeCursor(); $databox->get_connection()->beginTransaction(); $sql = 'INSERT INTO metadatas(id, record_id, meta_struct_id, value) VALUES (null, :record_id, :meta_struct_id, :value)'; $stmt = $databox->get_connection()->prepare($sql); $databox_fields = array(); foreach ($rs as $row) { $meta_struct_id = $row['meta_struct_id']; if (!isset($databox_fields[$meta_struct_id])) { $databox_fields[$meta_struct_id] = \databox_field::get_instance($databox, $meta_struct_id); } $values = \caption_field::get_multi_values($row['value'], $databox_fields[$meta_struct_id]->get_separator()); foreach ($values as $value) { $params = array( ':record_id' => $row['record_id'], ':meta_struct_id' => $row['meta_struct_id'], ':value' => $value, ); $stmt->execute($params); } } $stmt->closeCursor(); $sql = 'DELETE FROM metadatas WHERE id = :id'; $stmt = $databox->get_connection()->prepare($sql); foreach ($rs as $row) { $params = array(':id' => $row['id']); $stmt->execute($params); } $stmt->closeCursor(); $databox->get_connection()->commit(); return true; } }