You are here

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();
  }
}