/** * Main function that calls others * * @return bool */ public function settings($h) { // grab the number of pending posts: $sql = "SELECT COUNT(post_id) FROM " . TABLE_POSTS . " WHERE post_status = %s"; $num_pending = $h->db->get_var($h->db->prepare($sql, 'pending')); if (!$num_pending) { $num_pending = "0"; } $h->vars['num_pending'] = $num_pending; // clear variables: $h->vars['search_term'] = ''; // Get settings $submit_settings = $h->getSerializedSettings('submit'); $set_pending = $submit_settings['set_pending']; if ($set_pending == 'some_pending' || $set_pending == 'all_pending') { $h->vars['post_status_filter'] = 'pending'; } else { $h->vars['post_status_filter'] = 'all'; } // Get unique statuses for Filter form: $h->vars['statuses'] = $h->getUniqueStatuses(); // if checkboxes if ($h->cage->get->getAlpha('type') == 'checkboxes' && $h->cage->get->keyExists('post')) { foreach ($h->cage->get->keyExists('post') as $id => $checked) { $h->readPost($id); $h->message = $h->lang["post_man_checkboxes_status_changed"]; // default "Changed status" message switch ($h->cage->get->testAlnumLines('checkbox_action')) { case 'new_selected': $h->changePostStatus('new'); $h->pluginHook('post_man_status_new'); break; case 'top_selected': $h->changePostStatus('top'); $h->pluginHook('post_man_status_top'); break; case 'pending_selected': $h->changePostStatus('pending'); $h->pluginHook('post_man_status_pending'); break; case 'bury_selected': $h->changePostStatus('buried'); $h->pluginHook('post_man_status_buried'); break; case 'delete_selected': $h->deletePost(); $h->pluginHook('post_man_delete'); $h->message = $h->lang["post_man_checkboxes_post_deleted"]; break; default: // do nothing $h->message = $h->lang["post_man_checkboxes_no_action"]; $h->messageType = 'red'; break; } } // Need to clear both these caches to be sure related items are updated in widgets, etc.: $h->clearCache('html_cache', false); $h->clearCache('db_cache', false); } $p = new Post(); // if search $search_term = ''; if ($h->cage->get->getAlpha('type') == 'search') { $search_term = $h->cage->get->sanitizeTags('search_value'); $h->vars['search_term'] = $search_term; // used to refill the search box after a search if ($h->isActive('search')) { if (strlen($search_term) < 3) { $h->message = $h->lang["user_man_search_too_short"]; $h->messageType = 'red'; } else { $s = new Search(); require_once PLUGINS . 'sb_base/libs/SbBaseFunctions.php'; $sbFuncs = new SbBaseFunctions(); // get count $s->prepareSearchFilter($h, stripslashes(trim($h->db->escape($search_term))), 'count'); $filtered_search = $sbFuncs->filter($h->vars['filter'], 0, true, $h->vars['select'], $h->vars['orderby']); $posts_count = $sbFuncs->getPosts($h, $filtered_search); $count = $posts_count[0]->number; // get query $s->prepareSearchFilter($h, stripslashes(trim($h->db->escape($search_term))), 'query'); $prepared_filter = $sbFuncs->filter($h->vars['filter'], 0, true, $h->vars['select'], $h->vars['orderby']); if (isset($prepared_filter[1])) { $query = $h->db->prepare($prepared_filter); } else { $query = $prepared_filter[0]; // returns the prepared query array } } } else { $h->message = $h->lang["post_man_need_search"]; $h->messageType = 'red'; } } // if filter $filter = ''; if ($h->cage->get->getAlpha('type') == 'filter') { $filter = $h->cage->get->testAlnumLines('post_status_filter'); $h->vars['post_status_filter'] = $filter; // used to refill the filter box after use switch ($filter) { case 'all': $sort_clause = ' ORDER BY post_date DESC'; // ordered newest first for convenience $count_sql = "SELECT count(*) AS number FROM " . TABLE_POSTS; $count = $h->db->get_var($h->db->prepare($count_sql)); $sql = "SELECT * FROM " . TABLE_POSTS . $sort_clause; $query = $h->db->prepare($sql); break; case 'not_buried': $where_clause = " WHERE post_status != %s"; $sort_clause = ' ORDER BY post_date DESC'; // ordered newest first for convenience $count_sql = "SELECT count(*) AS number FROM " . TABLE_POSTS . $where_clause; $count = $h->db->get_var($h->db->prepare($count_sql, 'buried')); $sql = "SELECT * FROM " . TABLE_POSTS . $where_clause . $sort_clause; $query = $h->db->prepare($sql, 'buried'); break; case 'newest': $sort_clause = ' ORDER BY post_date DESC'; // same as "all" $count_sql = "SELECT count(*) AS number FROM " . TABLE_POSTS; $count = $h->db->get_var($h->db->prepare($count_sql)); $sql = "SELECT * FROM " . TABLE_POSTS . $sort_clause; $query = $h->db->prepare($sql); break; case 'oldest': $sort_clause = ' ORDER BY post_date ASC'; $count_sql = "SELECT count(*) AS number FROM " . TABLE_POSTS; $count = $h->db->get_var($h->db->prepare($count_sql)); $sql = "SELECT * FROM " . TABLE_POSTS . $sort_clause; $query = $h->db->prepare($sql); break; default: $where_clause = " WHERE post_status = %s"; $sort_clause = ' ORDER BY post_date DESC'; // ordered newest first for convenience $count_sql = "SELECT count(*) AS number FROM " . TABLE_POSTS . $where_clause; $count = $h->db->get_var($h->db->prepare($count_sql, $filter)); $sql = "SELECT * FROM " . TABLE_POSTS . $where_clause . $sort_clause; $query = $h->db->prepare($sql, $filter); // filter = new, top, or other post status break; } } if (!isset($query)) { // default list if ($h->vars['post_status_filter'] == 'pending') { $where_clause = " WHERE post_status = %s"; $sort_clause = ' ORDER BY post_date DESC'; // ordered newest first for convenience $count_sql = "SELECT count(*) AS number FROM " . TABLE_POSTS . $where_clause; $count = $h->db->get_var($h->db->prepare($count_sql, 'pending')); $sql = "SELECT * FROM " . TABLE_POSTS . $where_clause . $sort_clause; $query = $h->db->prepare($sql, 'pending'); } else { $sort_clause = ' ORDER BY post_date DESC'; // ordered newest first for convenience $count_sql = "SELECT count(*) AS number FROM " . TABLE_POSTS; $count = $h->db->get_var($h->db->prepare($count_sql)); $sql = "SELECT * FROM " . TABLE_POSTS . $sort_clause; $query = $h->db->prepare($sql); } } $pagedResults = $h->pagination($query, $count, 20, 'posts'); if ($pagedResults) { $h->vars['post_man_rows'] = $this->drawRows($h, $p, $pagedResults, $filter, $search_term); } elseif ($h->vars['post_status_filter'] == 'pending') { $h->message = $h->lang['post_man_no_pending_posts']; $h->messageType = 'green'; } // Show template: $h->displayTemplate('post_man_main', 'post_manager'); }
/** * Get related results from the database * * @param string $search_terms - space separated string of words * @param int $num_posts - the max number of posts to return * return array|false */ public function getRelatedPosts($h, $search_terms = '', $num_posts = 10) { if (!$h->isActive('search')) { return false; } require_once PLUGINS . 'search/search.php'; $search = new Search(); $h->vars['filter']['post_archived != %s'] = 'Y'; $h->vars['filter']['post_id != %d'] = $h->post->id; $prepared_search = $search->prepareSearchFilter($h, $search_terms); extract($prepared_search); // include sb_base_functions class: require_once PLUGINS . 'sb_base/libs/SbBaseFunctions.php'; $funcs = new SbBaseFunctions(); $prepared_filter = $funcs->filter($h->vars['filter'], $num_posts, false, $h->vars['select'], $h->vars['orderby']); $results = $funcs->getPosts($h, $prepared_filter); return $results; }