forked from extern/egroupware
Move importexport to new API
This commit is contained in:
parent
de89542712
commit
7e7f045343
@ -10,6 +10,8 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
$path_to_egroupware = realpath(dirname(__FILE__).'/..');
|
$path_to_egroupware = realpath(dirname(__FILE__).'/..');
|
||||||
|
|
||||||
$usage = "usage:
|
$usage = "usage:
|
||||||
@ -148,7 +150,7 @@ $po = new $definition->plugin;
|
|||||||
$resource = fopen( $file, 'r' );
|
$resource = fopen( $file, 'r' );
|
||||||
$po->$type( $resource, $definition );
|
$po->$type( $resource, $definition );
|
||||||
|
|
||||||
common::egw_exit();
|
exit();
|
||||||
|
|
||||||
function import_export_access(&$account)
|
function import_export_access(&$account)
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,9 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Egw;
|
||||||
|
|
||||||
if (!defined('IMPORTEXPORT_APP'))
|
if (!defined('IMPORTEXPORT_APP'))
|
||||||
{
|
{
|
||||||
define('IMPORTEXPORT_APP','importexport');
|
define('IMPORTEXPORT_APP','importexport');
|
||||||
@ -32,27 +35,27 @@ class importexport_admin_prefs_sidebox_hooks
|
|||||||
array(
|
array(
|
||||||
'text' => 'Import',
|
'text' => 'Import',
|
||||||
'link' => "javascript:egw_openWindowCentered2('".
|
'link' => "javascript:egw_openWindowCentered2('".
|
||||||
egw::link('/index.php','menuaction=importexport.importexport_import_ui.import_dialog',false).
|
Egw::link('/index.php','menuaction=importexport.importexport_import_ui.import_dialog',false).
|
||||||
"','_blank',850,440,'yes')",
|
"','_blank',850,440,'yes')",
|
||||||
'icon' => 'import'
|
'icon' => 'import'
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
$export_limit = bo_merge::getExportLimit($appname);
|
$export_limit = Api\Storage\Merge::getExportLimit($appname);
|
||||||
//error_log(__METHOD__.__LINE__.' app:'.$appname.' limit:'.$export_limit);
|
//error_log(__METHOD__.__LINE__.' app:'.$appname.' limit:'.$export_limit);
|
||||||
if(bo_merge::is_export_limit_excepted() || $export_limit !== 'no')
|
if(Api\Storage\Merge::is_export_limit_excepted() || $export_limit !== 'no')
|
||||||
{
|
{
|
||||||
$file[] = array(
|
$file[] = array(
|
||||||
'text' => 'Export',
|
'text' => 'Export',
|
||||||
'link' => "javascript:egw_openWindowCentered2('".
|
'link' => "javascript:egw_openWindowCentered2('".
|
||||||
egw::link('/index.php','menuaction=importexport.importexport_export_ui.export_dialog',false).
|
Egw::link('/index.php','menuaction=importexport.importexport_export_ui.export_dialog',false).
|
||||||
"','_blank',850,440,'yes')",
|
"','_blank',850,440,'yes')",
|
||||||
'icon' => 'export'
|
'icon' => 'export'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$config = config::read($appname);
|
$config = Api\Config::read($appname);
|
||||||
if($config['users_create_definitions'])
|
if($config['users_create_definitions'])
|
||||||
{
|
{
|
||||||
$file['Define imports|exports'] = egw::link('/index.php',array(
|
$file['Define imports|exports'] = Egw::link('/index.php',array(
|
||||||
'menuaction' => 'importexport.importexport_definitions_ui.index',
|
'menuaction' => 'importexport.importexport_definitions_ui.index',
|
||||||
'ajax' => 'true'
|
'ajax' => 'true'
|
||||||
),$GLOBALS['egw_info']['user']['apps']['admin'] ? 'admin' : 'preferences');
|
),$GLOBALS['egw_info']['user']['apps']['admin'] ? 'admin' : 'preferences');
|
||||||
@ -63,13 +66,13 @@ class importexport_admin_prefs_sidebox_hooks
|
|||||||
if ($GLOBALS['egw_info']['user']['apps']['admin'])
|
if ($GLOBALS['egw_info']['user']['apps']['admin'])
|
||||||
{
|
{
|
||||||
$file = Array(
|
$file = Array(
|
||||||
'Site Configuration' => egw::link('/index.php','menuaction=importexport.importexport_definitions_ui.site_config'),
|
'Site Configuration' => Egw::link('/index.php','menuaction=importexport.importexport_definitions_ui.site_config'),
|
||||||
'Import definitions' => egw::link('/index.php','menuaction=importexport.importexport_definitions_ui.import_definition'),
|
'Import definitions' => Egw::link('/index.php','menuaction=importexport.importexport_definitions_ui.import_definition'),
|
||||||
'Define imports|exports' => egw::link('/index.php',array(
|
'Define imports|exports' => Egw::link('/index.php',array(
|
||||||
'menuaction' => 'importexport.importexport_definitions_ui.index',
|
'menuaction' => 'importexport.importexport_definitions_ui.index',
|
||||||
'ajax' => 'true'
|
'ajax' => 'true'
|
||||||
)),
|
)),
|
||||||
'Schedule' => egw::link('/index.php', array(
|
'Schedule' => Egw::link('/index.php', array(
|
||||||
'menuaction' => 'importexport.importexport_schedule_ui.index'
|
'menuaction' => 'importexport.importexport_schedule_ui.index'
|
||||||
)),
|
)),
|
||||||
);
|
);
|
||||||
@ -92,12 +95,12 @@ class importexport_admin_prefs_sidebox_hooks
|
|||||||
if($GLOBALS['egw_info']['flags']['no_importexport'] === true) return array();
|
if($GLOBALS['egw_info']['flags']['no_importexport'] === true) return array();
|
||||||
|
|
||||||
$appname = $GLOBALS['egw_info']['flags']['currentapp'];
|
$appname = $GLOBALS['egw_info']['flags']['currentapp'];
|
||||||
$cache = egw_cache::getCache(egw_cache::SESSION, 'importexport', 'sidebox_links');
|
$cache = Api\Cache::getCache(Api\Cache::SESSION, 'importexport', 'sidebox_links');
|
||||||
|
|
||||||
if(!$cache[$appname] && $GLOBALS['egw_info']['user']['apps']['importexport']) {
|
if(!$cache[$appname] && $GLOBALS['egw_info']['user']['apps']['importexport']) {
|
||||||
$cache[$appname]['import'] = importexport_helper_functions::has_definitions($appname, 'import');
|
$cache[$appname]['import'] = importexport_helper_functions::has_definitions($appname, 'import');
|
||||||
$cache[$appname]['export'] = importexport_helper_functions::has_definitions($appname, 'export');
|
$cache[$appname]['export'] = importexport_helper_functions::has_definitions($appname, 'export');
|
||||||
egw_cache::setCache(egw_cache::SESSION, 'importexport', 'sidebox_links', $cache);
|
Api\Cache::setCache(Api\Cache::SESSION, 'importexport', 'sidebox_links', $cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add in import / export, if available
|
// Add in import / export, if available
|
||||||
@ -106,7 +109,7 @@ class importexport_admin_prefs_sidebox_hooks
|
|||||||
if($cache[$appname]['import'])
|
if($cache[$appname]['import'])
|
||||||
{
|
{
|
||||||
$file['Import CSV'] = array('link' => "javascript:egw_openWindowCentered2('".
|
$file['Import CSV'] = array('link' => "javascript:egw_openWindowCentered2('".
|
||||||
egw::link('/index.php',array(
|
Egw::link('/index.php',array(
|
||||||
'menuaction' => 'importexport.importexport_import_ui.import_dialog',
|
'menuaction' => 'importexport.importexport_import_ui.import_dialog',
|
||||||
'appname'=>$appname
|
'appname'=>$appname
|
||||||
),false)."','_blank',850,440,'yes')",
|
),false)."','_blank',850,440,'yes')",
|
||||||
@ -118,12 +121,12 @@ class importexport_admin_prefs_sidebox_hooks
|
|||||||
$file['Import CSV']['link'] = '';
|
$file['Import CSV']['link'] = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$export_limit = bo_merge::getExportLimit($appname);
|
$export_limit = Api\Storage\Merge::getExportLimit($appname);
|
||||||
//error_log(__METHOD__.__LINE__.' app:'.$appname.' limit:'.$export_limit);
|
//error_log(__METHOD__.__LINE__.' app:'.$appname.' limit:'.$export_limit);
|
||||||
if ((bo_merge::is_export_limit_excepted() || bo_merge::hasExportLimit($export_limit,'ISALLOWED')) && $cache[$appname]['export'])
|
if ((Api\Storage\Merge::is_export_limit_excepted() || Api\Storage\Merge::hasExportLimit($export_limit,'ISALLOWED')) && $cache[$appname]['export'])
|
||||||
{
|
{
|
||||||
$file['Export CSV'] = array('link' => "javascript:egw_openWindowCentered2('".
|
$file['Export CSV'] = array('link' => "javascript:egw_openWindowCentered2('".
|
||||||
egw::link('/index.php',array(
|
Egw::link('/index.php',array(
|
||||||
'menuaction' => 'importexport.importexport_export_ui.export_dialog',
|
'menuaction' => 'importexport.importexport_export_ui.export_dialog',
|
||||||
'appname'=>$appname
|
'appname'=>$appname
|
||||||
),false)."','_blank',850,440,'yes')",
|
),false)."','_blank',850,440,'yes')",
|
||||||
@ -136,12 +139,12 @@ class importexport_admin_prefs_sidebox_hooks
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$config = config::read('importexport');
|
$config = Api\Config::read('importexport');
|
||||||
if($appname != 'admin' && ($config['users_create_definitions'] || $GLOBALS['egw_info']['user']['apps']['admin']) &&
|
if($appname != 'admin' && ($config['users_create_definitions'] || $GLOBALS['egw_info']['user']['apps']['admin']) &&
|
||||||
count(importexport_helper_functions::get_plugins($appname)) > 0
|
count(importexport_helper_functions::get_plugins($appname)) > 0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$file['Define imports|exports'] = egw::link('/index.php',array(
|
$file['Define imports|exports'] = Egw::link('/index.php',array(
|
||||||
'menuaction' => 'importexport.importexport_definitions_ui.index',
|
'menuaction' => 'importexport.importexport_definitions_ui.index',
|
||||||
'application' => $appname,
|
'application' => $appname,
|
||||||
'ajax' => 'true'
|
'ajax' => 'true'
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
* @author Nathan Gray
|
* @author Nathan Gray
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Link;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A basic CSV import plugin.
|
* A basic CSV import plugin.
|
||||||
@ -355,7 +357,7 @@ abstract class importexport_basic_import_csv implements importexport_iface_impor
|
|||||||
}
|
}
|
||||||
else if($type == 'search')
|
else if($type == 'search')
|
||||||
{
|
{
|
||||||
$result = egw_link::query($app, $app_id);
|
$result = Link::query($app, $app_id);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
$app_id = key($result);
|
$app_id = key($result);
|
||||||
@ -369,7 +371,7 @@ abstract class importexport_basic_import_csv implements importexport_iface_impor
|
|||||||
// Searching, take first result
|
// Searching, take first result
|
||||||
if(!is_numeric($app_id))
|
if(!is_numeric($app_id))
|
||||||
{
|
{
|
||||||
$result = egw_link::query($app, $app_id);
|
$result = Link::query($app, $app_id);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
$app_id = key($result);
|
$app_id = key($result);
|
||||||
@ -385,7 +387,7 @@ abstract class importexport_basic_import_csv implements importexport_iface_impor
|
|||||||
}
|
}
|
||||||
if (!$this->dry_run && $app && $app_id && ($app != $this->definition->application || $app_id != $id))
|
if (!$this->dry_run && $app && $app_id && ($app != $this->definition->application || $app_id != $id))
|
||||||
{
|
{
|
||||||
$link_id = egw_link::link($this->definition->application,$id,$app,$app_id);
|
$link_id = Link::link($this->definition->application,$id,$app,$app_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -426,7 +428,7 @@ abstract class importexport_basic_import_csv implements importexport_iface_impor
|
|||||||
if($fields[$field]) $label = $fields[$field];
|
if($fields[$field]) $label = $fields[$field];
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
translation::add_app($definition->application);
|
Api\Translation::add_app($definition->application);
|
||||||
foreach($labels as $field => &$label) {
|
foreach($labels as $field => &$label) {
|
||||||
$label = lang($label);
|
$label = lang($label);
|
||||||
}
|
}
|
||||||
@ -443,7 +445,7 @@ abstract class importexport_basic_import_csv implements importexport_iface_impor
|
|||||||
}
|
}
|
||||||
$this->preview_records = array();
|
$this->preview_records = array();
|
||||||
|
|
||||||
return html::table($rows);
|
return Api\Html::table($rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -533,7 +535,7 @@ abstract class importexport_basic_import_csv implements importexport_iface_impor
|
|||||||
// Find matching entry
|
// Find matching entry
|
||||||
if($app && $custom_field && $value)
|
if($app && $custom_field && $value)
|
||||||
{
|
{
|
||||||
$cfs = config::get_customfields($app);
|
$cfs = Api\Storage\Customfields::get($app);
|
||||||
// Error if no custom fields, probably something wrong in definition
|
// Error if no custom fields, probably something wrong in definition
|
||||||
if(!$cfs[$custom_field])
|
if(!$cfs[$custom_field])
|
||||||
{
|
{
|
||||||
@ -557,10 +559,10 @@ abstract class importexport_basic_import_csv implements importexport_iface_impor
|
|||||||
if($custom_field[0] != '#') $custom_field = '#' . $custom_field;
|
if($custom_field[0] != '#') $custom_field = '#' . $custom_field;
|
||||||
error_log("Searching for $custom_field = $value");
|
error_log("Searching for $custom_field = $value");
|
||||||
// Search
|
// Search
|
||||||
if(egw_link::get_registry($app, 'query'))
|
if(Link::get_registry($app, 'query'))
|
||||||
{
|
{
|
||||||
$options = array('filter' => array("$custom_field = " . $GLOBALS['egw']->db->quote($value)));
|
$options = array('filter' => array("$custom_field = " . $GLOBALS['egw']->db->quote($value)));
|
||||||
$result = egw_link::query($app, '', $options);
|
$result = Link::query($app, '', $options);
|
||||||
|
|
||||||
// Only one allowed
|
// Only one allowed
|
||||||
if($record->get_identifier())
|
if($record->get_identifier())
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class definition
|
* class definition
|
||||||
*
|
*
|
||||||
@ -38,7 +40,7 @@ class importexport_definition implements importexport_iface_egw_record {
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var so_sql holds so_sql object
|
* @var so_sql holds Api\Storage\Base object
|
||||||
*/
|
*/
|
||||||
private $so_sql;
|
private $so_sql;
|
||||||
|
|
||||||
@ -64,7 +66,7 @@ class importexport_definition implements importexport_iface_egw_record {
|
|||||||
* @param string $_identifier
|
* @param string $_identifier
|
||||||
*/
|
*/
|
||||||
public function __construct( $_identifier='' ) {
|
public function __construct( $_identifier='' ) {
|
||||||
$this->so_sql = new so_sql(self::_appname ,self::_defintion_talbe);
|
$this->so_sql = new Api\Storage\Base(self::_appname ,self::_defintion_talbe);
|
||||||
$this->user = $GLOBALS['egw_info']['user']['user_id'];
|
$this->user = $GLOBALS['egw_info']['user']['user_id'];
|
||||||
$this->is_admin = $GLOBALS['egw_info']['user']['apps']['admin'] || $GLOBALS['egw_setup'] ? true : false;
|
$this->is_admin = $GLOBALS['egw_info']['user']['apps']['admin'] || $GLOBALS['egw_setup'] ? true : false;
|
||||||
// compability to string identifiers
|
// compability to string identifiers
|
||||||
@ -282,7 +284,7 @@ class importexport_definition implements importexport_iface_egw_record {
|
|||||||
$this->so_sql->data['filter'] = importexport_arrayxml::array2xml( $this->definition['filter'] );
|
$this->so_sql->data['filter'] = importexport_arrayxml::array2xml( $this->definition['filter'] );
|
||||||
$this->so_sql->data['modified'] = time();
|
$this->so_sql->data['modified'] = time();
|
||||||
if ($this->so_sql->save( array( 'definition_id' => $_dst_identifier ))) {
|
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());
|
throw new Exception('Error: Api\Storage\Base was not able to save definition: '.$this->get_identifier());
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->definition['definition_id'];
|
return $this->definition['definition_id'];
|
||||||
@ -342,7 +344,7 @@ class importexport_definition implements importexport_iface_egw_record {
|
|||||||
throw('Error: User '. $this->user. 'does not have permissions to delete definition '.$this->get_identifier());
|
throw('Error: User '. $this->user. 'does not have permissions to delete definition '.$this->get_identifier());
|
||||||
}
|
}
|
||||||
if(!$this->so_sql->delete()) {
|
if(!$this->so_sql->delete()) {
|
||||||
throw('Error: so_sql was not able to delete definition: '.$this->get_identifier());
|
throw('Error: Api\Storage\Base was not able to delete definition: '.$this->get_identifier());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
/** bo to define {im|ex}ports
|
/** bo to define {im|ex}ports
|
||||||
*
|
*
|
||||||
* @todo make this class an egw_record_pool!
|
* @todo make this class an egw_record_pool!
|
||||||
@ -20,7 +22,7 @@ class importexport_definitions_bo {
|
|||||||
const _defintion_table = 'egw_importexport_definitions';
|
const _defintion_table = 'egw_importexport_definitions';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var so_sql holds so_sql
|
* @var so_sql holds Api\Storage\Base
|
||||||
*/
|
*/
|
||||||
private $so_sql;
|
private $so_sql;
|
||||||
|
|
||||||
@ -31,7 +33,7 @@ class importexport_definitions_bo {
|
|||||||
|
|
||||||
public function __construct($_query=false, $ignore_acl = false)
|
public function __construct($_query=false, $ignore_acl = false)
|
||||||
{
|
{
|
||||||
$this->so_sql = new so_sql(self::_appname, self::_defintion_table );
|
$this->so_sql = new Api\Storage\Base(self::_appname, self::_defintion_table );
|
||||||
if ($_query) {
|
if ($_query) {
|
||||||
$definitions = $this->so_sql->search($_query, false);
|
$definitions = $this->so_sql->search($_query, false);
|
||||||
foreach ((array)$definitions as $definition) {
|
foreach ((array)$definitions as $definition) {
|
||||||
@ -170,7 +172,7 @@ class importexport_definitions_bo {
|
|||||||
{
|
{
|
||||||
$export_data = array('metainfo' => array(
|
$export_data = array('metainfo' => array(
|
||||||
'type' => 'importexport definitions',
|
'type' => 'importexport definitions',
|
||||||
'charset' => translation::charset(),
|
'charset' => Api\Translation::charset(),
|
||||||
'entries' => count($keys),
|
'entries' => count($keys),
|
||||||
));
|
));
|
||||||
|
|
||||||
@ -224,10 +226,10 @@ class importexport_definitions_bo {
|
|||||||
unset ( $data );
|
unset ( $data );
|
||||||
|
|
||||||
// convert charset into internal used charset
|
// convert charset into internal used charset
|
||||||
$definitions = translation::convert(
|
$definitions = Api\Translation::convert(
|
||||||
$definitions,
|
$definitions,
|
||||||
$metainfo['charset'],
|
$metainfo['charset'],
|
||||||
translation::charset()
|
Api\Translation::charset()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Avoid warning if no definitions found
|
// Avoid warning if no definitions found
|
||||||
@ -273,7 +275,7 @@ class importexport_definitions_bo {
|
|||||||
public static function export_from_import(importexport_definition $import)
|
public static function export_from_import(importexport_definition $import)
|
||||||
{
|
{
|
||||||
// Only operates on import definitions
|
// Only operates on import definitions
|
||||||
if($import->type != 'import') throw new egw_exception_wrong_parameter('Only import definitions');
|
if($import->type != 'import') throw new Api\Exception\WrongParameter('Only import definitions');
|
||||||
|
|
||||||
// Find export plugin
|
// Find export plugin
|
||||||
$plugin = str_replace('import', 'export',$import->plugin);
|
$plugin = str_replace('import', 'export',$import->plugin);
|
||||||
|
@ -10,6 +10,12 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Framework;
|
||||||
|
use EGroupware\Api\Egw;
|
||||||
|
use EGroupware\Api\Acl;
|
||||||
|
use EGroupware\Api\Etemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Userinterface to define {im|ex}ports
|
* Userinterface to define {im|ex}ports
|
||||||
*
|
*
|
||||||
@ -57,11 +63,11 @@ class importexport_definitions_ui
|
|||||||
{
|
{
|
||||||
// we cant deal with notice and warnings, as we are on ajax!
|
// we cant deal with notice and warnings, as we are on ajax!
|
||||||
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
|
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
|
||||||
$GLOBALS['egw']->translation->add_app(self::_appname);
|
Api\Translation::add_app(self::_appname);
|
||||||
$GLOBALS['egw_info']['flags']['currentapp'] = self::_appname;
|
$GLOBALS['egw_info']['flags']['currentapp'] = self::_appname;
|
||||||
|
|
||||||
$this->etpl = new etemplate_new();
|
$this->etpl = new Etemplate();
|
||||||
$this->clock = html::image(self::_appname,'clock');
|
$this->clock = Api\Html::image(self::_appname,'clock');
|
||||||
$this->steps = array(
|
$this->steps = array(
|
||||||
'wizard_step10' => lang('Choose an application'),
|
'wizard_step10' => lang('Choose an application'),
|
||||||
'wizard_step20' => lang('Choose a plugin'),
|
'wizard_step20' => lang('Choose a plugin'),
|
||||||
@ -88,8 +94,8 @@ class importexport_definitions_ui
|
|||||||
} else {
|
} else {
|
||||||
// Filter private definitions
|
// Filter private definitions
|
||||||
$filter['owner'] = $GLOBALS['egw_info']['user']['account_id'];
|
$filter['owner'] = $GLOBALS['egw_info']['user']['account_id'];
|
||||||
$config = config::read('phpgwapi');
|
$config = Api\Config::read('phpgwapi');
|
||||||
if($config['export_limit'] == 'no' && !bo_merge::is_export_limit_excepted()) {
|
if($config['export_limit'] == 'no' && !Api\Storage\Merge::is_export_limit_excepted()) {
|
||||||
$filter['type'] = 'import';
|
$filter['type'] = 'import';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,7 +111,7 @@ class importexport_definitions_ui
|
|||||||
elseif(($button = array_search('pressed',$content['nm']['rows'])) !== false)
|
elseif(($button = array_search('pressed',$content['nm']['rows'])) !== false)
|
||||||
{
|
{
|
||||||
$selected = $content['nm']['rows']['selected'];
|
$selected = $content['nm']['rows']['selected'];
|
||||||
if(count($selected) < 1 || !is_array($selected)) common::egw_exit();
|
if(count($selected) < 1 || !is_array($selected)) exit();
|
||||||
switch ($button)
|
switch ($button)
|
||||||
{
|
{
|
||||||
case 'delete_selected' :
|
case 'delete_selected' :
|
||||||
@ -174,9 +180,9 @@ class importexport_definitions_ui
|
|||||||
);
|
);
|
||||||
if($_GET['application']) $content['nm']['col_filter']['application'] = $_GET['application'];
|
if($_GET['application']) $content['nm']['col_filter']['application'] = $_GET['application'];
|
||||||
}
|
}
|
||||||
if(egw_session::appsession('index', 'importexport'))
|
if(Api\Cache::getSession('importexport', 'index'))
|
||||||
{
|
{
|
||||||
$content['nm'] = array_merge($content['nm'], egw_session::appsession('index', 'importexport'));
|
$content['nm'] = array_merge($content['nm'], Api\Cache::getSession('importexport', 'index'));
|
||||||
}
|
}
|
||||||
$content['nm']['actions'] = $this->get_actions();
|
$content['nm']['actions'] = $this->get_actions();
|
||||||
$sel_options = array(
|
$sel_options = array(
|
||||||
@ -197,7 +203,7 @@ class importexport_definitions_ui
|
|||||||
}
|
}
|
||||||
if($msg) $content['msg'] = $msg;
|
if($msg) $content['msg'] = $msg;
|
||||||
|
|
||||||
$etpl = new etemplate_new(self::_appname.'.definition_index');
|
$etpl = new Etemplate(self::_appname.'.definition_index');
|
||||||
return $etpl->exec( self::_appname.'.importexport_definitions_ui.index', $content, $sel_options, $readonlys, $preserv );
|
return $etpl->exec( self::_appname.'.importexport_definitions_ui.index', $content, $sel_options, $readonlys, $preserv );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,7 +318,7 @@ class importexport_definitions_ui
|
|||||||
if ($use_all)
|
if ($use_all)
|
||||||
{
|
{
|
||||||
// get the whole selection
|
// get the whole selection
|
||||||
$old_query = $query = is_array($session_name) ? $session_name : egw_session::appsession($session_name,'importexport');
|
$old_query = $query = is_array($session_name) ? $session_name : Api\Cache::getSession('importexport', $session_name);
|
||||||
|
|
||||||
@set_time_limit(0); // switch off the execution time limit, as it's for big selections to small
|
@set_time_limit(0); // switch off the execution time limit, as it's for big selections to small
|
||||||
$query['num_rows'] = -1; // all
|
$query['num_rows'] = -1; // all
|
||||||
@ -326,7 +332,7 @@ class importexport_definitions_ui
|
|||||||
if(!is_array($session_name))
|
if(!is_array($session_name))
|
||||||
{
|
{
|
||||||
// Restore old query
|
// Restore old query
|
||||||
egw_session::appsession($session_name, 'importexport',$old_query);
|
Api\Cache::setSession('importexport', $session_name, $old_query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,12 +346,12 @@ class importexport_definitions_ui
|
|||||||
// There's probably a way to do this in just JS, all the info should be there...
|
// There's probably a way to do this in just JS, all the info should be there...
|
||||||
foreach($selected as $id) {
|
foreach($selected as $id) {
|
||||||
$definition = $bodefinitions->read((int)$id);
|
$definition = $bodefinitions->read((int)$id);
|
||||||
$link = egw::link('/index.php', array(
|
$link = Egw::link('/index.php', array(
|
||||||
'menuaction' => 'importexport.importexport_'.$definition['type'].'_ui.'.$definition['type'].'_dialog',
|
'menuaction' => 'importexport.importexport_'.$definition['type'].'_ui.'.$definition['type'].'_dialog',
|
||||||
'appname' => $definition['application'],
|
'appname' => $definition['application'],
|
||||||
'definition' => $definition['name']
|
'definition' => $definition['name']
|
||||||
));
|
));
|
||||||
egw_framework::set_onload("egw_openWindowCentered2('$link','_blank',850,440,'yes');");
|
Framework::set_onload("egw_openWindowCentered2('$link','_blank',850,440,'yes');");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'allowed':
|
case 'allowed':
|
||||||
@ -377,7 +383,7 @@ class importexport_definitions_ui
|
|||||||
header('Content-Type: ' . $mime_type);
|
header('Content-Type: ' . $mime_type);
|
||||||
header('Content-Disposition: attachment; filename="'.$name.'"');
|
header('Content-Disposition: attachment; filename="'.$name.'"');
|
||||||
echo $bodefinitions->export($selected);
|
echo $bodefinitions->export($selected);
|
||||||
common::egw_exit();
|
exit();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'copy':
|
case 'copy':
|
||||||
@ -438,7 +444,7 @@ class importexport_definitions_ui
|
|||||||
|
|
||||||
public function get_rows(&$query, &$rows, &$readonlys) {
|
public function get_rows(&$query, &$rows, &$readonlys) {
|
||||||
$rows = array();
|
$rows = array();
|
||||||
egw_session::appsession('index','importexport',$query);
|
Api\Cache::setSession('importexport', 'index', $query);
|
||||||
|
|
||||||
// Special handling for allowed users 'private'
|
// Special handling for allowed users 'private'
|
||||||
if($query['col_filter']['allowed_users'] == 'private')
|
if($query['col_filter']['allowed_users'] == 'private')
|
||||||
@ -528,7 +534,7 @@ class importexport_definitions_ui
|
|||||||
$wizard_plugin = $content['plugin'];
|
$wizard_plugin = $content['plugin'];
|
||||||
}
|
}
|
||||||
// App translations
|
// App translations
|
||||||
if($content['application']) translation::add_app($content['application']);
|
if($content['application']) Api\Translation::add_app($content['application']);
|
||||||
|
|
||||||
$this->plugin = is_object($GLOBALS['egw']->$wizard_plugin) ? $GLOBALS['egw']->$wizard_plugin : new $wizard_plugin;
|
$this->plugin = is_object($GLOBALS['egw']->$wizard_plugin) ? $GLOBALS['egw']->$wizard_plugin : new $wizard_plugin;
|
||||||
|
|
||||||
@ -716,7 +722,7 @@ class importexport_definitions_ui
|
|||||||
} elseif($this->plugin instanceof importexport_iface_export_plugin || $this->plugin instanceof importexport_wizard_basic_export_csv || strpos(get_class($this->plugin),'export') !== false) {
|
} elseif($this->plugin instanceof importexport_iface_export_plugin || $this->plugin instanceof importexport_wizard_basic_export_csv || strpos(get_class($this->plugin),'export') !== false) {
|
||||||
$content['type'] = 'export';
|
$content['type'] = 'export';
|
||||||
} else {
|
} else {
|
||||||
throw new egw_exception('Invalid plugin');
|
throw new Api\Exception('Invalid plugin');
|
||||||
}
|
}
|
||||||
return $this->get_step($content['step'],1);
|
return $this->get_step($content['step'],1);
|
||||||
case 'previous' :
|
case 'previous' :
|
||||||
@ -732,7 +738,7 @@ class importexport_definitions_ui
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$content['text'] = $this->steps['wizard_step20'];
|
$content['text'] = $this->steps['wizard_step20'];
|
||||||
$config = config::read('phpgwapi');
|
$config = Api\Config::read('phpgwapi');
|
||||||
foreach ($this->plugins[$content['application']] as $type => $plugins) {
|
foreach ($this->plugins[$content['application']] as $type => $plugins) {
|
||||||
if($config['export_limit'] == 'no' && !$GLOBALS['egw_info']['user']['apps']['admin'] && $type == 'export') continue;
|
if($config['export_limit'] == 'no' && !$GLOBALS['egw_info']['user']['apps']['admin'] && $type == 'export') continue;
|
||||||
foreach($plugins as $plugin => $name) {
|
foreach($plugins as $plugin => $name) {
|
||||||
@ -771,7 +777,7 @@ class importexport_definitions_ui
|
|||||||
$suggestions = array(
|
$suggestions = array(
|
||||||
$content['name'] .'-'. $GLOBALS['egw_info']['user']['account_lid'],
|
$content['name'] .'-'. $GLOBALS['egw_info']['user']['account_lid'],
|
||||||
$content['name'] .'-'. $GLOBALS['egw_info']['user']['account_id'],
|
$content['name'] .'-'. $GLOBALS['egw_info']['user']['account_id'],
|
||||||
$content['name'] .'-'. egw_time::to('now', true),
|
$content['name'] .'-'. Api\DateTime::to('now', true),
|
||||||
//$content['name'] .'-'. rand(0,100),
|
//$content['name'] .'-'. rand(0,100),
|
||||||
);
|
);
|
||||||
foreach($suggestions as $key => $suggestion) {
|
foreach($suggestions as $key => $suggestion) {
|
||||||
@ -824,7 +830,7 @@ class importexport_definitions_ui
|
|||||||
{
|
{
|
||||||
if($this->can_edit($content))
|
if($this->can_edit($content))
|
||||||
{
|
{
|
||||||
$content['owner'] = $content['just_me'] || !$GLOBALS['egw']->acl->check('share_definitions', EGW_ACL_READ,'importexport') ?
|
$content['owner'] = $content['just_me'] || !$GLOBALS['egw']->acl->check('share_definitions', Acl::READ,'importexport') ?
|
||||||
($content['owner'] ? $content['owner'] : $GLOBALS['egw_info']['user']['account_id']) :
|
($content['owner'] ? $content['owner'] : $GLOBALS['egw_info']['user']['account_id']) :
|
||||||
null;
|
null;
|
||||||
$content['allowed_users'] = $content['just_me'] ? '' : ($content['all_users'] ? 'all' : implode(',',$content['allowed_users']));
|
$content['allowed_users'] = $content['just_me'] ? '' : ($content['all_users'] ? 'all' : implode(',',$content['allowed_users']));
|
||||||
@ -854,7 +860,7 @@ class importexport_definitions_ui
|
|||||||
$content['just_me'] = ((!$content['allowed_users'] || !$content['allowed_users'][0] && count($content['allowed_users']) ==1) && $content['owner']);
|
$content['just_me'] = ((!$content['allowed_users'] || !$content['allowed_users'][0] && count($content['allowed_users']) ==1) && $content['owner']);
|
||||||
$content['all_users'] = is_array($content['allowed_users']) && array_key_exists('0',$content['allowed_users']) && $content['allowed_users'][0] == 'all' ||
|
$content['all_users'] = is_array($content['allowed_users']) && array_key_exists('0',$content['allowed_users']) && $content['allowed_users'][0] == 'all' ||
|
||||||
$content['allowed_users'] == 'all';
|
$content['allowed_users'] == 'all';
|
||||||
if(!$GLOBALS['egw']->acl->check('share_definition', EGW_ACL_READ, 'importexport') && !$GLOBALS['egw_info']['user']['apps']['admin'])
|
if(!$GLOBALS['egw']->acl->check('share_definition', Acl::READ, 'importexport') && !$GLOBALS['egw_info']['user']['apps']['admin'])
|
||||||
{
|
{
|
||||||
$content['allowed_users'] = array();
|
$content['allowed_users'] = array();
|
||||||
$readonlys['allowed_users'] = true;
|
$readonlys['allowed_users'] = true;
|
||||||
@ -897,8 +903,8 @@ class importexport_definitions_ui
|
|||||||
$bodefinitions->save($content);
|
$bodefinitions->save($content);
|
||||||
// This message is displayed if browser cant close window
|
// This message is displayed if browser cant close window
|
||||||
$content['msg'] = lang('ImportExport wizard finished successfully!');
|
$content['msg'] = lang('ImportExport wizard finished successfully!');
|
||||||
egw_framework::refresh_opener('','importexport');
|
Framework::refresh_opener('','importexport');
|
||||||
egw_framework::window_close();
|
Framework::window_close();
|
||||||
return 'importexport.wizard_close';
|
return 'importexport.wizard_close';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -961,7 +967,7 @@ class importexport_definitions_ui
|
|||||||
{
|
{
|
||||||
if(!$GLOBALS['egw_info']['user']['apps']['admin'])
|
if(!$GLOBALS['egw_info']['user']['apps']['admin'])
|
||||||
{
|
{
|
||||||
egw::redirect_link('/home');
|
Egw::redirect_link('/home');
|
||||||
}
|
}
|
||||||
if($content['save'])
|
if($content['save'])
|
||||||
{
|
{
|
||||||
@ -973,25 +979,25 @@ class importexport_definitions_ui
|
|||||||
|
|
||||||
foreach($content['share_definition'] as $group)
|
foreach($content['share_definition'] as $group)
|
||||||
{
|
{
|
||||||
$GLOBALS['egw']->acl->add_repository(self::_appname, 'share_definition', $group,EGW_ACL_READ);
|
$GLOBALS['egw']->acl->add_repository(self::_appname, 'share_definition', $group,Acl::READ);
|
||||||
}
|
}
|
||||||
unset($content['share_definition']);
|
unset($content['share_definition']);
|
||||||
|
|
||||||
// Other config
|
// Other Api\Config
|
||||||
foreach($content as $key=>$value)
|
foreach($content as $key=>$value)
|
||||||
{
|
{
|
||||||
config::save_value($key, $value, 'importexport');
|
Api\Config::save_value($key, $value, 'importexport');
|
||||||
}
|
}
|
||||||
} elseif (isset($content['cancel'])) {
|
} elseif (isset($content['cancel'])) {
|
||||||
$GLOBALS['egw']->redirect_link('/admin/index.php');
|
$GLOBALS['egw']->redirect_link('/admin/index.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = config::read(self::_appname);
|
$data = Api\Config::read(self::_appname);
|
||||||
$data['share_definition'] = $GLOBALS['egw']->acl->get_ids_for_location('share_definition', EGW_ACL_READ, self::_appname);
|
$data['share_definition'] = $GLOBALS['egw']->acl->get_ids_for_location('share_definition', Acl::READ, self::_appname);
|
||||||
$sel_options['import_charsets'] = array_combine(mb_list_encodings(),mb_list_encodings());
|
$sel_options['import_charsets'] = array_combine(mb_list_encodings(),mb_list_encodings());
|
||||||
|
|
||||||
// Remove 'standard' encodings to prevent doubles
|
// Remove 'standard' encodings to prevent doubles
|
||||||
foreach($GLOBALS['egw']->translation->get_installed_charsets() as $charset => $label)
|
foreach(Api\Translation::get_installed_charsets() as $charset => $label)
|
||||||
{
|
{
|
||||||
unset($sel_options['import_charsets'][strtoupper($charset)]);
|
unset($sel_options['import_charsets'][strtoupper($charset)]);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Link;
|
||||||
|
use EGroupware\Api\Acl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class export_csv
|
* class export_csv
|
||||||
* This an record exporter.
|
* This an record exporter.
|
||||||
@ -40,7 +44,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
protected $record_array = array();
|
protected $record_array = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var translation holds (charset) translation object
|
* @var translation holds (charset) Api\Translation object
|
||||||
*/
|
*/
|
||||||
protected $translation;
|
protected $translation;
|
||||||
|
|
||||||
@ -96,7 +100,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
*/
|
*/
|
||||||
public function __construct( $_stream, array $_options ) {
|
public function __construct( $_stream, array $_options ) {
|
||||||
if (!is_object($GLOBALS['egw']->translation)) {
|
if (!is_object($GLOBALS['egw']->translation)) {
|
||||||
$GLOBALS['egw']->translation = new translation();
|
$GLOBALS['egw']->translation = new Api\Translation();
|
||||||
}
|
}
|
||||||
$this->translation = &$GLOBALS['egw']->translation;
|
$this->translation = &$GLOBALS['egw']->translation;
|
||||||
$this->handle = $_stream;
|
$this->handle = $_stream;
|
||||||
@ -106,10 +110,10 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
$this->csv_options = array_merge( $this->csv_options, $_options );
|
$this->csv_options = array_merge( $this->csv_options, $_options );
|
||||||
}
|
}
|
||||||
//error_log(__METHOD__.__LINE__.array2string($_options['appname']));
|
//error_log(__METHOD__.__LINE__.array2string($_options['appname']));
|
||||||
if(!bo_merge::is_export_limit_excepted()) {
|
if(!Api\Storage\Merge::is_export_limit_excepted()) {
|
||||||
$this->export_limit = bo_merge::getExportLimit($_options['appname']);
|
$this->export_limit = Api\Storage\Merge::getExportLimit($_options['appname']);
|
||||||
//error_log(__METHOD__.__LINE__.' app:'.$_options['appname'].' limit:'.$this->export_limit);
|
//error_log(__METHOD__.__LINE__.' app:'.$_options['appname'].' limit:'.$this->export_limit);
|
||||||
if($this->export_limit == 'no') throw new egw_exception_no_permission_admin('Export disabled');
|
if($this->export_limit == 'no') throw new Api\Exception\NoPermission\Admin('Export disabled');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +128,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
}
|
}
|
||||||
if($_mapping['all_custom_fields']) {
|
if($_mapping['all_custom_fields']) {
|
||||||
// Field value is the appname, so we can pull the fields
|
// Field value is the appname, so we can pull the fields
|
||||||
$custom = config::get_customfields($_mapping['all_custom_fields']);
|
$custom = Api\Storage\Customfields::get($_mapping['all_custom_fields']);
|
||||||
unset($_mapping['all_custom_fields']);
|
unset($_mapping['all_custom_fields']);
|
||||||
foreach($custom as $field => $info) {
|
foreach($custom as $field => $info) {
|
||||||
$_mapping['#'.$field] = $this->csv_options['begin_with_fieldnames'] == 'label' ? $info['label'] : $field;
|
$_mapping['#'.$field] = $this->csv_options['begin_with_fieldnames'] == 'label' ? $info['label'] : $field;
|
||||||
@ -179,7 +183,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
if(substr($label,-1) == '*') $label = substr($label,0,-1);
|
if(substr($label,-1) == '*') $label = substr($label,0,-1);
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
translation::add_app($appname);
|
Api\Translation::add_app($appname);
|
||||||
foreach($this->mapping as $field => &$label) {
|
foreach($this->mapping as $field => &$label) {
|
||||||
$label = lang($label);
|
$label = lang($label);
|
||||||
}
|
}
|
||||||
@ -236,7 +240,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
if(!$appname) return;
|
if(!$appname) return;
|
||||||
|
|
||||||
$fields = array();
|
$fields = array();
|
||||||
$custom = config::get_customfields($appname);
|
$custom = Api\Storage\Customfields::get($appname);
|
||||||
foreach($custom as $name => $c_field) {
|
foreach($custom as $name => $c_field) {
|
||||||
$name = '#' . $name;
|
$name = '#' . $name;
|
||||||
switch($c_field['type']) {
|
switch($c_field['type']) {
|
||||||
@ -258,7 +262,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
case 'select':
|
case 'select':
|
||||||
if (count($c_field['values']) == 1 && isset($c_field['values']['@']))
|
if (count($c_field['values']) == 1 && isset($c_field['values']['@']))
|
||||||
{
|
{
|
||||||
$c_field['values'] = egw_customfields::get_options_from_file($c_field['values']['@']);
|
$c_field['values'] = Api\Storage\Customfields::get_options_from_file($c_field['values']['@']);
|
||||||
}
|
}
|
||||||
$fields['select'][] = $name;
|
$fields['select'][] = $name;
|
||||||
$selects[$name] = $c_field['values'];
|
$selects[$name] = $c_field['values'];
|
||||||
@ -333,12 +337,12 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
foreach((array)$fields['links'] as $name) {
|
foreach((array)$fields['links'] as $name) {
|
||||||
if($record->$name) {
|
if($record->$name) {
|
||||||
if(is_numeric($record->$name) && !$links[$name]) {
|
if(is_numeric($record->$name) && !$links[$name]) {
|
||||||
$link = egw_link::get_link($record->$name);
|
$link = Link::get_link($record->$name);
|
||||||
$links[$name] = ($link['link_app1'] == $appname ? $link['link_app2'] : $link['link_app1']);
|
$links[$name] = ($link['link_app1'] == $appname ? $link['link_app2'] : $link['link_app1']);
|
||||||
$record->$name = ($link['link_app1'] == $appname ? $link['link_id2'] : $link['link_id1']);
|
$record->$name = ($link['link_app1'] == $appname ? $link['link_id2'] : $link['link_id1']);
|
||||||
}
|
}
|
||||||
if($links[$name]) {
|
if($links[$name]) {
|
||||||
$record->$name = egw_link::title($links[$name], $record->$name);
|
$record->$name = Link::title($links[$name], $record->$name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -352,11 +356,11 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
if(is_array($record->$name)) {
|
if(is_array($record->$name)) {
|
||||||
$names = array();
|
$names = array();
|
||||||
foreach($record->$name as $_name) {
|
foreach($record->$name as $_name) {
|
||||||
$names[] = common::grab_owner_name($_name);
|
$names[] = Api\Accounts::username($_name);
|
||||||
}
|
}
|
||||||
$record->$name = implode(', ', $names);
|
$record->$name = implode(', ', $names);
|
||||||
} else {
|
} else {
|
||||||
$record->$name = common::grab_owner_name($record->$name);
|
$record->$name = Api\Accounts::username($record->$name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -409,14 +413,14 @@ class importexport_export_csv implements importexport_iface_export_record
|
|||||||
}
|
}
|
||||||
|
|
||||||
static $cat_object;
|
static $cat_object;
|
||||||
if(is_null($cat_object)) $cat_object = new categories(false,$appname);
|
if(is_null($cat_object)) $cat_object = new Api\Categories(false,$appname);
|
||||||
foreach((array)$fields['select-cat'] as $name) {
|
foreach((array)$fields['select-cat'] as $name) {
|
||||||
if($record->$name) {
|
if($record->$name) {
|
||||||
$cats = array();
|
$cats = array();
|
||||||
$ids = is_array($record->$name) ? $record->$name : explode(',', $record->$name);
|
$ids = is_array($record->$name) ? $record->$name : explode(',', $record->$name);
|
||||||
foreach($ids as $n => $cat_id) {
|
foreach($ids as $n => $cat_id) {
|
||||||
|
|
||||||
if ($cat_id && $cat_object->check_perms(EGW_ACL_READ,$cat_id))
|
if ($cat_id && $cat_object->check_perms(Acl::READ,$cat_id))
|
||||||
{
|
{
|
||||||
$cats[] = $cat_object->id2name($cat_id);
|
$cats[] = $cat_object->id2name($cat_id);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Framework;
|
||||||
|
use EGroupware\Api\Etemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* userinterface for exports
|
* userinterface for exports
|
||||||
*
|
*
|
||||||
@ -32,8 +36,8 @@ class importexport_export_ui {
|
|||||||
private $export_plugins;
|
private $export_plugins;
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
egw_framework::validate_file('.','export_dialog','importexport');
|
Framework::includeJS('.','export_dialog','importexport');
|
||||||
egw_framework::validate_file('.','importexport','importexport');
|
Framework::includeJS('.','importexport','importexport');
|
||||||
$this->user = $GLOBALS['egw_info']['user']['user_id'];
|
$this->user = $GLOBALS['egw_info']['user']['user_id'];
|
||||||
$this->export_plugins = importexport_helper_functions::get_plugins('all','export');
|
$this->export_plugins = importexport_helper_functions::get_plugins('all','export');
|
||||||
$GLOBALS['egw_info']['flags']['include_xajax'] = true;
|
$GLOBALS['egw_info']['flags']['include_xajax'] = true;
|
||||||
@ -46,7 +50,7 @@ class importexport_export_ui {
|
|||||||
$readonlys = array();
|
$readonlys = array();
|
||||||
$preserv = array();
|
$preserv = array();
|
||||||
|
|
||||||
$et = new etemplate_new(self::_appname. '.export_dialog');
|
$et = new Etemplate(self::_appname. '.export_dialog');
|
||||||
$_appname = $_content['appname'] ? $_content['appname'] : $_GET['appname'];
|
$_appname = $_content['appname'] ? $_content['appname'] : $_GET['appname'];
|
||||||
$_definition = $_content['definition'] ? $_content['definition'] : $_GET['definition'];
|
$_definition = $_content['definition'] ? $_content['definition'] : $_GET['definition'];
|
||||||
$_plugin = $_content['plugin'] ? $_content['plugin'] : $_GET['plugin'];
|
$_plugin = $_content['plugin'] ? $_content['plugin'] : $_GET['plugin'];
|
||||||
@ -56,8 +60,8 @@ class importexport_export_ui {
|
|||||||
if($_GET['selection'] || $_content['selection_passed']) $content['selection_passed'] = $preserv['selection_passed'] = true;
|
if($_GET['selection'] || $_content['selection_passed']) $content['selection_passed'] = $preserv['selection_passed'] = true;
|
||||||
|
|
||||||
// Check global setting
|
// Check global setting
|
||||||
if(!bo_merge::is_export_limit_excepted()) {
|
if(!Api\Storage\Merge::is_export_limit_excepted()) {
|
||||||
$export_limit = bo_merge::getExportLimit($_appname);
|
$export_limit = Api\Storage\Merge::getExportLimit($_appname);
|
||||||
if($export_limit == 'no') {
|
if($export_limit == 'no') {
|
||||||
die(lang('Admin disabled exporting'));
|
die(lang('Admin disabled exporting'));
|
||||||
}
|
}
|
||||||
@ -245,7 +249,7 @@ class importexport_export_ui {
|
|||||||
if($_content['preview'] || $_content['export'])
|
if($_content['preview'] || $_content['export'])
|
||||||
{
|
{
|
||||||
//error_log(__LINE__.__FILE__.'$_content: '.print_r($_content,true));
|
//error_log(__LINE__.__FILE__.'$_content: '.print_r($_content,true));
|
||||||
$response = egw_json_response::get();
|
$response = Api\Json\Response::get();
|
||||||
|
|
||||||
if ($_content['definition'] == 'expert') {
|
if ($_content['definition'] == 'expert') {
|
||||||
$definition = new importexport_definition();
|
$definition = new importexport_definition();
|
||||||
@ -287,13 +291,13 @@ class importexport_export_ui {
|
|||||||
}
|
}
|
||||||
if(is_array($value) && array_key_exists('from', $value) && $value['from'])
|
if(is_array($value) && array_key_exists('from', $value) && $value['from'])
|
||||||
{
|
{
|
||||||
$filter[$key]['from'] = egw_time::to($value['from'],'ts');
|
$filter[$key]['from'] = Api\DateTime::to($value['from'],'ts');
|
||||||
}
|
}
|
||||||
// If user selects an end date, they most likely want entries including that date
|
// If user selects an end date, they most likely want entries including that date
|
||||||
if(is_array($value) && array_key_exists('to',$value) && $value['to'] )
|
if(is_array($value) && array_key_exists('to',$value) && $value['to'] )
|
||||||
{
|
{
|
||||||
// Adjust time to 23:59:59
|
// Adjust time to 23:59:59
|
||||||
$filter[$key]['to'] = new egw_time($value['to']);
|
$filter[$key]['to'] = new Api\DateTime($value['to']);
|
||||||
$filter[$key]['to']->setTime(23,59,59);
|
$filter[$key]['to']->setTime(23,59,59);
|
||||||
$filter[$key]['to'] = $filter[$key]['to']->format('ts');
|
$filter[$key]['to'] = $filter[$key]['to']->format('ts');
|
||||||
}
|
}
|
||||||
@ -316,7 +320,7 @@ class importexport_export_ui {
|
|||||||
$tmpfname = tempnam($GLOBALS['egw_info']['server']['temp_dir'],'export');
|
$tmpfname = tempnam($GLOBALS['egw_info']['server']['temp_dir'],'export');
|
||||||
$file = fopen($tmpfname, "w+");
|
$file = fopen($tmpfname, "w+");
|
||||||
if (! $charset = $definition->plugin_options['charset']) {
|
if (! $charset = $definition->plugin_options['charset']) {
|
||||||
$charset = $GLOBALS['egw']->translation->charset();
|
$charset = Api\Translation::charset();
|
||||||
}
|
}
|
||||||
if($charset == 'user')
|
if($charset == 'user')
|
||||||
{
|
{
|
||||||
@ -338,7 +342,7 @@ class importexport_export_ui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Store charset to use in header
|
// Store charset to use in header
|
||||||
egw_cache::setSession('importexport', $tmpfname, $charset, 100);
|
Api\Cache::setSession('importexport', $tmpfname, $charset, 100);
|
||||||
|
|
||||||
if($_content['export'] == 'pressed') {
|
if($_content['export'] == 'pressed') {
|
||||||
fclose($file);
|
fclose($file);
|
||||||
@ -357,7 +361,7 @@ class importexport_export_ui {
|
|||||||
$link_query['filename'] = $plugin_filename;
|
$link_query['filename'] = $plugin_filename;
|
||||||
}
|
}
|
||||||
$response->redirect( $GLOBALS['egw']->link('/index.php',$link_query),true);
|
$response->redirect( $GLOBALS['egw']->link('/index.php',$link_query),true);
|
||||||
egw_framework::window_close();
|
Framework::window_close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elseif($_content['preview'] == 'pressed') {
|
elseif($_content['preview'] == 'pressed') {
|
||||||
@ -378,9 +382,9 @@ class importexport_export_ui {
|
|||||||
unlink($tmpfname);
|
unlink($tmpfname);
|
||||||
|
|
||||||
// Convert back to system charset for display
|
// Convert back to system charset for display
|
||||||
$preview = $GLOBALS['egw']->translation->convert( $preview,
|
$preview = Api\Translation::convert( $preview,
|
||||||
$charset,
|
$charset,
|
||||||
$GLOBALS['egw']->translation->charset()
|
Api\Translation::charset()
|
||||||
);
|
);
|
||||||
|
|
||||||
$preview = "<div class='header'>".lang('Preview') . "<span class='count'>".(int)$record_count."</span></div>".$preview;
|
$preview = "<div class='header'>".lang('Preview') . "<span class='count'>".(int)$record_count."</span></div>".$preview;
|
||||||
@ -432,7 +436,7 @@ class importexport_export_ui {
|
|||||||
|
|
||||||
public function ajax_get_definition_description($_definition) {
|
public function ajax_get_definition_description($_definition) {
|
||||||
|
|
||||||
$_response = egw_json_response::get();
|
$_response = Api\Json\Response::get();
|
||||||
$description = '';
|
$description = '';
|
||||||
if ($_definition)
|
if ($_definition)
|
||||||
{
|
{
|
||||||
@ -446,7 +450,7 @@ class importexport_export_ui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function ajax_get_plugin_description($_plugin) {
|
public function ajax_get_plugin_description($_plugin) {
|
||||||
$_respone = egw_json_response::get();
|
$_respone = Api\Json\Response::get();
|
||||||
|
|
||||||
$plugin_object = new $_plugin;
|
$plugin_object = new $_plugin;
|
||||||
if (is_a($plugin_object, 'importexport_iface_export_plugin')) {
|
if (is_a($plugin_object, 'importexport_iface_export_plugin')) {
|
||||||
@ -477,9 +481,9 @@ class importexport_export_ui {
|
|||||||
$file = fopen($tmpfname,'rb');
|
$file = fopen($tmpfname,'rb');
|
||||||
|
|
||||||
// Get charset
|
// Get charset
|
||||||
$charset = egw_cache::getSession('importexport', $tmpfname);
|
$charset = Api\Cache::getSession('importexport', $tmpfname);
|
||||||
|
|
||||||
html::content_header($nicefname.'.'.$_GET['_suffix'],
|
Api\Header\Content::type($nicefname.'.'.$_GET['_suffix'],
|
||||||
($_GET['_type'] ? $_GET['_type'] : 'application/text') . ($charset ? '; charset='.$charset : ''),
|
($_GET['_type'] ? $_GET['_type'] : 'application/text') . ($charset ? '; charset='.$charset : ''),
|
||||||
filesize($tmpfname));
|
filesize($tmpfname));
|
||||||
fpassthru($file);
|
fpassthru($file);
|
||||||
@ -487,6 +491,6 @@ class importexport_export_ui {
|
|||||||
unlink($tmpfname);
|
unlink($tmpfname);
|
||||||
|
|
||||||
// Try to avoid any extra finishing output
|
// Try to avoid any extra finishing output
|
||||||
common::egw_exit();
|
exit();
|
||||||
}
|
}
|
||||||
} // end class uiexport
|
} // end class uiexport
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class importexport_helper_functions (only static methods)
|
* class importexport_helper_functions (only static methods)
|
||||||
* use importexport_helper_functions::method
|
* use importexport_helper_functions::method
|
||||||
@ -223,7 +225,7 @@ class importexport_helper_functions {
|
|||||||
public static function cat_id2name( $_cat_ids ) {
|
public static function cat_id2name( $_cat_ids ) {
|
||||||
$cat_ids = is_array( $_cat_ids ) ? $_cat_ids : explode( ',', $_cat_ids );
|
$cat_ids = is_array( $_cat_ids ) ? $_cat_ids : explode( ',', $_cat_ids );
|
||||||
foreach ( $cat_ids as $cat_id ) {
|
foreach ( $cat_ids as $cat_id ) {
|
||||||
$cat_names[] = categories::id2name( (int)$cat_id );
|
$cat_names[] = Api\Categories::id2name( (int)$cat_id );
|
||||||
}
|
}
|
||||||
return is_array( $_cat_ids ) ? $cat_names : implode(',',(array)$cat_names);
|
return is_array( $_cat_ids ) ? $cat_names : implode(',',(array)$cat_names);
|
||||||
} // end of member function category_id2name
|
} // end of member function category_id2name
|
||||||
@ -237,7 +239,7 @@ class importexport_helper_functions {
|
|||||||
* @return mixed comma seperated list or array with cat_ids
|
* @return mixed comma seperated list or array with cat_ids
|
||||||
*/
|
*/
|
||||||
public static function cat_name2id( $_cat_names, $parent = 0 ) {
|
public static function cat_name2id( $_cat_names, $parent = 0 ) {
|
||||||
$cats = new categories(); // uses current user and app (egw_info[flags][currentapp])
|
$cats = new Api\Categories(); // uses current user and app (egw_info[flags][currentapp])
|
||||||
|
|
||||||
$cat_names = is_array( $_cat_names ) ? $_cat_names : explode( ',', $_cat_names );
|
$cat_names = is_array( $_cat_names ) ? $_cat_names : explode( ',', $_cat_names );
|
||||||
foreach ( $cat_names as $cat_name ) {
|
foreach ( $cat_names as $cat_name ) {
|
||||||
@ -422,7 +424,7 @@ class importexport_helper_functions {
|
|||||||
* @return array(<appname> => array( <type> => array(<plugin> => <title>)))
|
* @return array(<appname> => array( <type> => array(<plugin> => <title>)))
|
||||||
*/
|
*/
|
||||||
public static function get_plugins( $_appname = 'all', $_type = 'all' ) {
|
public static function get_plugins( $_appname = 'all', $_type = 'all' ) {
|
||||||
$plugins = egw_cache::getTree(
|
$plugins = Api\Cache::getTree(
|
||||||
__CLASS__,
|
__CLASS__,
|
||||||
'plugins',
|
'plugins',
|
||||||
array('importexport_helper_functions','_get_plugins'),
|
array('importexport_helper_functions','_get_plugins'),
|
||||||
@ -432,7 +434,7 @@ class importexport_helper_functions {
|
|||||||
$appnames = $_appname == 'all' ? array_keys($GLOBALS['egw_info']['apps']) : (array)$_appname;
|
$appnames = $_appname == 'all' ? array_keys($GLOBALS['egw_info']['apps']) : (array)$_appname;
|
||||||
$types = $_type == 'all' ? array('import','export') : (array)$_type;
|
$types = $_type == 'all' ? array('import','export') : (array)$_type;
|
||||||
|
|
||||||
// Testing: comment out egw_cache call, use this
|
// Testing: comment out Api\Cache call, use this
|
||||||
//$plugins = self::_get_plugins($appnames, $types);
|
//$plugins = self::_get_plugins($appnames, $types);
|
||||||
foreach($plugins as $appname => $_types) {
|
foreach($plugins as $appname => $_types) {
|
||||||
if(!in_array($appname, $appnames)) unset($plugins[$appname]);
|
if(!in_array($appname, $appnames)) unset($plugins[$appname]);
|
||||||
@ -479,7 +481,7 @@ class importexport_helper_functions {
|
|||||||
}
|
}
|
||||||
$d->close();
|
$d->close();
|
||||||
|
|
||||||
$config = config::read('importexport');
|
$config = Api\Config::read('importexport');
|
||||||
if($config['update'] == 'auto') {
|
if($config['update'] == 'auto') {
|
||||||
self::load_defaults($appname);
|
self::load_defaults($appname);
|
||||||
}
|
}
|
||||||
@ -537,7 +539,7 @@ class importexport_helper_functions {
|
|||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public static function has_definitions( $_appname = 'all', $_type = 'all' ) {
|
public static function has_definitions( $_appname = 'all', $_type = 'all' ) {
|
||||||
$definitions = egw_cache::getSession(
|
$definitions = Api\Cache::getSession(
|
||||||
__CLASS__,
|
__CLASS__,
|
||||||
'has_definitions',
|
'has_definitions',
|
||||||
array('importexport_helper_functions','_has_definitions'),
|
array('importexport_helper_functions','_has_definitions'),
|
||||||
@ -559,7 +561,7 @@ class importexport_helper_functions {
|
|||||||
return count($definitions[$appname]) > 0;
|
return count($definitions[$appname]) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// egw_cache needs this public
|
// Api\Cache needs this public
|
||||||
public static function _has_definitions(Array $appnames, Array $types) {
|
public static function _has_definitions(Array $appnames, Array $types) {
|
||||||
$def = new importexport_definitions_bo(array('application'=>$appnames, 'type' => $types));
|
$def = new importexport_definitions_bo(array('application'=>$appnames, 'type' => $types));
|
||||||
$list = array();
|
$list = array();
|
||||||
@ -636,7 +638,7 @@ class importexport_helper_functions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add custom fields
|
// Add custom fields
|
||||||
$custom = config::get_customfields($app_name);
|
$custom = Api\Storage\Customfields::get($app_name);
|
||||||
foreach($custom as $field_name => $settings)
|
foreach($custom as $field_name => $settings)
|
||||||
{
|
{
|
||||||
$settings['name'] = '#'.$field_name;
|
$settings['name'] = '#'.$field_name;
|
||||||
|
@ -10,9 +10,12 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Egw;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class importexport_iface_egw_record
|
* class importexport_iface_egw_record
|
||||||
* This a the abstract interface of an egw record.
|
* This a the abstract interface of an Egw record.
|
||||||
* A record is e.g. a single address or or single event.
|
* A record is e.g. a single address or or single event.
|
||||||
* The idea behind is that we can have metaoperation over differnt apps by
|
* The idea behind is that we can have metaoperation over differnt apps by
|
||||||
* having a common interface.
|
* having a common interface.
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Link;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class import_csv
|
* class import_csv
|
||||||
* This a an abstract implementation of interface iface_import_record
|
* This a an abstract implementation of interface iface_import_record
|
||||||
@ -156,7 +159,7 @@ class importexport_import_csv implements importexport_iface_import_record { //,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->current_position++;
|
$this->current_position++;
|
||||||
$this->record = $GLOBALS['egw']->translation->convert($csv_data, $this->csv_charset);
|
$this->record = Api\Translation::convert($csv_data, $this->csv_charset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'previous' :
|
case 'previous' :
|
||||||
@ -268,7 +271,7 @@ class importexport_import_csv implements importexport_iface_import_record { //,
|
|||||||
if($appname) {
|
if($appname) {
|
||||||
|
|
||||||
// Load translations
|
// Load translations
|
||||||
translation::add_app($appname);
|
Api\Translation::add_app($appname);
|
||||||
|
|
||||||
if(!self::$cf_parse_cache[$appname]) {
|
if(!self::$cf_parse_cache[$appname]) {
|
||||||
$c_fields = importexport_export_csv::convert_parse_custom_fields($appname, $selects, $links, $methods);
|
$c_fields = importexport_export_csv::convert_parse_custom_fields($appname, $selects, $links, $methods);
|
||||||
@ -319,7 +322,7 @@ class importexport_import_csv implements importexport_iface_import_record { //,
|
|||||||
// Text - search for a matching record
|
// Text - search for a matching record
|
||||||
if(!is_numeric($record[$name]))
|
if(!is_numeric($record[$name]))
|
||||||
{
|
{
|
||||||
$results = egw_link::query($links[$name], $record[$name]);
|
$results = Link::query($links[$name], $record[$name]);
|
||||||
if(count($results) >= 1)
|
if(count($results) >= 1)
|
||||||
{
|
{
|
||||||
// More than 1 result. Check for exact match
|
// More than 1 result. Check for exact match
|
||||||
@ -389,36 +392,36 @@ class importexport_import_csv implements importexport_iface_import_record { //,
|
|||||||
// Need to handle format first
|
// Need to handle format first
|
||||||
if($format == 1)
|
if($format == 1)
|
||||||
{
|
{
|
||||||
$formatted = egw_time::createFromFormat(
|
$formatted = Api\DateTime::createFromFormat(
|
||||||
'!'.egw_time::$user_dateformat . ' ' .egw_time::$user_timeformat,
|
'!'.Api\DateTime::$user_dateformat . ' ' .Api\DateTime::$user_timeformat,
|
||||||
$record[$name],
|
$record[$name],
|
||||||
egw_time::$user_timezone
|
Api\DateTime::$user_timezone
|
||||||
);
|
);
|
||||||
|
|
||||||
if(!$formatted && $errors = egw_time::getLastErrors())
|
if(!$formatted && $errors = Api\DateTime::getLastErrors())
|
||||||
{
|
{
|
||||||
// Try again, without time
|
// Try again, without time
|
||||||
$formatted = egw_time::createFromFormat(
|
$formatted = Api\DateTime::createFromFormat(
|
||||||
'!'.egw_time::$user_dateformat,
|
'!'.Api\DateTime::$user_dateformat,
|
||||||
trim($record[$name]),
|
trim($record[$name]),
|
||||||
egw_time::$user_timezone
|
Api\DateTime::$user_timezone
|
||||||
);
|
);
|
||||||
|
|
||||||
if(!$formatted && $errors = egw_time::getLastErrors())
|
if(!$formatted && $errors = Api\DateTime::getLastErrors())
|
||||||
{
|
{
|
||||||
// Try again, anything goes
|
// Try again, anything goes
|
||||||
try {
|
try {
|
||||||
$formatted = new egw_time($record[$name]);
|
$formatted = new Api\DateTime($record[$name]);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$warnings[] = $name.': ' . $e->getMessage() . "\n" .
|
$warnings[] = $name.': ' . $e->getMessage() . "\n" .
|
||||||
'Format: '.'!'.egw_time::$user_dateformat . ' ' .egw_time::$user_timeformat;
|
'Format: '.'!'.Api\DateTime::$user_dateformat . ' ' .Api\DateTime::$user_timeformat;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$errors = egw_time::getLastErrors();
|
$errors = Api\DateTime::getLastErrors();
|
||||||
foreach($errors['errors'] as $char => $msg)
|
foreach($errors['errors'] as $char => $msg)
|
||||||
{
|
{
|
||||||
$warnings[] = "$name: [$char] $msg\n".
|
$warnings[] = "$name: [$char] $msg\n".
|
||||||
'Format: '.'!'.egw_time::$user_dateformat . ' ' .egw_time::$user_timeformat;
|
'Format: '.'!'.Api\DateTime::$user_dateformat . ' ' .Api\DateTime::$user_timeformat;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -426,7 +429,7 @@ class importexport_import_csv implements importexport_iface_import_record { //,
|
|||||||
{
|
{
|
||||||
$record[$name] = $formatted->getTimestamp();
|
$record[$name] = $formatted->getTimestamp();
|
||||||
// Timestamp is apparently in server time, but apps will do the same conversion
|
// Timestamp is apparently in server time, but apps will do the same conversion
|
||||||
$record[$name] = egw_time::server2user($record[$name],'ts');
|
$record[$name] = Api\DateTime::server2user($record[$name],'ts');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,13 +450,13 @@ class importexport_import_csv implements importexport_iface_import_record { //,
|
|||||||
// Need to handle format first
|
// Need to handle format first
|
||||||
if($format == 1)
|
if($format == 1)
|
||||||
{
|
{
|
||||||
$formatted = egw_time::createFromFormat('!'.egw_time::$user_dateformat, $record[$name]);
|
$formatted = Api\DateTime::createFromFormat('!'.Api\DateTime::$user_dateformat, $record[$name]);
|
||||||
if($formatted && $errors = egw_time::getLastErrors() && $errors['error_count'] == 0)
|
if($formatted && $errors = Api\DateTime::getLastErrors() && $errors['error_count'] == 0)
|
||||||
{
|
{
|
||||||
$record[$name] = $formatted->getTimestamp();
|
$record[$name] = $formatted->getTimestamp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$record[$name] = egw_time::server2user($record[$name],'ts');
|
$record[$name] = Api\DateTime::server2user($record[$name],'ts');
|
||||||
if(is_array(self::$cf_parse_cache[$appname][0]['date']) &&
|
if(is_array(self::$cf_parse_cache[$appname][0]['date']) &&
|
||||||
in_array($name, self::$cf_parse_cache[$appname][0]['date'])) {
|
in_array($name, self::$cf_parse_cache[$appname][0]['date'])) {
|
||||||
// Custom fields stored in a particular format (from customfields_widget)
|
// Custom fields stored in a particular format (from customfields_widget)
|
||||||
@ -484,7 +487,7 @@ class importexport_import_csv implements importexport_iface_import_record { //,
|
|||||||
if($appname) {
|
if($appname) {
|
||||||
$GLOBALS['egw_info']['flags']['currentapp'] = $appname;
|
$GLOBALS['egw_info']['flags']['currentapp'] = $appname;
|
||||||
}
|
}
|
||||||
$categories = new categories('',$appname);
|
$categories = new Api\Categories('',$appname);
|
||||||
foreach((array)$fields['select-cat'] as $name) {
|
foreach((array)$fields['select-cat'] as $name) {
|
||||||
if($record[$name]) {
|
if($record[$name]) {
|
||||||
// Only parse name if it needs it
|
// Only parse name if it needs it
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
* @version $Id: class.importexport_import_ui.inc.php 27222 2009-06-08 16:21:14Z ralfbecker $
|
* @version $Id: class.importexport_import_ui.inc.php 27222 2009-06-08 16:21:14Z ralfbecker $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Framework;
|
||||||
|
use EGroupware\Api\Egw;
|
||||||
|
use EGroupware\Api\Etemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* userinterface for imports
|
* userinterface for imports
|
||||||
@ -44,14 +48,14 @@
|
|||||||
$definition = $_GET['definition'] ? $_GET['definition'] : $content['definition'];
|
$definition = $_GET['definition'] ? $_GET['definition'] : $content['definition'];
|
||||||
|
|
||||||
// We use some inline js in preview results if it fails
|
// We use some inline js in preview results if it fails
|
||||||
egw_framework::csp_script_src_attrs("unsafe-inline");
|
Api\Header\ContentSecurityPolicy::add('script-src', "unsafe-inline");
|
||||||
|
|
||||||
$template = new etemplate_new('importexport.import_dialog');
|
$template = new Etemplate('importexport.import_dialog');
|
||||||
|
|
||||||
// Load application's translations
|
// Load application's translations
|
||||||
if($appname)
|
if($appname)
|
||||||
{
|
{
|
||||||
translation::add_app($appname);
|
Api\Translation::add_app($appname);
|
||||||
}
|
}
|
||||||
if($content['import'] && $definition) {
|
if($content['import'] && $definition) {
|
||||||
try {
|
try {
|
||||||
@ -81,7 +85,7 @@
|
|||||||
$preference = $GLOBALS['egw_info']['user']['preferences']['common']['csv_charset'];
|
$preference = $GLOBALS['egw_info']['user']['preferences']['common']['csv_charset'];
|
||||||
}
|
}
|
||||||
$required = $options['charset'] == 'user' || !$options['charset'] ? $preference : $options['charset'];
|
$required = $options['charset'] == 'user' || !$options['charset'] ? $preference : $options['charset'];
|
||||||
$encoding = translation::detect_encoding($sample, $required);
|
$encoding = Api\Translation::detect_encoding($sample, $required);
|
||||||
if($encoding && strtoupper($required) != strtoupper($encoding))
|
if($encoding && strtoupper($required) != strtoupper($encoding))
|
||||||
{
|
{
|
||||||
$this->message = lang("Encoding mismatch. Expected %1 file, you uploaded %2.<br />\n",
|
$this->message = lang("Encoding mismatch. Expected %1 file, you uploaded %2.<br />\n",
|
||||||
@ -100,7 +104,7 @@
|
|||||||
if($file)
|
if($file)
|
||||||
{
|
{
|
||||||
$cachefile = new egw_cache_files(array());
|
$cachefile = new egw_cache_files(array());
|
||||||
$dst_file = $cachefile->filename(egw_cache::keys(egw_cache::INSTANCE, 'importexport',
|
$dst_file = $cachefile->filename(Api\Cache::keys(Api\Cache::INSTANCE, 'importexport',
|
||||||
'import_'.md5($content['file']['name'].$GLOBALS['egw_info']['user']['account_id']), true),true);
|
'import_'.md5($content['file']['name'].$GLOBALS['egw_info']['user']['account_id']), true),true);
|
||||||
// Keep file
|
// Keep file
|
||||||
if($dst_file)
|
if($dst_file)
|
||||||
@ -155,7 +159,7 @@
|
|||||||
// Refresh opening window
|
// Refresh opening window
|
||||||
if(!$content['dry-run'])
|
if(!$content['dry-run'])
|
||||||
{
|
{
|
||||||
egw_framework::refresh_opener(lang('%1 records processed',$count), $appname, null,null,$appname);
|
Framework::refresh_opener(lang('%1 records processed',$count), $appname, null,null,$appname);
|
||||||
}
|
}
|
||||||
$total_processed = 0;
|
$total_processed = 0;
|
||||||
foreach($plugin->get_results() as $action => $a_count) {
|
foreach($plugin->get_results() as $action => $a_count) {
|
||||||
@ -177,7 +181,7 @@
|
|||||||
}
|
}
|
||||||
if ($dst_file && $content['file']['tmp_name'] == $dst_file) {
|
if ($dst_file && $content['file']['tmp_name'] == $dst_file) {
|
||||||
// Remove file
|
// Remove file
|
||||||
$cachefile->delete(egw_cache::keys(egw_cache::INSTANCE, 'importexport',
|
$cachefile->delete(Api\Cache::keys(Api\Cache::INSTANCE, 'importexport',
|
||||||
'import_'.md5($content['file']['name'].$GLOBALS['egw_info']['user']['account_id'])));
|
'import_'.md5($content['file']['name'].$GLOBALS['egw_info']['user']['account_id'])));
|
||||||
unset($dst_file);
|
unset($dst_file);
|
||||||
}
|
}
|
||||||
@ -188,12 +192,12 @@
|
|||||||
}
|
}
|
||||||
elseif($content['cancel'])
|
elseif($content['cancel'])
|
||||||
{
|
{
|
||||||
$GLOBALS['egw']->js->set_onload('window.close();');
|
egw_framework::set_onload('window.close();');
|
||||||
}
|
}
|
||||||
elseif ($GLOBALS['egw_info']['user']['apps']['admin'])
|
elseif ($GLOBALS['egw_info']['user']['apps']['admin'])
|
||||||
{
|
{
|
||||||
$this->message .= lang('You may want to <a href="%1" target="_new">backup</a> first.',
|
$this->message .= lang('You may want to <a href="%1" target="_new">backup</a> first.',
|
||||||
egw::link('/index.php',
|
Egw::link('/index.php',
|
||||||
array('menuaction' => 'admin.admin_db_backup.index')
|
array('menuaction' => 'admin.admin_db_backup.index')
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -212,7 +216,7 @@
|
|||||||
$sel_options = self::get_select_options($data);
|
$sel_options = self::get_select_options($data);
|
||||||
|
|
||||||
$data['message'] = $this->message;
|
$data['message'] = $this->message;
|
||||||
egw_framework::validate_file('.','importexport','importexport');
|
Framework::includeJS('.','importexport','importexport');
|
||||||
|
|
||||||
if($_GET['appname']) $readonlys['appname'] = true;
|
if($_GET['appname']) $readonlys['appname'] = true;
|
||||||
|
|
||||||
@ -292,7 +296,7 @@
|
|||||||
* @param importexport_iface_import_plugin $plugin Instance of plugin to be used
|
* @param importexport_iface_import_plugin $plugin Instance of plugin to be used
|
||||||
* @param resource $stream
|
* @param resource $stream
|
||||||
* @param importexport_definition $definition
|
* @param importexport_definition $definition
|
||||||
* @return String HTML fragment illustrating how the data will be understood by egw
|
* @return String HTML fragment illustrating how the data will be understood by Egw
|
||||||
*/
|
*/
|
||||||
protected function preview(importexport_iface_import_plugin &$plugin, &$stream, importexport_definition &$definition_obj)
|
protected function preview(importexport_iface_import_plugin &$plugin, &$stream, importexport_definition &$definition_obj)
|
||||||
{
|
{
|
||||||
@ -317,7 +321,7 @@
|
|||||||
$rows[$import_csv->get_current_position() <= $definition_obj->plugin_options['num_header_lines'] ? 'h1' : $row] = $row_data;
|
$rows[$import_csv->get_current_position() <= $definition_obj->plugin_options['num_header_lines'] ? 'h1' : $row] = $row_data;
|
||||||
if($import_csv->get_current_position() <= $definition_obj->plugin_options['num_header_lines']) $row--;
|
if($import_csv->get_current_position() <= $definition_obj->plugin_options['num_header_lines']) $row--;
|
||||||
}
|
}
|
||||||
$preview = html::table($rows);
|
$preview = Api\Html::table($rows);
|
||||||
rewind($stream);
|
rewind($stream);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -371,7 +375,7 @@
|
|||||||
|
|
||||||
$data = fgetcsv($file, 8000, $options['fieldsep']);
|
$data = fgetcsv($file, 8000, $options['fieldsep']);
|
||||||
rewind($file);
|
rewind($file);
|
||||||
$data = translation::convert($data,$charset);
|
$data = Api\Translation::convert($data,$charset);
|
||||||
|
|
||||||
$ok = true;
|
$ok = true;
|
||||||
if(count($data) != count($options['csv_fields']) && max(array_keys($data)) != max(array_keys($options['csv_fields'])))
|
if(count($data) != count($options['csv_fields']) && max(array_keys($data)) != max(array_keys($options['csv_fields'])))
|
||||||
@ -402,8 +406,8 @@
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Check column headers, taking into account different translations - make sure no *
|
// Check column headers, taking into account different translations - make sure no *
|
||||||
$lang_defn = mb_strtoupper(translation::translate($options['csv_fields'][$index],false,''));
|
$lang_defn = mb_strtoupper(Api\Translation::translate($options['csv_fields'][$index],false,''));
|
||||||
$lang_file = mb_strtoupper(translation::translate($header,false,''));
|
$lang_file = mb_strtoupper(Api\Translation::translate($header,false,''));
|
||||||
|
|
||||||
if($lang_defn == $lang_file ||
|
if($lang_defn == $lang_file ||
|
||||||
$lang_defn == mb_strtoupper($header) ||
|
$lang_defn == mb_strtoupper($header) ||
|
||||||
@ -413,9 +417,9 @@
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to go back to translation message ID for a match
|
// Try to go back to Api\Translation message ID for a match
|
||||||
$file_message_id = translation::get_message_id($header, $definition->application);
|
$file_message_id = Api\Translation::get_message_id($header, $definition->application);
|
||||||
$defn_message_id = translation::get_message_id($options['csv_fields'][$index], $definition->application);
|
$defn_message_id = Api\Translation::get_message_id($options['csv_fields'][$index], $definition->application);
|
||||||
|
|
||||||
if($file_message_id && $defn_message_id && $file_message_id == $defn_message_id)
|
if($file_message_id && $defn_message_id && $file_message_id == $defn_message_id)
|
||||||
{
|
{
|
||||||
@ -432,12 +436,12 @@
|
|||||||
if(!$ok || count($message) != $message_count)
|
if(!$ok || count($message) != $message_count)
|
||||||
{
|
{
|
||||||
// Add links for new / edit definition
|
// Add links for new / edit definition
|
||||||
$config = config::read('importexport');
|
$config = Api\Config::read('importexport');
|
||||||
if($GLOBALS['egw_info']['user']['apps']['admin'] || $config['users_create_definitions'])
|
if($GLOBALS['egw_info']['user']['apps']['admin'] || $config['users_create_definitions'])
|
||||||
{
|
{
|
||||||
$actions = '';
|
$actions = '';
|
||||||
// New definition
|
// New definition
|
||||||
$add_link = egw::link('/index.php',array(
|
$add_link = Egw::link('/index.php',array(
|
||||||
'menuaction' => 'importexport.importexport_definitions_ui.edit',
|
'menuaction' => 'importexport.importexport_definitions_ui.edit',
|
||||||
'application' => $definition->application,
|
'application' => $definition->application,
|
||||||
'plugin' => $definition->plugin,
|
'plugin' => $definition->plugin,
|
||||||
@ -445,7 +449,7 @@
|
|||||||
'step' => 'wizard_step21'
|
'step' => 'wizard_step21'
|
||||||
));
|
));
|
||||||
$add_link = "
|
$add_link = "
|
||||||
javascript:this.window.location = '" . egw::link('/index.php', array(
|
javascript:this.window.location = '" . Egw::link('/index.php', array(
|
||||||
'menuaction' => 'importexport.importexport_import_ui.import_dialog',
|
'menuaction' => 'importexport.importexport_import_ui.import_dialog',
|
||||||
// Don't set appname, or user won't be able to select & see their new definition
|
// Don't set appname, or user won't be able to select & see their new definition
|
||||||
//'appname' => $definition->application,
|
//'appname' => $definition->application,
|
||||||
@ -470,7 +474,7 @@
|
|||||||
$GLOBALS['egw']->session->appsession('csvfile','',$dst_file);
|
$GLOBALS['egw']->session->appsession('csvfile','',$dst_file);
|
||||||
$edit_link['step'] = 'wizard_step30';
|
$edit_link['step'] = 'wizard_step30';
|
||||||
}
|
}
|
||||||
$edit_link = egw::link('/index.php',$edit_link);
|
$edit_link = Egw::link('/index.php',$edit_link);
|
||||||
$edit_link = "javascript:egw_openWindowCentered2('$edit_link','_blank',500,500,'yes')";
|
$edit_link = "javascript:egw_openWindowCentered2('$edit_link','_blank',500,500,'yes')";
|
||||||
$actions[] = lang('Edit definition <a href="%1">%2</a> to match your file',
|
$actions[] = lang('Edit definition <a href="%1">%2</a> to match your file',
|
||||||
$edit_link, $definition->name );
|
$edit_link, $definition->name );
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
* @version $Id: class.importexport_import_ui.inc.php 27222 2009-06-08 16:21:14Z ralfbecker $
|
* @version $Id: class.importexport_import_ui.inc.php 27222 2009-06-08 16:21:14Z ralfbecker $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Framework;
|
||||||
|
use EGroupware\Api\Vfs;
|
||||||
|
use EGroupware\Api\Etemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* userinterface for admins to schedule imports or exports using async services
|
* userinterface for admins to schedule imports or exports using async services
|
||||||
@ -26,7 +30,7 @@
|
|||||||
protected static $template;
|
protected static $template;
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->template = new etemplate_new();
|
$this->template = new Etemplate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function index($content = array()) {
|
public function index($content = array()) {
|
||||||
@ -68,9 +72,9 @@
|
|||||||
}
|
}
|
||||||
$data['scheduled'][] = array_merge($async['data'], array(
|
$data['scheduled'][] = array_merge($async['data'], array(
|
||||||
'id' => urlencode($id),
|
'id' => urlencode($id),
|
||||||
'next' => egw_time::server2user($async['next']),
|
'next' => Api\DateTime::server2user($async['next']),
|
||||||
'times' => str_replace("\n", '', print_r($async['times'], true)),
|
'times' => str_replace("\n", '', print_r($async['times'], true)),
|
||||||
'last_run' => $async['data']['last_run'] ? egw_time::server2user($async['data']['last_run']) : ''
|
'last_run' => $async['data']['last_run'] ? Api\DateTime::server2user($async['data']['last_run']) : ''
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
array_unshift($data['scheduled'], false);
|
array_unshift($data['scheduled'], false);
|
||||||
@ -85,7 +89,7 @@
|
|||||||
public function edit($content = array()) {
|
public function edit($content = array()) {
|
||||||
$id = $_GET['id'] ? urldecode($_GET['id']) : $content['id'];
|
$id = $_GET['id'] ? urldecode($_GET['id']) : $content['id'];
|
||||||
$definition_id = $_GET['definition'];
|
$definition_id = $_GET['definition'];
|
||||||
$async = new asyncservice();
|
$async = new Api\Asyncservice();
|
||||||
|
|
||||||
unset($content['id']);
|
unset($content['id']);
|
||||||
|
|
||||||
@ -112,8 +116,8 @@
|
|||||||
$content
|
$content
|
||||||
);
|
);
|
||||||
if($result) {
|
if($result) {
|
||||||
egw_framework::refresh_opener('', 'admin',$id,'update','admin');
|
Framework::refresh_opener('', 'admin',$id,'update','admin');
|
||||||
egw_framework::window_close();
|
Framework::window_close();
|
||||||
} else {
|
} else {
|
||||||
$data['message'] = lang('Unable to schedule');
|
$data['message'] = lang('Unable to schedule');
|
||||||
unset($id);
|
unset($id);
|
||||||
@ -159,7 +163,7 @@
|
|||||||
$data['current_time'] = time();
|
$data['current_time'] = time();
|
||||||
|
|
||||||
$sel_options = self::get_select_options($data);
|
$sel_options = self::get_select_options($data);
|
||||||
egw_framework::validate_file('.','importexport','importexport');
|
Framework::includeJS('.','importexport','importexport');
|
||||||
|
|
||||||
$GLOBALS['egw_info']['flags']['app_header'] = lang('Schedule import / export');
|
$GLOBALS['egw_info']['flags']['app_header'] = lang('Schedule import / export');
|
||||||
$this->template->read('importexport.schedule_edit');
|
$this->template->read('importexport.schedule_edit');
|
||||||
@ -304,11 +308,11 @@
|
|||||||
if($scheme == '' || $scheme == 'file') {
|
if($scheme == '' || $scheme == 'file') {
|
||||||
return 'Direct file access not allowed';
|
return 'Direct file access not allowed';
|
||||||
}
|
}
|
||||||
if($scheme == EGroupware\Api\Vfs::SCHEME && !in_array(EGroupware\Api\Vfs::SCHEME, stream_get_wrappers())) {
|
if($scheme == EGroupware\Vfs::SCHEME && !in_array(EGroupware\Vfs::SCHEME, stream_get_wrappers())) {
|
||||||
stream_wrapper_register(EGroupware\Api\Vfs::SCHEME, 'vfs_stream_wrapper', STREAM_IS_URL);
|
stream_wrapper_register(EGroupware\Vfs::SCHEME, 'vfs_stream_wrapper', STREAM_IS_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($data['type'] == 'import' && ($scheme == EGroupware\Api\Vfs::SCHEME && !egw_vfs::is_readable($data['target'])))
|
if ($data['type'] == 'import' && ($scheme == EGroupware\Vfs::SCHEME && !Vfs::is_readable($data['target'])))
|
||||||
{
|
{
|
||||||
return lang('%1 is not readable',$data['target']);
|
return lang('%1 is not readable',$data['target']);
|
||||||
}
|
}
|
||||||
@ -621,7 +625,7 @@
|
|||||||
|
|
||||||
if($data['warnings'])
|
if($data['warnings'])
|
||||||
{
|
{
|
||||||
$contents .= lang($data['type']) . ' ' . lang('Warnings') . ' ' . egw_time::to() . ':';
|
$contents .= lang($data['type']) . ' ' . lang('Warnings') . ' ' . Api\DateTime::to() . ':';
|
||||||
foreach($data['warnings'] as $target => $message)
|
foreach($data['warnings'] as $target => $message)
|
||||||
{
|
{
|
||||||
$contents .= "\n". (is_numeric($target) ? '' : $target."\n");
|
$contents .= "\n". (is_numeric($target) ? '' : $target."\n");
|
||||||
@ -631,7 +635,7 @@
|
|||||||
}
|
}
|
||||||
if($data['errors'])
|
if($data['errors'])
|
||||||
{
|
{
|
||||||
$contents .= lang($data['type']) . ' ' . lang('Errors') . ' ' . egw_time::to() . ':';
|
$contents .= lang($data['type']) . ' ' . lang('Errors') . ' ' . Api\DateTime::to() . ':';
|
||||||
foreach($data['errors'] as $target => $errors)
|
foreach($data['errors'] as $target => $errors)
|
||||||
{
|
{
|
||||||
$contents .= "\n". (is_numeric($target) ? '' : $target."\n");
|
$contents .= "\n". (is_numeric($target) ? '' : $target."\n");
|
||||||
|
@ -6,6 +6,9 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
use EGroupware\Api\Etemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extend custom fields and make an general advanced filter
|
* Extend custom fields and make an general advanced filter
|
||||||
*
|
*
|
||||||
@ -21,7 +24,7 @@
|
|||||||
*
|
*
|
||||||
* Most text fields are ignored.
|
* Most text fields are ignored.
|
||||||
*/
|
*/
|
||||||
class importexport_widget_filter extends etemplate_widget_transformer
|
class importexport_widget_filter extends Etemplate\Widget\Transformer
|
||||||
{
|
{
|
||||||
|
|
||||||
protected static $prefix = '';
|
protected static $prefix = '';
|
||||||
@ -98,7 +101,7 @@ class importexport_widget_filter extends etemplate_widget_transformer
|
|||||||
// and used as such. All unknown values will be used for selection, not passed through to the query
|
// and used as such. All unknown values will be used for selection, not passed through to the query
|
||||||
if (isset($field['values']['@']))
|
if (isset($field['values']['@']))
|
||||||
{
|
{
|
||||||
$options['values'] = egw_customfields::get_options_from_file($field['values']['@']);
|
$options['values'] = Api\Storage\Customfields::get_options_from_file($field['values']['@']);
|
||||||
unset($field['values']['@']);
|
unset($field['values']['@']);
|
||||||
} else {
|
} else {
|
||||||
$options['values'] = array_diff_key($field['values'], array_flip(ajax_select_widget::$known_options));
|
$options['values'] = array_diff_key($field['values'], array_flip(ajax_select_widget::$known_options));
|
||||||
@ -113,7 +116,7 @@ class importexport_widget_filter extends etemplate_widget_transformer
|
|||||||
{
|
{
|
||||||
if (count($field['values']) == 1 && isset($field['values']['@']))
|
if (count($field['values']) == 1 && isset($field['values']['@']))
|
||||||
{
|
{
|
||||||
$field['values'] = egw_customfields::get_options_from_file($field['values']['@']);
|
$field['values'] = Api\Storage\Customfields::get_options_from_file($field['values']['@']);
|
||||||
}
|
}
|
||||||
foreach((array)$field['values'] as $key => $val)
|
foreach((array)$field['values'] as $key => $val)
|
||||||
{
|
{
|
||||||
@ -182,4 +185,4 @@ class importexport_widget_filter extends etemplate_widget_transformer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Register, or it won't be found
|
// Register, or it won't be found
|
||||||
\EGroupware\Api\Etemplate\Widget::registerWidget('importexport_widget_filter', array('filter'));
|
Etemplate\Widget::registerWidget('importexport_widget_filter', array('filter'));
|
@ -15,6 +15,8 @@
|
|||||||
* @author Nathan Gray
|
* @author Nathan Gray
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
class importexport_wizard_basic_export_csv
|
class importexport_wizard_basic_export_csv
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -63,7 +65,7 @@ class importexport_wizard_basic_export_csv
|
|||||||
);
|
);
|
||||||
list($appname, $part2) = explode('_', get_class($this));
|
list($appname, $part2) = explode('_', get_class($this));
|
||||||
if(!$GLOBALS['egw_info']['apps'][$appname]) $appname .= '_'.$part2; // Handle apps with _ in the name
|
if(!$GLOBALS['egw_info']['apps'][$appname]) $appname .= '_'.$part2; // Handle apps with _ in the name
|
||||||
translation::add_app($appname);
|
Api\Translation::add_app($appname);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -202,13 +204,13 @@ class importexport_wizard_basic_export_csv
|
|||||||
1 => lang('Field names'),
|
1 => lang('Field names'),
|
||||||
'label' => lang('Field labels')
|
'label' => lang('Field labels')
|
||||||
);
|
);
|
||||||
$sel_options['charset'] = $GLOBALS['egw']->translation->get_installed_charsets()+
|
$sel_options['charset'] = Api\Translation::get_installed_charsets()+
|
||||||
array(
|
array(
|
||||||
'user' => lang('User preference'),
|
'user' => lang('User preference'),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Add in extra allowed charsets
|
// Add in extra allowed charsets
|
||||||
$config = config::read('importexport');
|
$config = Api\Config::read('importexport');
|
||||||
$extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings());
|
$extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings());
|
||||||
if($extra_charsets)
|
if($extra_charsets)
|
||||||
{
|
{
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
* @author Nathan Gray
|
* @author Nathan Gray
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use EGroupware\Api;
|
||||||
|
|
||||||
class importexport_wizard_basic_import_csv
|
class importexport_wizard_basic_import_csv
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -98,7 +100,7 @@ class importexport_wizard_basic_import_csv
|
|||||||
$content['step'] = 'wizard_step30';
|
$content['step'] = 'wizard_step30';
|
||||||
$preserv = $content;
|
$preserv = $content;
|
||||||
unset ($preserv['button']);
|
unset ($preserv['button']);
|
||||||
//$GLOBALS['egw']->js->set_onload("xajax_eT_wrapper_init();");
|
|
||||||
return $this->step_templates[$content['step']];
|
return $this->step_templates[$content['step']];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,8 +133,8 @@ class importexport_wizard_basic_import_csv
|
|||||||
|
|
||||||
// Remove & forget file
|
// Remove & forget file
|
||||||
unlink($GLOBALS['egw']->session->appsession('csvfile',$content['application']));
|
unlink($GLOBALS['egw']->session->appsession('csvfile',$content['application']));
|
||||||
egw_cache::setSession($content['application'], 'csvfile', '');
|
Api\Cache::setSession($content['application'], 'csvfile', '');
|
||||||
$content['csv_fields'] = translation::convert($data,$content['charset']);
|
$content['csv_fields'] = Api\Translation::convert($data,$content['charset']);
|
||||||
|
|
||||||
// Reset field mapping for new file
|
// Reset field mapping for new file
|
||||||
$content['field_mapping'] = array();
|
$content['field_mapping'] = array();
|
||||||
@ -151,10 +153,10 @@ class importexport_wizard_basic_import_csv
|
|||||||
}
|
}
|
||||||
// Check english also
|
// Check english also
|
||||||
if($GLOBALS['egw_info']['user']['preferences']['common']['lang'] != 'en' && !isset($english[$field_name])) {
|
if($GLOBALS['egw_info']['user']['preferences']['common']['lang'] != 'en' && !isset($english[$field_name])) {
|
||||||
$msg_id = translation::get_message_id($field_name, $content['application']);
|
$msg_id = Api\Translation::get_message_id($field_name, $content['application']);
|
||||||
}
|
}
|
||||||
if($msg_id) {
|
if($msg_id) {
|
||||||
$english[$field_name] = translation::read('en', $content['application'], $msg_id);
|
$english[$field_name] = Api\Translation::read('en', $content['application'], $msg_id);
|
||||||
} else {
|
} else {
|
||||||
$english[$field_name] = false;
|
$english[$field_name] = false;
|
||||||
}
|
}
|
||||||
@ -229,13 +231,13 @@ class importexport_wizard_basic_import_csv
|
|||||||
$content['convert'] = 1;
|
$content['convert'] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sel_options['charset'] = $GLOBALS['egw']->translation->get_installed_charsets()+
|
$sel_options['charset'] = Api\Translation::get_installed_charsets()+
|
||||||
array(
|
array(
|
||||||
'user' => lang('User preference'),
|
'user' => lang('User preference'),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Add in extra allowed charsets
|
// Add in extra allowed charsets
|
||||||
$config = config::read('importexport');
|
$config = Api\Config::read('importexport');
|
||||||
$extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings());
|
$extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings());
|
||||||
if($extra_charsets)
|
if($extra_charsets)
|
||||||
{
|
{
|
||||||
|
File diff suppressed because one or more lines are too long
@ -10,7 +10,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$setup_info['importexport']['name'] = 'importexport';
|
$setup_info['importexport']['name'] = 'importexport';
|
||||||
$setup_info['importexport']['version'] = '14.1';
|
$setup_info['importexport']['version'] = '16.1';
|
||||||
$setup_info['importexport']['app_order'] = 2;
|
$setup_info['importexport']['app_order'] = 2;
|
||||||
$setup_info['importexport']['enable'] = 2;
|
$setup_info['importexport']['enable'] = 2;
|
||||||
$setup_info['importexport']['tables'] = array('egw_importexport_definitions');
|
$setup_info['importexport']['tables'] = array('egw_importexport_definitions');
|
||||||
@ -36,12 +36,8 @@ $setup_info['importexport']['hooks']['etemplate2_register_widgets'] = 'importexp
|
|||||||
|
|
||||||
/* Dependencies for this app to work */
|
/* Dependencies for this app to work */
|
||||||
$setup_info['importexport']['depends'][] = array(
|
$setup_info['importexport']['depends'][] = array(
|
||||||
'appname' => 'phpgwapi',
|
'appname' => 'api',
|
||||||
'versions' => Array('14.1')
|
'versions' => Array('16.1')
|
||||||
);
|
|
||||||
$setup_info['importexport']['depends'][] = array(
|
|
||||||
'appname' => 'etemplate',
|
|
||||||
'versions' => Array('14.1')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// installation checks for importexport
|
// installation checks for importexport
|
||||||
|
@ -126,3 +126,7 @@ function importexport_upgrade1_9_004()
|
|||||||
{
|
{
|
||||||
return $GLOBALS['setup_info']['importexport']['currentver'] = '14.1';
|
return $GLOBALS['setup_info']['importexport']['currentver'] = '14.1';
|
||||||
}
|
}
|
||||||
|
function importexport_upgrade14_1()
|
||||||
|
{
|
||||||
|
return $GLOBALS['setup_info']['importexport']['currentver'] = '16.1';
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user