Backup\Model\Content::import PHP Метод

import() публичный Метод

Import from xml
public import ( string $content ) : boolean
$content string Xml Content
Результат boolean
    public function import($content)
    {
        try {
            $xml = $this->loadXml($content);
        } catch (Exception $e) {
            return false;
        }
        $orders = $this->getOrders($xml);
        ksort($orders);
        $documentTypes = array();
        $errors = array();
        $ids = array('datatypes' => array(), 'views' => array(), 'layouts' => array(), 'scripts' => array(), 'document_types' => array(), 'documents' => array(), 'properties' => array());
        foreach ($orders as $children) {
            switch ($children['name']) {
                case 'datatypes':
                    $this->importDatatypes($ids, $errors, $children);
                    break;
                case 'document_types':
                    $documentTypes = $this->importDocumentTypes($ids, $errors, $children);
                    break;
                case 'documents':
                    $this->importDocuments($ids, $errors, $children);
                    break;
                case 'views':
                case 'layouts':
                case 'scripts':
                default:
                    $this->importTemplates($ids, $errors, $children);
                    break;
            }
        }
        //must insert dependencies at the end
        $this->insertDependencies($ids, $errors, $documentTypes);
        if (!empty($errors)) {
            return $errors;
        }
        return true;
    }

Usage Example

Пример #1
0
 /**
  * Download files as gzip
  *
  * @return \Zend\Http\Response
  */
 public function uploadContentAction()
 {
     $file = $this->params()->fromFiles('upload');
     if (empty($file) or !isset($file['error']) or $file['error'] != UPLOAD_ERR_OK) {
         return $this->redirect()->toRoute('module/backup');
     }
     $model = new Model\Content($this->getServiceLocator());
     $result = $model->import(file_get_contents($file['tmp_name']));
     if ($result === false) {
         $this->flashMessenger()->addSuccessMessage('File is not an xml');
         return $this->redirect()->toRoute('module/backup');
     }
     if (is_array($result)) {
         foreach ($result as $message) {
             $this->flashMessenger()->addErrorMessage($message);
         }
     }
     $this->flashMessenger()->addSuccessMessage('Content updated!');
     return $this->redirect()->toRoute('module/backup');
 }