Changeset 26310


Ignore:
Timestamp:
06/10/10 17:32:53 (7 years ago)
Author:
jval
Message:

Split to generic methods, refs #1626

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ragnaroek/midcom/midcom.core/midcom/services/multilang.php

    r26309 r26310  
    173173    }
    174174
    175     function is_object_equal_in_lang($object, $lang)
     175    function get_object_in_lang($object, $lang, $strict = false)
    176176    {
    177177        if (is_a($object, 'midcom_core_dbaobject'))
     
    182182        if (!midgard_object_class::is_multilang(get_class($object)))
    183183        {
    184             return true;
    185         }
    186 
    187         $equal = false;
     184            return $object;
     185        }
     186
    188187        $real_lang = self::get_lang();
    189 
     188        $object_in_lang = null;
     189       
    190190        midgard_connection::set_lang($lang);
    191191        try
     
    193193            $class = get_class($object);
    194194            $object_in_lang = new $class($object->guid);
    195             midgard_connection::set_lang($real_lang);
    196             $equal = true;
    197 
    198             foreach (get_object_vars($object) as $key => $value)
    199             {
    200                 if (   $key != 'metadata'
    201                     && $key != 'lang'
    202                     && $value != $object_in_lang->$key)
    203                 {
    204                     $equal = false;
    205                     break;
     195            if ($strict)
     196            {
     197                if ($object_in_lang->lang != $object->lang)
     198                {
     199                    $object_in_lang = null;
    206200                }
    207201            }
     
    209203        catch (Exception $e)
    210204        {
    211             midgard_connection::set_lang($real_lang);
     205            // Nothing to do. Object doesn't exist in lang.
     206        }
     207        midgard_connection::set_lang($real_lang);
     208
     209        return $object_in_lang;
     210    }
     211
     212    function are_objects_equal($object1, $object2)
     213    {
     214        if (is_a($object1, 'midcom_core_dbaobject'))
     215        {
     216            $object1 = $object1->__object;
     217        }
     218        if (is_a($object2, 'midcom_core_dbaobject'))
     219        {
     220            $object2 = $object2->__object;
     221        }
     222
     223        $equal = true;
     224
     225        foreach (get_object_vars($object1) as $key => $value)
     226        {
     227            if (   $key != 'metadata'
     228                && $key != 'lang'
     229                && $value != $object2->$key)
     230            {
     231                $equal = false;
     232                break;
     233            }
     234        }
     235
     236        return $equal;
     237    }
     238
     239    function is_object_equal_in_lang($object, $lang, $strict = false)
     240    {
     241        if (is_a($object, 'midcom_core_dbaobject'))
     242        {
     243            $object = $object->__object;
     244        }
     245
     246        if (!midgard_object_class::is_multilang(get_class($object)))
     247        {
     248            return true;
     249        }
     250
     251        $equal = false;
     252
     253        if ($object_in_lang = self::get_object_in_lang($object, $lang, $strict))
     254        {
     255            $equal = self::are_objects_equal($object, $object_in_lang);
    212256        }
    213257
Note: See TracChangeset for help on using the changeset viewer.