Export Ensemble
This is an open discussion with 59 replies, filed under Extensions.
Search
Is there a reason why this extension doesn’t simply dump all tables starting with your prefix into an install.sql
?
Well, it’d have to exclude sensitive information. For the core, that means authors, forgot-password, sessions… I guess any extensions that handle sensitive info would need to be trusted with that same task?
Ok, for those tables the schema (and not the data) would be sufficient for an export.
If you want to include all the tables, you can modify the Export Ensemble to include everything. But it could be a little dangerous if you forget that you’ve done this and inadvertently distribute sensitive details in a public repository or downloadable file.
I remember talk of an improved export ensemble which would include preferences for saving an ensemble, a full-backup, tables to include, etc.
Any ideas? Results after clicking the export button.
file_put_contents(/web/public/ensemble1/manifest/logs/main) [function.file-put-contents]: failed to open stream: Too many open files /web/public/ensemble1/symphony/lib/core/class.log.php line 104 99 100 if(file_exists($this->_log_path) && !is_writable($this->_log_path)){ 101 $this->pushToLog('Could Not Write To Log. It is not readable.', self::ERROR); 102 return false; 103 } 104 return file_put_contents($this->_log_path, $message . ($addbreak ? "rn" : ''), FILE_APPEND); 105 106 } 107 108 public function getLog(){
Well… too many open files. :-D
Can you post a backtrace? Maybe the extension is leaking file handles…
lol, thanks Nils!
[/web/public/ensemble1/symphony/lib/core/class.log.php:104] file_put_contents(); [/web/public/ensemble1/symphony/lib/core/class.log.php:87] Log->writeToLog(); [/web/public/ensemble1/symphony/lib/core/class.errorhandler.php:280] Log->pushToLog(); [:0] GenericErrorHandler::handler(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:37] DirectoryIterator->__construct(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:42] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:42] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:42] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:42] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:42] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:42] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:42] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:143] extension_export_ensemble->__addFolderToArchive(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:189] extension_export_ensemble->__export(); [/web/public/ensemble1/extensions/export_ensemble/extension.driver.php:195] extension_export_ensemble->__SavePreferences(); [/web/public/ensemble1/symphony/lib/toolkit/class.extensionmanager.php:340] extension_export_ensemble->appendPreferences(); [/web/public/ensemble1/symphony/content/content.systempreferences.php:57] ExtensionManager->notifyMembers(); [/web/public/ensemble1/symphony/lib/toolkit/class.administrationpage.php:81] contentSystemPreferences->view(); [/web/public/ensemble1/symphony/lib/core/class.administration.php:88] AdministrationPage->build(); [/web/public/ensemble1/symphony/lib/core/class.administration.php:204] Administration->__buildPage(); [/web/public/ensemble1/index.php:25] Administration->display();
is there a way to emulate the behavior of this extension for something like uploading to github? so far, my process is to simply add manifest/
to .gitignore
and do a mysqldump before pushing, but obviously a straight up mysqldump is going to save all of the sensitive data.
edit: after looking at other ensembles and the default symphony workspace, perhaps there is some install.sql
wrangling to be done?
If the extensions you are using in the ensemble do not add tables to the database, the easy way would be to export the ensemble, then replace the /workspace/install.sql
file in the repository.
If you are using extensions that add tables to the database, then you’ll have to modify the export ensemble. For example, I’ve created an Export Forum extension to include the Members extension tables in the /install.sql
and /workspace/install.sql
files.
I use different branches, depending on whether I want to export the entire ensemble (master) or just the /workspace/install.sql
file (install).
I started to experiment with simply overwriting the /workspace/install.sql
file with the savesql branch. But I haven’t had time to test it out yet. This would work really well in a git workflow for developing ensembles.
what’s the difference between /install.sql
and /workspace/install.sql
? what i ended up doing was simply dumping the database, minus sym_authors
, sym_cache
, and sym_sessions
, then appending them with --no-data >> install.sql
. however, i just placed it in the project’s root directory and ran install.php with success.
i suppose this may be a discussion for a separate git-related thread, but what i am trying to do is replicate export ensemble
from the command line so i can skip the entire log-in-to-backend/zipping/uploading/unzipping process.
Install SQL Files
The difference between the /install.sql
and the /workspace/install.sql
is that the installer uses the former to set up the structure of the database and if a workspace is included at the time of install, the installer will also use the latter to populate the database with data to install an ensemble. If no workspace is included at the time of install, a blank workspace will be automatically set up.
The SQL statements in the /install.sql
file are used to set up the structure for the following tables, where the tbl
prefix is replaced by the table prefix specified during the install process:
sym_authors
sym_cache
sym_entries
sym_extensions
sym_extensions_delegates
sym_fields
sym_fields_author
sym_fields_checkbox
sym_fields_date
sym_fields_input
sym_fields_select
sym_fields_taglist
sym_fields_textarea
sym_fields_upload
sym_forgotpass
sym_pages
sym_pages_types
sym_sections
sym_sections_association
The SQL statements in the /workspace/install.sql
file are used by the installer to set up the structure of section tables, tables named sym_entries_data_xxx
, and to populate all the tables with the same database structure and data required to reproduce the original Symphony install. Notably missing from the /workspace/install.sql
is any reference to the following tables:
sym_authors
sym_cache
sym_forgotpass
The Export Ensemble extension ensures that sensitive data, such as author usernames and passwords, will not be included in the SQL file. Configuration settings are also sanitized, so sensitive database configuration settings are excluded.
Symphony Shell Extension
If you’re trying to work with Symphony from the command line, it might be useful to take a look at Alistair’s Symphony Shell extension. It’s not been updated for a while, so I’m not sure how well it will work with the latest version of Symphony, but it could be a good starting point for working with Symphony from the command line.
Save Only the SQL File
If you are using Symphony 2.2 RC2, you can try out the savesql
branch of my fork of the Export Ensemble extension. I just pushed this up today. I tested it out on the default workspace (integration branch for Symphony 2.2), and I was able to export the SQL (making sure that the install.sql file was writable by PHP), then install from the new file without an issue.
Rather than export the entire ensemble as a ZIP file, it simply overwrites the /workspace/install.sql
file. Just add the updated file to the Git repo and you’ll have an updated ensemble.
Just be aware that for extensions that add tables to the database, this extension would need to be modified to include those tables in the install.sql
file. Some extensions also modify the configuration settings, so the install.php
file would also need to be modified to include these configuration settings for the ensemble to work with these extensions.
Just noticed the Export Ensemble 1.12 of Symphony 2.2 shows "Symphony 2.2RC1" instead of 2.2
Yep, we are aware of that one :)
Ups, sorry!
Hello.. Not really sure if this is an issue with this extension or not, but I've attempted to update my ensemble to version 2.2.1 (with export_ensemble
1.13).
Now, after installing a new version of the ensemble, when you're normally taken to the /symphony login prompt, I'm getting errors that the table for prefix_sessions doesn't exist.
I assume this is intentional, to obviously keep sensitive information from being sent around.. But Symphony still wants/needs(?) it there. Is there maybe something else I've done to exclude this from happening, or is this possibly a bug?
Thanks!
Can you try this; Line 77 of extension.driver.php
, make it look like (where sym is actually tbl):
'sym_sections_association', 'sym_sessions'
I can confirm the bug. @brendo, that does make a difference. But that also means that if you are tracking the install.sql
in a git repository, the order of the SQL statements changes from the existing file.
This retains the existing order:
$tables = array( 'sym_authors', 'sym_sessions', 'sym_cache', 'sym_entries', 'sym_extensions', 'sym_extensions_delegates', 'sym_fields', 'sym_fields_%', 'sym_forgotpass', 'sym_pages', 'sym_pages_types', 'sym_sections', 'sym_sections_association' );
Great, that seems to have fixed it. I know the order of it ultimately doesn't make or break the deal, but if @bauhouses' order is preferred, I'll change it to that to make sure it's consistent.
Either way, thanks for the quick response/solution.
Create an account or sign in to comment.
A new Extension, “Export Ensemble” is now available for download. Comments and feedback can be left here but if you discover any issues, please post it on the issue tracker.