function farm_quantity_log_add_measurements in farmOS 7
Helper function for adding quantity measurements to a log.
Parameters
\Log $log: A log entity.
array $measurements: An array of measurements to add to the log. Example: $measurements = array( array( 'measure' => 'weight', 'value' => 100, 'units' => 'lbs', 'label' => 'Foo', ), );
3 calls to farm_quantity_log_add_measurements()
- farm_crop_planting_quick_form_submit in modules/
farm/ farm_crop/ farm_crop.farm_quick.planting.inc - Planting quick form submit.
- farm_quantity_log_create in modules/
farm/ farm_quantity/ farm_quantity_log/ farm_quantity_log.module - Helper function for creating a farm quantity measurement log.
- farm_soil_nrcs_disturbance_form_stir_submit in modules/
farm/ farm_soil/ farm_soil_nrcs/ farm_soil_nrcs.module - Submit function for saving the STIR value in soil disturbance quick form.
File
- modules/
farm/ farm_quantity/ farm_quantity_log/ farm_quantity_log.module, line 404 - Farm quantity log module.
Code
function farm_quantity_log_add_measurements($log, $measurements) {
// If the log is not valid, or the measurements are empty, bail.
if (empty($log->id) || empty($measurements)) {
return;
}
// Iterate through the measurements.
foreach ($measurements as $measurement) {
// Create a new quantity field_collection entity attached to the log.
$quantity = entity_create('field_collection_item', array(
'field_name' => 'field_farm_quantity',
));
$quantity
->setHostEntity('log', $log);
// Create an entity wrapper for the quantity.
$quantity_wrapper = entity_metadata_wrapper('field_collection_item', $quantity);
// Set the quantity measure, if available.
if (!empty($measurement['measure'])) {
$quantity_wrapper->field_farm_quantity_measure
->set($measurement['measure']);
}
// Set the quantity value, if available.
if (isset($measurement['value'])) {
$value_fraction = fraction_from_decimal($measurement['value']);
$quantity_wrapper->field_farm_quantity_value->numerator
->set($value_fraction
->getNumerator());
$quantity_wrapper->field_farm_quantity_value->denominator
->set($value_fraction
->getDenominator());
}
// Set the units, if available.
if (!empty($measurement['units'])) {
// Load/create units term.
$units_term = farm_term($measurement['units'], 'farm_quantity_units');
// Set the quantity units.
$quantity_wrapper->field_farm_quantity_units = $units_term;
}
// Set the label, if available.
if (!empty($measurement['label'])) {
$quantity_wrapper->field_farm_quantity_label
->set($measurement['label']);
}
// Save the quantity.
$quantity_wrapper
->save();
}
}