database = $database; parent::__construct(); } /** * {@inheritdoc} */ protected function configure() { $this ->setName('database:log:clear') ->setDescription($this->trans('commands.database.log.clear.description')) ->addArgument( 'event-id', InputArgument::OPTIONAL, $this->trans('commands.database.log.clear.arguments.event-id') ) ->addOption( 'type', '', InputOption::VALUE_OPTIONAL, $this->trans('commands.database.log.clear.options.type') ) ->addOption( 'severity', '', InputOption::VALUE_OPTIONAL, $this->trans('commands.database.log.clear.options.severity') ) ->addOption( 'user-id', '', InputOption::VALUE_OPTIONAL, $this->trans('commands.database.log.clear.options.user-id') ); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $io = new DrupalStyle($input, $output); $eventId = $input->getArgument('event-id'); $eventType = $input->getOption('type'); $eventSeverity = $input->getOption('severity'); $userId = $input->getOption('user-id'); if ($eventId) { $this->clearEvent($io, $eventId); } else { $this->clearEvents($io, $eventType, $eventSeverity, $userId); } return 0; } /** * @param DrupalStyle $io * @param $eventId * @return bool */ private function clearEvent(DrupalStyle $io, $eventId) { $result = $this->database->delete('watchdog')->condition('wid', $eventId)->execute(); if (!$result) { $io->error( sprintf( $this->trans('commands.database.log.clear.messages.not-found'), $eventId ) ); return false; } $io->success( sprintf( $this->trans('commands.database.log.clear.messages.event-deleted'), $eventId ) ); return true; } /** * @param DrupalStyle $io * @param $eventType * @param $eventSeverity * @param $userId * @return bool */ protected function clearEvents(DrupalStyle $io, $eventType, $eventSeverity, $userId) { $severity = RfcLogLevel::getLevels(); $query = $this->database->delete('watchdog'); if ($eventType) { $query->condition('type', $eventType); } if ($eventSeverity) { if (!in_array($eventSeverity, $severity)) { $io->error( sprintf( $this->trans('commands.database.log.clear.messages.invalid-severity'), $eventSeverity ) ); return false; } $query->condition('severity', array_search($eventSeverity, $severity)); } if ($userId) { $query->condition('uid', $userId); } $result = $query->execute(); if (!$result) { $io->error( $this->trans('commands.database.log.clear.messages.clear-error') ); return false; } $io->success( $this->trans('commands.database.log.clear.messages.clear-sucess') ); return true; } }