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\d7Code
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);
}