1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-24 15:23:11 +02:00

A few small improvements to the PagesExportImport class

This commit is contained in:
Ryan Cramer
2018-10-19 11:02:54 -04:00
parent 6367fb7668
commit 0b8382ab3e

View File

@@ -231,6 +231,9 @@ class PagesExportImport extends Wire {
*/
public function pagesToArray(PageArray $items, array $options = array()) {
/** @var Config $config */
$config = $this->wire('config');
$defaults = array(
'verbose' => false,
'fieldNames' => array(), // export only these field names, when specified
@@ -242,11 +245,15 @@ class PagesExportImport extends Wire {
$a = array(
'type' => 'ProcessWire:PageArray',
'created' => date('Y-m-d H:i:s'),
'version' => $this->wire('config')->version,
'version' => $config->version,
'user' => $this->wire('user')->name,
'host' => $this->wire('config')->httpHost,
'host' => $config->httpHost,
'pages' => array(),
'fields' => array(),
'urls' => array(
'root' => $config->urls->root,
'assets' => $config->urls->assets
),
'timer' => Debug::timer(),
// 'pagination' => array(),
);
@@ -480,6 +487,9 @@ class PagesExportImport extends Wire {
$info = $this->getImportInfo($a);
if($info) {}
if(isset($a['url'])) $options['originalRootUrl'] = $a['url'];
if(isset($a['host'])) $options['originalHost'] = $a['host'];
foreach($a['pages'] as $item) {
$page = $this->arrayToPage($item, $options);
$id = $item['settings']['id'];
@@ -510,6 +520,8 @@ class PagesExportImport extends Wire {
* - `changeSort` (bool): Allow sort and sortfield to be changed on existing pages? (default=true)
* - `replaceTemplates` (array): Array of import-data template name to replacement template name (default=[])
* - `replaceFields` (array): Array of import-data field name to replacement field name (default=[])
* - `originalRootUrl` (string): Original root URL (not including hostname)
* - `originalHost` (string): Original hostname
*
* The following options are for future use and not currently applicable:
* - `changeTemplate` (bool): Allow template to be changed on existing pages? (default=false)
@@ -529,6 +541,9 @@ class PagesExportImport extends Wire {
throw new WireException('Invalid array provided to arrayToPage() method');
}
/** @var Config $config */
$config = $this->wire('config');
$defaults = array(
'id' => 0, // ID that new Page should use, or update, if it already exists. (0=create new). Sets update=true.
'parent' => 0, // Parent Page, path or ID. (0=auto detect from imported page path)
@@ -547,6 +562,8 @@ class PagesExportImport extends Wire {
'replaceTemplates' => array(), // array of import-data template name to replacement page template name
'replaceParents' => array(), // array of import-data parent path to replacement parent path
'filesPath' => '', // path where file field directories are located when importing from zip (internal use)
'originalHost' => $config->httpHost,
'originalRootUrl' => $config->urls->root,
'commit' => true, // commit the import? If false, changes aren't saved (dry run).
'debug' => false,
);
@@ -899,7 +916,9 @@ class PagesExportImport extends Wire {
'system' => true,
'caller' => $this,
'commit' => $options['commit'],
'test' => !$options['commit']
'test' => !$options['commit'],
'originalHost' => $options['originalHost'],
'originalRootUrl' => $options['originalRootUrl'],
);
// fake-commit for more verbose testing of certain fieldtypes
@@ -1366,9 +1385,10 @@ class PagesExportImport extends Wire {
} catch(\Exception $e) {
$exportable = false;
$reason = $e->getMessage();
$importInfo = false;
}
if($exportable && !$importInfo['importable']) {
if($exportable && $importInfo && !$importInfo['importable']) {
// this fieldtype is storing data outside of the DB or in other unknown tables
// there's a good chance we won't be able to export/import this into an array
// @todo check if fieldtype implements its own exportValue/importValue, and if