Show
Ignore:
Timestamp:
07/06/08 19:53:44 (5 months ago)
Author:
rambo
Message:

forward port r16781

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/midcom/midcom.helper.replicator/helpers.php

    r14773 r16782  
    1414 * it (otherwise properly) inside MidCOM application 
    1515 * 
    16  * @param midgard_object &$object reference to an object 
     16 * For now also works around bug #259 if applicaple 
     17 * 
     18 * @package midcom.helper.replicator 
     19 * @param midgard_object $object reference to an object 
    1720 * @return string object serialized (or false in case of failure) 
    1821 */ 
    1922function midcom_helper_replicator_serialize(&$object) 
    2023{ 
    21     return midgard_replicator::serialize($object); 
     24    //return midgard_replicator::serialize($object); 
     25    /** 
     26     * Workaround for bug #259 
     27     */ 
     28    if (   !isset($object->lang) 
     29        || $object->lang === 0) 
     30    { 
     31        // Non-ML or not in langx does not trigger the bug 
     32        return midgard_replicator::serialize($object); 
     33    } 
     34    $current_language = (int)$_MIDGARD['lang']; 
     35    $current_default_language = mgd_get_default_lang(); 
     36    mgd_set_lang(0); 
     37    mgd_set_default_lang(0); 
     38    $object_class = get_class($object); 
     39    $object_lang0 = new $object_class($object->guid); 
     40    if (   !$object_lang0 
     41        || !isset($object_lang0->guid) 
     42        || empty($object_lang0->guid)) 
     43    { 
     44        // Sanity check failed 
     45        $errno = mgd_errno(); 
     46        mgd_set_default_lang($current_default_language); 
     47        mgd_set_lang($current_language); 
     48        mgd_set_errno($errno); 
     49        unset($object_class, $object_lang0, $current_language, $current_default_language, $errno); 
     50        return false; 
     51    } 
     52    else 
     53    { 
     54        $stat = midgard_replicator::serialize($object_lang0); 
     55    } 
     56    $errno = mgd_errno(); 
     57    mgd_set_default_lang($current_default_language); 
     58    mgd_set_lang($current_language); 
     59    mgd_set_errno($errno); 
     60    unset($object_class, $object_lang0, $current_language, $current_default_language, $errno); 
     61    return $stat; 
    2262} 
    2363