Esempio n. 1
0
function qa_db_select_with_pending()
{
    require_once QA_INCLUDE_DIR . 'qa-app-options.php';
    global $qa_db_pending_selectspecs, $qa_db_pending_results;
    $selectspecs = func_get_args();
    $singleresult = count($selectspecs) == 1;
    $outresults = array();
    foreach ($selectspecs as $key => $selectspec) {
        // can pass null parameters
        if (empty($selectspec)) {
            unset($selectspecs[$key]);
            $outresults[$key] = null;
        }
    }
    if (is_array($qa_db_pending_selectspecs)) {
        foreach ($qa_db_pending_selectspecs as $pendingid => $selectspec) {
            if (!isset($qa_db_pending_results[$pendingid])) {
                $selectspecs['pending_' . $pendingid] = $selectspec;
            }
        }
    }
    $outresults = $outresults + qa_db_multi_select($selectspecs);
    if (is_array($qa_db_pending_selectspecs)) {
        foreach ($qa_db_pending_selectspecs as $pendingid => $selectspec) {
            if (!isset($qa_db_pending_results[$pendingid])) {
                $qa_db_pending_results[$pendingid] = $outresults['pending_' . $pendingid];
                unset($outresults['pending_' . $pendingid]);
            }
        }
    }
    return $singleresult ? $outresults[0] : $outresults;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
function qa_preload_options()
{
    global $qa_options_loaded;
    if (!@$qa_options_loaded) {
        $selectspecs = array('options' => array('columns' => array('title', 'content'), 'source' => '^options', 'arraykey' => 'title', 'arrayvalue' => 'content'), 'time' => array('columns' => array('title' => "'db_time'", 'content' => 'UNIX_TIMESTAMP(NOW())'), 'arraykey' => 'title', 'arrayvalue' => 'content'));
        if (QA_OPTIMIZE_DISTANT_DB) {
            require_once QA_INCLUDE_DIR . 'qa-db-selects.php';
            foreach ($selectspecs as $pendingid => $selectspec) {
                qa_db_queue_pending_select($pendingid, $selectspec);
            }
        } else {
            qa_load_options_results(qa_db_multi_select($selectspecs));
        }
    }
}
Esempio n. 4
0
function qa_post_get_question_commentsfollows($questionid)
{
    $commentsfollows = array();
    list($childposts, $achildposts) = qa_db_multi_select(array(qa_db_full_child_posts_selectspec(null, $questionid), qa_db_full_a_child_posts_selectspec(null, $questionid)));
    foreach ($childposts as $postid => $post) {
        if ($post['basetype'] == 'C') {
            $commentsfollows[$postid] = $post;
        }
    }
    foreach ($achildposts as $postid => $post) {
        if ($post['basetype'] == 'Q' || $post['basetype'] == 'C') {
            $commentsfollows[$postid] = $post;
        }
    }
    return $commentsfollows;
}