source: extensions/Comments_on_Albums/include/coa_comments_page.php @ 9641

Last change on this file since 9641 was 9641, checked in by mistic100, 13 years ago

[plugins] Comments on Albums

  • stable version
File size: 9.1 KB
Line 
1<?php 
2/* inspired by include/comments.php */
3if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
4
5load_language('plugin.lang', COA_PATH);
6$conf['comments_on_albums'] = unserialize($conf['comments_on_albums']);
7
8$template->assign(array(
9        'COA_PATH' => COA_PATH,
10        'ICON_COLOR' => $conf['comments_on_albums']['icon_color'],
11        'ICON_COLOR_OVER' => $conf['comments_on_albums']['icon_color_over'],
12));
13
14
15// +-----------------------------------------------------------------------+
16//                              Main page (comments on photos)
17// +-----------------------------------------------------------------------+
18
19if (!isset($_GET['display_mode'])) {   
20        // adds a button for switch page
21        $template->set_prefilter('comments', 'coa_add_button');
22        function coa_add_button($content, &$smarty) {
23                $search = '<ul class="categoryActions">';
24
25$replacement = '
26{html_head}
27        <style type="text/css">
28                .pwg-icon-comments-albums {ldelim}
29                        background-image: url({$COA_PATH}template/s26/outline_{$ICON_COLOR}.png);
30                        background-position: -26px 0;
31                }
32                a:hover .pwg-icon-comments-albums {ldelim}
33                        background-image: url({$COA_PATH}template/s26/outline_{$ICON_COLOR_OVER}.png);
34                        background-position: -26px 0;
35                }
36        </style>
37{/html_head}
38
39        <ul class="categoryActions">
40                <li><a href="comments.php?display_mode=albums" title="' . l10n('COA_comments_albums') . '" class="pwg-state-default pwg-button">
41                        <span class="pwg-icon pwg-icon-comments-albums">&nbsp;</span><span class="pwg-button-text">' . l10n('COA_comments_albums') . '</span>
42                </a></li>';
43
44                return str_replace($search, $replacement, $content);
45        }
46       
47       
48// +-----------------------------------------------------------------------+
49//                              Second page (comments on albums)
50// +-----------------------------------------------------------------------+
51
52} else if ($_GET['display_mode'] == 'albums') {
53        // reset some template vars
54        $template->clear_assign(array('comments', 'navbar', 'sort_by_options'));
55       
56        // sort_by : database fields proposed for sorting comments list
57        $sort_by = array(
58                'date' => l10n('comment date'),
59                'category_id' => l10n('album')
60        );
61        $template->assign('sort_by_options', $sort_by);
62
63        // +-----------------------------------------------------------------------+
64        // |                         comments management                           |
65        // +-----------------------------------------------------------------------+
66        $comment_id = null;
67        $action = null;
68
69        $actions = array('delete_albums', 'validate_albums', 'edit_albums'); // different indexes to not interfer with the main process
70        foreach ($actions as $loop_action) {
71                if (isset($_GET[$loop_action])) {
72                        $action = $loop_action;
73                        check_input_parameter($action, $_GET, false, PATTERN_ID);
74                        $comment_id = $_GET[$action];
75                        break;
76                }
77        }
78
79        if (isset($action)) {
80                include_once(COA_PATH.'include/functions_comment.inc.php');
81                check_pwg_token();
82                $comment_author_id = get_comment_author_id_albums($comment_id);
83                $true_action = str_replace('_albums', null, $action); // but we must check true action names
84
85                if (can_manage_comment($true_action, $comment_author_id)) {
86                        $perform_redirect = false;
87
88                        if ('delete_albums' == $action) {
89                                delete_user_comment_albums($comment_id);
90                                $perform_redirect = true;
91                        }
92                        if ('validate_albums' == $action) {
93                                validate_user_comment_albums($comment_id);
94                                $perform_redirect = true;
95                        }
96                        if ('edit_albums' == $action) {
97                                if (!empty($_POST['content'])) {
98                                        update_user_comment_albums(array(
99                                                'comment_id' => $_GET['edit_albums'],
100                                                'image_id' => $_POST['image_id'],
101                                                'content' => $_POST['content']
102                                                ), $_POST['key']
103                                        );
104                                        $perform_redirect = true;
105                                } else {
106                                        $edit_comment = $_GET['edit_albums'];
107                                }
108                        }
109                        if ($perform_redirect) {
110                                $redirect_url = PHPWG_ROOT_PATH.'comments.php'.get_query_string_diff(array('delete_albums','validate_albums','edit_albums','pwg_token'));
111                                redirect($redirect_url);
112                        }
113                }
114        }
115
116        // +-----------------------------------------------------------------------+
117        // |                            navigation bar                             |
118        // +-----------------------------------------------------------------------+
119        if (isset($_GET['start']) and is_numeric($_GET['start'])) {
120                $start = $_GET['start'];
121        } else {
122                $start = 0;
123        }
124
125        $query = 'SELECT COUNT(DISTINCT(com.id))
126                FROM '.COA_TABLE.' AS com
127                LEFT JOIN '.USERS_TABLE.' As u
128                ON u.'.$conf['user_fields']['id'].' = com.author_id
129                WHERE '.implode('
130                AND ', $page['where_clauses']).'
131        ;';
132        list($counter) = pwg_db_fetch_row(pwg_query($query));
133
134        $url = PHPWG_ROOT_PATH . 'comments.php' . get_query_string_diff(array('start','delete_albums','validate_albums','edit_albums','pwg_token'));
135        $navbar = create_navigation_bar($url, $counter, $start, $page['items_number'], '');
136        $template->assign('navbar', $navbar);
137
138        // +-----------------------------------------------------------------------+
139        // |                        last comments display                          |
140        // +-----------------------------------------------------------------------+
141        $comments = array();
142        $element_ids = array();
143        $category_ids = array();
144
145        $query = 'SELECT
146                        com.id AS comment_id,
147                        com.category_id,
148                        com.author,
149                        com.author_id,
150                        com.date,
151                        com.content,
152                        com.validated
153                FROM '.COA_TABLE.' AS com
154                LEFT JOIN '.USERS_TABLE.' As u
155                ON u.'.$conf['user_fields']['id'].' = com.author_id
156                WHERE '.implode('
157                AND ', $page['where_clauses']).'
158                GROUP BY
159                        comment_id,
160                        com.category_id,
161                        com.author,
162                        com.author_id,
163                        com.date,
164                        com.content,
165                        com.validated
166                ORDER BY '.$page['sort_by'].' '.$page['sort_order'];
167                if ('all' != $page['items_number']) {
168                        $query.= '
169                        LIMIT '.$page['items_number'].' OFFSET '.$start;
170                }
171                $query.= '
172        ;';
173        $result = pwg_query($query);
174
175        while ($row = pwg_db_fetch_assoc($result)) {
176                array_push($comments, $row);
177                array_push($element_ids, $row['category_id']);
178        }
179
180        if (count($comments) > 0) {
181                // retrieving category informations
182                $query = 'SELECT
183                                cat.id,
184                                cat.name,
185                                cat.permalink,
186                                cat.uppercats,
187                                com.id as comment_id
188                        FROM '.CATEGORIES_TABLE.' AS cat
189                        LEFT JOIN '.COA_TABLE.' AS com
190                        ON cat.id=com.category_id
191                        '.get_sql_condition_FandF(array(
192                                'forbidden_categories' => 'cat.id',
193                                'visible_categories' => 'cat.id'
194                        ), 'WHERE').'
195                        AND cat.id IN ('.implode(',', $element_ids).')
196                ;';
197                $categories = hash_from_query($query, 'comment_id');
198
199                foreach ($comments as $comment) {
200                        // comment content
201                        $name = $categories[$comment['comment_id']]['name'];
202                        $url = duplicate_index_url(array(
203                                'category' => array(
204                                        'id' => $categories[$comment['comment_id']]['id'], 
205                                        'name' => $categories[$comment['comment_id']]['name'], 
206                                        'permalink' => $categories[$comment['comment_id']]['permalink'],
207                                ),array('start')
208                        ));
209                        $tpl_comment = array(
210                                'CAT_URL' => $url,
211                                'CAT_NAME' => $name,
212                                'AUTHOR' => trigger_event('render_comment_author', $comment['author']),
213                                'DATE' => format_date($comment['date'], true),
214                                'CONTENT' => trigger_event('render_comment_content',$comment['content']),
215                        );
216
217                        // rights
218                        if (can_manage_comment('delete', $comment['author_id'])) {
219                                $url = get_root_url().'comments.php'.get_query_string_diff(array('delete','validate','edit', 'pwg_token'));
220
221                                $tpl_comment['U_DELETE'] = add_url_params($url, array(
222                                        'delete_albums' => $comment['comment_id'],
223                                        'pwg_token' => get_pwg_token(),
224                                ));
225                        }
226                        if (can_manage_comment('edit', $comment['author_id'])) {
227                                $url = get_root_url().'comments.php'.get_query_string_diff(array('edit', 'delete','validate', 'pwg_token'));
228
229                                $tpl_comment['U_EDIT'] = add_url_params($url, array(
230                                        'edit_albums' => $comment['comment_id'],
231                                        'pwg_token' => get_pwg_token(),
232                                ));
233
234                                if (isset($edit_comment) and ($comment['comment_id'] == $edit_comment)) {
235                                        $key = get_ephemeral_key(2, $comment['category_id']);
236                                        $tpl_comment['IN_EDIT'] = true;
237                                        $tpl_comment['KEY'] = $key;
238                                        $tpl_comment['IMAGE_ID'] = $comment['category_id'];
239                                        $tpl_comment['CONTENT'] = $comment['content'];
240                                }
241                        }
242                        if (can_manage_comment('validate', $comment['author_id'])) {
243                                if ('true' != $comment['validated']) {
244                                        $tpl_comment['U_VALIDATE'] = add_url_params($url, array(
245                                                'validate_albums'=> $comment['comment_id'],
246                                                'pwg_token' => get_pwg_token(),
247                                        ));
248                                }
249                        }
250                       
251                        $template->append('comments', $tpl_comment);
252                }
253        }
254
255        // +-----------------------------------------------------------------------+
256        // |                        template                                       |
257        // +-----------------------------------------------------------------------+
258        $template->set_filenames(array('comments'=> dirname(__FILE__).'/../template/coa_comments_page.tpl'));
259       
260        // add a layer for display category name
261        $template->set_prefilter('comments', 'coa_change_comments_list');
262        function coa_change_comments_list($content, &$smarty) {
263                $search = '<div class="description"{if isset($comment.IN_EDIT)} style="height:200px"{/if}>';
264
265$replacement = '<div class="category-title">
266        <a href="{$comment.CAT_URL}">{$comment.CAT_NAME}</a>
267</div>
268<div class="description"{if isset($comment.IN_EDIT)} style="height:220px"{/if}>';
269
270                return str_replace($search, $replacement, $content);
271        }
272}
273
274?>
Note: See TracBrowser for help on using the repository browser.