Changeset 4967

Show
Ignore:
Timestamp:
01/16/07 15:13:54 (2 years ago)
Author:
bergie
Message:

Bug fix for exporting order

Files:

Legend:

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

    r4966 r4967  
    8989 
    9090        // Serialize blob (TODO: Check if we wish to do so) 
    91         $attachment_blob_serialized = midgard_replicator::serialize_blob($attachment); 
     91        //$attachment_blob_serialized = midgard_replicator::serialize_blob($attachment); 
     92        $attachment_blob_serialized = midgard_replicator::export_blob($attachment); 
    9293        if ($attachment_blob_serialized === false) 
    9394        { 
     
    140141                return false; 
    141142            } 
     143            $GLOBALS['midcom_helper_replicator_logger']->log_object($attachment, 'Exported'); 
    142144            $serializations = array_merge($serializations, $attachment_serialized); 
    143145            unset($attachment_serialized); 
     
    174176                return false; 
    175177            } 
     178            $GLOBALS['midcom_helper_replicator_logger']->log_object($parameter, 'Exported'); 
    176179            $serializations[$parameter->guid] = $parameter_serialized; 
    177180            unset($parameter_serialized); 
     
    190193     * @return array Array of exported objects as XML indexed by GUID 
    191194     */ 
    192     function serialize_object(&$object
     195    function serialize_object(&$object, $skip_children = false
    193196    { 
    194197        $serializations = array(); 
     
    207210        unset($object_serialized); 
    208211 
    209         // Then objects parameters 
    210         $object_parameters = $this->serialize_parameters($object); 
    211         if ($object_parameters === false) 
    212         { 
    213             // TODO: Error handling 
    214              $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
    215             return false; 
    216         } 
    217         $serializations = array_merge($serializations, $object_parameters); 
    218         unset($object_parameters); 
    219  
    220         // And lastly objects attachments 
    221         $object_attachments = $this->serialize_attachments($object); 
    222         if ($object_attachments === false) 
    223         { 
    224             // TODO: Error handling 
    225              $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
    226             return false; 
    227         } 
    228         $serializations = array_merge($serializations, $object_attachments); 
    229         unset($object_attachments); 
    230  
     212        if (!$skip_children) 
     213        { 
     214            // Then objects parameters 
     215            $object_parameters = $this->serialize_parameters($object); 
     216            if ($object_parameters === false) 
     217            { 
     218                // TODO: Error handling 
     219                 $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
     220                return false; 
     221            } 
     222            $serializations = array_merge($serializations, $object_parameters); 
     223            unset($object_parameters); 
     224     
     225            // And lastly objects attachments 
     226            $object_attachments = $this->serialize_attachments($object); 
     227            if ($object_attachments === false) 
     228            { 
     229                // TODO: Error handling 
     230                $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
     231                return false; 
     232            } 
     233            $serializations = array_merge($serializations, $object_attachments); 
     234            unset($object_attachments); 
     235        } 
     236         
    231237        $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
    232238        return $serializations; 
  • trunk/src/midcom.helper.replicator/exporter/mirror.php

    r4955 r4967  
    137137     * @return array Array of exported objects as XML indexed by GUID 
    138138     */ 
    139     function serialize_object(&$object
     139    function serialize_object(&$object, $skip_children = false
    140140    { 
    141141        if (array_key_exists($object->guid, $this->already_serialized)) 
     
    149149        } 
    150150         
    151         // TODO: Decide in which order we want to export parents and dependencies 
    152          
    153         $serializations = parent::serialize_object($object); 
    154          
    155         $this->already_serialized[$object->guid] = true; 
    156  
    157         // Traverse children as needed 
    158         $child_serializations = $this->serialize_children($object); 
    159         $serializations = array_merge($serializations, $child_serializations); 
    160         unset($child_serializations); 
     151        $serializations = array(); 
    161152         
    162153        // Traverse parent tree as well 
     
    164155        if (is_object($parent)) 
    165156        { 
    166             $parent_serializations = $this->serialize_object($parent); 
     157            // FIXME: Skipping children is harmful in staging2live situations 
     158            $parent_serialization = $this->serialize_object($parent, true); 
    167159            $serializations = array_merge($serializations, $parent_serialization); 
    168160            unset($parent_serialization); 
     161        } 
     162         
     163        $object_serialization = parent::serialize_object($object, $skip_children); 
     164        $serializations = array_merge($serializations, $object_serialization); 
     165        unset($object_serialization); 
     166         
     167        $this->already_serialized[$object->guid] = true; 
     168         
     169        if (!$skip_children) 
     170        {         
     171            // Traverse children as needed 
     172            $child_serializations = $this->serialize_children($object); 
     173            $serializations = array_merge($serializations, $child_serializations); 
     174            unset($child_serializations); 
    169175        } 
    170176         
  • trunk/src/midcom.helper.replicator/logger.php

    r4966 r4967  
    2222        $vars = get_object_vars($object); 
    2323         
    24         if (array_key_exists('title', $vars))  
     24        if (is_a($object, 'midgard_parameter')) 
     25        { 
     26            return "{$object->domain}/{$object->name}"; 
     27        } 
     28        elseif (is_a($object, 'midgard_topic')) 
     29        { 
     30            return $object->extra; 
     31        } 
     32        elseif (   array_key_exists('title', $vars) 
     33            && !empty($object->title)) 
    2534        { 
    2635            return $object->title; 
    2736        }  
    28         elseif (array_key_exists('name', $vars))  
     37        elseif (   array_key_exists('name', $vars) 
     38                && !empty($object->name))  
    2939        { 
    3040            return $object->name; 
  • trunk/src/midcom.helper.replicator/queuemanager.php

    r4966 r4967  
    4444    function add_to_queue(&$object) 
    4545    { 
     46        $GLOBALS['midcom_helper_replicator_logger']->push_prefix('queuemanager'); 
    4647        debug_push_class(__CLASS__, __FUNCTION__); 
    4748        $qb = midcom_helper_replicator_subscription_dba::new_query_builder(); 
     
    7071                // TODO: error handling 
    7172                debug_add('could not get queue dir for subscription', MIDCOM_LOG_ERROR); 
     73                die("No queue dir"); 
    7274                continue; 
    7375            } 
     
    8284                    debug_add("file {$file} already exists", MIDCOM_LOG_ERROR); 
    8385                    debug_pop(); 
     86                    $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
     87                die("File {$file} exists!"); 
    8488                    return false; 
    8589                } 
     
    9195                    unset($exporter_serializations, $key, $data); 
    9296                    debug_pop(); 
     97                    $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
     98                die("Couldnt write {$file}"); 
    9399                    return false; 
    94100                } 
    95101                fwrite($fp, $data, strlen($data)); 
    96102                fclose($fp); 
     103                 
     104                $GLOBALS['midcom_helper_replicator_logger']->log("Queued {$key} as {$file}"); 
    97105 
    98106                // TODO: How to call midgard_replicator::export() for all the objects exported ?? (and is this the correct place for that ?) 
     
    104112        } 
    105113        debug_pop(); 
     114        $GLOBALS['midcom_helper_replicator_logger']->pop_prefix(); 
    106115    } 
    107116