config();
break;
case 'admin_delete':
$this->delete();
$this->config();
break;
case 'admin_edit':
$this->edit();
break;
case 'admin_movedown':
$this->movedown();
$this->config();
break;
case 'admin_moveup':
$this->moveup();
$this->config();
break;
case 'show':
$this->show();
break;
default:
header('HTTP/1.0 404 Not Found');
}
}
// Implement WT_Module_Config
public function getConfigLink() {
return 'module.php?mod='.$this->getName().'&mod_action=admin_config';
}
// Implement class WT_Module_Block
public function getBlock($block_id, $template=true, $cfg=null) {
}
// Implement class WT_Module_Block
public function loadAjax() {
return false;
}
// Implement class WT_Module_Block
public function isUserBlock() {
return false;
}
// Implement class WT_Module_Block
public function isGedcomBlock() {
return false;
}
// Implement class WT_Module_Block
public function configureBlock($block_id) {
}
// Action from the configuration page
private function edit() {
global $TEXT_DIRECTION;
require_once WT_ROOT.'includes/functions/functions_edit.php';
if (safe_POST_bool('save')) {
$block_id=safe_POST('block_id');
if ($block_id) {
WT_DB::prepare(
"UPDATE `##block` SET gedcom_id=?, block_order=? WHERE block_id=?"
)->execute(array(
safe_POST('gedcom_id'),
(int)safe_POST('block_order'),
$block_id
));
} else {
WT_DB::prepare(
"INSERT INTO `##block` (gedcom_id, module_name, block_order) VALUES (?, ?, ?)"
)->execute(array(
safe_POST('gedcom_id', array_keys(get_all_gedcoms())),
$this->getName(),
(int)safe_POST('block_order')
));
$block_id=WT_DB::getInstance()->lastInsertId();
}
set_block_setting($block_id, 'header', safe_POST('header', WT_REGEX_UNSAFE));
set_block_setting($block_id, 'faqbody', safe_POST('faqbody', WT_REGEX_UNSAFE)); // allow html
$languages=array();
foreach (WT_I18N::installed_languages() as $code=>$name) {
if (safe_POST_bool('lang_'.$code)) {
$languages[]=$code;
}
}
set_block_setting($block_id, 'languages', implode(',', $languages));
$this->config();
} else {
$block_id=safe_GET('block_id');
$controller=new WT_Controller_Base();
if ($block_id) {
$controller->setPageTitle(WT_I18N::translate('Edit FAQ item'));
$header=get_block_setting($block_id, 'header');
$faqbody=get_block_setting($block_id, 'faqbody');
$block_order=WT_DB::prepare(
"SELECT block_order FROM `##block` WHERE block_id=?"
)->execute(array($block_id))->fetchOne();
$gedcom_id=WT_DB::prepare(
"SELECT gedcom_id FROM `##block` WHERE block_id=?"
)->execute(array($block_id))->fetchOne();
} else {
$controller->setPageTitle(WT_I18N::translate('Add FAQ item'));
$header='';
$faqbody='';
$block_order=WT_DB::prepare(
"SELECT IFNULL(MAX(block_order)+1, 0) FROM `##block` WHERE module_name=?"
)->execute(array($this->getName()))->fetchOne();
$gedcom_id=WT_GED_ID;
}
$controller->pageHeader();
// "Help for this page" link
echo '
', help_link('add_faq_item', $this->getName()), '
';
echo '';
exit;
}
}
private function delete() {
$block_id=safe_GET('block_id');
$block_order=WT_DB::prepare(
"SELECT block_order FROM `##block` WHERE block_id=?"
)->execute(array($block_id))->fetchOne();
WT_DB::prepare(
"DELETE FROM `##block_setting` WHERE block_id=?"
)->execute(array($block_id));
WT_DB::prepare(
"DELETE FROM `##block` WHERE block_id=?"
)->execute(array($block_id));
}
private function moveup() {
$block_id=safe_GET('block_id');
$block_order=WT_DB::prepare(
"SELECT block_order FROM `##block` WHERE block_id=?"
)->execute(array($block_id))->fetchOne();
$swap_block=WT_DB::prepare(
"SELECT block_order, block_id".
" FROM `##block`".
" WHERE block_order=(".
" SELECT MAX(block_order) FROM `##block` WHERE block_order < ? AND module_name=?".
" )".
" LIMIT 1"
)->execute(array($block_order, $this->getName()))->fetchOneRow();
if ($swap_block) {
WT_DB::prepare(
"UPDATE `##block` SET block_order=? WHERE block_id=?"
)->execute(array($swap_block->block_order, $block_id));
WT_DB::prepare(
"UPDATE `##block` SET block_order=? WHERE block_id=?"
)->execute(array($block_order, $swap_block->block_id));
}
}
private function movedown() {
$block_id=safe_GET('block_id');
$block_order=WT_DB::prepare(
"SELECT block_order FROM `##block` WHERE block_id=?"
)->execute(array($block_id))->fetchOne();
$swap_block=WT_DB::prepare(
"SELECT block_order, block_id".
" FROM `##block`".
" WHERE block_order=(".
" SELECT MIN(block_order) FROM `##block` WHERE block_order>? AND module_name=?".
" )".
" LIMIT 1"
)->execute(array($block_order, $this->getName()))->fetchOneRow();
if ($swap_block) {
WT_DB::prepare(
"UPDATE `##block` SET block_order=? WHERE block_id=?"
)->execute(array($swap_block->block_order, $block_id));
WT_DB::prepare(
"UPDATE `##block` SET block_order=? WHERE block_id=?"
)->execute(array($block_order, $swap_block->block_id));
}
}
private function show() {
global $controller;
$controller=new WT_Controller_Base();
$controller->setPageTitle($this->getTitle());
$controller->pageHeader();
$faqs=WT_DB::prepare(
"SELECT block_id, bs1.setting_value AS header, bs2.setting_value AS body".
" FROM `##block` b".
" JOIN `##block_setting` bs1 USING (block_id)".
" JOIN `##block_setting` bs2 USING (block_id)".
" WHERE module_name=?".
" AND bs1.setting_name='header'".
" AND bs2.setting_name='faqbody'".
" AND (gedcom_id IS NULL OR gedcom_id=?)".
" ORDER BY block_order"
)->execute(array($this->getName(), WT_GED_ID))->fetchAll();
// Define your colors for the alternating rows
echo '', WT_I18N::translate('Frequently asked questions'), '
';
// Instructions
echo '', WT_I18N::translate('Click on a title to go straight to it, or scroll down to read them all');
if (WT_USER_GEDCOM_ADMIN) {
echo '
';
}
echo '
';
//Start the table to contain the list of headers
$row_count = 0;
echo '';
// List of titles
foreach ($faqs as $id => $faq) {
$header =get_block_setting($faq->block_id, 'header');
$faqbody =get_block_setting($faq->block_id, 'faqbody');
$languages=get_block_setting($faq->block_id, 'languages');
if (!$languages || in_array(WT_LOCALE, explode(',', $languages))) {
$row_color = ($row_count % 2) ? 'odd' : 'even';
// NOTE: Print the header of the current item
echo '| ';
echo '', $faq->header, '';
echo ' |
';
$row_count++;
}
}
echo '
';
// Detailed entries
foreach ($faqs as $id => $faq) {
$header =get_block_setting($faq->block_id, 'header');
$faqbody =get_block_setting($faq->block_id, 'faqbody');
$languages=get_block_setting($faq->block_id, 'languages');
if (!$languages || in_array(WT_LOCALE, explode(',', $languages))) {
// NOTE: Print the body text of the current item, with its header
echo '', $faq->header;
echo '
';
echo '
';
echo '', substr($faqbody, 0, 1)=='<' ? $faqbody : nl2br($faqbody), '
';
echo '
';
}
}
}
private function config() {
global $WT_IMAGES;
$controller=new WT_Controller_Base();
$controller->setPageTitle($this->getTitle());
$controller->pageHeader();
$faqs=WT_DB::prepare(
"SELECT block_id, block_order, gedcom_id, bs1.setting_value AS header, bs2.setting_value AS faqbody".
" FROM `##block` b".
" JOIN `##block_setting` bs1 USING (block_id)".
" JOIN `##block_setting` bs2 USING (block_id)".
" WHERE module_name=?".
" AND bs1.setting_name='header'".
" AND bs2.setting_name='faqbody'".
" AND (gedcom_id IS NULL OR gedcom_id=?)".
" ORDER BY block_order"
)->execute(array($this->getName(), WT_GED_ID))->fetchAll();
$min_block_order=WT_DB::prepare(
"SELECT MIN(block_order) FROM `##block` WHERE module_name=?"
)->execute(array($this->getName()))->fetchOne();
$max_block_order=WT_DB::prepare(
"SELECT MAX(block_order) FROM `##block` WHERE module_name=?"
)->execute(array($this->getName()))->fetchOne();
echo '';
} else {
foreach ($faqs as $faq) {
echo '';
// NOTE: Print the position of the current item
echo '| ';
echo WT_I18N::translate('Position item'), ': ', $faq->block_order, ', ';
if ($faq->gedcom_id==null) {
echo WT_I18N::translate('All');
} else {
echo get_gedcom_from_id($faq->gedcom_id);
}
echo ' | ';
echo '', $faq->header, ' | ';
echo '
';
// NOTE: Print the edit options of the current item
echo '';
if ($faq->block_order==$min_block_order) {
echo ' ';
} else {
echo ' ';
echo help_link('moveup_faq_item', $this->getName());
}
echo ' | ';
if ($faq->block_order==$max_block_order) {
echo ' ';
} else {
echo ' ';
echo help_link('movedown_faq_item', $this->getName());
}
echo ' | ';
echo '', WT_I18N::translate('Edit'), '';
echo help_link('edit_faq_item', $this->getName());
echo ' | ';
echo '', WT_I18N::translate('Delete'), '';
echo help_link('delete_faq_item', $this->getName());
echo ' | ';
// NOTE: Print the body text of the current item
echo '', substr($faq->faqbody, 0, 1)=='<' ? $faq->faqbody : nl2br($faq->faqbody), ' |
';
}
echo '';
}
}
}