/** * Removes every references from Yaml schemas. */ public function removeReferences() { $this->loadSchemas(); if (!empty($this->app_schema)) { foreach ($this->app_schema as $bundle_name => $models) { if (!empty($models)) { foreach ($models as $model_name => $model_data) { if (!empty($model_data)) { foreach ($model_data as $property_name => $property_data) { unset($this->app_schema[$bundle_name][$model_name][$property_name]['_ref']); if ($property_name == '_params' && empty($this->app_schema[$bundle_name][$model_name][$property_name])) { unset($this->app_schema[$bundle_name][$model_name][$property_name]); } } } } } } foreach ($this->app_schema as $bundle_name => $models) { $schema_content = \Sybil\Yaml::dump($models, 2, 4); $schema_directory = $_SERVER['PWD'] . '/bundle/' . $bundle_name . '/'; $schema_file = $schema_directory . 'schema.yml'; if (file_exists($schema_file)) { file_put_contents($schema_file, $schema_content); chmod($schema_file, 0777); } if (file_exists($schema_directory . '_schema.yml')) { unlink($schema_directory . '_schema.yml'); } } } echo "References have been removed from every schema.\n"; }
/** * Updates schemas with new references. */ public function updateSchemas() { foreach ($this->app_entities as $bundle_name => $bundle_data) { $schema_content = \Sybil\Yaml::dump($bundle_data, 2, 4); $schema_directory = $_SERVER['PWD'] . '/bundle/' . $bundle_name . '/'; $schema_file = $schema_directory . 'schema.yml'; if (file_exists($schema_file)) { copy($schema_file, $schema_directory . '_schema.yml'); chmod($schema_directory . '_schema.yml', 0777); file_put_contents($schema_file, $schema_content); chmod($schema_file, 0777); } } }