web/wp-includes/pomo/mo.php
changeset 204 09a1c134465b
parent 194 32102edaa81b
--- a/web/wp-includes/pomo/mo.php	Wed Dec 19 12:35:13 2012 -0800
+++ b/web/wp-includes/pomo/mo.php	Wed Dec 19 17:46:52 2012 -0800
@@ -2,7 +2,7 @@
 /**
  * Class for working with MO files
  *
- * @version $Id: mo.php 602 2011-01-30 12:43:29Z nbachiyski $
+ * @version $Id: mo.php 718 2012-10-31 00:32:02Z nbachiyski $
  * @package pomo
  * @subpackage mo
  */
@@ -34,7 +34,7 @@
 		fclose($fh);
 		return $res;
 	}
-	
+
 	function export() {
 		$tmp_fh = fopen("php://temp", 'r+');
 		if ( !$tmp_fh ) return false;
@@ -42,9 +42,21 @@
 		rewind( $tmp_fh );
 		return stream_get_contents( $tmp_fh );
 	}
-	
+
+	function is_entry_good_for_export( $entry ) {
+		if ( empty( $entry->translations ) ) {
+			return false;
+		}
+
+		if ( !array_filter( $entry->translations ) ) {
+			return false;
+		}
+
+		return true;
+	}
+
 	function export_to_file_handle($fh) {
-		$entries = array_filter($this->entries, create_function('$e', 'return !empty($e->translations);'));
+		$entries = array_filter( $this->entries, array( $this, 'is_entry_good_for_export' ) );
 		ksort($entries);
 		$magic = 0x950412de;
 		$revision = 0;
@@ -57,7 +69,7 @@
 		fwrite($fh, pack('V*', $magic, $revision, $total, $originals_lenghts_addr,
 			$translations_lenghts_addr, $size_of_hash, $hash_addr));
 		fseek($fh, $originals_lenghts_addr);
-		
+
 		// headers' msgid is an empty string
 		fwrite($fh, pack('VV', 0, $current_addr));
 		$current_addr++;
@@ -69,24 +81,24 @@
 			fwrite($fh, pack('VV', $length, $current_addr));
 			$current_addr += $length + 1; // account for the NULL byte after
 		}
-		
+
 		$exported_headers = $this->export_headers();
 		fwrite($fh, pack('VV', strlen($exported_headers), $current_addr));
 		$current_addr += strlen($exported_headers) + 1;
 		$translations_table = $exported_headers . chr(0);
-		
+
 		foreach($entries as $entry) {
 			$translations_table .= $this->export_translations($entry) . chr(0);
 			$length = strlen($this->export_translations($entry));
 			fwrite($fh, pack('VV', $length, $current_addr));
 			$current_addr += $length + 1;
 		}
-		
+
 		fwrite($fh, $originals_table);
 		fwrite($fh, $translations_table);
 		return true;
 	}
-	
+
 	function export_original($entry) {
 		//TODO: warnings for control characters
 		$exported = $entry->singular;
@@ -94,12 +106,12 @@
 		if (!is_null($entry->context)) $exported = $entry->context . chr(4) . $exported;
 		return $exported;
 	}
-	
+
 	function export_translations($entry) {
 		//TODO: warnings for control characters
 		return implode(chr(0), $entry->translations);
 	}
-	
+
 	function export_headers() {
 		$exported = '';
 		foreach($this->headers as $header => $value) {
@@ -195,8 +207,7 @@
 			$translation = $reader->substr( $strings, $t['pos'], $t['length'] );
 
 			if ('' === $original) {
-				$headers = $this->make_headers($translation);
-				$this->set_headers($headers);
+				$this->set_headers($this->make_headers($translation));
 			} else {
 				$entry = &$this->make_entry($original, $translation);
 				$this->entries[$entry->key()] = &$entry;
@@ -208,7 +219,7 @@
 	/**
 	 * Build a Translation_Entry from original string and translation strings,
 	 * found in a MO file
-	 * 
+	 *
 	 * @static
 	 * @param string $original original string to translate from MO file. Might contain
 	 * 	0x04 as context separator or 0x00 as singular/plural separator