You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							143 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
	
	
							143 lines
						
					
					
						
							3.2 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
/**
 | 
						|
*	This is the array library for Chamilo.
 | 
						|
*	Include/require it in your code to use its functionality.
 | 
						|
*
 | 
						|
*	@package chamilo.library
 | 
						|
*/
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Removes duplicate values from a dimensional array
 | 
						|
 *
 | 
						|
 * @param array $array dimensional array
 | 
						|
 * @return array an array with unique values
 | 
						|
 *
 | 
						|
 */
 | 
						|
function array_unique_dimensional($array)
 | 
						|
{
 | 
						|
    if (!is_array($array)) {
 | 
						|
        return $array;
 | 
						|
    }
 | 
						|
 | 
						|
    foreach ($array as &$myvalue) {
 | 
						|
        $myvalue = serialize($myvalue);
 | 
						|
    }
 | 
						|
 | 
						|
    $array = array_unique($array);
 | 
						|
 | 
						|
    foreach ($array as &$myvalue) {
 | 
						|
        $myvalue = unserialize($myvalue);
 | 
						|
    }
 | 
						|
    return $array;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 *
 | 
						|
 * Sort multidimensional arrays
 | 
						|
 *
 | 
						|
 * @param    array    unsorted multidimensional array
 | 
						|
 * @param    string    key to be sorted
 | 
						|
 * @return    array    result array
 | 
						|
 * @author    found in http://php.net/manual/en/function.sort.php
 | 
						|
 */
 | 
						|
function msort($array, $id = 'id', $order = 'desc')
 | 
						|
{
 | 
						|
    if (empty($array)) {
 | 
						|
        return $array;
 | 
						|
    }
 | 
						|
    $temp_array = array();
 | 
						|
    while (count($array) > 0) {
 | 
						|
        $lowest_id = 0;
 | 
						|
        $index = 0;
 | 
						|
        foreach ($array as $item) {
 | 
						|
            if ($order == 'desc') {
 | 
						|
                if ($item[$id] < $array[$lowest_id][$id]) {
 | 
						|
                    $lowest_id = $index;
 | 
						|
                }
 | 
						|
            } else {
 | 
						|
                if ($item[$id] > $array[$lowest_id][$id]) {
 | 
						|
                    $lowest_id = $index;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            $index++;
 | 
						|
        }
 | 
						|
        $temp_array[] = $array[$lowest_id];
 | 
						|
        $array = array_merge(
 | 
						|
            array_slice($array, 0, $lowest_id),
 | 
						|
            array_slice($array, $lowest_id + 1)
 | 
						|
        );
 | 
						|
    }
 | 
						|
    return $temp_array;
 | 
						|
}
 | 
						|
 | 
						|
function array_walk_recursive_limited(
 | 
						|
    &$array,
 | 
						|
    $function,
 | 
						|
    $apply_to_keys_also = false
 | 
						|
) {
 | 
						|
    static $recursive_counter = 0;
 | 
						|
    if (++$recursive_counter > 1000) {
 | 
						|
        die('possible deep recursion attack');
 | 
						|
    }
 | 
						|
    foreach ($array as $key => $value) {
 | 
						|
        if (is_array($value)) {
 | 
						|
            array_walk_recursive_limited(
 | 
						|
                $array[$key],
 | 
						|
                $function,
 | 
						|
                $apply_to_keys_also
 | 
						|
            );
 | 
						|
        } else {
 | 
						|
            $array[$key] = $function($value);
 | 
						|
        }
 | 
						|
        if ($apply_to_keys_also && is_string($key)) {
 | 
						|
            $new_key = $function($key);
 | 
						|
            if ($new_key != $key) {
 | 
						|
                $array[$new_key] = $array[$key];
 | 
						|
                unset($array[$key]);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
    $recursive_counter--;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @param $array
 | 
						|
 * @return mixed
 | 
						|
 */
 | 
						|
function utf8_sort($array)
 | 
						|
{
 | 
						|
	$old_locale = setlocale(LC_ALL, null);
 | 
						|
	$code = api_get_language_isocode();
 | 
						|
	$locale_list = array($code.'.utf8', 'en.utf8','en_US.utf8','en_GB.utf8');
 | 
						|
	$try_sort = false;
 | 
						|
 | 
						|
	foreach($locale_list as $locale) {
 | 
						|
		$my_local = setlocale(LC_COLLATE, $locale);
 | 
						|
		if ($my_local) {
 | 
						|
			$try_sort = true;
 | 
						|
			break;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if ($try_sort) {
 | 
						|
		uasort($array, 'strcoll');
 | 
						|
	}
 | 
						|
	setlocale(LC_COLLATE, $old_locale);
 | 
						|
	return $array;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * @param array $array
 | 
						|
 * @param string $separator
 | 
						|
 * @return string
 | 
						|
 */
 | 
						|
function array_to_string($array, $separator = ',')
 | 
						|
{
 | 
						|
    if (empty($array)) {
 | 
						|
        return '';
 | 
						|
    }
 | 
						|
 | 
						|
    return implode($separator.' ', $array);
 | 
						|
}
 | 
						|
 |