OCA\Richdocuments\Controller\DocumentController::create PHP Метод

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

public create ( )
    public function create()
    {
        $mimetype = $this->request->post['mimetype'];
        $filename = $this->request->post['filename'];
        $dir = $this->request->post['dir'];
        $view = new View('/' . $this->uid . '/files');
        if (!$dir) {
            $dir = '/';
        }
        $basename = $this->l10n->t('New Document.odt');
        switch ($mimetype) {
            case 'application/vnd.oasis.opendocument.spreadsheet':
                $basename = $this->l10n->t('New Spreadsheet.ods');
                break;
            case 'application/vnd.oasis.opendocument.presentation':
                $basename = $this->l10n->t('New Presentation.odp');
                break;
            default:
                // to be safe
                $mimetype = 'application/vnd.oasis.opendocument.text';
                break;
        }
        if (!$filename) {
            $path = Helper::getNewFileName($view, $dir . '/' . $basename);
        } else {
            $path = $dir . '/' . $filename;
        }
        $content = '';
        if (class_exists('\\OC\\Files\\Type\\TemplateManager')) {
            $manager = \OC_Helper::getFileTemplateManager();
            $content = $manager->getTemplate($mimetype);
        }
        if (!$content) {
            $content = file_get_contents(dirname(__DIR__) . self::ODT_TEMPLATE_PATH);
        }
        $discovery_parsed = null;
        try {
            $discovery = $this->getDiscovery();
            $loadEntities = libxml_disable_entity_loader(true);
            $discovery_parsed = simplexml_load_string($discovery);
            libxml_disable_entity_loader($loadEntities);
            if ($discovery_parsed === false) {
                $this->cache->remove('discovery.xml');
                $wopiRemote = $this->appConfig->getAppValue('wopi_url');
                return array('status' => 'error', 'message' => $this->l10n->t('Collabora Online: discovery.xml from "%s" is not a well-formed XML string.', array($wopiRemote)), 'hint' => $this->l10n->t('Please contact the "%s" administrator.', array($wopiRemote)));
            }
        } catch (ResponseException $e) {
            return array('status' => 'error', 'message' => $e->getMessage(), 'hint' => $e->getHint());
        }
        if ($content && $view->file_put_contents($path, $content)) {
            $info = $view->getFileInfo($path);
            $ret = $this->getWopiSrcUrl($discovery_parsed, $mimetype);
            $response = array('status' => 'success', 'fileid' => $info['fileid'], 'urlsrc' => $ret['urlsrc'], 'action' => $ret['action'], 'lolang' => $this->settings->getUserValue($this->uid, 'core', 'lang', 'en'), 'data' => \OCA\Files\Helper::formatFileInfo($info));
        } else {
            $response = array('status' => 'error', 'message' => (string) $this->l10n->t('Can\'t create document'));
        }
        return $response;
    }