GcContent\Controller\TranslationController::uploadAction PHP Method

uploadAction() public method

Upload a file to the server
public uploadAction ( ) : Zend\Http\Response
return Zend\Http\Response
    public function uploadAction()
    {
        if (empty($_FILES['upload'])) {
            $this->flashMessenger()->addErrorMessage('Can not upload translations');
            return $this->redirect()->toRoute('content/translation');
        }
        $translator = new Translator();
        foreach ($_FILES['upload']['tmp_name'] as $idx => $tmpName) {
            if ($_FILES['upload']['error'][$idx] != UPLOAD_ERR_OK) {
                continue;
            }
            $fileName = $_FILES['upload']['name'][$idx];
            switch ($_FILES['upload']['type'][$idx]) {
                case 'text/csv':
                    try {
                        $locale = str_replace('.csv', '', $fileName);
                        $file = new SplFileObject($tmpName);
                        $file->setFlags(SplFileObject::READ_CSV);
                        foreach ($file as $row) {
                            if (empty($row[0])) {
                                continue;
                            }
                            list($source, $value) = $row;
                            $this->saveTranslation($translator, $locale, $source, $value);
                        }
                    } catch (Exception $e) {
                        $this->flashMessenger()->addErrorMessage($e->getMessage());
                        return $this->redirect()->toRoute('content/translation');
                    }
                    $this->flashMessenger()->addSuccessMessage(sprintf('Translations in %s are updated', $fileName));
                    break;
                case 'text/php':
                case 'application/x-php':
                    try {
                        $locale = str_replace('.php', '', $fileName);
                        $content = str_replace(array('<?php', '<?', '?>'), array('', '', ''), file_get_contents($tmpName));
                        if (!($data = @eval($content)) or !is_array($data)) {
                            throw new Exception(sprintf('File %s cannot be read', $fileName));
                        }
                        foreach ($data as $source => $value) {
                            $this->saveTranslation($translator, $locale, $source, $value);
                        }
                    } catch (Exception $e) {
                        $this->flashMessenger()->addErrorMessage($e->getMessage());
                        return $this->redirect()->toRoute('content/translation');
                    }
                    $translator->generateCache();
                    $this->flashMessenger()->addSuccessMessage(sprintf('Translations in %s are updated', $fileName));
                    break;
            }
        }
        return $this->redirect()->toRoute('content/translation');
    }