Dotclear

source: admin/posts.php @ 3874:ab8368569446

Revision 3874:ab8368569446, 12.1 KB checked in by franck <carnet.franck.paul@…>, 7 years ago (diff)

short notation for array (array() → [])

Line 
1<?php
2/**
3 * @package Dotclear
4 * @subpackage Backend
5 *
6 * @copyright Olivier Meunier & Association Dotclear
7 * @copyright GPL-2.0-only
8 */
9
10require dirname(__FILE__) . '/../inc/admin/prepend.php';
11
12dcPage::check('usage,contentadmin');
13
14# Getting categories
15try {
16    $categories = $core->blog->getCategories();
17} catch (Exception $e) {
18    $core->error->add($e->getMessage());
19}
20
21# Getting authors
22try {
23    $users = $core->blog->getPostsUsers();
24} catch (Exception $e) {
25    $core->error->add($e->getMessage());
26}
27
28# Getting dates
29try {
30    $dates = $core->blog->getDates(['type' => 'month']);
31} catch (Exception $e) {
32    $core->error->add($e->getMessage());
33}
34
35# Getting langs
36try {
37    $langs = $core->blog->getLangs();
38} catch (Exception $e) {
39    $core->error->add($e->getMessage());
40}
41
42# Creating filter combo boxes
43$users_combo = dcAdminCombos::getUsersCombo($users);
44dcUtils::lexicalKeySort($users_combo);
45$users_combo = array_merge(
46    ['-' => ''],
47    $users_combo
48);
49
50$categories_combo = array_merge(
51    [
52        new formSelectOption('-', ''),
53        new formSelectOption(__('(No cat)'), 'NULL')],
54    dcAdminCombos::getCategoriesCombo($categories, false)
55);
56$categories_values = [];
57foreach ($categories_combo as $cat) {
58    if (isset($cat->value)) {
59        $categories_values[$cat->value] = true;
60    }
61}
62
63$status_combo = array_merge(
64    ['-' => ''],
65    dcAdminCombos::getPostStatusesCombo()
66);
67
68$selected_combo = [
69    '-'                => '',
70    __('Selected')     => '1',
71    __('Not selected') => '0'
72];
73
74$comment_combo = [
75    '-'          => '',
76    __('Opened') => '1',
77    __('Closed') => '0'
78];
79
80$trackback_combo = [
81    '-'          => '',
82    __('Opened') => '1',
83    __('Closed') => '0'
84];
85
86$attachment_combo = [
87    '-'                       => '',
88    __('With attachments')    => '1',
89    __('Without attachments') => '0'
90];
91
92$password_combo = [
93    '-'                    => '',
94    __('With password')    => '1',
95    __('Without password') => '0'
96];
97
98# Months array
99$dt_m_combo = array_merge(
100    ['-' => ''],
101    dcAdminCombos::getDatesCombo($dates)
102);
103
104$lang_combo = array_merge(
105    ['-' => ''],
106    dcAdminCombos::getLangsCombo($langs, false)
107);
108
109# Post formats
110$core_formaters    = $core->getFormaters();
111$available_formats = [];
112foreach ($core_formaters as $editor => $formats) {
113    foreach ($formats as $format) {
114        $available_formats[$format] = $format;
115    }
116}
117$format_combo = array_merge(
118    ['-' => ''],
119    $available_formats
120);
121
122$sortby_combo = [
123    __('Date')                 => 'post_dt',
124    __('Title')                => 'post_title',
125    __('Category')             => 'cat_title',
126    __('Author')               => 'user_id',
127    __('Status')               => 'post_status',
128    __('Selected')             => 'post_selected',
129    __('Number of comments')   => 'nb_comment',
130    __('Number of trackbacks') => 'nb_trackback'
131];
132
133$sortby_lex = [
134    // key in sorty_combo (see above) => field in SQL request
135    'post_title' => 'post_title',
136    'cat_title'  => 'cat_title',
137    'user_id'    => 'P.user_id'];
138
139$order_combo = [
140    __('Descending') => 'desc',
141    __('Ascending')  => 'asc'
142];
143
144# Actions combo box
145
146$posts_actions_page = new dcPostsActionsPage($core, $core->adminurl->get("admin.posts"));
147
148if ($posts_actions_page->process()) {
149    return;
150}
151
152/* Get posts
153-------------------------------------------------------- */
154$user_id    = !empty($_GET['user_id']) ? $_GET['user_id'] : '';
155$cat_id     = !empty($_GET['cat_id']) ? $_GET['cat_id'] : '';
156$status     = isset($_GET['status']) ? $_GET['status'] : '';
157$password   = isset($_GET['password']) ? $_GET['password'] : '';
158$selected   = isset($_GET['selected']) ? $_GET['selected'] : '';
159$comment    = isset($_GET['comment']) ? $_GET['comment'] : '';
160$trackback  = isset($_GET['trackback']) ? $_GET['trackback'] : '';
161$attachment = isset($_GET['attachment']) ? $_GET['attachment'] : '';
162$month      = !empty($_GET['month']) ? $_GET['month'] : '';
163$lang       = !empty($_GET['lang']) ? $_GET['lang'] : '';
164$format     = !empty($_GET['format']) ? $_GET['format'] : '';
165$sortby     = !empty($_GET['sortby']) ? $_GET['sortby'] : 'post_dt';
166$order      = !empty($_GET['order']) ? $_GET['order'] : 'desc';
167
168$show_filters = false;
169
170$page        = !empty($_GET['page']) ? max(1, (integer) $_GET['page']) : 1;
171$nb_per_page = 30;
172
173if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) {
174    if ($nb_per_page != (integer) $_GET['nb']) {
175        $show_filters = true;
176    }
177    $nb_per_page = (integer) $_GET['nb'];
178}
179
180$params['limit']      = [(($page - 1) * $nb_per_page), $nb_per_page];
181$params['no_content'] = true;
182$params['where']      = '';
183
184# - User filter
185if ($user_id !== '' && in_array($user_id, $users_combo)) {
186    $params['user_id'] = $user_id;
187    $show_filters      = true;
188} else {
189    $user_id = '';
190}
191
192# - Categories filter
193if ($cat_id !== '' && isset($categories_values[$cat_id])) {
194    $params['cat_id'] = $cat_id;
195    $show_filters     = true;
196} else {
197    $cat_id = '';
198}
199
200# - Status filter
201if ($status !== '' && in_array($status, $status_combo)) {
202    $params['post_status'] = $status;
203    $show_filters          = true;
204} else {
205    $status = '';
206}
207
208# - Password filter
209if ($password !== '' && in_array($password, $password_combo)) {
210    $params['where'] .= ' AND post_password IS ' . ($password ? 'NOT ' : '') . 'NULL ';
211    $show_filters = true;
212} else {
213    $password = '';
214}
215
216# - Selected filter
217if ($selected !== '' && in_array($selected, $selected_combo)) {
218    $params['post_selected'] = $selected;
219    $show_filters            = true;
220} else {
221    $selected = '';
222}
223
224# - Comment filter
225if ($comment !== '' && in_array($comment, $comment_combo)) {
226    $params['where'] .= " AND post_open_comment = '" . $comment . "' ";
227    $show_filters = true;
228} else {
229    $comment = '';
230}
231
232# - Comment filter
233if ($trackback !== '' && in_array($trackback, $trackback_combo)) {
234    $params['where'] .= " AND post_open_tb = '" . $trackback . "' ";
235    $show_filters = true;
236} else {
237    $trackback = '';
238}
239
240# - Attachment filter
241if ($attachment !== '' && in_array($attachment, $attachment_combo)) {
242    $params['media']     = $attachment;
243    $params['link_type'] = 'attachment';
244    $show_filters        = true;
245} else {
246    $attachment = '';
247}
248
249# - Month filter
250if ($month !== '' && in_array($month, $dt_m_combo)) {
251    $params['post_month'] = substr($month, 4, 2);
252    $params['post_year']  = substr($month, 0, 4);
253    $show_filters         = true;
254} else {
255    $month = '';
256}
257
258# - Lang filter
259if ($lang !== '' && in_array($lang, $lang_combo)) {
260    $params['post_lang'] = $lang;
261    $show_filters        = true;
262} else {
263    $lang = '';
264}
265
266# - Format filter
267if ($format !== '' && in_array($format, $format_combo)) {
268    $params['where'] .= " AND post_format = '" . $format . "' ";
269    $show_filters = true;
270} else {
271    $format = '';
272}
273
274# - Sortby and order filter
275if ($sortby !== '' && in_array($sortby, $sortby_combo)) {
276    if (array_key_exists($sortby, $sortby_lex)) {
277        $params['order'] = $core->con->lexFields($sortby_lex[$sortby]);
278    } else {
279        $params['order'] = $sortby;
280    }
281    if ($order !== '' && in_array($order, $order_combo)) {
282        $params['order'] .= ' ' . $order;
283    } else {
284        $order = 'desc';
285    }
286
287    if ($sortby != 'post_dt' || $order != 'desc') {
288        $show_filters = true;
289    }
290} else {
291    $sortby = 'post_dt';
292    $order  = 'desc';
293}
294
295# Get posts
296try {
297    $posts     = $core->blog->getPosts($params);
298    $counter   = $core->blog->getPosts($params, true);
299    $post_list = new adminPostList($core, $posts, $counter->f(0));
300} catch (Exception $e) {
301    $core->error->add($e->getMessage());
302}
303
304/* DISPLAY
305-------------------------------------------------------- */
306
307dcPage::open(__('Entries'),
308    dcPage::jsLoad('js/_posts_list.js') . dcPage::jsFilterControl($show_filters),
309    dcPage::breadcrumb(
310        [
311            html::escapeHTML($core->blog->name) => '',
312            __('Entries')                       => ''
313        ])
314);
315if (!empty($_GET['upd'])) {
316    dcPage::success(__('Selected entries have been successfully updated.'));
317} elseif (!empty($_GET['del'])) {
318    dcPage::success(__('Selected entries have been successfully deleted.'));
319}
320if (!$core->error->flag()) {
321    echo
322    '<p class="top-add"><a class="button add" href="' . $core->adminurl->get("admin.post") . '">' . __('New entry') . '</a></p>' .
323    '<form action="' . $core->adminurl->get("admin.posts") . '" method="get" id="filters-form">' .
324    '<h3 class="out-of-screen-if-js">' . __('Show filters and display options') . '</h3>' .
325
326    '<div class="table">' .
327    '<div class="cell">' .
328    '<h4>' . __('Filters') . '</h4>' .
329    '<p><label for="user_id" class="ib">' . __('Author:') . '</label> ' .
330    form::combo('user_id', $users_combo, $user_id) . '</p>' .
331    '<p><label for="cat_id" class="ib">' . __('Category:') . '</label> ' .
332    form::combo('cat_id', $categories_combo, $cat_id) . '</p>' .
333    '<p><label for="status" class="ib">' . __('Status:') . '</label> ' .
334    form::combo('status', $status_combo, $status) . '</p> ' .
335    '<p><label for="format" class="ib">' . __('Format:') . '</label> ' .
336    form::combo('format', $format_combo, $format) . '</p>' .
337    '<p><label for="password" class="ib">' . __('Password:') . '</label> ' .
338    form::combo('password', $password_combo, $password) . '</p>' .
339    '</div>' .
340
341    '<div class="cell filters-sibling-cell">' .
342    '<p><label for="selected" class="ib">' . __('Selected:') . '</label> ' .
343    form::combo('selected', $selected_combo, $selected) . '</p>' .
344    '<p><label for="attachment" class="ib">' . __('Attachments:') . '</label> ' .
345    form::combo('attachment', $attachment_combo, $attachment) . '</p>' .
346    '<p><label for="month" class="ib">' . __('Month:') . '</label> ' .
347    form::combo('month', $dt_m_combo, $month) . '</p>' .
348    '<p><label for="lang" class="ib">' . __('Lang:') . '</label> ' .
349    form::combo('lang', $lang_combo, $lang) . '</p> ' .
350    '<p><label for="comment" class="ib">' . __('Comments:') . '</label> ' .
351    form::combo('comment', $comment_combo, $comment) . '</p>' .
352    '<p><label for="trackback" class="ib">' . __('Trackbacks:') . '</label> ' .
353    form::combo('trackback', $trackback_combo, $trackback) . '</p>' .
354    '</div>' .
355
356    '<div class="cell filters-options">' .
357    '<h4>' . __('Display options') . '</h4>' .
358    '<p><label for="sortby" class="ib">' . __('Order by:') . '</label> ' .
359    form::combo('sortby', $sortby_combo, $sortby) . '</p>' .
360    '<p><label for="order" class="ib">' . __('Sort:') . '</label> ' .
361    form::combo('order', $order_combo, $order) . '</p>' .
362    '<p><span class="label ib">' . __('Show') . '</span> <label for="nb" class="classic">' .
363    form::number('nb', 0, 999, $nb_per_page) . ' ' .
364    __('entries per page') . '</label></p>' .
365    '</div>' .
366    '</div>' .
367
368    '<p><input type="submit" value="' . __('Apply filters and display options') . '" />' .
369    '<br class="clear" /></p>' . //Opera sucks
370    '</form>';
371
372    # Show posts
373    $post_list->display($page, $nb_per_page,
374        '<form action="' . $core->adminurl->get("admin.posts") . '" method="post" id="form-entries">' .
375
376        '%s' .
377
378        '<div class="two-cols">' .
379        '<p class="col checkboxes-helpers"></p>' .
380
381        '<p class="col right"><label for="action" class="classic">' . __('Selected entries action:') . '</label> ' .
382        form::combo('action', $posts_actions_page->getCombo()) .
383        '<input id="do-action" type="submit" value="' . __('ok') . '" disabled /></p>' .
384        form::hidden(['user_id'], $user_id) .
385        form::hidden(['cat_id'], $cat_id) .
386        form::hidden(['status'], $status) .
387        form::hidden(['password'], $password) .
388        form::hidden(['selected'], $selected) .
389        form::hidden(['comment'], $comment) .
390        form::hidden(['trackback'], $trackback) .
391        form::hidden(['attachment'], $attachment) .
392        form::hidden(['month'], $month) .
393        form::hidden(['lang'], $lang) .
394        form::hidden(['sortby'], $sortby) .
395        form::hidden(['order'], $order) .
396        form::hidden(['page'], $page) .
397        form::hidden(['nb'], $nb_per_page) .
398        $core->formNonce() .
399        '</div>' .
400        '</form>',
401        $show_filters
402    );
403}
404
405dcPage::helpBlock('core_posts');
406dcPage::close();
Note: See TracBrowser for help on using the repository browser.

Sites map