setDescription('Renames a documentation field from a Databox'); $this->addArgument('name', InputArgument::REQUIRED, 'The new name'); $this->addArgument('meta_struct_id', InputArgument::REQUIRED, 'Metadata structure id destination'); $this->addArgument('sbas_id', InputArgument::REQUIRED, 'Databox sbas_id'); return $this; } protected function doExecute(InputInterface $input, OutputInterface $output) { $new_name = $input->getArgument('name'); try { $databox = $this->getService('phraseanet.appbox')->get_databox((int) $input->getArgument('sbas_id')); } catch (\Exception $e) { $output->writeln("Invalid databox id "); return 1; } try { $field = $databox ->get_meta_structure() ->get_element((int) $input->getArgument('meta_struct_id')); } catch (\Exception $e) { $output->writeln("Invalid meta struct id "); return 1; } $dialog = $this->getHelperSet()->get('dialog'); $continue = mb_strtolower( $dialog->ask( $output , "About to rename " . $field->get_name() . " into " . $new_name . " (y/N)" , 'n' ) ); if ($continue != 'y') { $output->writeln("Request canceled by user"); return 1; } $output->write("Renaming ... "); $field->set_name($new_name); $field->save(); $output->writeln("OK"); $sql = 'SELECT count(record_id) as total FROM record'; $stmt = $databox->get_connection()->prepare($sql); $stmt->execute(); $data = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); $total = $data['total']; $start = 0; $quantity = 100; do { $output->write("\rUpdating records... ".min($start, $total)." / $total"); $sql = 'SELECT record_id FROM record ORDER BY record_id LIMIT ' . $start . ', ' . $quantity; $stmt = $databox->get_connection()->prepare($sql); $stmt->execute(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($results as $row) { $record = $databox->get_record($row['record_id']); $record->set_metadatas(array()); unset($record); } $start += $quantity; } while (count($results) > 0); $output->writeln("\nDone with success !"); return 0; } }