/var/www/html_nl/wp-content/plugins/loco-translate/tpl/admin/file/view-mo.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/**
 * Binary MO hex view
 */
$this->extend('view');
$this->start('source');

/* @var Loco_mvc_ViewParams $params */
/* @var string $bin */
?> 

     <div class="panel panel-info">
         <p>
             <?php esc_html_e('File is in binary MO format','loco-translate')?>.
         </p>
     </div>
     
    <div class="panel">
        <pre><?php
            
// crude hex dump
            // TODO make dynamic - flowing to width + clicking bytes highlights right-hand character ranges
         
            
$i 0;
            
$r 0;
            
$cols 24;
            
$line = [];
            
$bytes strlen($bin);
            
// establish formatting of row offset, based on largest row number
            
$rowfmt sprintf'%%0%uX | 'strlensprintf'%02X'$cols floor$bytes $cols ) ) ) );
            
            for( 
$b 0$b $bytes$b++ ){
                
$c substr($bin,$b,1);
                
$n ord($c);
                
// print byte offset
                
if( ! $line ){
                    
printf$rowfmt$b );
                }
                
// print actual byte
                
printf('%02X '$n );
                
// add printable to line
                
if( $n === ){
                    
$line[] = ' '// <- tab?
                
}
                else if ( 
$n 32 || $n 126 ) {
                    
$line[] = '.'// <- unprintable
                
}
                else {
                    
$line[] = $params->escape($c); // <- printable
                
}
                
// wrap at cols, and print plain text
                
if( ++$i === $cols ){
                    echo 
'  'implode(''$line ), "\n";
                    
$line = [];
                    
$i 0;
                    
$r++;
                }
            }
            if( 
$line ){
                if( 
$r ){
                   echo 
str_repeat'   '$cols $i );
                }
                echo 
'  'implode(''$line ), "\n";
            }
            
?></pre>
    </div>