Cyberduck Mountain Duck CLI

Ticket #319: cyberfavs.php

File cyberfavs.php, 1.4 KB (added by admin@…, on Apr 5, 2006 at 9:08:47 AM)

PHP sorting script for the Favorites.plist file... Took me about 10 minutes... Was easier by PHP than by JAVA :-)

Line 
1<?
2
3class cyberfavs {
4        var $original = false;
5        var $favs = false;
6        var $head = false;
7        var $foot = false;
8        var $cache = array();
9        var $currentNickname = false;
10
11        function sort() {
12                $this->split();
13                ksort($this->favs);
14                $this->writhe($this->path.'-sorted');
15        }
16       
17        function writhe($path){
18                $handle = fopen($path, 'w');
19                fwrite($handle, $this->head.implode('', $this->favs).$this->foot);
20                fclose($handle);
21        }
22       
23        function split() {
24                foreach($this->original as $key => $val){
25                        $this->cache[] = $val;
26                        switch(true){
27                                case (strstr($val, '<array>') !== false) :
28                                        if($this->favs === false){
29                                                $this->head = implode('', $this->cache);
30                                                $this->cache = array();
31                                        }
32                                        break;
33                                case (strstr($val, 'Nickname') !== false) :
34                                        $this->currentNickname = true;
35                                        break;
36                                case $this->currentNickname === true :
37                                        $this->currentNickname = preg_replace('/[^>]*>([^<]*).*/', '$1', $val);
38                                        break;
39                                case (strstr($val, '</dict>') !== false) :
40                                        $this->favs[$this->currentNickname] = implode('', $this->cache);
41                                        $this->cache = array();
42                                        break;
43                                case (strstr($val, '</plist>') !== false) :
44                                        $this->foot = implode('', $this->cache);
45                                        $this->cache = array();
46                                        break;
47                        }
48                }
49        }
50       
51        function cyberfavs ($path) {
52                $this->path = $path;
53                $this->original = file($path);
54        }
55}
56
57$cyberfavs = new cyberfavs("./Favorites.plist");
58$cyberfavs->sort();
59
60?>