Jacek Kowalski
2012-08-12 fb87e02c9868427de4a97427f9190de4d2d93163
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
<?php
class bot_ort_module implements BotModule {
    function handle($msg, $params) {
        $args = trim($msg->args);
        
        if(empty($args)) {
            return new BotMsg('Funkcja <b>ort</b> wymaga argumentu.<br />'
                    . '<br />'."\n"
                    . '<u>Przykłady:</u><br />'."\n"
                    . 'ort grzegżółka<br />'."\n"
                    . 'ort warsawa');
        }
        
        $args = strtr($args, array("\r\n" => ' ', "\r" => ' ', "\n" => ' '));
        
        $proc = proc_open('aspell --lang=pl --encoding=utf-8 --ignore-case=true pipe', array(array('pipe', 'r'), array('pipe', 'w'), array('file', '/dev/null', 'w')), $pipe);
        
        fwrite($pipe[0], $args."\n");
        fclose($pipe[0]);
        
        do {
            usleep(1);
            $status = proc_get_status($proc);
        } while($status['running']);
        
        fgets($pipe[1], 1024);
        $spell = fgets($pipe[1], 4096);
        fclose($pipe[1]);
        
        proc_close($proc);
        
        if(empty($spell)) {
            return new BotMsg('Błąd podczas sprawdzania słowa w słowniku. Przepraszamy.');
        }
        elseif(substr($spell, 0, 1)=='*') {
            return new BotMsg('<span style="color:#060;">Pisownia poprawna.</span>');
        }
        elseif(substr($spell, 0, 1)=='#') {
            return new BotMsg('Brak propozycji poprawnej pisowni.');
        }
        else
        {
            $spell = explode(': ', $spell, 2);
            $spell = explode(',', $spell[1]);
            
            $txt = '<p>Prawdopobnie chodziło ci o:</p>'."\n"
                . '<ul>'."\n";
            
            foreach($spell as $val) {
                $txt .= '<li>'.htmlspecialchars(trim($val)).'</li>'."\n";
            }
            $txt .= '</ul>';
            
            return new BotMsg($txt);
        }
    }
}
?>