protected function dropDBTables(NodeRef $nodeRef, DatabaseInterface $db, Element $element) { static $createdTables; $tables[] = $this->NodeDBMeta->getTableName($nodeRef); $tables[] = $this->NodeDBMeta->getOutTagsTable($nodeRef); $tables[] = $this->NodeDBMeta->getInTagsTable($nodeRef); // $tables[] = $this->NodeDBMeta->getSectionsTable($nodeRef); foreach ($this->NodeDBMeta->getMetaStorageDatatypes() as $dtype) { $tables[] = $this->NodeDBMeta->getMetaTable($nodeRef, $dtype); } // Find the tables that have been created. if (!$createdTables) { $createdTables = $db->readCol('SHOW TABLES'); } // Create the tables that don't exist foreach ($tables as $table) { if (in_array($table, $createdTables)) { $count = $db->readField('SELECT COUNT(*) FROM ' . $db->quoteIdentifier($table)); if ($count == 0) { $db->write('DROP TABLE ' . $db->quoteIdentifier($table)); } } } }