|
@@ -0,0 +1,124 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+//
|
|
|
+// This example demonstrates how to write a drush
|
|
|
+// script. These scripts are run with the php-script command.
|
|
|
+//
|
|
|
+use Drush\Drush;
|
|
|
+
|
|
|
+$this->output()->writeln("Flagging collection cleaning");
|
|
|
+
|
|
|
+// $this->output()->writeln("Hello world!");
|
|
|
+// $this->output()->writeln("The extra options/arguments to this command were:");
|
|
|
+// $this->output()->writeln(print_r($extra, true));
|
|
|
+if ($extra[0] === "delete") {
|
|
|
+ $delete = true;
|
|
|
+} else {
|
|
|
+ $delete = false;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+$database = \Drupal::database();
|
|
|
+
|
|
|
+$this->output()->writeln("");
|
|
|
+$this->output()->writeln("Flagging collection With NULL name cleaning");
|
|
|
+$fcfd_query = $database->select('flagging_collection_field_data', 'fcfd')
|
|
|
+ ->isNull('fcfd.name')
|
|
|
+ ->fields('fcfd', ['id', 'relatedflag']);
|
|
|
+
|
|
|
+$fcfd_result = $fcfd_query->execute();
|
|
|
+$this->output()->writeln($fcfd_query->countQuery()->execute()->fetchField() . " flagging_collection with null name");
|
|
|
+
|
|
|
+foreach ($fcfd_result as $fc) {
|
|
|
+ // $this->output()->writeln($fc->id . " flagging_collection with null name");
|
|
|
+ // $this->output()->writeln(print_r($fc, true));
|
|
|
+
|
|
|
+ // get flag list items
|
|
|
+ $flifd_query = $database->select('flag_list_item_field_data', 'flifd')
|
|
|
+ ->condition('flifd.flag_list', $fc->id)
|
|
|
+ ->fields('flifd', ['id', 'baseflag', 'flag_list']);
|
|
|
+
|
|
|
+ $flifd_result = $flifd_query->execute();
|
|
|
+ $this->output()->writeln($flifd_query->countQuery()->execute()->fetchField() . " items for fc " . $fc->id . ' with baseflag ' . $fc->relatedflag);
|
|
|
+ // $this->output()->writeln(print_r($flifd_result->fetchAssoc(), true) . " items");
|
|
|
+
|
|
|
+ delete_flagingcollection($fc);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// searching for missing related flags
|
|
|
+$this->output()->writeln("");
|
|
|
+$this->output()->writeln("Missing related flag Flagging collection cleaning");
|
|
|
+$fcfd_query = $database->select('flagging_collection_field_data', 'fcfd')
|
|
|
+ ->fields('fcfd', ['id', 'relatedflag']);
|
|
|
+
|
|
|
+$fcfd_result = $fcfd_query->execute();
|
|
|
+$this->output()->writeln($fcfd_query->countQuery()->execute()->fetchField() . " flagging_collections");
|
|
|
+
|
|
|
+$fc_missing_relatedflag = 0;
|
|
|
+foreach ($fcfd_result as $fc) {
|
|
|
+ $flag_query = $database->select('config', 'c')
|
|
|
+ ->condition('c.name', 'flag.flag.' . $fc->relatedflag)
|
|
|
+ ->fields('c', ['name']);
|
|
|
+ $conf_result = $flag_query->execute();
|
|
|
+ $count = $flag_query->countQuery()->execute()->fetchField();
|
|
|
+ if(!$count){
|
|
|
+ $this->output()->writeln($count . " relatedflag");
|
|
|
+ $fc_missing_relatedflag ++;
|
|
|
+ delete_flagingcollection($fc);
|
|
|
+ }
|
|
|
+}
|
|
|
+$this->output()->writeln($fc_missing_relatedflag .' flagging_collection with missing related_flag');
|
|
|
+
|
|
|
+function delete_flagingcollection($fc){
|
|
|
+ if($delete){
|
|
|
+ $this->output()->writeln("Deleting flagging collection " . $fc->id);
|
|
|
+ // get flag list items
|
|
|
+ $flifd_query = $database->select('flag_list_item_field_data', 'flifd')
|
|
|
+ ->condition('flifd.flag_list', $fc->id)
|
|
|
+ ->fields('flifd', ['id', 'baseflag', 'flag_list']);
|
|
|
+
|
|
|
+ $flifd_result = $flifd_query->execute();
|
|
|
+
|
|
|
+ foreach ($flifd_result as $item) {
|
|
|
+ // delete items
|
|
|
+ $database->delete('flag_list_item')
|
|
|
+ ->condition('id', $item->id)
|
|
|
+ ->execute();
|
|
|
+ $database->delete('flag_list_item_field_data')
|
|
|
+ ->condition('id', $item->id)
|
|
|
+ ->execute();
|
|
|
+ }
|
|
|
+
|
|
|
+ # delete the flag_collection
|
|
|
+ $database->delete('flagging_collection')
|
|
|
+ ->condition('id', $fc->id)
|
|
|
+ ->execute();
|
|
|
+ $database->delete('flagging_collection_revision')
|
|
|
+ ->condition('id', $fc->id)
|
|
|
+ ->execute();
|
|
|
+ $database->delete('flagging_collection_field_revision')
|
|
|
+ ->condition('id', $fc->id)
|
|
|
+ ->execute();
|
|
|
+
|
|
|
+ # delete related flag
|
|
|
+ // $flag_query = $database->select('config', 'c')
|
|
|
+ // ->condition('c.name', 'flag.flag.' . $fc->relatedflag)
|
|
|
+ // ->fields('c', ['name']);
|
|
|
+ // $conf_result = $flag_query->execute();
|
|
|
+ // $this->output()->writeln(print_r($conf_result->fetchAssoc(), true));
|
|
|
+
|
|
|
+ $database->delete('config')
|
|
|
+ ->condition('name', 'flag.flag.' . $fc->relatedflag)
|
|
|
+ ->execute();
|
|
|
+
|
|
|
+
|
|
|
+ $database->delete('flagging_collection_field_data')
|
|
|
+ ->condition('id', $fc->id)
|
|
|
+ ->execute();
|
|
|
+
|
|
|
+ } else {
|
|
|
+ $this->output()->writeln("In order to actually delete fault flagging collection data please use delete option");
|
|
|
+ }
|
|
|
+
|
|
|
+}
|