Ejemplo n.º 1
0
 protected function importFiles($item)
 {
     $ingester = Omeka_File_Ingest_AbstractIngest::factory('Url', $item, array());
     $files = $this->files();
     //have to step through one by one so we can save the id map for each $fileRecord and $fileData
     foreach ($files as $fileData) {
         try {
             $fileRecords = $ingester->ingest(array($fileData));
         } catch (Exception $e) {
             _log($e);
             continue;
         }
         $item->saveFiles();
         $fileRecord = array_pop($fileRecords);
         $map = new OmekaApiImportRecordIdMap();
         $map->record_type = 'File';
         $map->local_id = $fileRecord->id;
         $map->external_id = $fileData['externalId'];
         $map->endpoint_uri = $this->endpointUri;
         $map->save();
     }
 }
Ejemplo n.º 2
0
 /**
  * Add files to an item.
  * 
  * @param string|Omeka_File_Ingest_AbstractIngest $transferStrategy
  * This can either be one of the following strings denoting built-in transfer
  * methods: 
  *      'Upload', 'Filesystem', 'Url'
  * Or it could be an implemented Omeka_File_Ingest_AbstractIngest class.
  * 
  * @param string|array $files This can be a single string, an array of strings,
  * or an array of arrays, depending on the parameters that are needed by the 
  * underlying strategy.  Expected parameters for the built in strategies are
  * as follows:
  * <ul>
  *      <li>'Upload' => null|string If a string is given, it represents the 
  * POST parameter name containing the uploaded file(s).  If null is given,
  * all files in the POST will be ingested.</li>
  * 
  *      <li>'Url|Filesystem' => string|array If a string is given, this represents
  * the source identifier of a single file (the URL representing the file, or 
  * the absolute file path, respectively).  If an array is given, it assumes
  * that each entry in the array must be either an array or a string.  If it
  * an array, there are several default keys that may be present:
  *      <ul>
  *          <li>'source' => Any identifier that is appropriate to the transfer
  * strategy in use.  For 'Url', this should be a valid URL.  For 'Filesystem',
  * it must be an absolute path to the source file to be transferred.</li>
  *          <li>'name' => OPTIONAL The filename to give to the transferred
  * file.  This can be any arbitrary filename and will be listed as the 
  * original filename of the file.  This will also be used to generate the 
  * archival filename for the file.  If none is given, this defaults to using
  * the getOriginalFileName() method of the transfer adapter.</li>
  *          <li>'metadata' => OPTIONAL This could contain any metadata that needs to be
  * associated with the file.  This should be indexed in the same fashion
  * as for items.  See ActsAsElementText::addTextsByArray()</li>
  *      </ul></li>
  * </ul>
  * @param array $options OPTIONAL May contain the following flags where
  * appropriate:
  * <ul>
  *      <li>'ignore_invalid_files' => Do not throw exceptions when
  * attempting to ingest invalid files.  Instead, skip to the next file in
  * the list and continue processing.  False by default. (all except Upload).</li>
  *      <li>'ignoreNoFile' => Ignore errors resulting from POSTs that do not 
  * contain uploaded files as expected (only for Upload).</li>
  * </ul>
  * @return array Set of File records ingested.  May be empty if no files 
  * were ingested.
  */
 public function addFiles($transferStrategy, $files, array $options = array())
 {
     if ($transferStrategy instanceof Omeka_File_Ingest_AbstractIngest) {
         $ingester = $transferStrategy;
         $ingester->setItem($this->_record);
         $ingester->setOptions($options);
     } else {
         $ingester = Omeka_File_Ingest_AbstractIngest::factory($transferStrategy, $this->_record, $options);
     }
     $this->_addIngestValidators($ingester);
     $fileRecords = $ingester->ingest($files);
     // If we are attaching files to a pre-existing item, only save the files.
     if ($this->_record->exists()) {
         $this->_record->saveFiles();
     }
     return $fileRecords;
 }