function faqAccessGranted($faqObj) { global $xoopsUser; if (sf_userIsAdmin()) { $result = 1; } else { $result = -1; $groups = $xoopsUser ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS; $gperm_handler =& xoops_gethandler('groupperm'); $smartModule =& sf_getModuleInfo(); $module_id = $smartModule->getVar('mid'); // Do we have access to the parent category if ($gperm_handler->checkRight('category_read', $faqObj->categoryid(), $groups, $module_id)) { // Do we have access to the faq? if ($gperm_handler->checkRight('item_read', $faqObj->faqid(), $groups, $module_id)) { $result = 1; } else { // No we don't ! // Check to see if we have partial view access if (!is_object($xoopsUser) && $faqObj->partialView()) { return 0; } } } else { // No we don't ! $result = false; } } return $result; }
function getSubCats(&$categories) { $criteria = new CriteriaCompo('parentid', "(" . implode(',', array_keys($categories)) . ")", 'IN'); $ret = array(); if (!sf_userIsAdmin()) { $smartPermHandler =& xoops_getmodulehandler('permission', 'smartfaq'); $categoriesGranted = $smartPermHandler->getPermissions('category'); $criteria->add(new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN')); } $subcats = $this->getObjects($criteria, true); foreach ($subcats as $subcat_id => $subcat) { $ret[$subcat->getVar('parentid')][$subcat->getVar('categoryid')] = $subcat; } return $ret; }
} else { $uid = $xoopsUser->uid(); } $notifypub = isset($_POST['notifypub']) ? $_POST['notifypub'] : 0; // Putting the values about the FAQ in the FAQ object $newFaqObj->setVar('categoryid', $_POST['categoryid']); $newFaqObj->setVar('uid', $uid); $newFaqObj->setVar('question', $_POST['question']); $newFaqObj->setVar('howdoi', $_POST['howdoi']); $newFaqObj->setVar('diduno', $_POST['diduno']); $newFaqObj->setVar('notifypub', $notifypub); //$newFaqObj->setVar('modulelink', $_POST['modulelink']); //$newFaqObj->setVar('contextpage', $_POST['contextpage']); // Setting the status of the FAQ // if user is admin, FAQ are automatically published $isAdmin = sf_userIsAdmin(); if ($isAdmin) { $newFaqObj->setVar('status', _SF_STATUS_PUBLISHED); } elseif ($xoopsModuleConfig['autoapprove_submitted_faq'] == 1) { $newFaqObj->setVar('status', _SF_STATUS_PUBLISHED); } else { $newFaqObj->setVar('status', _SF_STATUS_SUBMITTED); } // Storing the FAQ object in the database if (!$newFaqObj->store()) { redirect_header("javascript:history.go(-1)", 2, _MD_SF_SUBMIT_ERROR); exit; } // Putting the values in the answer object $newAnswerObj->setVar('status', _SF_AN_STATUS_APPROVED); $newAnswerObj->setVar('faqid', $newFaqObj->faqid());
<?php /** * $Id: footer.php,v 1.13 2005/08/15 16:51:58 fx2024 Exp $ * Module: SmartFAQ * Author: The SmartFactory <www.smartfactory.ca> * Licence: GNU */ global $xoopsTpl, $xoopsModule, $xoopsModuleConfig; $uid = $xoopsUser ? $xoopsUser->getVar("uid") : 0; $isAdmin = sf_userIsAdmin() || sf_moderator(); $xoopsTpl->assign("sf_adminpage", "<a href='" . XOOPS_URL . "/modules/smartfaq/admin/index.php'>" . _MD_SF_ADMIN_PAGE . "</a>"); $xoopsTpl->assign("isAdmin", $isAdmin); $xoopsTpl->assign(array('lang_on' => _MD_SF_ON, 'lang_postedby' => _MD_SF_POSTEDBY, 'lang_faq' => _MD_SF_QUESTION, 'lang_datesub' => _MD_SF_DATESUB, 'lang_hits' => _MD_SF_HITS)); $xoopsTpl->assign('sectionname', $myts->displayTarea($xoopsModule->getVar('name'))); $xoopsTpl->assign('modulename', $xoopsModule->dirname()); $xoopsTpl->assign('displaylastfaq', $xoopsModuleConfig['displaylastfaq']); $xoopsTpl->assign('displaysubcatdsc', $xoopsModuleConfig['displaysubcatdsc']); $xoopsTpl->assign('displaycollaps', $xoopsModuleConfig['displaycollaps']); $xoopsTpl->assign('display_date_col', $xoopsModuleConfig['display_date_col']); $xoopsTpl->assign('display_hits_col', $xoopsModuleConfig['display_hits_col']); $xoopsTpl->assign("displaytopcatdsc", $xoopsModuleConfig['displaytopcatdsc']); $xoopsTpl->assign("ref_smartfaq", "SmartFAQ is developed by The SmartFactory (http://www.smartfactory.ca), a division of InBox Solutions (http://www.inboxsolutions.net)"); $xoopsTpl->assign("xoops_module_header", "<link rel='stylesheet' type='text/css' href='" . XOOPS_URL . "/modules/smartfaq/smartfaq.css'/>");
<?php /** * $Id: permissions.php,v 1.8 2004/11/20 16:52:32 malanciault Exp $ * Module: SmartFAQ * Author: The SmartFactory <www.smartfactory.ca> * Licence: GNU */ include_once "admin_header.php"; include_once XOOPS_ROOT_PATH . '/class/xoopsform/grouppermform.php'; if (!sf_userIsAdmin()) { redirect_header("javascript:history.go(-1)", 1, _NOPERM); exit; } $op = ''; foreach ($_POST as $k => $v) { ${$k} = $v; } foreach ($_GET as $k => $v) { ${$k} = $v; } switch ($op) { case "default": default: global $xoopsDB, $xoopsModule; xoops_cp_header(); sf_adminMenu(4, _AM_SF_PERMISSIONS); // View Categories permissions $item_list_view = array(); $block_view = array(); // echo "<h3 style='color: #2F5376; '>"._AM_SF_PERMISSIONSADMIN."</h3>\n" ;
function editfaq($faqid = '') { global $answer_handler, $xoopsUser, $xoopsUser, $xoopsConfig, $xoopsDB, $modify, $xoopsModuleConfig, $xoopsModule, $XOOPS_URL, $myts; include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php'; // Creating the FAQ object $faqObj = new sfFaq($faqid); // Creating the category object $categoryObj =& $faqObj->category(); if ($faqObj->notLoaded()) { redirect_header("index.php", 1, _AM_SF_NOFAQSELECTED); exit; } switch ($faqObj->status()) { case _SF_STATUS_ANSWERED: $breadcrumb_action1 = _AM_SF_SUBMITTED; $breadcrumb_action2 = _AM_SF_APPROVING; $collapsableBar_title = _AM_SF_SUBMITTED_TITLE; $collapsableBar_info = _AM_SF_SUBMITTED_INFO; $button_caption = _AM_SF_APPROVE; $an_status = _SF_AN_STATUS_PROPOSED; break; } $module_id = $xoopsModule->getVar('mid'); $gperm_handler =& xoops_gethandler('groupperm'); $groups = $xoopsUser ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS; if (!sf_userIsAdmin() && !$gperm_handler->checkRight('category_admin', $faqObj->categoryid(), $groups, $module_id)) { redirect_header("javascript:history.go(-1)", 1, _NOPERM); exit; } // Retreiving the official answer $official_answer = $faqObj->answer(); sf_adminMenu(-1, _AM_SF_SMARTFAQ . " > " . _AM_SF_ANSWER); sf_collapsableBar('bottomtable', 'bottomtableicon'); echo "<img id='bottomtableicon' src=" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/close12.gif alt='' /></a> " . _AM_SF_SUBMITTED_ANSWER . "</h3>"; echo "<div id='bottomtable'>"; echo "<span style=\"color: #567; margin: 3px 0 12px 0; font-size: small; display: block; \">" . _AM_SF_SUBMITTED_ANSWER_INFO . "</span>"; $proposed_answers = $answer_handler->getAllAnswers($faqid, _SF_AN_STATUS_PROPOSED); if (count($proposed_answers) == 0) { redirect_header("index.php", 1, _AM_SF_NOANSWERS); exit; } echo "<table width='100%' cellspacing=1 cellpadding=3 border=0 class = outer>\r\n\t <tr>\r\n\t <td class='head' width='100px'>" . _AM_SF_CATEGORY . "</td>\r\n\t <td class='even'>" . $categoryObj->name() . "</td>\r\n\t </tr>\r\n\t <tr>\r\n\t <td class='head' width='100px'>" . _AM_SF_QUESTION . "</td>\r\n\t <td class='even'>" . $faqObj->question() . "</td>\r\n\t </tr>"; if ($official_answer) { echo "\r\n\t <tr>\r\n\t <td class='head' width='100px'>" . _AM_SF_ANSWER_OFFICIAL . "</td>\r\n\t <td class='even'>" . $official_answer->answer() . "</td>\r\n\t </tr>"; } echo "</table><br />\n"; echo "<table width='100%' cellspacing=1 cellpadding=3 border=0 class = outer>"; echo "<tr>"; echo "<td width='40' class='bg3' align='center'><b>" . _AM_SF_ARTID . "</b></td>"; echo "<td class='bg3' class='bg3' align='center'><b>" . _AM_SF_ANSWER . "</b></td>"; echo "<td width='180' class='bg3' align='center'><b>" . _AM_SF_CREATED . "</b></td>"; echo "<td width='120' class='bg3' align='center'><b>" . _AM_SF_ACTION . "</b></td>"; echo "</tr>"; $merge = ''; $modify = ''; $approve = ''; foreach ($proposed_answers as $proposed_answer) { if ($faqObj->status() == _SF_STATUS_NEW_ANSWER) { $merge = "<a href='faq.php?op=merge&faqid=" . $faqObj->faqid() . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/merge.gif' title='" . _AM_SF_FAQ_MERGE . "' alt='" . _AM_SF_FAQ_MERGE . "' /></a> "; $approve = "<a href='answer.php?op=selectanswer&faqid=" . $faqid . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/approve.gif' title='" . _AM_SF_FAQ_APPROVE_NEW_ANSWER . "' alt='" . _AM_SF_APPROVESUB . "' /></a>"; } $modify = "<a href='faq.php?op=mod&faqid=" . $faqObj->faqid() . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/edit.gif' title='" . _AM_SF_FAQ_REVIEW . "' alt='" . _AM_SF_FAQ_REVIEW . "' /></a> "; $delete = "<a href='answer.php?op=del&faqid=" . $faqObj->faqid() . "&answerid=" . $proposed_answer->answerid() . "'><img src='" . XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/images/icon/delete.gif' title='" . _AM_SF_DELETESUBM . "' alt='" . _AM_SF_DELETESUBM . "' /></a>"; echo "<tr>"; echo "<td class='head' align='center'>" . $proposed_answer->answerid() . "</td>"; echo "<td class='even' align='left'>" . $proposed_answer->answer() . "</td>"; echo "<td class='even' align='center'>" . $proposed_answer->datesub() . "</td>"; echo "<td class='even' align='center'> {$merge} {$modify} {$approve} {$delete} </td>"; echo "</tr>"; } echo "</table>\n<br />"; }
function getCountsByCat($cat_id = 0, $status) { global $xoopsUser; $ret = array(); $sql = 'SELECT categoryid, COUNT(*) AS count FROM ' . $this->db->prefix('smartfaq_faq'); if (intval($cat_id) > 0) { $sql .= ' WHERE categoryid = ' . intval($cat_id); $sql .= ' AND status IN (' . implode(',', $status) . ')'; } else { $sql .= ' WHERE status IN (' . implode(',', $status) . ')'; if (!sf_userIsAdmin()) { $smartPermHandler =& xoops_getmodulehandler('permission', 'smartfaq'); $items = $smartPermHandler->getPermissions('item'); if (is_object($xoopsUser)) { $sql .= ' AND faqid IN (' . implode(',', $items) . ')'; } else { $sql .= ' AND (faqid IN (' . implode(',', $items) . ') OR partialview = 1)'; } } } $sql .= ' GROUP BY categoryid'; //echo "<br />" . $sql . "<br />"; $result = $this->db->query($sql); if (!$result) { return $ret; } while ($row = $this->db->fetchArray($result)) { $ret[$row['categoryid']] = intval($row['count']); } return $ret; }