Your IP : 216.73.216.240


Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/
Upload File :
Current File : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/TfArray.php

<?php
/*
* @package		Tech Fry Library
* @license		https://www.gnu.org/licenses/gpl-3.0.en.html
*/

namespace TechFry\Library;

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\Utilities\ArrayHelper;

class TfArray
{
    // $data - array; $result - array / string / integer
    public static function process($function, $data = array(), $params = array())
    {
        switch ($function)
        {
            // One argument as array; Array is modified without returning
            case 'array_pop' :
            case 'array_shift' :
            case 'sort' :
            case 'rsort' :
            case 'ksort' :
            case 'krsort' :
            case 'asort' :
            case 'arsort' :
            case 'natsort' :
            case 'shuffle' :
                $temp = $data;
                $function($temp);
                $result = $temp;
                break;
            
            // One argument as array; Returns modified array
            case 'array_change_key_case' :
            case 'array_count_values' :
            case 'array_flip' :
            case 'array_keys' :
            case 'array_reverse' :
            case 'array_unique' :
            case 'array_values' :
            case 'json_encode' :
                $result = $function($data);
                break;
                
            // One argument as array; Returns result as integer or string
            case 'count' :
            case 'array_sum' :
            case 'array_product' :
                $result = $function($data);
                break;
                
            // Two arguments - data as array, 1 parameter
          	case 'array_chunk' :
            case 'array_column' :
                $result = $function($data, $params[0]);
                break;
                
            // Three arguments - data as array, 2 parameters
            case 'array_pad' :
            case 'array_slice' :
                $result = $function($data, $params[0], $params[1]);
                break;
                
            // Special case - Modifies array without returning; 1 parameter
            case 'array_push' :
            case 'array_unshift' :
                $temp = $data;
                $function($temp, $params[0]);
                $result = $temp;
                break;
                
            // Array as second argument
            case 'implode' :
          	case 'array_search' :
            case 'in_array' :
            case 'array_key_exists' :
                $result = $function($params[0], $data);
                break;
            
            // Data as two arrays
          	case 'array_merge' :
            case 'array_replace' :
            case 'array_combine' :
          	case 'array_diff' :
            case 'array_diff_key' :
            case 'array_diff_assoc' :
            case 'array_intersect' :
            case 'array_intersect_key' :
            case 'array_intersect_assoc' :
            	$result = $function($data[0], $data[1]);
            	break;

            // Special Method - Remove Elements
            case 'remove_elements' :
                $result = self::remove_elements($data, $params[0]);
                break;

            // Special Method - Keep Elements
            case 'keep_elements' :
                $result = self::keep_elements($data, $params[0]);
                break;

            // Special Method - Get Value
            case 'get_value' :
                $result = self::get_value($data, $params[0]);
                break;
        }
        
        return $result;
    }

    // Convert array to object
    public static function array_to_object(array $array)
    {
        return ArrayHelper::toObject($array);
    }

    // Convert object to array
    public static function object_to_array($item)
    {
        return ArrayHelper::fromObject($item);
    }

    // Add Column
    public static function add_column(array $array, array $column, $col_name)
    {
        return ArrayHelper::addColumn($array, $column, $col_name);
    }

    // Drop Column
    public static function drop_column(array $array, $column)
    {
        return ArrayHelper::dropColumn($array, $column);
    }

    // Get column
    public static function get_column(array $array, $column)
    {
        return ArrayHelper::getColumn($array, $column);
    }

    // Get value
    public static function get_value($array, $name, $default = null)
    {
        return ArrayHelper::getValue($array, $name, $default);
    }

    // Invert array
    public static function invert(array $array)
    {
        return ArrayHelper::invert($array);
    }

    public static function remove_elements($array, $regex)
    {
        foreach ($array as $k => $v)
        {
            $found = preg_match('/' . $regex . '/', $v);
            if ($found)
            {
                unset($array[$k]);
            }
        }

        return $array;
    }

    public static function keep_elements($array, $regex)
    {
        $new_array = array();
        foreach ($array as $k => $v)
        {
            $found = preg_match('/' . $regex . '/', $v);
            if ($found)
            {
                $new_array[] = $v;
            }
        }

        return $new_array;
    }
}