function qa_page_queue_pending() { if (qa_to_override(__FUNCTION__)) { $args = func_get_args(); return qa_call_override(__FUNCTION__, $args); } qa_preload_options(); $loginuserid = qa_get_logged_in_userid(); if (isset($loginuserid)) { if (!QA_FINAL_EXTERNAL_USERS) { qa_db_queue_pending_select('loggedinuser', qa_db_user_account_selectspec($loginuserid, true)); } qa_db_queue_pending_select('notices', qa_db_user_notices_selectspec($loginuserid)); } qa_db_queue_pending_select('navpages', qa_db_pages_selectspec(array('B', 'M', 'O', 'F'))); qa_db_queue_pending_select('widgets', qa_db_widgets_selectspec()); }
function qa_db_select_with_pending() { require_once QA_INCLUDE_DIR . 'qa-app-options.php'; global $qa_nav_pages_pending, $qa_nav_pages_cached, $qa_widgets_pending, $qa_widgets_cached, $qa_logged_in_pending; $selectspecs = func_get_args(); $singleresult = count($selectspecs) == 1; foreach ($selectspecs as $key => $selectspec) { // can pass null parameters if (empty($selectspec)) { unset($selectspecs[$key]); } } $optionselectspecs = qa_options_pending_selectspecs(); foreach ($optionselectspecs as $key => $selectspec) { $selectspecs[$key] = $selectspec; } if (@$qa_logged_in_pending && !QA_FINAL_EXTERNAL_USERS) { $loggedinselectspec = qa_logged_in_user_selectspec(); if (is_array($loggedinselectspec)) { $selectspecs['_loggedin'] = $loggedinselectspec; } } else { $loggedinselectspec = null; } if (@$qa_nav_pages_pending && !isset($qa_nav_pages_cached)) { $selectspecs['_navpages'] = qa_db_pages_selectspec(array('B', 'M', 'O', 'F')); } if (@$qa_widgets_pending && !isset($qa_widgets_cached)) { $selectspecs['_widgets'] = qa_db_widgets_selectspec(); } $outresults = qa_db_multi_select($selectspecs); qa_options_load_options($optionselectspecs, $outresults); if (is_array($loggedinselectspec)) { qa_logged_in_user_load($loggedinselectspec, $outresults['_loggedin']); } if (@$qa_nav_pages_pending && !isset($qa_nav_pages_cached)) { $qa_nav_pages_cached = $outresults['_navpages']; } if (@$qa_widgets_pending && !isset($qa_widgets_cached)) { $qa_widgets_cached = $outresults['_widgets']; } return $singleresult ? $outresults[0] : $outresults; }
More about this license: http://www.question2answer.org/license.php */ if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser header('Location: ../'); exit; } require_once QA_INCLUDE_DIR . 'qa-app-admin.php'; require_once QA_INCLUDE_DIR . 'qa-db-selects.php'; // Get current list of widgets and determine the state of this admin page $widgetid = qa_post_text('edit'); if (!strlen($widgetid)) { $widgetid = qa_get('edit'); } list($widgets, $pages) = qa_db_select_with_pending(qa_db_widgets_selectspec(), qa_db_pages_selectspec()); if (isset($widgetid)) { $editwidget = null; foreach ($widgets as $widget) { if ($widget['widgetid'] == $widgetid) { $editwidget = $widget; } } } else { $editwidget = array('title' => qa_post_text('title')); if (!isset($editwidget['title'])) { $editwidget['title'] = qa_get('title'); } } $module = qa_load_module('widget', @$editwidget['title']); $widgetfound = isset($module);
foreach ($searchmodules as $searchmodule) { $searchmodule->index_page($pageid, $inslug, $inheading, $incontent, 'html', $indextext); } } qa_db_page_move($pageid, substr($inposition, 0, 1), substr($inposition, 1)); $editpage = null; $reloadpages = true; } } if (qa_clicked('dosaveview') && empty($errors) && !$isexternal) { qa_redirect($inslug); } } if ($reloadpages) { qa_db_flush_pending_result('navpages'); $pages = qa_db_select_with_pending(qa_db_pages_selectspec()); } } } // Prepare content for theme $qa_content = qa_content_prepare(); $qa_content['title'] = qa_lang_html('admin/admin_title') . ' - ' . qa_lang_html('admin/pages_title'); $qa_content['error'] = $securityexpired ? qa_lang_html('admin/form_security_expired') : qa_admin_page_error(); if (isset($editpage)) { $positionoptions = array(); if (!$isexternal) { $positionoptions['_' . max(1, @$editpage['position'])] = qa_lang_html('admin/no_link'); } $navlangkey = array('B' => 'admin/before_main_menu', 'M' => 'admin/after_main_menu', 'O' => 'admin/opposite_main_menu', 'F' => 'admin/after_footer'); foreach ($navlangkey as $nav => $langkey) { $previous = null;
function qa_get_search_results($query, $start, $count, $userid, $absoluteurls, $fullcontent) { // Identify which search module should be used $searchmodules = qa_load_modules_with('search', 'process_search'); if (!count($searchmodules)) { qa_fatal_error('No search engine is available'); } $module = reset($searchmodules); // use first one by default if (count($searchmodules) > 1) { $tryname = qa_opt('search_module'); // use chosen one if it's available if (isset($searchmodules[$tryname])) { $module = $searchmodules[$tryname]; } } // Get the results $results = $module->process_search($query, $start, $count, $userid, $absoluteurls, $fullcontent); // Work out what additional information (if any) we need to retrieve for the results $keypostidgetfull = array(); $keypostidgettype = array(); $keypostidgetquestion = array(); $keypageidgetpage = array(); foreach ($results as $result) { if (isset($result['question_postid']) && !isset($result['question'])) { $keypostidgetfull[$result['question_postid']] = true; } if (isset($result['match_postid'])) { if (!(isset($result['question_postid']) || isset($result['question']))) { $keypostidgetquestion[$result['match_postid']] = true; } elseif (!isset($result['match_type'])) { $keypostidgettype[$result['match_postid']] = true; } } if (isset($result['page_pageid']) && !isset($result['page'])) { $keypageidgetpage[$result['page_pageid']] = true; } } // Perform the appropriate database queries list($postidfull, $postidtype, $postidquestion, $pageidpage) = qa_db_select_with_pending(count($keypostidgetfull) ? qa_db_posts_selectspec($userid, array_keys($keypostidgetfull), $fullcontent) : null, count($keypostidgettype) ? qa_db_posts_basetype_selectspec(array_keys($keypostidgettype)) : null, count($keypostidgetquestion) ? qa_db_posts_to_qs_selectspec($userid, array_keys($keypostidgetquestion), $fullcontent) : null, count($keypageidgetpage) ? qa_db_pages_selectspec(null, array_keys($keypageidgetpage)) : null); // Supplement the results as appropriate foreach ($results as $key => $result) { if (isset($result['question_postid']) && !isset($result['question'])) { if (@$postidfull[$result['question_postid']]['basetype'] == 'Q') { $result['question'] = @$postidfull[$result['question_postid']]; } } if (isset($result['match_postid'])) { if (!(isset($result['question_postid']) || isset($result['question']))) { $result['question'] = @$postidquestion[$result['match_postid']]; if (!isset($result['match_type'])) { $result['match_type'] = @$result['question']['obasetype']; } } elseif (!isset($result['match_type'])) { $result['match_type'] = @$postidtype[$result['match_postid']]; } } if (isset($result['question']) && !isset($result['question_postid'])) { $result['question_postid'] = $result['question']['postid']; } if (isset($result['page_pageid']) && !isset($result['page'])) { $result['page'] = @$pageidpage[$result['page_pageid']]; } if (!isset($result['title'])) { if (isset($result['question'])) { $result['title'] = $result['question']['title']; } elseif (isset($result['page'])) { $result['title'] = $result['page']['heading']; } } if (!isset($result['url'])) { if (isset($result['question'])) { $result['url'] = qa_q_path($result['question']['postid'], $result['question']['title'], $absoluteurls, @$result['match_type'], @$result['match_postid']); } elseif (isset($result['page'])) { $result['url'] = qa_path($result['page']['tags'], null, qa_opt('site_url')); } } $results[$key] = $result; } // Return the results return $results; }