You are here

public function CustomFilterMigrationSource::prepareRow in Custom filter 2.0.x

Adds additional data to the row.

Parameters

\Drupal\migrate\Row $row: The row object.

Return value

bool FALSE if this row needs to be skipped.

Overrides SourcePluginBase::prepareRow

File

src/Plugin/migrate/source/CustomFilterMigrationSource.php, line 62

Class

CustomFilterMigrationSource
Migration source for Custom Filter entities.

Namespace

Drupal\customfilter\Plugin\migrate\source

Code

public function prepareRow(Row $row) {
  $result = parent::prepareRow($row);

  // Add associated data from the rules table.
  $query = $this
    ->select('customfilter_rule', 'r');
  $query
    ->join('customfilter_filter', 'f', 'f.fid = r .fid');
  $query
    ->fields('r', [
    'rid',
    'fid',
    'prid',
    'name',
    'description',
    'enabled',
    'matches',
    'pattern',
    'replacement',
    'code',
    'weight',
  ]);
  $query
    ->fields('f', [
    'type',
  ]);
  $query
    ->condition('r.fid', $row
    ->getSourceProperty('fid'));
  $rules = $query
    ->execute()
    ->fetchAllAssoc('rid');
  foreach ($rules as &$rule) {

    /* Prefix rid with 'rule_' to match how filters are prefixed. */
    $rule['rid'] = 'rule_' . $rule['rid'];

    /* Fix prid to mimic the rid prefixing. Also prid 0 is now ''. */
    $rule['prid'] = $rule['prid'] ? 'rule_' . $rule['prid'] : '';
  }
  $row
    ->setSourceProperty('rules', $rules);
  return $result;
}