1 | <?php |
---|
2 | /* |
---|
3 | Plugin Name: Extra special functions |
---|
4 | Version: 2.1.a |
---|
5 | Description: Adds functions 'Flat all elements', 'Calendar by posted date', 'Calendar by creation date' and toggle function 'Display recently posted / all' into special functions. |
---|
6 | Plugin URI: http://piwigo.org/ext/extension_view.php?eid=460 |
---|
7 | Author: Pavel Budka |
---|
8 | Author URI: http://budkovi.ic.cz |
---|
9 | */ |
---|
10 | |
---|
11 | if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); |
---|
12 | |
---|
13 | function add_extra_functions($menu_ref_arr) |
---|
14 | { |
---|
15 | $menu = & $menu_ref_arr[0]; |
---|
16 | global $filter, $user; |
---|
17 | |
---|
18 | if (($block = $menu->get_block('mbSpecials')) != null ) |
---|
19 | { |
---|
20 | load_language('plugin.lang', PHPWG_PLUGINS_PATH . basename(dirname(__FILE__)) . '/'); |
---|
21 | |
---|
22 | $str = $_SERVER['QUERY_STRING']; |
---|
23 | $args = explode('&',$str); |
---|
24 | $filter_rec = ($filter['enabled'] && $filter['recent_period']!=-1); |
---|
25 | // remove previously added extra functions from url |
---|
26 | $url_rest=''; |
---|
27 | foreach($args as $arg) { |
---|
28 | if (strncmp($arg,'filter',6) == 0) |
---|
29 | ; // ommit this parameter |
---|
30 | elseif (!empty($arg) && $arg[0] != '/') |
---|
31 | $url_rest.='&'.$arg; |
---|
32 | else |
---|
33 | $cat_arg=$arg; |
---|
34 | } // foreach |
---|
35 | if (isset($cat_arg)) |
---|
36 | $cat_els = explode('/',$cat_arg); |
---|
37 | else |
---|
38 | $cat_els = array(); |
---|
39 | |
---|
40 | // set of modificatiors |
---|
41 | $items = array('flat' => 'display all elements in all sub-albums', |
---|
42 | 'posted-monthly-calendar' => 'display a calendar by posted date', |
---|
43 | 'created-monthly-calendar' => 'display a calendar by creation date'); |
---|
44 | |
---|
45 | // remove previously added extra functions from url |
---|
46 | foreach($items as $item => $label) |
---|
47 | if(($id=array_search($item,$cat_els)) != false) |
---|
48 | unset($cat_els[$id]); |
---|
49 | $cat_els=array_values($cat_els); |
---|
50 | |
---|
51 | // TODO: &filter=start-recent-20, &filter=stop |
---|
52 | |
---|
53 | // remove other functions |
---|
54 | // $block->data=array(); |
---|
55 | |
---|
56 | // add extra functions to url and to menu |
---|
57 | foreach($items as $item => $label) { |
---|
58 | // prepare url |
---|
59 | array_push ($cat_els,$item); |
---|
60 | |
---|
61 | $url=''; |
---|
62 | foreach($cat_els as $cat_el) |
---|
63 | if (empty($url)) |
---|
64 | $url.='?'.$cat_el; |
---|
65 | else |
---|
66 | $url.='/'.$cat_el; |
---|
67 | $url.=$url_rest; |
---|
68 | array_pop($cat_els); |
---|
69 | |
---|
70 | // extend menu |
---|
71 | array_push($block->data, |
---|
72 | array( |
---|
73 | 'URL' => $url, |
---|
74 | 'TITLE' => l10n($label), |
---|
75 | 'NAME' => l10n($item) |
---|
76 | ) |
---|
77 | |
---|
78 | ); |
---|
79 | } // for |
---|
80 | |
---|
81 | // add filter extra function to url and to menu |
---|
82 | $url=''; |
---|
83 | foreach($cat_els as $cat_el) |
---|
84 | if (empty($url)) |
---|
85 | $url.='?'.$cat_el; |
---|
86 | else |
---|
87 | $url.='/'.$cat_el; |
---|
88 | $url.=$url_rest; |
---|
89 | if ($url[0] == '&') $url[0]='?'; |
---|
90 | |
---|
91 | // extend menu |
---|
92 | if(!$filter_rec) |
---|
93 | array_push($block->data, |
---|
94 | array( |
---|
95 | 'URL' => $url.'&'.'filter=start-recent-'.$user['recent_period'], |
---|
96 | 'TITLE' => l10n('display only recently posted images'), |
---|
97 | 'NAME' => l10n('filter-start-recent') |
---|
98 | )); |
---|
99 | else |
---|
100 | array_push($block->data, |
---|
101 | array( |
---|
102 | 'URL' => $url.'&'.'filter=stop', |
---|
103 | 'TITLE' => l10n('return to the display of all images'), |
---|
104 | 'NAME' => l10n('filter-stop') |
---|
105 | )); |
---|
106 | |
---|
107 | } // if |
---|
108 | |
---|
109 | } // add_link_mostcommented |
---|
110 | |
---|
111 | add_event_handler('blockmanager_apply' , 'add_extra_functions'); |
---|
112 | |
---|
113 | ?> |
---|