예제 #1
0
/**
 * @copyright Copyright (C) 1999-2013 eZ Systems AS. All rights reserved.
 * @license http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
 * @version  2013.11
 * @package kernel
 */
$module = $Params['Module'];
if (!eZPackage::canUsePolicyFunction('import')) {
    return $module->handleError(eZError::KERNEL_ACCESS_DENIED, 'kernel');
}
$package = false;
$installElements = false;
$errorList = array();
if ($module->isCurrentAction('UploadPackage')) {
    if (eZHTTPFile::canFetch('PackageBinaryFile')) {
        $file = eZHTTPFile::fetch('PackageBinaryFile');
        if ($file) {
            $packageFilename = $file->attribute('filename');
            $package = eZPackage::import($packageFilename, $packageName);
            if ($package instanceof eZPackage) {
                if ($package->attribute('install_type') != 'install' or !$package->attribute('can_install')) {
                    return $module->redirectToView('view', array('full', $package->attribute('name')));
                } else {
                    if ($package->attribute('install_type') == 'install') {
                        return $module->redirectToView('install', array($package->attribute('name')));
                    }
                }
            } else {
                if ($package == eZPackage::STATUS_ALREADY_EXISTS) {
                    $errorList[] = array('description' => ezpI18n::tr('kernel/package', 'Package %packagename already exists, cannot import the package', false, array('%packagename' => $packageName)));
 /**
  * Fetch object attribute http input, override the ezDataType method
  * This method is triggered when submiting a http form which includes Image class
  * Image is stored into file system every time there is a file input and validation result is valid.
  * @param $http http object
  * @param $base
  * @param $contentObjectAttribute : the content object attribute being handled
  * @return true if content object is not null, false if content object is null
  */
 function fetchObjectAttributeHTTPInput($http, $base, $contentObjectAttribute)
 {
     $result = false;
     $imageAltText = false;
     $hasImageAltText = false;
     if ($http->hasPostVariable($base . "_data_imagealttext_" . $contentObjectAttribute->attribute("id"))) {
         $imageAltText = $http->postVariable($base . "_data_imagealttext_" . $contentObjectAttribute->attribute("id"));
         $hasImageAltText = true;
     }
     $content = $contentObjectAttribute->attribute('content');
     $httpFileName = $base . "_data_imagename_" . $contentObjectAttribute->attribute("id");
     if (eZHTTPFile::canFetch($httpFileName)) {
         $httpFile = eZHTTPFile::fetch($httpFileName);
         if ($httpFile) {
             if ($content) {
                 $content->setHTTPFile($httpFile);
                 $result = true;
             }
         }
     }
     if ($content) {
         if ($hasImageAltText) {
             $content->setAttribute('alternative_text', $imageAltText);
         }
         $result = true;
     }
     return $result;
 }
예제 #3
0
 /**
  * Upload local package.
  *
  * \private
  */
 function uploadPackage()
 {
     if (!eZHTTPFile::canFetch('PackageBinaryFile')) {
         $this->ErrorMsg = ezpI18n::tr('design/standard/setup/init', 'No package selected for upload') . '.';
         return;
     }
     $file = eZHTTPFile::fetch('PackageBinaryFile');
     if (!$file) {
         $this->ErrorMsg = ezpI18n::tr('design/standard/setup/init', 'Failed fetching upload package file');
         return;
     }
     $packageFilename = $file->attribute('filename');
     $packageName = $file->attribute('original_filename');
     if (preg_match("#^(.+)-[0-9](\\.[0-9]+)-[0-9].ezpkg\$#", $packageName, $matches)) {
         $packageName = $matches[1];
     }
     $packageName = preg_replace(array("#[^a-zA-Z0-9]+#", "#_+#", "#(^_)|(_\$)#"), array('_', '_', ''), $packageName);
     $package = eZPackage::import($packageFilename, $packageName, false);
     if (is_object($package)) {
         // package successfully imported
         return;
     } elseif ($package == eZPackage::STATUS_ALREADY_EXISTS) {
         eZDebug::writeWarning("Package '{$packageName}' already exists.");
     } else {
         $this->ErrorMsg = ezpI18n::tr('design/standard/setup/init', 'Uploaded file is not an eZ Publish package');
     }
 }
예제 #4
0
    function validateImageFiles( $package, $http, $currentStepID, &$stepMap, &$persistentData, &$errorList )
    {
        // If we don't have an image we continue as normal
        if ( !eZHTTPFile::canFetch( 'PackageImageFile' ) )
            return true;

        $file = eZHTTPFile::fetch( 'PackageImageFile' );

        $result = true;
        if ( $file )
        {
            $mimeData = eZMimeType::findByFileContents( $file->attribute( 'original_filename' ) );
            $dir = eZSys::storageDirectory() .  '/temp';
            eZMimeType::changeDirectoryPath( $mimeData, $dir );
            $file->store( false, false, $mimeData );
            $persistentData['imagefiles'][] = $mimeData;
            $result = false;
        }
        return $result;
    }
    function fetchObjectAttributeHTTPInput( $http, $base, $contentObjectAttribute )
    {
        eZBinaryFileType::checkFileUploads();
        if ( $this->isDeletingFile( $http, $contentObjectAttribute ) )
        {
            return false;
        }

        if ( !eZHTTPFile::canFetch( $base . "_data_binaryfilename_" . $contentObjectAttribute->attribute( "id" ) ) )
            return false;

        $binaryFile = eZHTTPFile::fetch( $base . "_data_binaryfilename_" . $contentObjectAttribute->attribute( "id" ) );

        $contentObjectAttribute->setContent( $binaryFile );

        if ( $binaryFile instanceof eZHTTPFile )
        {
            $contentObjectAttributeID = $contentObjectAttribute->attribute( "id" );
            $version = $contentObjectAttribute->attribute( "version" );

            /*
            $mimeObj = new  eZMimeType();
            $mimeData = $mimeObj->findByURL( $binaryFile->attribute( "original_filename" ), true );
            $mime = $mimeData['name'];
            */

            $mimeData = eZMimeType::findByFileContents( $binaryFile->attribute( "original_filename" ) );
            $mime = $mimeData['name'];

            if ( $mime == '' )
            {
                $mime = $binaryFile->attribute( "mime_type" );
            }
            $extension = eZFile::suffix( $binaryFile->attribute( "original_filename" ) );
            $binaryFile->setMimeType( $mime );
            if ( !$binaryFile->store( "original", $extension ) )
            {
                eZDebug::writeError( "Failed to store http-file: " . $binaryFile->attribute( "original_filename" ),
                                     "eZBinaryFileType" );
                return false;
            }

            $binary = eZBinaryFile::fetch( $contentObjectAttributeID, $version );
            if ( $binary === null )
                $binary = eZBinaryFile::create( $contentObjectAttributeID, $version );

            $orig_dir = $binaryFile->storageDir( "original" );

            $binary->setAttribute( "contentobject_attribute_id", $contentObjectAttributeID );
            $binary->setAttribute( "version", $version );
            $binary->setAttribute( "filename", basename( $binaryFile->attribute( "filename" ) ) );
            $binary->setAttribute( "original_filename", $binaryFile->attribute( "original_filename" ) );
            $binary->setAttribute( "mime_type", $mime );

            $binary->store();

            $filePath = $binaryFile->attribute( 'filename' );
            $fileHandler = eZClusterFileHandler::instance();
            $fileHandler->fileStore( $filePath, 'binaryfile', true, $mime );

            $contentObjectAttribute->setContent( $binary );
        }
        return true;
    }
예제 #6
0
 /**
  * Fetches the HTTP-File into $file and fills in MIME-Type information into $mimeData.
  *
  * @return bool false if something went wrong.
  */
 function fetchHTTPFile($httpFileIdentifier, &$errors, &$file, &$mimeData)
 {
     $returnCode = eZHTTPFile::canFetch($httpFileIdentifier, 0);
     if ($returnCode !== eZHTTPFile::UPLOADEDFILE_OK && $returnCode !== true) {
         switch ($returnCode) {
             case eZHTTPFile::UPLOADEDFILE_DOES_NOT_EXIST:
                 $errors[] = array('description' => ezpI18n::tr('kernel/content/upload', 'A file is required for upload, no file were found.'));
                 break;
             case eZHTTPFile::UPLOADEDFILE_EXCEEDS_PHP_LIMIT:
             case eZHTTPFile::UPLOADEDFILE_EXCEEDS_MAX_SIZE:
                 $errors[] = array('description' => ezpI18n::tr('kernel/content/upload', 'The uploaded file size is above the maximum limit.'));
                 break;
             case eZHTTPFile::UPLOADEDFILE_MISSING_TMP_DIR:
             case eZHTTPFile::UPLOADEDFILE_CANT_WRITE:
             case eZHTTPFile::UPLOADEDFILE_UNKNOWN_ERROR:
                 $errors[] = array('description' => ezpI18n::tr('kernel/content/upload', 'A system error occured while writing the uploaded file.'));
                 break;
         }
         return false;
     }
     $file = eZHTTPFile::fetch($httpFileIdentifier);
     if (!$file instanceof eZHTTPFile) {
         $errors[] = array('description' => ezpI18n::tr('kernel/content/upload', 'Expected a eZHTTPFile object but got nothing.'));
         return false;
     }
     $mimeData = eZMimeType::findByFileContents($file->attribute("original_filename"));
     return true;
 }
function checkRelationActions($module, $class, $object, $version, $contentObjectAttributes, $editVersion, $editLanguage, $fromLanguage)
{
    $http = eZHTTPTool::instance();
    if ($module->isCurrentAction('BrowseForObjects')) {
        $objectID = $object->attribute('id');
        $assignedNodes = $object->attribute('assigned_nodes');
        $assignedNodesIDs = array();
        foreach ($assignedNodes as $node) {
            $assignedNodesIDs = $node->attribute('node_id');
        }
        unset($assignedNodes);
        eZContentBrowse::browse(array('action_name' => 'AddRelatedObject', 'description_template' => 'design:content/browse_related.tpl', 'content' => array('object_id' => $objectID, 'object_version' => $editVersion, 'object_language' => $editLanguage), 'keys' => array('class' => $class->attribute('id'), 'class_id' => $class->attribute('identifier'), 'classgroup' => $class->attribute('ingroup_id_list'), 'section' => $object->attribute('section_id')), 'ignore_nodes_select' => $assignedNodesIDs, 'from_page' => $module->redirectionURI('content', 'edit', array($objectID, $editVersion, $editLanguage, $fromLanguage))), $module);
        return eZModule::HOOK_STATUS_CANCEL_RUN;
    }
    if ($module->isCurrentAction('UploadFileRelation')) {
        $objectID = $object->attribute('id');
        $section = eZSection::fetch($object->attribute('section_id'));
        $navigationPart = false;
        if ($section) {
            $navigationPart = $section->attribute('navigation_part_identifier');
        }
        $location = false;
        if ($module->hasActionParameter('UploadRelationLocation')) {
            $location = $module->actionParameter('UploadRelationLocation');
        }
        // We only do direct uploading if we have the uploaded HTTP file
        // if not we need to go to the content/upload page.
        if (eZHTTPFile::canFetch('UploadRelationFile')) {
            $upload = new eZContentUpload();
            if ($upload->handleUpload($result, 'UploadRelationFile', $location, false)) {
                $relatedObjectID = $result['contentobject_id'];
                if ($relatedObjectID) {
                    $db = eZDB::instance();
                    $db->begin();
                    $object->addContentObjectRelation($relatedObjectID, $editVersion);
                    $db->commit();
                }
            }
        } else {
            eZContentUpload::upload(array('action_name' => 'RelatedObjectUpload', 'description_template' => 'design:content/upload_related.tpl', 'navigation_part_identifier' => $navigationPart, 'content' => array('object_id' => $objectID, 'object_version' => $editVersion, 'object_language' => $editLanguage), 'keys' => array('class' => $class->attribute('id'), 'class_id' => $class->attribute('identifier'), 'classgroup' => $class->attribute('ingroup_id_list'), 'section' => $object->attribute('section_id')), 'result_action_name' => 'UploadedFileRelation', 'ui_context' => 'edit', 'result_module' => array('content', 'edit', array($objectID, $editVersion, $editLanguage, $fromLanguage))), $module);
            return eZModule::HOOK_STATUS_CANCEL_RUN;
        }
    }
    if ($module->isCurrentAction('DeleteRelation')) {
        $objectID = $object->attribute('id');
        if ($http->hasPostVariable('DeleteRelationIDArray')) {
            $relationObjectIDs = $http->postVariable('DeleteRelationIDArray');
        } else {
            $relationObjectIDs = array();
        }
        $db = eZDB::instance();
        $db->begin();
        foreach ($relationObjectIDs as $relationObjectID) {
            $object->removeContentObjectRelation($relationObjectID, $editVersion);
        }
        $db->commit();
    }
    if ($module->isCurrentAction('NewObject')) {
        if ($http->hasPostVariable('ClassID')) {
            if ($http->hasPostVariable('SectionID')) {
                $sectionID = $http->postVariable('SectionID');
            } else {
                $sectionID = 0;
                /* Will be changed later */
            }
            $contentClassID = $http->postVariable('ClassID');
            $class = eZContentClass::fetch($contentClassID);
            $db = eZDB::instance();
            $db->begin();
            $relatedContentObject = $class->instantiate(false, $sectionID);
            $db->commit();
            $newObjectID = $relatedContentObject->attribute('id');
            $relatedContentVersion = $relatedContentObject->attribute('current');
            if ($relatedContentObject->attribute('can_edit')) {
                $db = eZDB::instance();
                $db->begin();
                $assignmentHandler = new eZContentObjectAssignmentHandler($relatedContentObject, $relatedContentVersion);
                $sectionID = (int) $assignmentHandler->setupAssignments(array('group-name' => 'RelationAssignmentSettings', 'default-variable-name' => 'DefaultAssignment', 'specific-variable-name' => 'ClassSpecificAssignment', 'section-id-wanted' => true, 'fallback-node-id' => $object->attribute('main_node_id')));
                $http->setSessionVariable('ParentObject', array($object->attribute('id'), $editVersion, $editLanguage));
                $http->setSessionVariable('NewObjectID', $newObjectID);
                /* Change section ID to the same one as the main node placement */
                $db->query("UPDATE ezcontentobject SET section_id = {$sectionID} WHERE id = {$newObjectID}");
                $db->commit();
                $module->redirectToView('edit', array($relatedContentObject->attribute('id'), $relatedContentObject->attribute('current_version'), false));
            } else {
                $db = eZDB::instance();
                $db->begin();
                $relatedContentObject->purge();
                $db->commit();
            }
            return;
        }
    }
}
}
if ($http->hasPostVariable('CancelButton')) {
    $csvFilePath = '';
    return $module->redirectToView('subscription_list', array($nodeId));
} elseif ($http->hasPostVariable('ImportButton')) {
    // check if user has rights to import the users
    $user = eZUser::currentUser();
    $access = $user->hasAccessTo('newsletter', 'subscription_list_csvimport_import');
    if ($access['accessWord'] == 'yes') {
        $importCsvFile = true;
    } else {
        return $module->handleError(eZError::KERNEL_ACCESS_DENIED, 'kernel');
    }
}
// upload csv and store data
if (eZHTTPFile::canFetch('UploadCsvFile') && $importId == 0) {
    $importType = 'cjwnl_csv';
    $dataText = '';
    $remoteId = false;
    //$remoteId = 'csv:' . md5( $csvFilePath );
    // create new Import Object
    $importObject = CjwNewsletterImport::create($listContentObjectId, $importType, $note, $dataText, $remoteId);
    $importObject->store();
    $binaryFile = eZHTTPFile::fetch('UploadCsvFile');
    $filePathUpload = $binaryFile->attribute('filename');
    $fileSep = eZSys::fileSeparator();
    // $fileSize = filesize( $filePathUpload );
    //$siteDir =  eZSys::siteDir();
    $dir = eZSys::varDirectory() . $fileSep . 'cjw_newsletter' . $fileSep . 'csvimport';
    $importId = $importObject->attribute('id');
    $fileName = $importId . '-' . date("Ymd-His", $importObject->attribute('created')) . '-' . $binaryFile->attribute('original_filename');
예제 #9
0
        }
    }
    else
    {
        eZDebug::writeError( "Cannot import document, supplied placement nodeID is not valid." );
        $tpl->setVariable( 'error', makeErrorArray( eZOOImport::ERROR_PLACEMENTINVALID,
                                                    ezpI18n::tr( 'extension/ezodf/import/error', "Cannot import document, supplied placement nodeID is not valid." ) ) );
    }

//    $tpl->setVariable( 'oo_mode', 'imported' );
}
else
{
    $tpl->setVariable( 'oo_mode', 'browse' );

    if( eZHTTPFile::canFetch( "oo_file" ) )
    {
        $file = eZHTTPFile::fetch( "oo_file" );

        if ( $file )
        {
            if ( $file->store() )
            {
                $fileName = $file->attribute( 'filename' );

                $originalFileName = $file->attribute( 'original_filename' );

                // If we have the NodeID do the import/replace directly
                if (  $http->sessionVariable( 'oo_direct_import_node' )  )
                {
                    $nodeID = $http->sessionVariable( 'oo_direct_import_node' );
예제 #10
0
 function fetchObjectAttributeHTTPInput($http, $base, $contentObjectAttribute)
 {
     eZMediaType::checkFileUploads();
     $classAttribute = $contentObjectAttribute->contentClassAttribute();
     $player = $classAttribute->attribute("data_text1");
     $pluginPage = eZMediaType::pluginPage($player);
     $contentObjectAttributeID = $contentObjectAttribute->attribute("id");
     $version = $contentObjectAttribute->attribute("version");
     $width = $http->postVariable($base . "_data_media_width_" . $contentObjectAttribute->attribute("id"));
     $height = $http->postVariable($base . "_data_media_height_" . $contentObjectAttribute->attribute("id"));
     $quality = $http->hasPostVariable($base . "_data_media_quality_" . $contentObjectAttribute->attribute("id")) ? $http->postVariable($base . "_data_media_quality_" . $contentObjectAttribute->attribute("id")) : null;
     if ($http->hasPostVariable($base . "_data_media_controls_" . $contentObjectAttribute->attribute("id"))) {
         $controls = $http->postVariable($base . "_data_media_controls_" . $contentObjectAttribute->attribute("id"));
     } else {
         $controls = null;
     }
     $media = eZMedia::fetch($contentObjectAttributeID, $version);
     if ($media == null) {
         $media = eZMedia::create($contentObjectAttributeID, $version);
     }
     $media->setAttribute("contentobject_attribute_id", $contentObjectAttributeID);
     $media->setAttribute("version", $version);
     $media->setAttribute("width", $width);
     $media->setAttribute("height", $height);
     $media->setAttribute("quality", $quality);
     $media->setAttribute("controls", $controls);
     $media->setAttribute("pluginspage", $pluginPage);
     if ($http->hasPostVariable($base . "_data_media_is_autoplay_" . $contentObjectAttribute->attribute("id"))) {
         $media->setAttribute("is_autoplay", true);
     } else {
         $media->setAttribute("is_autoplay", false);
     }
     if ($http->hasPostVariable($base . "_data_media_has_controller_" . $contentObjectAttribute->attribute("id"))) {
         $media->setAttribute("has_controller", true);
     } else {
         $media->setAttribute("has_controller", false);
     }
     if ($http->hasPostVariable($base . "_data_media_is_loop_" . $contentObjectAttribute->attribute("id"))) {
         $media->setAttribute("is_loop", true);
     } else {
         $media->setAttribute("is_loop", false);
     }
     $mediaFilePostVarName = $base . "_data_mediafilename_" . $contentObjectAttribute->attribute("id");
     if (eZHTTPFile::canFetch($mediaFilePostVarName)) {
         $mediaFile = eZHTTPFile::fetch($mediaFilePostVarName);
     } else {
         $mediaFile = null;
     }
     if ($mediaFile instanceof eZHTTPFile) {
         $mimeData = eZMimeType::findByFileContents($mediaFile->attribute("original_filename"));
         $mime = $mimeData['name'];
         if ($mime == '') {
             $mime = $mediaFile->attribute("mime_type");
         }
         $extension = eZFile::suffix($mediaFile->attribute("original_filename"));
         $mediaFile->setMimeType($mime);
         if (!$mediaFile->store("original", $extension)) {
             eZDebug::writeError("Failed to store http-file: " . $mediaFile->attribute("original_filename"), "eZMediaType");
             return false;
         }
         $orig_dir = $mediaFile->storageDir("original");
         eZDebug::writeNotice("dir={$orig_dir}");
         $media->setAttribute("filename", basename($mediaFile->attribute("filename")));
         $media->setAttribute("original_filename", $mediaFile->attribute("original_filename"));
         $media->setAttribute("mime_type", $mime);
         $filePath = $mediaFile->attribute('filename');
         $fileHandler = eZClusterFileHandler::instance();
         $fileHandler->fileStore($filePath, 'media', true, $mime);
     } else {
         if ($media->attribute('filename') == '') {
             $media->remove();
             return false;
         }
     }
     $media->store();
     $contentObjectAttribute->setContent($media);
     return true;
 }
    if ( $http->hasPostVariable( 'NodeID' ) );
        $nodeID = $http->postVariable( 'NodeID' );

    if ( $http->hasPostVariable( 'ImportType' ) );
        $importType = $http->postVariable( 'ImportType' );

    // User authentication
    $user = eZUser::loginUser( $username, $password );
    if ( $user == false )
    {
        print( 'problem:Authentication failed' );
        eZExecution::cleanExit();
    }

    if ( !eZHTTPFile::canFetch( 'File' ) )
    {
        print( 'problem:Can\'t fetch HTTP file.' );
        eZExecution::cleanExit();
    }

    $file = eZHTTPFile::fetch('File');

    $fileName = $file->attribute( 'filename' );
    $originalFilename = $file->attribute('original_filename');

    $content = base64_decode( file_get_contents( $fileName ) );

    $fd = fopen( $fileName, 'w' );
    fwrite( $fd, $content );
    fclose( $fd );
                                    $subscription = eZSubscription::create($subscriptionListID, $data[$labelMap['firstname']][$rowIndex], $data[$labelMap['name']][$rowIndex], $data[$labelMap['mobile']][$rowIndex], $data[$labelMap['email']][$rowIndex]);
                                    $subscription->setAttribute('status', eZSubscription::StatusApproved);
                                    $subscription->publish();
                                }
                            }
                        }
                    }
                }
                $http->removeSessionVariable('CSVData');
                return $Module->redirectToView('subscription_list', array($subscriptionList->attribute('url_alias')));
            }
        }
    }
}
$data = array();
if (eZHTTPFile::canFetch('UploadCSVFile')) {
    $binaryFile = eZHTTPFile::fetch('UploadCSVFile');
    $parser = new eZCSVParser($binaryFile->attribute('filename'), $http->hasPostVariable('FirstRowLabel') ? true : false, $delimiter);
    $data = $parser->data();
    $http->setSessionVariable('CSVData', $data);
} else {
    if ($http->hasSessionVariable('CSVData')) {
        $data = $http->sessionVariable('CSVData');
    }
}
$tpl = eZNewsletterTemplateWrapper::templateInit();
$tpl->setVariable('subscriptionList', $subscriptionList);
$tpl->setVariable('data', $data);
$tpl->setVariable('CSVDelimiter', $delimiter);
if ($http->hasPostVariable('RowNum')) {
    $tpl->setVariable('RowNum', $http->postVariable('RowNum'));
예제 #13
0
 function fetchHTTPFile($httpFileIdentifier, &$errors, &$file, &$mimeData)
 {
     if (!eZHTTPFile::canFetch($httpFileIdentifier)) {
         $errors[] = array('description' => ezpI18n::tr('kernel/content/upload', 'A file is required for upload, no file were found.'));
         return false;
     }
     $file = eZHTTPFile::fetch($httpFileIdentifier);
     if (!$file instanceof eZHTTPFile) {
         $errors[] = array('description' => ezpI18n::tr('kernel/content/upload', 'Expected a eZHTTPFile object but got nothing.'));
         return false;
     }
     $mimeData = eZMimeType::findByFileContents($file->attribute("original_filename"));
     return false;
 }
 function fetchCollectionAttributeHTTPInput($collection, $collectionAttribute, $http, $base, $contentObjectAttribute)
 {
     EnhancedeZBinaryFileType::checkFileUploads();
     if (eZHTTPFile::canFetch($base . "_data_enhancedbinaryfilename_" . $contentObjectAttribute->attribute("id")) != eZHTTPFile::UPLOADEDFILE_OK) {
         return false;
     }
     //Check allowed file type - must do it here,again - otherwise an illegal
     //file will still be created in the storage directory
     $binaryFile = eZHTTPFile::fetch($base . "_data_enhancedbinaryfilename_" . $contentObjectAttribute->attribute("id"));
     if (!$binaryFile) {
         return eZInputValidator::STATE_INVALID;
     }
     $moduleINI = eZINI::instance('module.ini.append.php', 'settings');
     $allowed = $moduleINI->variable('AllowedFileTypes', 'AllowedFileTypeList');
     // $binaryFile->attribute( 'mime_type_part' ) not always the extension
     $extension = preg_replace('/.*\\.(.+?)$/', '\\1', $binaryFile->attribute("original_filename"));
     if (!in_array(strtolower($extension), $allowed)) {
         $contentObjectAttribute->setValidationError(ezpI18n::tr('kernel/classes/datatypes', 'Failed to store file. Only the following file types are allowed: %1.'), implode(", ", $allowed));
         return eZInputValidator::STATE_INVALID;
     }
     //$contentObjectAttribute->setContent( $binaryFile );
     if ($binaryFile instanceof eZHTTPFile) {
         //clean up older files.
         $moduleINI = eZINI::instance('module.ini.append.php', 'settings');
         $maxFiles = $moduleINI->variable('RemoveFiles', 'MaxFiles');
         $downloadPath = $moduleINI->variable('RemoveFiles', 'DownloadPath');
         $downloadPath = trim($downloadPath, "/");
         if (!$downloadPath) {
             $downloadPath = 'original/collected';
         }
         if ($maxFiles > 0) {
             $Files = array();
             $storageDir = eZSys::storageDirectory();
             $fileCollection = eZDir::recursiveFindRelative($storageDir, $downloadPath, '.*');
             if (count($fileCollection) >= $maxFiles) {
                 foreach ($fileCollection as $fileItem) {
                     $lastModified = filemtime($storageDir . '/' . $fileItem);
                     $Files[$fileItem] = filemtime($storageDir . '/' . $fileItem);
                 }
                 asort($Files, SORT_NUMERIC);
                 while (count($Files) >= $maxFiles) {
                     $removeFile = key($Files);
                     if (file_exists($storageDir . '/' . $removeFile)) {
                         if (!unlink($storageDir . '/' . $removeFile)) {
                             eZDebug::writeError("Failed to delete file: " . $storageDir . '/' . $removeFile, "EnhancedeZBinaryFileType");
                             return false;
                         }
                     }
                     array_shift($Files);
                 }
             }
         }
         //end cleanup
         // $contentObjectAttributeID = $contentObjectAttribute->attribute( "id" );
         //$version = $contentObjectAttribute->attribute( "version" );
         $mimeData = eZMimeType::findByFileContents($binaryFile->attribute("original_filename"));
         //Nice name but it still uses the extension to set the mimetype and therefore can be bogus
         $mime = $mimeData['name'];
         if ($mime == '') {
             $mime = $binaryFile->attribute("mime_type");
         }
         $extension = eZFile::suffix($binaryFile->attribute("original_filename"));
         $binaryFile->setMimeType($mime);
         if (!$binaryFile->store($downloadPath, $extension)) {
             eZDebug::writeError("Failed to store http-file: " . $binaryFile->attribute("original_filename"), "EnhancedeZBinaryFileType");
             return false;
         }
         //Adds xmltext to collection attribute with file info to data_text attribute
         $doc = new DOMDocument('1.0', 'utf-8');
         $root = $doc->createElement('binaryfile-info');
         $binaryFileList = $doc->createElement('binaryfile-attributes');
         foreach ($binaryFile as $key => $binaryFileItem) {
             $binaryFileElement = $doc->createElement($key, $binaryFileItem);
             $binaryFileList->appendChild($binaryFileElement);
         }
         $root->appendChild($binaryFileList);
         $doc->appendChild($root);
         $docText = EnhancedeZBinaryFileType::domString($doc);
         $collectionAttribute->setAttribute('data_text', $docText);
     }
     return true;
 }
 /**
  * Saves a file for import option
  * @param array $args First value: handler id, second value: option id
  * @return string saved file name
  * @throws SQLIImportRuntimeException
  */
 public static function fileupload($args)
 {
     if (count($args) !== 2) {
         throw new SQLIImportRuntimeException('Invalid arguments');
     }
     $handler = $args[0];
     $option = $args[1];
     $importINI = eZINI::instance('sqliimport.ini');
     $handlerSection = $handler . '-HandlerSettings';
     if (!$importINI->hasSection($handlerSection)) {
         throw new SQLIImportRuntimeException('No config for handler ' . $handler);
     }
     $options = $importINI->variable($handlerSection, 'Options');
     if (!in_array($option, $options)) {
         throw new SQLIImportRuntimeException('Invalid option ' . $option);
     }
     $returnCode = eZHTTPFile::canFetch('Filedata', 0);
     if ($returnCode !== eZHTTPFile::UPLOADEDFILE_OK && $returnCode !== true) {
         throw new SQLIImportRuntimeException('Invalid uploaded file');
     }
     $file = eZHTTPFile::fetch('Filedata');
     if (!$file instanceof eZHTTPFile) {
         throw new SQLIImportRuntimeException('Invalid uploaded file');
     }
     if (self::checkFileFormat($handler, $option, $file)) {
         $dir = $importINI->variable('OptionsGUISettings', 'UploadedFilesDir') . DIRECTORY_SEPARATOR . $handler . DIRECTORY_SEPARATOR . $option;
         //temporarily store uploaded file before clusterizing it
         $file->store($dir);
         eZClusterFileHandler::instance()->fileStore($file->attribute('filename'), false, true);
         return $file->attribute('filename');
     }
 }