<?php
/**
 * Sort Helper Functions
 *
 * @package WP_Ultimo\Functions
 * @since   2.0.11
 */

// Exit if accessed directly
defined('ABSPATH') || exit;

/**
 * Sort arrays based on a particular column.
 *
 * @since 2.0.0
 *
 * @param array  $a The first array.
 * @param array  $b The second array.
 * @param string $column The column to compare.
 * @return int
 */
function wu_sort_by_column($a, $b, $column = 'order') {

	$a[$column] = isset($a[$column]) ? (int) $a[$column] : 50;

	$b[$column] = isset($b[$column]) ? (int) $b[$column] : 50;

	return $a[$column] - $b[$column];

} // end wu_sort_by_column;

/**
 * Sorts the fields.
 *
 * @param array $a The first array containing a order key.
 * @param array $b The second array containing a order key.
 * @return int
 */
function wu_sort_by_order($a, $b) {

	return wu_sort_by_column($a, $b, 'order');

} // end wu_sort_by_order;

/**
 * Loops through the list items and adds a order key if none is set, based on the index.
 *
 * @since 2.0.7
 *
 * @param array  $list The list of sortable elements.
 * @param string $order_key The order key.
 * @return array
 */
function wu_set_order_from_index($list, $order_key = 'order') {

	$index = 1;

	foreach ($list as &$item) {

		if (isset($item[$order_key]) === false) {

			$index = $index ? $index : 1; // phpcs:ignore

			$item[$order_key] = $index * 10;

			$index++;

		} // end if;

	} // end foreach;

	return $list;

} // end wu_set_order_from_index;