Exemple #1
0
 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;
 }