You are here

public function MerciResource::prepareRow in MERCI (Manage Equipment Reservations, Checkout and Inventory) 8.2

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

modules/merci_migration/src/Plugin/migrate/source/d7/MerciResource.php, line 146

Class

MerciResource
Drupal 7 node source from database.

Namespace

Drupal\merci_migration\Plugin\migrate\source\d7

Code

public function prepareRow(Row $row) {

  // Get Field API field values.
  $nid = $row
    ->getSourceProperty('nid');
  $vid = $row
    ->getSourceProperty('vid');
  foreach (array_keys($this
    ->getFields('node', $row
    ->getSourceProperty('type'))) as $field) {
    $row
      ->setSourceProperty($field, $this
      ->getFieldValues('node', $field, $nid, $vid));
  }

  // Make sure we always have a translation set.
  if ($row
    ->getSourceProperty('tnid') == 0) {
    $row
      ->setSourceProperty('tnid', $row
      ->getSourceProperty('nid'));
  }
  $query = $this
    ->select('variable', 'v')
    ->fields('v')
    ->condition('name', 'merci_grouping_' . $row
    ->getSourceProperty('type'));
  $result = $query
    ->execute()
    ->fetchAll();
  if (!empty($result)) {
    $tid = unserialize($result[0]['value']);
    if ($tid) {
      $row
        ->setSourceProperty('resource_tree', $tid);
    }
  }

  //Merge merci_resource_node and merci_bucket_node columns.
  $merci_type = $row
    ->getSourceProperty('merci_type_setting');
  $fields = array(
    'merci_default_availability',
    'merci_sub_type',
    'merci_late_fee_per_hour',
    'merci_rate_per_hour',
    'merci_fee_free_hours',
    'merci_min_cancel_hours',
    'merci_autocheckout',
    'merci_autocheckin',
    'merci_selfcheckout',
    'merci_daypart1_price',
    'merci_daypart2_price',
    'merci_daypart3_price',
    'merci_weekend_price',
  );
  if ($merci_type == 'bucket') {
    $alias = 'mbn';
    foreach ($fields as $field) {
      $row
        ->setSourceProperty($field, $row
        ->getSourceProperty($alias . '_' . $field));
    }
  }
  $type = $row
    ->getSourceProperty('type');
  $permissions = $this
    ->select('role_permission', 'rp')
    ->fields('rp', [
    'rid',
    'permission',
  ])
    ->condition('permission', 'edit own ' . $type . ' content')
    ->execute()
    ->fetchCol();
  if (!empty($permissions)) {
    $permissions = $this
      ->select('role_permission', 'rp')
      ->fields('rp', [
      'rid',
      'permission',
    ])
      ->condition('permission', 'delete own ' . $type . ' content')
      ->condition('rid', $permissions, 'IN')
      ->execute()
      ->fetchAll();
  }
  $row
    ->setSourceProperty('permissions', $permissions);
  return parent::prepareRow($row);
}