<?php

if ( ! function_exists('translation'))
{
    function translation($id, $default = null, $parameters = array(), $domain = 'messages', $locale = null)
    {
        if(!Lang::has($id, $locale) && !empty($default)){
            return $default;
        } else {
            return trans($id, $parameters, $domain, $locale);        
        } 
    }
}

if ( ! function_exists('getAvailableLanguages'))
{
    function getAvailableLanguages()
    {
        return LaravelLocalization::getSupportedLocales();
    }
}

if ( ! function_exists('getActiveLanguage'))
{
    function getActiveLanguage()
    {
        return LaravelLocalization::getCurrentLocale();
    }
}

if ( ! function_exists('getDefaultLanguage'))
{
    function getDefaultLanguage()
    {
        return LaravelLocalization::getDefaultLocale();
    }
}

if ( ! function_exists('generateLangRules'))
{
    function generateLangRules ($rules, $locales, $subField = null) {
        $langRules = array();
        foreach ($rules as $field => $rule) {
            foreach ($locales as $locale) {
                if ($subField) {
                    $langRules[$field . '.' . $locale . '.' . $subField] = $rule;
                } else {
                    $langRules[$field . '.' . $locale] = $rule;
                }
            }
        }
        return $langRules;
    }
}

if ( ! function_exists('generateLangLabels'))
{
    function generateLangLabels($field, $label, $locales, $subField = null) {
        $labels = array();
        foreach ($locales as $locale) {
            if ($subField) {
                $labels[$field . '.' . $locale . '.' . $subField] = $label;
            } else {
                $labels[$field . '.' . $locale] = $label;
            }
        }
    
        return $labels;
    }
}

if ( ! function_exists('getLangField'))
{
    function getLangField ($model, $field, $lang) {
        if (!$model || !$model->languages) {
            return '';
        }                    
        $modelLanguages = $model->languages;
        foreach ($modelLanguages as $modelLanguage) {
            if ($modelLanguage->language_id == $lang) {
                return $modelLanguage->$field;
            }
        }
        return '';  
    }
}

if ( ! function_exists('lang_url')){
    function lang_url($url = null, $locale = null){ 
        if(!empty($url) && !starts_with($url,"http")){
            $baseUrl = url('/');
            if(substr_count($baseUrl, "/") > 2){
                $url = url($url);        
            }
        }
        
        
        return LaravelLocalization::getLocalizedURL($locale, $url);
    }
}