Changeset 1962 for branches/release-35/lib/MT/Meta/Proxy.pm
- Timestamp:
- 04/18/08 00:10:55 (20 months ago)
- Files:
-
- 1 modified
-
branches/release-35/lib/MT/Meta/Proxy.pm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/release-35/lib/MT/Meta/Proxy.pm
r1927 r1962 11 11 use MT::Meta; 12 12 use MT::Serialize; 13 14 our $HAS_ZLIB = 0;15 eval "require Compress::Zlib;";16 $HAS_ZLIB = 1 unless $@;17 13 18 14 my $serializer = MT::Serialize->new('MT'); … … 277 273 278 274 return $dataref unless defined $$dataref; 279 $$dataref =~ s/^([ABCIN PSZ]{3})://;275 $$dataref =~ s/^([ABCINS]{3})://; 280 276 my $prefix = $1; 281 277 unless (defined $prefix) { … … 283 279 } 284 280 285 if ($prefix eq 'ZIP') { 286 unless ($HAS_ZLIB) { 287 Carp::croak("FATAL: cannot deal with this zipped data, Zlib is missing"); 288 } 289 my $deflated = Compress::Zlib::uncompress($dataref); 290 unless ($deflated =~ s/^(BIN|ASC)://) { 291 Carp::croak("Cannot find subprefix in 'ZIP:' blob $deflated"); 292 } 293 my $subprefix = $1; 294 if ($subprefix eq 'BIN') { 295 my $val = $serializer->unserialize($deflated); 296 if (defined $val) { 297 return $val; # it's a ref already. 298 } else { 299 return \$val; 300 } 301 } 302 else { 303 return \$deflated; 304 } 305 } elsif ($prefix eq 'BIN') { 281 if ($prefix eq 'BIN') { 306 282 my $val = $serializer->unserialize($$dataref); 307 283 if (defined $val) { … … 344 320 $val = undef; 345 321 } 346 347 if ($HAS_ZLIB && defined $val && $meta_obj->blob_requires_zip($field, \$val)) {348 my $zipped = Compress::Zlib::compress($val);349 $val = 'ZIP:' . $zipped;350 }351 322 352 323 # set it back the serialized data
