/** * @param BaseObject $object Database schema object. * * @return void */ protected function handleDrop(BaseObject $object) { if ($object instanceof Sequence || $object instanceof Procedure) { $ddl = $object->getDropDdl($this->dbType); $this->conditions[""][] = "\t\t\$DB->Query(\"" . EscapePHPString($ddl) . "\", true);\n"; $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);"); $stmt->addCondition("\$updater->CanUpdateDatabase()"); $stmt->addCondition("\$DB->type == \"" . EscapePHPString($this->dbType) . "\""); $stmt->addCondition("\$updater->TableExists(\"" . EscapePHPString($this->tableCheck->getLowercasedName()) . "\")"); } elseif ($object instanceof Table) { $ddl = $object->getDropDdl($this->dbType); $predicate = "\$updater->TableExists(\"" . EscapePHPString($object->name) . "\")"; $cond = "\t\tif ({$predicate})\n"; $this->conditions[$cond][] = $this->multiLinePhp("\t\t\t\$DB->Query(\"", $ddl, "\");\n"); $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");"); $stmt->addCondition("\$updater->CanUpdateDatabase()"); $stmt->addCondition("\$DB->type == \"" . EscapePHPString($this->dbType) . "\""); $stmt->addCondition("\$updater->TableExists(\"" . EscapePHPString($object->getLowercasedName()) . "\")"); } elseif ($object instanceof Column) { $ddl = $object->getDropDdl($this->dbType); $predicate = "\$updater->TableExists(\"" . EscapePHPString($object->parent->name) . "\")"; $cond = "\t\tif ({$predicate})\n"; $predicate2 = "\$DB->Query(\"SELECT " . EscapePHPString($object->name) . " FROM " . EscapePHPString($object->parent->name) . " WHERE 1=0\", true)"; $this->conditions[$cond][] = "\t\t\tif ({$predicate2})\n" . "\t\t\t{\n" . $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $ddl, "\");\n") . "\t\t\t}\n"; $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");"); $stmt->addCondition("\$updater->CanUpdateDatabase()"); $stmt->addCondition("\$DB->type == \"" . EscapePHPString($this->dbType) . "\""); $stmt->addCondition("\$updater->TableExists(\"" . EscapePHPString($object->parent->getLowercasedName()) . "\")"); $stmt->addCondition("\$DB->Query(\"SELECT " . EscapePHPString($object->name) . " FROM " . EscapePHPString($object->parent->getLowercasedName()) . " WHERE 1=0\", true)"); } elseif ($object instanceof Index) { $ddl = $object->getDropDdl($this->dbType); $predicate = "\$updater->TableExists(\"" . EscapePHPString($object->parent->name) . "\")"; $cond = "\t\tif ({$predicate})\n"; $predicate2 = "\$DB->IndexExists(\"" . EscapePHPString($object->parent->name) . "\", array(" . $this->multiLinePhp("\"", $object->columns, "\", ") . "))"; $this->conditions[$cond][] = "\t\t\tif ({$predicate2})\n" . "\t\t\t{\n" . $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $ddl, "\");\n") . "\t\t\t}\n"; $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");"); $stmt->addCondition("\$updater->CanUpdateDatabase()"); $stmt->addCondition("\$DB->type == \"" . EscapePHPString($this->dbType) . "\""); $stmt->addCondition("\$updater->TableExists(\"" . EscapePHPString($object->parent->getLowercasedName()) . "\")"); $stmt->addCondition("\$DB->IndexExists(\"" . EscapePHPString($object->parent->getLowercasedName()) . "\", array(" . $this->multiLinePhp("\"", $object->columns, "\", ") . "))"); } elseif ($object instanceof Trigger || $object instanceof Constraint) { $ddl = $object->getDropDdl($this->dbType); $predicate = "\$updater->TableExists(\"" . EscapePHPString($object->parent->name) . "\")"; $cond = "\t\tif ({$predicate})\n"; $this->conditions[$cond][] = $this->multiLinePhp("\t\t\t\$DB->Query(\"", $ddl, "\", true);\n"); $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);"); $stmt->addCondition("\$updater->CanUpdateDatabase()"); $stmt->addCondition("\$DB->type == \"" . EscapePHPString($this->dbType) . "\""); $stmt->addCondition("\$updater->TableExists(\"" . EscapePHPString($object->parent->getLowercasedName()) . "\")"); } else { $this->conditions[""][] = "\t\t//drop for " . get_class($object) . " not supported yet\n"; $stmt = $this->createStatement("", "//drop for " . get_class($object) . " not supported yet", ""); } if ($stmt) { $this->statements[] = $stmt; } }