function run($request)
 {
     $db = DB::getConn();
     if ($db instanceof PostgreSQLDatabase) {
         $exist = DB::query("SELECT column_name FROM information_schema.columns WHERE table_name ='PickUpOrDeliveryModifier' AND column_name = 'PickupOrDeliveryType'")->numRecords();
     } else {
         // default is MySQL - broken for others, each database conn type supported must be checked for!
         $exist = DB::query("SHOW COLUMNS FROM \"PickUpOrDeliveryModifier\" LIKE 'PickupOrDeliveryType'")->numRecords();
     }
     if ($exist > 0) {
         $defaultOption = PickUpOrDeliveryModifierOptions::get()->filter(array("IsDefault" => 1))->First();
         $modifiers = PickUpOrDeliveryModifier::get()->filter(array("OptionID" => 0));
         if ($modifiers->count()) {
             foreach ($modifiers as $modifier) {
                 if (!isset($modifier->OptionID) || !$modifier->OptionID) {
                     if (!isset(self::$options_old_to_new[$modifier->Code])) {
                         $option = PickUpOrDeliveryModifierOptions::get()->filter(array("Code" => $modifier->Code))->First();
                         if (!$option) {
                             $option = $defaultOption;
                         }
                         self::$options_old_to_new[$modifier->Code] = $option->ID;
                     }
                     $myOption = self::$options_old_to_new[$modifier->Code];
                     // USING QUERY TO UPDATE
                     DB::query("UPDATE \"PickUpOrDeliveryModifier\" SET \"OptionID\" = " . $myOption . " WHERE \"PickUpOrDeliveryModifier\".\"ID\" = " . $modifier->ID);
                     DB::alteration_message('Updated modifier #' . $modifier->ID . ' from code to option ID ' . $myOption, 'edited');
                 }
             }
         }
     }
     DB::alteration_message("<hr />COMPLETED<hr />", "created");
 }
 function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fieldLabels = $this->Config()->get("field_labels");
     $fields->replaceField("CountryCode", new DropDownField("CountryCode", $fieldLabels["CountryCode"], EcommerceCountry::get_country_dropdown()));
     return $fields;
 }
 function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     // we must check for individual database types here because each deals with schema in a none standard way
     $modifiers = PickUpOrDeliveryModifier::get()->filter(array("OptionID" => 0));
     if ($modifiers->count()) {
         DB::alteration_message("You need to upgrade PickUpOrDeliveryModifier <a href=\"/dev/tasks/EcommerceTaskUpgradePickUpOrDeliveryModifier\">do it now!</a>", "deleted");
     }
 }