mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-07 16:44:07 +01:00
Add auto-import of definitions in appname/setup/*.xml
This commit is contained in:
parent
a0d7bde2fb
commit
37417195eb
@ -33,6 +33,7 @@ class importexport_definition implements importexport_iface_egw_record {
|
||||
'plugin_options' => 'array',
|
||||
'owner' => 'int',
|
||||
'description' => 'string',
|
||||
'modified' => 'timestamp'
|
||||
);
|
||||
|
||||
/**
|
||||
@ -234,6 +235,7 @@ class importexport_definition implements importexport_iface_egw_record {
|
||||
|
||||
$this->so_sql->data = $this->definition;
|
||||
$this->so_sql->data['plugin_options'] = importexport_arrayxml::array2xml( $this->definition['plugin_options'] );
|
||||
$this->so_sql->data['modified'] = time();
|
||||
if ($this->so_sql->save( array( 'definition_id' => $_dst_identifier ))) {
|
||||
throw new Exception('Error: so_sql was not able to save definition: '.$this->get_identifier());
|
||||
}
|
||||
|
@ -159,12 +159,17 @@ class importexport_definitions_bo {
|
||||
$definition_data['owner'] = importexport_helper_functions::account_name2id( $definition_data['owner'] );
|
||||
|
||||
$definition = new importexport_definition( $definition_data['name'] );
|
||||
|
||||
// Only update if the imported is newer
|
||||
if($definition->modified < $definition_data['modified'] || $definition->modified == 0)
|
||||
{
|
||||
$definition_id = $definition->get_identifier() ? $definition->get_identifier() : NULL;
|
||||
|
||||
$definition->set_record( $definition_data );
|
||||
$definition->save( $definition_id );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -316,6 +316,8 @@ class importexport_helper_functions {
|
||||
$appnames = $_appname == 'all' ? array_keys($GLOBALS['egw_info']['apps']) : (array)$_appname;
|
||||
$types = $_type == 'all' ? array('import','export') : (array)$_type;
|
||||
|
||||
// Testing: comment out egw_cache call, use this
|
||||
//$plugins = self::_get_plugins($appnames, $types);
|
||||
foreach($plugins as $appname => $_types) {
|
||||
if(!in_array($appname, $appnames)) unset($plugins[$appname]);
|
||||
}
|
||||
@ -360,6 +362,25 @@ class importexport_helper_functions {
|
||||
}
|
||||
}
|
||||
$d->close();
|
||||
|
||||
// Check for new definitions to import from $appname/setup/*.xml
|
||||
$appdir = EGW_INCLUDE_ROOT. "/$appname/setup";
|
||||
if(!is_dir($appdir)) continue;
|
||||
$d = dir($appdir);
|
||||
|
||||
// step through each file in app's setup
|
||||
while (false !== ($entry = $d->read())) {
|
||||
$file = $appdir. '/'. $entry;
|
||||
list( $filename, $extension) = explode('.',$entry);
|
||||
if ( $extension != 'xml' ) continue;
|
||||
try {
|
||||
// import will skip invalid files
|
||||
importexport_definitions_bo::import( $file );
|
||||
} catch (Exception $e) {
|
||||
error_log(__CLASS__.__FUNCTION__. " import $appname definitions: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
$d->close();
|
||||
}
|
||||
//error_log(__CLASS__.__FUNCTION__.print_r($plugins,true));
|
||||
return $plugins;
|
||||
|
@ -10,7 +10,7 @@
|
||||
*/
|
||||
|
||||
$setup_info['importexport']['name'] = 'importexport';
|
||||
$setup_info['importexport']['version'] = '1.8';
|
||||
$setup_info['importexport']['version'] = '1.9.001';
|
||||
$setup_info['importexport']['app_order'] = 2;
|
||||
$setup_info['importexport']['enable'] = 2;
|
||||
$setup_info['importexport']['tables'] = array('egw_importexport_definitions');
|
||||
@ -48,3 +48,4 @@ $setup_info['importexport']['check_install'] = array(
|
||||
'func' => 'extension_check',
|
||||
),
|
||||
);
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
$phpgw_baseline = array(
|
||||
'egw_importexport_definitions' => array(
|
||||
'fd' => array(
|
||||
'definition_id' => array('type' => 'auto'),
|
||||
'definition_id' => array('type' => 'auto','nullable' => False),
|
||||
'name' => array('type' => 'varchar','precision' => '255'),
|
||||
'application' => array('type' => 'varchar','precision' => '50'),
|
||||
'plugin' => array('type' => 'varchar','precision' => '100'),
|
||||
@ -24,7 +24,8 @@
|
||||
'allowed_users' => array('type' => 'varchar','precision' => '255'),
|
||||
'plugin_options' => array('type' => 'longtext'),
|
||||
'owner' => array('type' => 'int','precision' => '20'),
|
||||
'description' => array('type' => 'varchar','precision' => '255')
|
||||
'description' => array('type' => 'varchar','precision' => '255'),
|
||||
'modified' => array('type' => 'timestamp')
|
||||
),
|
||||
'pk' => array('definition_id'),
|
||||
'fk' => array(),
|
||||
|
@ -41,3 +41,17 @@ function importexport_upgrade1_7_001()
|
||||
{
|
||||
return $GLOBALS['setup_info']['importexport']['currentver'] = '1.8';
|
||||
}
|
||||
|
||||
function importexport_upgrade1_8()
|
||||
{
|
||||
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_importexport_definitions','definition_id',array(
|
||||
'type' => 'auto',
|
||||
'nullable' => False
|
||||
));
|
||||
$GLOBALS['egw_setup']->oProc->AddColumn('egw_importexport_definitions','modified',array(
|
||||
'type' => 'timestamp'
|
||||
));
|
||||
|
||||
return $GLOBALS['setup_info']['importexport']['currentver'] = '1.9.001';
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user