Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
80.00% |
4 / 5 |
CRAP | |
76.67% |
23 / 30 |
| File | |
0.00% |
0 / 1 |
|
80.00% |
4 / 5 |
8.81 | |
76.67% |
23 / 30 |
| query | |
100.00% |
1 / 1 |
4 | |
100.00% |
13 / 13 |
|||
| initializeIterator | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| prepareRow | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| fields | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
| getIds | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\file\Plugin\migrate\source\d7\File. | |
| */ | |
| namespace Drupal\file\Plugin\migrate\source\d7; | |
| use Drupal\Core\Database\Query\Condition; | |
| use Drupal\migrate\Row; | |
| use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase; | |
| /** | |
| * Drupal 7 file source from database. | |
| * | |
| * @MigrateSource( | |
| * id = "d7_file" | |
| * ) | |
| */ | |
| class File extends DrupalSqlBase { | |
| /** | |
| * The public file directory path. | |
| * | |
| * @var string | |
| */ | |
| protected $publicPath; | |
| /** | |
| * The private file directory path, if any. | |
| * | |
| * @var string | |
| */ | |
| protected $privatePath; | |
| /** | |
| * The temporary file directory path. | |
| * | |
| * @var string | |
| */ | |
| protected $temporaryPath; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function query() { | |
| $query = $this->select('file_managed', 'f') | |
| ->fields('f') | |
| ->orderBy('timestamp'); | |
| // Filter by scheme(s), if configured. | |
| if (isset($this->configuration['scheme'])) { | |
| $schemes = array(); | |
| // Accept either a single scheme, or a list. | |
| foreach ((array) $this->configuration['scheme'] as $scheme) { | |
| $schemes[] = rtrim($scheme) . '://'; | |
| } | |
| $schemes = array_map([$this->getDatabase(), 'escapeLike'], $schemes); | |
| // uri LIKE 'public://%' OR uri LIKE 'private://%' | |
| $conditions = new Condition('OR'); | |
| foreach ($schemes as $scheme) { | |
| $conditions->condition('uri', $scheme . '%', 'LIKE'); | |
| } | |
| $query->condition($conditions); | |
| } | |
| return $query; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function initializeIterator() { | |
| $this->publicPath = $this->variableGet('file_public_path', 'sites/default/files'); | |
| $this->privatePath = $this->variableGet('file_private_path', NULL); | |
| $this->temporaryPath = $this->variableGet('file_temporary_path', '/tmp'); | |
| return parent::initializeIterator(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function prepareRow(Row $row) { | |
| // Compute the filepath property, which is a physical representation of | |
| // the URI relative to the Drupal root. | |
| $path = str_replace(['public:/', 'private:/', 'temporary:/'], [$this->publicPath, $this->privatePath, $this->temporaryPath], $row->getSourceProperty('uri')); | |
| // At this point, $path could be an absolute path or a relative path, | |
| // depending on how the scheme's variable was set. So we need to shear out | |
| // the source_base_path in order to make them all relative. | |
| // @todo Don't depend on destination configuration. | |
| // @see https://www.drupal.org/node/2577871 | |
| $path = str_replace($this->migration->get('destination')['source_base_path'], NULL, $path); | |
| $row->setSourceProperty('filepath', $path); | |
| return parent::prepareRow($row); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function fields() { | |
| return array( | |
| 'fid' => $this->t('File ID'), | |
| 'uid' => $this->t('The {users}.uid who added the file. If set to 0, this file was added by an anonymous user.'), | |
| 'filename' => $this->t('File name'), | |
| 'filepath' => $this->t('File path'), | |
| 'filemime' => $this->t('File Mime Type'), | |
| 'status' => $this->t('The published status of a file.'), | |
| 'timestamp' => $this->t('The time that the file was added.'), | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getIds() { | |
| $ids['fid']['type'] = 'integer'; | |
| return $ids; | |
| } | |
| } |