public function testPickTableName() { $pickCoreTables = ['users', 'tables']; $notExistingTable = ['accounts', 'databases']; $filteredTables = Schema::getDirectusTables(array_merge($pickCoreTables, $notExistingTable)); foreach ($pickCoreTables as $pickCoreTable) { $result = in_array(Schema::addCoreTablePrefix($pickCoreTable), $filteredTables); if (!in_array($pickCoreTable, $notExistingTable)) { $this->assertFalse($result); } else { $this->assertTrue($result); } } }
protected function getDirectusTablesInfo() { $config = Bootstrap::get('config'); $blacklist = []; if (array_key_exists('tableBlacklist', $config)) { $blacklist = $config['tableBlacklist']; } $select = new Select(); $select->columns(['table_name', 'hidden' => new Expression('IFNULL(hidden, 0)'), 'single' => new Expression('IFNULL(single, 0)'), 'user_create_column', 'user_update_column', 'date_create_column', 'date_update_column', 'footer', 'list_view', 'column_groupings', 'filter_column_blacklist', 'primary_column']); $select->from('directus_tables'); $skipTables = array_merge(SchemaManager::getDirectusTables(), (array) $blacklist); $select->where([new NotIn('table_name', $skipTables)]); $sql = new Sql($this->adapter); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); return iterator_to_array($result); }
/** * @inheritDoc */ public function getTables() { $zendDb = Bootstrap::get('zendDb'); $config = Bootstrap::get('config'); $blacklist = []; if (array_key_exists('tableBlacklist', $config)) { $blacklist = $config['tableBlacklist']; } $select = new Select(); $select->columns(['id' => 'TABLE_NAME', 'table_name' => 'TABLE_NAME', 'date_created' => 'CREATE_TIME', 'comment' => 'TABLE_COMMENT', 'count' => 'TABLE_ROWS']); $select->from(['ST' => new TableIdentifier('TABLES', 'INFORMATION_SCHEMA')]); $select->join(['DT' => 'directus_tables'], 'DT.table_name = ST.TABLE_NAME', ['hidden' => new Expression('IFNULL(hidden, 0)'), 'single' => new Expression('IFNULL(single, 0)'), 'user_create_column', 'user_update_column', 'date_create_column', 'date_update_column', 'footer', 'list_view', 'column_groupings', 'filter_column_blacklist', 'primary_column'], $select::JOIN_LEFT); $ignoredTables = SchemaManager::getDirectusTables(DirectusPreferencesTableGateway::$IGNORED_TABLES); $select->where(['ST.TABLE_SCHEMA' => $zendDb->getCurrentSchema(), 'ST.TABLE_TYPE' => 'BASE TABLE', new NotIn('ST.TABLE_NAME', array_merge($ignoredTables, (array) $blacklist))]); $sql = new Sql($zendDb); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); return iterator_to_array($result); }
public function fetchAllByUser($user_id, $assoc = false) { $select = new Select($this->table); $select->columns(['id', 'user', 'table_name', 'columns_visible', 'sort', 'sort_order', 'status', 'title', 'search_string']); $select->where->equalTo('user', $user_id)->isNull('title'); $coreTables = SchemaManager::getDirectusTables(static::$IGNORED_TABLES); $select->where->addPredicate(new NotIn('table_name', $coreTables)); $metadata = new \Zend\Db\Metadata\Metadata($this->getAdapter()); $tables = $metadata->getTableNames(); $tables = array_diff($tables, $coreTables); $rows = $this->selectWith($select)->toArray(); $preferences = []; $tablePrefs = []; foreach ($rows as $row) { $tablePrefs[$row['table_name']] = $row; } //Get Default Preferences foreach ($tables as $key => $table) { // Honor ACL. Skip the tables that the user doesn't have access too if (!TableSchema::canGroupViewTable($table)) { continue; } $tableName = $table; if (!isset($tablePrefs[$table])) { $table = null; } else { $table = $tablePrefs[$table]; } if (!isset($table['user'])) { $table = null; } $table = $this->constructPreferences($user_id, $tableName, $table); $preferences[$tableName] = $table; } return $preferences; }