01 September 2005 * * @package webtrees * @subpackage Charts * @version $Id$ */ define('WT_SCRIPT_NAME', 'faq.php'); require './includes/session.php'; global $WT_IMAGES, $faqs; // -- print html header information print_header(i18n::translate('FAQ List')); // -- Get all of the _POST variables we're interested in $action = safe_REQUEST($_REQUEST, 'action', WT_REGEX_UNSAFE, 'show'); $adminedit = safe_REQUEST($_REQUEST, 'adminedit', WT_REGEX_UNSAFE, WT_USER_GEDCOM_ADMIN); $type = safe_REQUEST($_REQUEST, 'type', WT_REGEX_UNSAFE); $oldGEDCOM = safe_REQUEST($_REQUEST, 'oldGEDCOM', WT_REGEX_UNSAFE); $whichGEDCOM= safe_REQUEST($_REQUEST, 'whichGEDCOM', WT_REGEX_UNSAFE); $oldOrder = safe_REQUEST($_REQUEST, 'oldOrder', WT_REGEX_UNSAFE); $order = safe_REQUEST($_REQUEST, 'order', WT_REGEX_UNSAFE); $header = safe_REQUEST($_POST, 'header', WT_REGEX_UNSAFE); $body = safe_REQUEST($_POST, 'body', WT_REGEX_UNSAFE); $pidh = safe_REQUEST($_REQUEST, 'pidh', WT_REGEX_UNSAFE); $pidb = safe_REQUEST($_REQUEST, 'pidb', WT_REGEX_UNSAFE); $id = safe_REQUEST($_REQUEST, 'id', WT_REGEX_UNSAFE); // NOTE: Commit the faq data to the DB if ($action=="commit") { if (empty($whichGEDCOM)) $whichGEDCOM = $GEDCOM; if (empty($oldGEDCOM)) $oldGEDCOM = $whichGEDCOM; if (empty($order)) $order = 0; switch ($type) { case 'update': $faqs = get_faq_data(); if (isset($faqs[$order]) && $order!=$oldOrder) { // New position number is already in use: find next higher one that isn't used while (true) { $order++; if (!isset($faqs[$order])) break; if ($order==$oldOrder) break; } } $header = str_replace(array('<', '>'), array('<', '>'), $header); WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=?, b_username=?, b_config=? WHERE b_id=? and b_username=? and b_location=?") ->execute(array($order, $whichGEDCOM, serialize($header), $pidh, $oldGEDCOM, 'header')); $body = str_replace(array('<', '>'), array('<', '>'), $body); WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=?, b_username=?, b_config=? WHERE b_id=? and b_username=? and b_location=?") ->execute(array($order, $whichGEDCOM, serialize($body), $pidb, $oldGEDCOM, 'body')); AddToChangeLog("FAQ item has been edited.
Header ID: ".$pidh.".
Body ID: ".$pidb, get_id_from_gedcom($GEDCOM)); break; case 'delete': WT_DB::prepare("DELETE FROM {$TBLPREFIX}blocks WHERE b_order=? AND b_name=? AND b_username=?") ->execute(array($id, 'faq', $oldGEDCOM)); AddToChangeLog("FAQ item has been deleted.
Header ID: ".$pidh.".
Body ID: ".$pidb, get_id_from_gedcom($oldGEDCOM)); break; case 'add': $faqs = get_faq_data(); if (isset($faqs[$order])) { // New position number is already in use: find next higher one that isn't used while (true) { $order++; if (!isset($faqs[$order])) break; } } $newid = get_next_id("blocks", "b_id"); $header = str_replace(array('<', '>'), array('<', '>'), $header); WT_DB::prepare("INSERT INTO {$TBLPREFIX}blocks (b_id, b_username, b_location, b_order, b_name, b_config) VALUES (?, ?, ?, ?, ?, ?)") ->execute(array($newid, $whichGEDCOM, 'header', $order, 'faq', serialize($header))); $body = str_replace(array('<', '>'), array('<', '>'), $body); WT_DB::prepare("INSERT INTO {$TBLPREFIX}blocks (b_id, b_username, b_location, b_order, b_name, b_config) VALUES (?, ?, ?, ?, ?, ?)") ->execute(array($newid+1, $whichGEDCOM, 'body', $order, 'faq', serialize($body))); AddToChangeLog("FAQ item has been added.
Header ID: ".$newid.".
Body ID: ".($newid+1), get_id_from_gedcom($whichGEDCOM)); break; case 'moveup': $faqs = get_faq_data(); if (isset($faqs[$id-1])) { WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id, $faqs[$id-1]["header"]["pid"], 'header')); WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id, $faqs[$id-1]["body"]["pid"], 'body')); } WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id-1, $pidh, 'header')); WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id-1, $pidb, 'body')); AddToChangeLog("FAQ item has been moved up.
Header ID: ".$pidh.".
Body ID: ".$pidb, get_id_from_gedcom($oldGEDCOM)); break; case 'movedown': $faqs = get_faq_data(); if (isset($faqs[$id+1])) { WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id, $faqs[$id+1]["header"]["pid"], 'header')); WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id, $faqs[$id+1]["body"]["pid"], 'body')); } WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id+1, $pidh, 'header')); WT_DB::prepare("UPDATE {$TBLPREFIX}blocks SET b_order=? WHERE b_id=? and b_location=?") ->execute(array($id+1, $pidb, 'body')); AddToChangeLog("FAQ item has been moved down.
Header ID: ".$pidh.".
Body ID: ".$pidb, get_id_from_gedcom($GEDCOM)); break; } $action = "show"; } if ($action=="add") { $i=1; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo '
'; echo i18n::translate('Add FAQ item'), help_link('add_faq_item'); echo '
'; echo i18n::translate('FAQ Header'), help_link('add_faq_header'); echo '
'; echo i18n::translate('FAQ Body'), help_link("add_faq_body","qm","add_faq_body"); echo '
'; echo i18n::translate('FAQ Position'), help_link('add_faq_order'); echo ''; echo i18n::translate('FAQ Visibility'), help_link('add_faq_visibility'); echo '
'; echo '
'; echo ' 
'; echo '
'; } if ($action == "edit") { if ($id == NULL) { $error = true; $error_message = i18n::translate('No FAQ ID has been specified !'); $action = "show"; } else { $faqs = get_faq_data($id); $i=1; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; foreach ($faqs as $id => $data) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo ''; echo '
'; echo i18n::translate('Edit FAQ item'), help_link('edit_faq_item'); echo '
'; echo i18n::translate('FAQ Header'), help_link('add_faq_header'); echo '
'; echo i18n::translate('FAQ Body'), help_link('add_faq_body'); echo '
'; echo i18n::translate('FAQ Position'), help_link('add_faq_order'); echo ''; echo i18n::translate('FAQ Visibility'), help_link('add_faq_visibility'); echo '
'; echo '
'; echo ' 
'; echo '
'; } } if ($action == "show") { $faqs = get_faq_data(); echo ''; if (count($faqs) == 0) { if (WT_USER_GEDCOM_ADMIN) { echo ''; } else { echo ''; } } else { // NOTE: Add a preview link if (WT_USER_GEDCOM_ADMIN) { echo ''; if ($adminedit) { echo ''; } echo ''; if ($adminedit) { if (isset($error)) echo ''; else echo ''; } echo ''; } foreach($faqs as $id => $data) { if ($data["header"] && $data["body"]) { echo ''; // NOTE: Print the position of the current item if ($adminedit) { echo ''; } // NOTE: Print the header of the current item $header = str_replace(array('<', '>'), array('<', '>'), embed_globals($data["header"]["text"])); echo ''; $body = str_replace(array('<', '>'), array('<', '>'), embed_globals($data["body"]["text"])); echo ''; // NOTE: Print the edit options of the current item if (WT_USER_GEDCOM_ADMIN && $adminedit) { echo ''; } // NOTE: Print the body text of the current item echo ''; } } } echo '
'; echo '', i18n::translate('Add FAQ item'), ''; echo help_link('add_faq_item'); echo '
', i18n::translate('The FAQ list is empty.'), '
'; echo '', i18n::translate('Add'), ''; echo help_link('add_faq_item'); echo ''; if ($adminedit) { echo '', i18n::translate('Preview'), ''; echo help_link('preview_faq_item'); } else { echo '', i18n::translate('Edit'), ''; echo help_link('restore_faq_edits'); } echo '', $error_message, ' 
'; echo i18n::translate('Position item'), ': ', $id, ', '; if ($data["header"]["gedcom"]=="*all*") echo i18n::translate('ALL'); else echo PrintReady($data["header"]["gedcom"]); echo '', $header, '
'; echo ''; echo help_link('moveup_faq_item'); echo ''; echo ''; echo help_link('movedown_faq_item'); echo ''; echo '', i18n::translate('Edit'), ''; echo help_link('edit_faq_item'); echo ''; echo '', i18n::translate('Delete'), ''; echo help_link('delete_faq_item'); echo '', nl2br($body), '
'; } if ($action != "show") { ?>