Subversion Repositories region

[/] [stable/] [1.0/] [classes/] [ezxregion.php] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 xrow
<?
2
class ezxRegion
3
{
4
 
5
    /**
6
     * Returns Region information for the current user/ip...
7
     *
8
     * @return array Returns an array with keys
9
     */
10
    function getRegionData()
11
    {
12
        $ini = eZINI::instance( );
13
        $regionini = eZINI::instance( 'region.ini' );
14
        $regions = $regionini->groups();
15
        unset( $regions['Settings'] );
16
        $ccode = ezxISO3166::preferredCountry();
17
        $lcode = ezxISO936::preferredLanguages();
18
        $regions_keys = array_keys( $regions );
19
        $preferred_regions = array(
20
        );
21
 
22
        foreach ( $regions as $key => $region )
23
        {
24
            if ( $ccode and strpos( $key, '_' . $ccode ) !== false )
25
                $preferred_regions[$key] = $region;
26
        }
27
 
28
        $langs = array_keys( $lcode );
29
        $preferred_languages = array(
30
        );
31
        foreach ( $regions as $key => $region )
32
        {
33
            foreach ( $langs as $lang )
34
            {
35
                if ( strpos( $key, $lang . '_' ) !== false )
36
                {
37
                    $preferred_languages[$key] = $region;
38
                    break;
39
                }
40
            }
41
        }
42
        $preferred_region = false;
43
        foreach ( $langs as $lang )
44
        {
45
            if ( in_array( $lang . '_' . $ccode, $regions_keys ) )
46
            {
47
                $preferred_region = $lang . '_' . $ccode;
48
                break;
49
            }
50
        }
51
 
52
        if ( ! $preferred_region )
53
        {
54
            $keys = array_keys( $preferred_regions );
55
            $preferred_region = $keys[0];
56
        }
57
        if ( ! $preferred_region )
58
        {
59
            $keys = array_keys( $preferred_languages );
60
            $preferred_region = $keys[0];
61
        }
62
        if ( ! $preferred_region )
63
        {
64
            eZDebug::writeError( 'No proper region has been found', 'ezxRegion::getRegionData()' );
65
            return false;
66
        }
67
        return array(
68
            'preferred_region' => $preferred_region,
69
            'preferred_languages' => $preferred_languages,
70
            'preferred_regions' => $preferred_regions
71
        );
72
    }
73
}