You are here

function _group_filenames in Ubercart 5

Group filenames by an attribute while maintaining order.

@return: The sorted array of objects

Parameters

$files: The array of objects

1 call to _group_filenames()
uc_file_files_table in uc_file/uc_file.module
Table builder for file products admin

File

uc_file/uc_file.module, line 1445
Allows products to be associated with downloadable files.

Code

function _group_filenames($objects) {
  $output = array();
  $existing = array();
  foreach ($objects as $key => $object) {
    $filename = $object->filename;
    if (!in_array($filename, array_keys($existing))) {
      $existing[$filename] = $key;
      $output[] = $object;
    }
    else {
      $inserted_index = $existing[$filename] + 1;
      foreach ($existing as $filename => $index) {
        $existing[$filename] = $index >= $inserted_index ? $index + 1 : $index;
      }
      array_splice($output, $inserted_index, 0, array(
        $inserted_index => $object,
      ));
    }
  }
  return $output;
}