diff --git a/index.php b/index.php index cdc1751..d9e458f 100644 --- a/index.php +++ b/index.php @@ -208,197 +208,12 @@ if ($part == 'period') { # Prepare combos for posts list if ($period_id) { - try { - # Getting categories - $categories = $core->blog->getCategories(['post_type' => 'post']); + # Filters + $post_filter = new adminPostFilter($core); + $post_filter->add('part', 'period'); - # Getting authors - $users = $core->blog->getPostsUsers(); - - # Getting dates - $dates = $core->blog->getDates(['type' => 'month']); - - # Getting langs - $langs = $core->blog->getLangs(); - } catch (Exception $e) { - $core->error->add($e->getMessage()); - } - } - - # Creating filter combo boxes - if ($period_id && !$core->error->flag()) { - - # Users combo - $users_combo = array_merge( - ['-' => ''], - dcAdminCombos::getUsersCombo($users) - ); - - # Categories combo - $categories_combo = array_merge( - [ - new formSelectOption('-', ''), - new formSelectOption(__('(No cat)'), 'NULL') - ], - dcAdminCombos::getCategoriesCombo($categories, false) - ); - $categories_values = []; - foreach ($categories_combo as $cat) { - if (isset($cat->value)) { - $categories_values[$cat->value] = true; - } - } - - # Status combo - $status_combo = array_merge( - ['-' => ''], - dcAdminCombos::getPostStatusesCombo() - ); - - # Selection combo - $selected_combo = [ - '-' => '', - __('Selected') => '1', - __('Not selected') => '0' - ]; - - # Attachments combo - $attachment_combo = [ - '-' => '', - __('With attachments') => '1', - __('Without attachments') => '0' - ]; - - # Months combo - $dt_m_combo = array_merge( - ['-' => ''], - dcAdminCombos::getDatesCombo($dates) - ); - - # Langs combo - $lang_combo = array_merge( - ['-' => ''], - dcAdminCombos::getLangsCombo($langs, false) - ); - - # Sort_by combo - $sortby_combo = [ - __('Date') => 'post_dt', - __('Title') => 'post_title', - __('Category') => 'cat_title', - __('Author') => 'user_id', - __('Status') => 'post_status', - __('Selected') => 'post_selected', - __('Number of comments') => 'nb_comment', - __('Number of trackbacks') => 'nb_trackback' - ]; - - # order combo - $order_combo = [ - __('Descending') => 'desc', - __('Ascending') => 'asc' - ]; - - # parse filters - $user_id = !empty($_GET['user_id']) ? $_GET['user_id'] : ''; - $cat_id = !empty($_GET['cat_id']) ? $_GET['cat_id'] : ''; - $status = isset($_GET['status']) ? $_GET['status'] : ''; - $selected = isset($_GET['selected']) ? $_GET['selected'] : ''; - $attachment = isset($_GET['attachment']) ? $_GET['attachment'] : ''; - $month = !empty($_GET['month']) ? $_GET['month'] : ''; - $lang = !empty($_GET['lang']) ? $_GET['lang'] : ''; - $sortby = !empty($_GET['sortby']) ? $_GET['sortby'] : 'post_dt'; - $order = !empty($_GET['order']) ? $_GET['order'] : 'desc'; - - $show_filters = false; - - $page = !empty($_GET['page']) ? max(1, (integer) $_GET['page']) : 1; - $nb_per_page = 30; - - if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) { - if ($nb_per_page != $_GET['nb']) { - $show_filters = true; - } - $nb_per_page = (integer) $_GET['nb']; - } - - $params['limit'] = [(($page-1)*$nb_per_page), $nb_per_page]; + $params = $post_filter->params(); $params['no_content'] = true; - $params['periodical_id'] = $period_id; - - # - User filter - if ($user_id !== '' && in_array($user_id, $users_combo)) { - $params['user_id'] = $user_id; - $show_filters = true; - } else { - $user_id=''; - } - - # - Categories filter - if ($cat_id !== '' && isset($categories_values[$cat_id])) { - $params['cat_id'] = $cat_id; - $show_filters = true; - } else { - $cat_id=''; - } - - # - Status filter - if ($status !== '' && in_array($status, $status_combo)) { - $params['post_status'] = $status; - $show_filters = true; - } else { - $status=''; - } - - # - Selected filter - if ($selected !== '' && in_array($selected, $selected_combo)) { - $params['post_selected'] = $selected; - $show_filters = true; - } else { - $selected=''; - } - - # - Selected filter - if ($attachment !== '' && in_array($attachment, $attachment_combo)) { - $params['media'] = $attachment; - $params['link_type'] = 'attachment'; - $show_filters = true; - } else { - $attachment=''; - } - - # - Month filter - if ($month !== '' && in_array($month, $dt_m_combo)) { - $params['post_month'] = substr($month, 4, 2); - $params['post_year'] = substr($month, 0, 4); - $show_filters = true; - } else { - $month=''; - } - - # - Lang filter - if ($lang !== '' && in_array($lang, $lang_combo)) { - $params['post_lang'] = $lang; - $show_filters = true; - } else { - $lang=''; - } - - # - Sortby and order filter - if ($sortby !== '' && in_array($sortby, $sortby_combo)) { - if ($order !== '' && in_array($order, $order_combo)) { - $params['order'] = $sortby.' '.$order; - } else { - $order='desc'; - } - - if ($sortby != 'post_dt' || $order != 'desc') { - $show_filters = true; - } - } else { - $sortby='post_dt'; - $order='desc'; - } # Get posts try { @@ -410,25 +225,8 @@ if ($part == 'period') { } $starting_script = - dcPage::jsLoad( - 'index.php?pf=periodical/js/postsfilter.js' - ) . - '\n"; + dcPage::jsLoad('index.php?pf=periodical/js/checkbox.js') . + $post_filter->js($core->adminurl->get('admin.plugin.periodical', ['part' => 'period', 'period_id' => $period_id], '&').'#posts'); } # Display @@ -491,7 +289,7 @@ if ($part == 'period') { if ($period_id && !$core->error->flag()) { # Actions combo box - $combo_action = array(); + $combo_action = []; $combo_action[__('Entries')][__('Publish')] = 'publish'; $combo_action[__('Entries')][__('Unpublish')] = 'unpublish'; $combo_action[__('Periodical')][__('Remove from periodical')] = 'remove_post_periodical'; @@ -499,16 +297,16 @@ if ($part == 'period') { $base_url = $p_url . '&period_id=' .$period_id . '&part=period' . - '&user_id=' . $user_id . - '&cat_id=' . $cat_id . - '&status=' . $status . - '&selected=' . $selected . - '&attachment=' . $attachment . - '&month=' . $month . - '&lang=' . $lang . - '&sortby=' . $sortby . - '&order=' . $order . - '&nb=' . $nb_per_page . + '&user_id=' . $post_filter->user_id . + '&cat_id=' . $post_filter->cat_id . + '&status=' . $post_filter->status . + '&selected=' . $post_filter->selected . + '&attachment=' . $post_filter->attachment . + '&month=' . $post_filter->month . + '&lang=' . $post_filter->lang . + '&sortby=' . $post_filter->sortby . + '&order=' . $post_filter->order . + '&nb=' . $post_filter->nb . '&page=%s' . '#posts'; @@ -518,57 +316,17 @@ if ($part == 'period') { '" id="posts">'; # Filters - echo - '
'; + $post_filter->display(['admin.plugin.periodical','#posts'], + $core->adminurl->getHiddenFormFields('admin.plugin.zoneclearFeedServer', [ + 'p' => 'periodical', + 'part' => 'period', + 'period_id' => $period_id + ]) + ); # Posts list echo - $post_list->postDisplay($page, $nb_per_page, $base_url, + $post_list->postDisplay($post_filter->page, $post_filter->nb, $base_url, '' @@ -660,7 +407,7 @@ if ($part == 'period') { # Filters $p_filter = new adminGenericFilter($core, 'periodical'); - $p_filter->add('part', 'period'); + $p_filter->add('part', 'periods'); $params = $p_filter->params(); @@ -676,7 +423,7 @@ if ($part == 'period') { # Display echo '