/** * Return data for external storage * * @param Template $template * @return array * */ public function ___getExportData(Template $template) { $template->set('_exportMode', true); $data = $template->getTableData(); // flatten foreach ($data['data'] as $key => $value) { $data[$key] = $value; } // remove unnecessary unset($data['data'], $data['modified']); // convert fieldgroup to guid $fieldgroup = $this->wire('fieldgroups')->get((int) $data['fieldgroups_id']); if ($fieldgroup) { $data['fieldgroups_id'] = $fieldgroup->name; } // convert family settings to guids foreach (array('parentTemplates', 'childTemplates') as $key) { if (!isset($data[$key])) { continue; } $values = array(); foreach ($data[$key] as $id) { if (ctype_digit("{$id}")) { $id = (int) $id; } $t = $this->wire('templates')->get($id); if ($t) { $values[] = $t->name; } } $data[$key] = $values; } // convert roles to guids if ($template->useRoles) { foreach (array('roles', 'editRoles', 'addRoles', 'createRoles') as $key) { if (!isset($data[$key])) { continue; } $values = array(); foreach ($data[$key] as $id) { $role = $id instanceof Role ? $id : $this->wire('roles')->get((int) $id); $values[] = $role->name; } $data[$key] = $values; } } // convert pages to guids if ($template->cache_time) { if (!empty($data['cacheExpirePages'])) { $values = array(); foreach ($data['cacheExpirePages'] as $id) { $page = $this->wire('pages')->get((int) $id); if (!$page->id) { continue; } $values[] = $page->path; } } } $fieldgroupData = array('fields' => array(), 'contexts' => array()); if ($template->fieldgroup) { $fieldgroupData = $template->fieldgroup->getExportData(); } $data['fieldgroupFields'] = $fieldgroupData['fields']; $data['fieldgroupContexts'] = $fieldgroupData['contexts']; $template->set('_exportMode', false); return $data; }