/** * Method used to quickly change the ranking of a faq entry * from the administration screen. * * @access public * @param integer $faq_id The faq entry ID * @param string $rank_type Whether we should change the entry down or up (options are 'asc' or 'desc') * @return boolean */ function changeRank($faq_id, $rank_type) { // check if the current rank is not already the first or last one $ranking = FAQ::_getRanking(); $ranks = array_values($ranking); $ids = array_keys($ranking); $last = end($ids); $first = reset($ids); if ($rank_type == 'asc' && $faq_id == $first || $rank_type == 'desc' && $faq_id == $last) { return false; } if ($rank_type == 'asc') { $diff = -1; } else { $diff = 1; } $new_rank = $ranking[$faq_id] + $diff; if (in_array($new_rank, $ranks)) { // switch the rankings here... $index = array_search($new_rank, $ranks); $replaced_faq_id = $ids[$index]; $stmt = "UPDATE\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "faq\n SET\n faq_rank=" . $ranking[$faq_id] . "\n WHERE\n faq_id=" . $replaced_faq_id; $GLOBALS["db_api"]->dbh->query($stmt); } $stmt = "UPDATE\n " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "faq\n SET\n faq_rank=" . $new_rank . "\n WHERE\n faq_id=" . $faq_id; $GLOBALS["db_api"]->dbh->query($stmt); return true; }