Пример #1
0
function KB()
{
    global $txt, $sourcedir, $scripturl, $modSettings, $context;
    if (empty($modSettings['kb_enabled'])) {
        redirectexit();
    }
    isAllowedTo('view_knowledge');
    KB_file_include(array('KBEditer', 'KBPerm', 'KBReport', 'KBApprove', 'KBSearch', 'KBEdit_Add', 'KBView_All', 'KBView', 'KBCats', 'KBMisc', 'KBMenu', 'KBSubs', 'KBRSS'));
    loadTemplate('KB');
    $context['linktree'][] = array('url' => $scripturl . '?action=kb', 'name' => $txt['knowledgebase']);
    //fix wysig
    KB_wysig_descript();
    //Are we jumping?
    KB_dojump();
    //Any headers?
    KB_doheaders();
    //Menu anyone?
    KB_Menu();
    if (isset($_REQUEST['comment_recount']) && allowedTo('manage_kb')) {
        KBrecountcomments();
    }
    if (isset($_REQUEST['article_recount']) && allowedTo('manage_kb')) {
        KBrecountItems();
    }
    if (isset($_REQUEST['cache_clean']) && allowedTo('manage_kb')) {
        KB_cleanCache();
    }
    //I am a robot
    if (empty($modSettings['kb_search_engines'])) {
        $context['robot_no_index'] = true;
    }
    $context['canonical_url'] = $scripturl . '?action=kb';
    //Put all the subactions into an array
    $subActions = array('main' => 'KB_main', 'cats' => 'KB_know', 'article' => 'KB_knowcont', 'catadd' => 'KB_catadd', 'listcat' => 'KB_catlist', 'addknow' => 'KB_addknow', 'del' => 'KB_del', 'permcat' => 'KB_perm', 'search' => 'KB_search', 'searchmain' => 'KB_searchmain', 'rate' => 'KB_rate', 'edit' => 'KB_edit', 'reporta' => 'KB_reporta', 'manage' => 'KB_manage', 'rss' => 'KB_rss', 'catup' => 'KB_movecat', 'catdown' => 'KB_movecat');
    // Default the sub-action'.
    $_REQUEST['area'] = isset($_REQUEST['area']) && isset($subActions[$_REQUEST['area']]) ? $_REQUEST['area'] : 'main';
    // Set title and default sub-action.
    $context['page_title'] = $txt['knowledgebase'];
    $context['sub_action'] = $_REQUEST['area'];
    // Call the right function for this sub-acton.
    $subActions[$_REQUEST['area']]();
}
Пример #2
0
function KB_edit()
{
    global $smcFunc, $scripturl, $modSettings, $sourcedir, $user_info, $kname, $txt, $context;
    if (!isset($_GET['save']) || isset($_REQUEST['preview'])) {
        $context['sub_template'] = 'kb_edit';
        $request = $smcFunc['db_query']('', '
		    SELECT title,id_cat,id_member
            FROM {db_prefix}kb_articles
		    WHERE kbnid = {int:kbnid} AND approved = 1
            LIMIT 1', array('kbnid' => (int) $_GET['aid']));
        list($kname, $cat, $memberid) = $smcFunc['db_fetch_row']($request);
        $smcFunc['db_free_result']($request);
        $context['linktree'][] = array('url' => $scripturl . '?action=kb;area=edit;aid=' . $_GET['aid'] . '', 'name' => '' . $txt['kb_xubcat2'] . ' - ' . $kname . '');
        if (!KBAllowedto($cat, 'editanyarticle') && $memberid != $user_info['id']) {
            fatal_lang_error('cannot_add_knowledge', false);
        }
        $result = $smcFunc['db_query']('', '
	        SELECT k.kbnid,k.content,k.source,k.title,k.id_cat,k.id_member,k.featured
	        FROM {db_prefix}kb_articles AS k
	        WHERE kbnid = {int:kbnid}
		    LIMIT 1', array('kbnid' => (int) $_GET['aid']));
        $context['edit'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($result)) {
            $context['edit'][] = array('content' => $row['content'], 'source' => $row['source'], 'title' => $row['title'], 'kbnid' => $row['kbnid'], 'id_cat' => $row['id_cat'], 'id_member' => $row['id_member'], 'featured' => $row['featured']);
        }
        if (isset($_REQUEST['preview'])) {
            KB_showediterpreview($_POST['name'], $_POST['description'], 'kb_edit');
        }
        KB_showediter(!empty($_POST['description']) ? $_POST['description'] : $context['edit'][0]['content'], 'description');
        if ($context['user']['is_guest']) {
            $groupid = -1;
        } else {
            $groupid = $user_info['groups'][0];
        }
        $result = $smcFunc['db_query']('', '
	        SELECT c.kbid, c.name, p.view, c.id_parent
	        FROM {db_prefix}kb_category AS c
		    LEFT JOIN {db_prefix}kb_catperm AS p ON (p.id_group = {int:groupid} AND c.kbid = p.id_cat)', array('groupid' => $groupid));
        $context['knowcat'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($result)) {
            $context['knowcat'][] = $row;
        }
        KB_PrettyCategory();
        $context['kb_article_images'] = array();
        $dbresult = $smcFunc['db_query']('', "\n\t\t    SELECT thumbnail, filesize, filename, id_file  \n\t\t\tFROM {db_prefix}kb_attachments \n\t\t\tWHERE id_article = " . (int) $_GET['aid']);
        $context['kb_article_images'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($dbresult)) {
            $context['kb_article_images'][] = $row;
        }
        $smcFunc['db_free_result']($dbresult);
    }
    if (isset($_GET['save']) && !isset($_REQUEST['preview'])) {
        checkSession();
        kb_checkAttachment();
        if (allowedTo('manage_kb')) {
            $_POST['memid'] = $_POST['memid'];
        } else {
            $_POST['memid'] = $context['edit'][0]['id_member'];
        }
        $_POST['name'] = $smcFunc['htmlspecialchars']($_POST['name'], ENT_QUOTES);
        $_POST['description'] = $smcFunc['htmlspecialchars']($_POST['description'], ENT_QUOTES);
        $_POST['memid'] = (int) $_POST['memid'];
        $_POST['featured'] = isset($_POST['featured']) ? 1 : 0;
        if (empty($_POST['name'])) {
            fatal_lang_error('knowledgebase_emtytitle', false);
        }
        if (empty($_POST['description'])) {
            fatal_lang_error('knowledgebase_emtytitle', false);
        }
        $attachment_params = array('article_id' => (int) $_GET['aid'], 'article_edit' => true);
        kb_makeAttachment($attachment_params);
        if (allowedTo('manage_kb')) {
            $query_params = array('table' => 'kb_articles', 'set' => 'title = {string:name}, source = {string:source}, content = {string:description}, id_cat = {int:cat}, id_member = {int:memid}, featured = {int:featured}', 'where' => 'kbnid = {int:kbid}');
        } else {
            $query_params = array('table' => 'kb_articles', 'set' => 'title = {string:name}, source = {string:source}, content = {string:description}, id_cat = {int:cat}, featured = {int:featured}', 'where' => 'kbnid = {int:kbid}');
        }
        $query_data = array('kbid' => (int) $_GET['aid'], 'name' => $_POST['name'], 'source' => $_POST['source'], 'description' => $_POST['description'], 'cat' => $_POST['cat'], 'featured' => (int) $_POST['featured']);
        if (allowedTo('manage_kb')) {
            $query_data['memid'] = $_POST['memid'];
        }
        kb_UpdateData($query_params, $query_data);
        KBrecountItems();
        KB_cleanCache();
        $mes = '' . $txt['kb_log_text5'] . ' <strong><a href="' . $scripturl . '?action=kb;area=article;cont=' . $_GET['aid'] . '">' . $_POST['name'] . '</a></strong>';
        KB_log_actions('edit_article', $_GET['aid'], $mes);
        redirectexit('action=kb;area=article;cont=' . $_GET['aid'] . ';edited');
    }
}
Пример #3
0
function KB_mreports()
{
    global $scripturl, $sourcedir, $txt, $smcFunc, $context;
    isAllowedTo('manage_kb');
    $list_options = array('id' => 'kb_know_reports', 'title' => $txt['kb_rlist1'], 'items_per_page' => 30, 'base_href' => $scripturl . '?action=kb;area=manage', 'default_sort_col' => 'id', 'start_var_name' => 'startreport', 'request_vars' => array('desc' => 'descreport', 'sort' => 'sortreport'), 'get_items' => array('function' => create_function('$start, $items_per_page, $sort', '
				global $context, $smcFunc;
			   
		    $request = $smcFunc[\'db_query\'](\'\', \'
			    SELECT k.id, k.id_article, k.id_member, k.comment, m.id_member, m.real_name, k.date
                FROM {db_prefix}kb_reports AS k
				LEFT JOIN {db_prefix}members AS m ON  (m.id_member = k.id_member)
                ORDER BY {raw:sort}
                LIMIT {int:start}, {int:per_page}\',
            array(
			   
			   \'sort\' => $sort,
			   \'start\' => $start,
			   \'per_page\' => $items_per_page,
            )
		 );
		$kbcn = array();
			while ($row = $smcFunc[\'db_fetch_assoc\']($request))
				
				   $kbcn[] = $row;
				   
			$smcFunc[\'db_free_result\']($request);

		return $kbcn;
			')), 'get_count' => array('function' => create_function('', '
				global $smcFunc;

				$request = $smcFunc[\'db_query\'](\'\', \'
					SELECT COUNT(*)
					FROM {db_prefix}kb_reports\',
			        array());
				
				list ($total_kbn) = $smcFunc[\'db_fetch_row\']($request);
				$smcFunc[\'db_free_result\']($request);

				return $total_kbn;
			')), 'no_items_label' => $txt['knowledgebasenone'], 'columns' => array('id' => array('header' => array('value' => $txt['kb_rlistcomment']), 'data' => array('function' => create_function('$row', '
					global $scripturl;
						return \'\'.$row[\'comment\'].\'\';
					'), 'style' => 'width: 20%; text-align: left;'), 'sort' => array('default' => 'id', 'reverse' => 'id DESC')), 'real_name' => array('header' => array('value' => $txt['kb_rlistnor1']), 'data' => array('function' => create_function('$row', '
                        global $scripturl;
						return \'<a href="\'.$scripturl.\'?action=profile;u=\'.$row[\'id_member\'].\'">\'.$row[\'real_name\'].\'</a>\';
					'), 'style' => 'width: 4%; text-align: center;'), 'sort' => array('default' => 'real_name', 'reverse' => 'real_name DESC')), 'date' => array('header' => array('value' => $txt['knowledgebasecreated']), 'data' => array('function' => create_function('$row', '

						return timeformat($row[\'date\']);
					'), 'style' => 'width: 5%; text-align: center;'), 'sort' => array('default' => 'date', 'reverse' => 'date DESC')), 'id_article' => array('header' => array('value' => '<input type="checkbox" name="all" class="input_check" onclick="invertAll(this, this.form);" />'), 'data' => array('function' => create_function('$row', '
                         global $sc, $txt, $scripturl;
						return \'[<a href="\'.$scripturl.\'?action=kb;area=article;cont=\'.$row[\'id_article\'].\'">\'.$txt[\'kb_rlistnor44\'].\'</a>] 
						<input type="checkbox" class="input_check" name="delete[]" value="\' . $row[\'id\'] . \'" />\';
					'), 'style' => 'width: 2%; text-align: center;'), 'sort' => array('default' => 'id_article', 'reverse' => 'id_article DESC'))), 'form' => array('href' => $scripturl . '?action=kb;area=manage', 'include_sort' => true, 'include_start' => true, 'hidden_fields' => array($context['session_var'] => $context['session_id'])), 'additional_rows' => array(array('position' => 'below_table_data', 'value' => '
						<input type="submit" name="remove" value="' . $txt['kb_remove_log2'] . '" class="button_submit" onclick="return confirmSubmit();" />
						<input type="submit" name="removeall" value="' . $txt['kb_remove_log1'] . '" class="button_submit" onclick="return confirmSubmit();" />')));
    require_once $sourcedir . '/Subs-List.php';
    createList($list_options);
    if (isset($_POST['removeall'])) {
        checkSession();
        $query_params = array('table' => 'kb_reports', 'where' => '');
        $query_data = array();
        KB_DeleteData($query_params, $query_data);
        $mes = $txt['kb_del_areports'];
        KB_log_actions('del_report', 0, $mes);
        KB_cleanCache();
        redirectexit('action=kb;area=manage');
    } elseif (!empty($_POST['remove']) && isset($_POST['delete'])) {
        checkSession();
        $query_params = array('table' => 'kb_reports', 'where' => 'id IN ({array_string:delete_actions})');
        $query_data = array('delete_actions' => array_unique($_POST['delete']));
        KB_DeleteData($query_params, $query_data);
        $mes = $txt['kb_del_reports'];
        KB_log_actions('del_report', 0, $mes);
        KB_cleanCache();
        redirectexit('action=kb;area=manage');
    }
}
Пример #4
0
function KB_perm()
{
    global $context, $txt, $cname, $scripturl, $smcFunc;
    $context['sub_template'] = 'kb_perm';
    isAllowedTo('manage_kb');
    if (!isset($_GET['save'])) {
        // Load the membergroups
        $dbresult = $smcFunc['db_query']('', "\n\t        SELECT id_group, group_name \n\t        FROM {db_prefix}membergroups \n\t        WHERE min_posts = -1 ORDER BY group_name");
        while ($row = $smcFunc['db_fetch_assoc']($dbresult)) {
            $context['groups'][$row['id_group']] = array('ID_GROUP' => $row['id_group'], 'group_name' => $row['group_name']);
        }
        $smcFunc['db_free_result']($dbresult);
        $request = $smcFunc['db_query']('', '
		    SELECT name
		    FROM {db_prefix}kb_category
		    WHERE kbid = {int:perm}', array('perm' => (int) $_GET['perm']));
        list($cname) = $smcFunc['db_fetch_row']($request);
        $smcFunc['db_free_result']($request);
        $context['linktree'][] = array('url' => $scripturl . '?action=kb;area=permcat;perm=' . $_GET['perm'] . '', 'name' => '' . $txt['kb_catperm7'] . '  - ' . $cname . '');
        // membergroup
        $dbresult = $smcFunc['db_query']('', "\n\t        SELECT c.id_cat, c.id, c.editanyarticle, c.delarticle, c.delanyarticle, c.editarticle, c.addarticle, c.view, c.id_group, m.group_name\n\t        FROM {db_prefix}kb_catperm as c \n\t\t    LEFT JOIN {db_prefix}membergroups AS m ON (m.id_group = c.id_group)\n\t\t    LEFT JOIN {db_prefix}kb_category AS a ON (a.kbid = c.id_cat)\n\t        WHERE  c.id_cat = {int:perm} AND m.id_group = c.id_group AND a.kbid = c.id_cat", array('perm' => (int) $_GET['perm']));
        $context['kb_membergroup'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($dbresult)) {
            $context['kb_membergroup'][] = $row;
        }
        $smcFunc['db_free_result']($dbresult);
        // Guests
        $dbresult = $smcFunc['db_query']('', "\n\t        SELECT c.id_cat, c.id, c.editanyarticle, c.delarticle, c.delanyarticle, c.editarticle, c.addarticle, c.view, c.id_group \n\t        FROM {db_prefix}kb_catperm as c \n\t\t    LEFT JOIN {db_prefix}kb_category AS a ON (a.kbid = c.id_cat)\n\t        WHERE c.id_cat = {int:perm} AND c.id_group = -1 AND a.kbid = c.id_cat LIMIT 1", array('perm' => (int) $_GET['perm']));
        $context['kb_guest'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($dbresult)) {
            $context['kb_guest'][] = $row;
        }
        $smcFunc['db_free_result']($dbresult);
        //Regular members
        $dbresult = $smcFunc['db_query']('', "\n\t        SELECT c.id_cat, c.id, c.addarticle, c.delarticle, c.delanyarticle, c.editarticle, c.editanyarticle, c.view, c.id_group \n\t        FROM {db_prefix}kb_catperm as c \n\t\t    LEFT JOIN {db_prefix}kb_category AS a ON (a.kbid = c.id_cat)\n\t        WHERE c.id_cat = {int:perm} AND c.id_group = 0 AND a.kbid = c.id_cat LIMIT 1", array('perm' => (int) $_GET['perm']));
        $context['reg_reggroup'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($dbresult)) {
            $context['reg_reggroup'][] = $row;
        }
        $smcFunc['db_free_result']($dbresult);
    }
    if (isset($_GET['save'])) {
        checkSession();
        $groupname = (int) $_REQUEST['groupname'];
        $cat = (int) $_REQUEST['save'];
        $view = isset($_REQUEST['view']) ? 1 : 0;
        $addarticle = isset($_REQUEST['addarticle']) ? 1 : 0;
        $editanyarticle = isset($_REQUEST['editanyarticle']) ? 1 : 0;
        $editarticle = isset($_REQUEST['editarticle']) ? 1 : 0;
        $delarticle = isset($_REQUEST['delarticle']) ? 1 : 0;
        $delanyarticle = isset($_REQUEST['delanyarticle']) ? 1 : 0;
        $request = $smcFunc['db_query']('', '
		    SELECT kbid,name
            FROM {db_prefix}kb_category
		    WHERE kbid = {int:kbid}
            LIMIT 1', array('kbid' => $cat));
        list($nameid, $title) = $smcFunc['db_fetch_row']($request);
        $smcFunc['db_free_result']($request);
        $mes = '' . $txt['kb_log_text12'] . '  <strong><a href="' . $scripturl . '?action=kb;area=cats;cat=' . $nameid . '">' . $title . '</a></strong>';
        KB_log_actions('perm_cat', $nameid, $mes);
        // No point in given the add article permission if they cant view the category
        if ($view == 0) {
            $addarticle = 0;
        }
        if ($view == 0 && $addarticle == 1) {
            $addarticle = 0;
        }
        // Check if permission exits
        $dbresult = $smcFunc['db_query']('', "\n\t        SELECT id_group,id_cat \n\t        FROM {db_prefix}kb_catperm \n\t        WHERE id_group = {int:ig} AND id_cat = {int:ccat}", array('ig' => $groupname, 'ccat' => $cat));
        if ($smcFunc['db_affected_rows']() != 0) {
            $smcFunc['db_free_result']($dbresult);
            $query_params = array('table' => 'kb_catperm', 'set' => 'id_group = {int:ig},id_cat = {int:ccat},view = {int:view},addarticle = {int:addarticle},editanyarticle = {int:editanyarticle},editarticle = {int:editarticle},delarticle = {int:delarticle},delanyarticle = {int:delanyarticle}', 'where' => 'id_cat = {int:ccat} AND id_group = {int:ig}');
            $query_data = array('view' => (int) $view, 'ig' => $groupname, 'ccat' => (int) $cat, 'addarticle' => (int) $addarticle, 'editanyarticle' => (int) $editanyarticle, 'editarticle' => (int) $editarticle, 'delarticle' => (int) $delarticle, 'delanyarticle' => (int) $delanyarticle);
            kb_UpdateData($query_params, $query_data);
            KB_cleanCache();
            redirectexit('action=kb;area=permcat;perm=' . $cat . '');
        } else {
            // Insert into database
            $data = array('table' => 'kb_catperm', 'cols' => array('id_group' => 'int', 'id_cat' => 'int', 'view' => 'int', 'addarticle' => 'int', 'editanyarticle' => 'int', 'editarticle' => 'int', 'delarticle' => 'int', 'delanyarticle' => 'int'));
            $values = array($groupname, $cat, $view, $addarticle, $editanyarticle, $editarticle, $delarticle, $delanyarticle);
            $indexes = array();
            KB_InsertData($data, $values, $indexes);
            KB_cleanCache();
            redirectexit('action=kb;area=permcat;perm=' . $cat . '');
        }
    }
}
Пример #5
0
function KB_standalone()
{
    global $context, $sourcedir, $scripturl, $modSettings, $txt;
    require_once $sourcedir . '/ManageServer.php';
    $context['sub_template'] = 'show_settings';
    $value = false;
    $disabled = !empty($modSettings['kb_knowledge_only']) ? false : true;
    $config_vars = array(array('check', 'kb_knowledge_only', 'subtext' => $txt['kb_knowledge_only_note']));
    $disabled_options = array('kb_disable_pm', 'kb_disable_mlist');
    foreach ($disabled_options as $name) {
        $value = !isset($modSettings[$name]) ? $value : $modSettings[$name];
        $config_vars[] = array('check', $name, 'value' => $value, 'disabled' => $disabled);
    }
    if (isset($_GET['save'])) {
        checkSession();
        saveDBSettings($config_vars);
        KB_cleanCache();
        redirectexit('action=admin;area=kb;sa=kbstand');
    }
    $context['post_url'] = $scripturl . '?action=admin;area=kb;sa=kbstand;save';
    $context['settings_title'] = $txt['kbase_sto'];
    prepareDBSettingContext($config_vars);
}
Пример #6
0
function KB_knowcont()
{
    global $smcFunc, $txt, $scripturl, $sourcedir, $boardurl, $modSettings, $user_info, $context;
    $context['sub_template'] = 'kb_knowcont';
    if (isset($_REQUEST['cont'])) {
        if (($listData = cache_get_data('kb_articles_listinfo' . $_GET['cont'] . '', 3600)) === null) {
            $params = array('table' => 'kb_articles AS a', 'call' => 'a.title,a.kbnid,a.id_cat,c.name', 'left_join' => '{db_prefix}kb_category AS c ON (a.id_cat = c.kbid)', 'where' => 'a.kbnid = {int:kbnid}');
            $data = array('kbnid' => (int) $_GET['cont']);
            $listData = KB_ListData($params, $data);
            cache_put_data('kb_articles_listinfo' . $_GET['cont'] . '', $listData, 3600);
        }
        $artname = $listData['title'];
        $aid = $listData['kbnid'];
        $cid = $listData['id_cat'];
        $cname = $listData['name'];
        if (!$aid) {
            fatal_error('' . $txt['kb_pinfi7'] . ' <strong>' . $_GET['cont'] . '</strong> ' . $txt['kb_jumpgo1'] . '', false);
        }
        $context['linktree'][] = array('url' => $scripturl . '?action=kb;area=cats;cat=' . $cid . '', 'name' => $cname);
        $context['linktree'][] = array('url' => $scripturl . '?action=kb;area=article;cont=' . $_GET['cont'] . '', 'name' => $artname);
        if (($context['know'] = cache_get_data('kb_articles' . $_GET['cont'] . '', 3600)) === null) {
            $result = $smcFunc['db_query']('', '
	            SELECT k.kbnid,k.content, k.source, k.title,k.id_cat,k.date,k.id_member,m.real_name, k.views, k.rate, k.approved
	            FROM {db_prefix}kb_articles AS k
		        LEFT JOIN {db_prefix}members AS m ON (k.id_member = m.id_member)
		        LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = m.id_member)
	            WHERE kbnid = {int:kbnid}', array('kbnid' => (int) $_GET['cont']));
            $context['know'] = array();
            while ($row = $smcFunc['db_fetch_assoc']($result)) {
                $context['know'][] = array('content' => KB_parseTags($row['content'], $row['kbnid'], 3), 'title' => parse_bbc($row['title']), 'source' => parse_bbc($row['source']), 'kbnid' => $row['kbnid'], 'approved' => $row['approved'], 'views' => $row['views'], 'rate' => $row['rate'], 'date' => date('D d M Y', $row['date']), 'id_cat' => $row['id_cat'], 'id_member' => $row['id_member'], 'real_name' => $row['real_name']);
            }
            $smcFunc['db_free_result']($result);
            cache_put_data('kb_articles' . $_GET['cont'] . '', $context['know'], 3600);
        }
        $context['page_title'] = $context['know'][0]['title'];
        if ($context['know'][0]['approved'] == 0 && $context['know'][0]['id_member'] != $user_info['id'] && !allowedTo('manage_kb')) {
            fatal_lang_error('kb_articlwnot_approved', false);
        }
        KBisAllowedto($context['know'][0]['id_cat'], 'view');
        $context['kbimg'] = KB_getimages($_GET['cont']);
        if (!empty($modSettings['kb_ecom'])) {
            $context['kbcom'] = KB_getcomments($_GET['cont']);
            KB_showediter(!empty($_POST['description']) ? $_POST['description'] : '', 'description');
        }
        KB_dojprint();
        $query_params = array('table' => 'kb_articles', 'set' => 'views = views + 1', 'where' => 'kbnid = {int:kbnid}');
        $query_data = array('kbnid' => (int) $_GET['cont']);
        kb_UpdateData($query_params, $query_data);
    }
    if ($user_info['is_guest']) {
        require_once $sourcedir . '/Subs-Editor.php';
        $verificationOptions = array('id' => 'register');
        $context['visual_verification'] = create_control_verification($verificationOptions);
        $context['visual_verification_id'] = $verificationOptions['id'];
    }
    //comment
    if (isset($_REQUEST['comment'])) {
        if ($user_info['is_guest']) {
            require_once $sourcedir . '/Subs-Editor.php';
            $verificationOptions = array('id' => 'register');
            $context['visual_verification'] = create_control_verification($verificationOptions, true);
            if (is_array($context['visual_verification'])) {
                loadLanguage('Errors');
                foreach ($context['visual_verification'] as $error) {
                    fatal_error($txt['error_' . $error]);
                }
            }
        }
        isAllowedTo('com_kb');
        checkSession();
        $_POST['description'] = $smcFunc['htmlspecialchars']($_POST['description'], ENT_QUOTES);
        $_GET['arid'] = (int) $_GET['arid'];
        if (empty($_POST['description'])) {
            fatal_lang_error('knowledgebase_emtydesc', false);
        }
        $approved = allowedTo('auto_approvecom_kb') ? 1 : 0;
        $mes = '' . $txt['kb_log_text4'] . ' <strong><a href="' . $scripturl . '?action=kb;area=article;cont=' . $_GET['arid'] . '">' . $context['know'][0]['title'] . '</a></strong>';
        KB_log_actions('add_com', $_GET['arid'], $mes);
        $data = array('table' => 'kb_comments', 'cols' => array('id_article' => 'int', 'comment' => 'string', 'date' => 'int', 'id_member' => 'int', 'approved' => 'int'));
        $values = array($_GET['arid'], $_POST['description'], time(), $user_info['id'], $approved);
        $indexes = array('id_article');
        KB_InsertData($data, $values, $indexes);
        KBrecountcomments();
        KB_cleanCache();
        redirectexit('action=kb;area=article;cont=' . $_GET['arid'] . '');
    }
    if (isset($_REQUEST['commentdel'])) {
        isAllowedTo('comdel_kb');
        $mes = '' . $txt['kb_log_text3'] . ' <strong><a href="' . $scripturl . '?action=kb;area=article;cont=' . $_GET['cont'] . '">' . $context['know'][0]['title'] . '</a></strong>';
        KB_log_actions('del_com', $_GET['cont'], $mes);
        $query_params = array('table' => 'kb_comments', 'where' => 'id = {int:kbid}');
        $query_data = array('kbid' => (int) $_GET['arid']);
        KB_DeleteData($query_params, $query_data);
        KB_cleanCache();
        KBrecountcomments();
        redirectexit('action=kb;area=article;cont=' . $_GET['cont'] . '');
    }
    //approve
    if (isset($_REQUEST['approve'])) {
        checkSession('get');
        $query_params = array('table' => 'kb_articles', 'set' => 'approved = {int:one}', 'where' => 'kbnid = {int:kbnid}');
        $query_data = array('kbnid' => (int) $_REQUEST['aid'], 'one' => 1);
        kb_UpdateData($query_params, $query_data);
        $params = array('table' => 'kb_articles', 'call' => 'id_member, kbnid, title', 'where' => 'kbnid = {int:kbnid}');
        $data = array('kbnid' => (int) $_GET['aid']);
        $listData = KB_ListData($params, $data);
        $nameid = $listData['id_member'];
        $kid = $listData['kbnid'];
        $title = $listData['title'];
        $kbmes = '' . $txt['kb_aapprove1'] . ' [url=' . $scripturl . '?action=kb;area=article;cont=' . $kid . ']' . $txt['kb_aapprove2'] . '[/url] ' . $txt['kb_aapprove3'] . '';
        KB_sendpm($nameid, $txt['kb_aapprove6'], $kbmes);
        $mes = '' . $txt['kb_log_text2'] . ' <strong><a href="' . $scripturl . '?action=kb;area=article;cont=' . $kid . '">' . $title . '</a></strong>';
        KB_log_actions('app_article', $kid, $mes);
        KBrecountItems();
        KB_cleanCache();
        redirectexit('action=kb;area=article;cont=' . $_REQUEST['aid'] . '');
    }
    //unapprove
    if (isset($_REQUEST['unapprove']) && isset($_REQUEST['inap'])) {
        checkSession('get');
        $query_params = array('table' => 'kb_articles', 'set' => 'approved = {int:one}', 'where' => 'kbnid = {int:kbnid}');
        $query_data = array('kbnid' => (int) $_REQUEST['inap'], 'one' => 0);
        kb_UpdateData($query_params, $query_data);
        $params = array('table' => 'kb_articles', 'call' => 'id_member, kbnid, title', 'where' => 'kbnid = {int:kbnid}');
        $data = array('kbnid' => (int) $_GET['inap']);
        $listData = KB_ListData($params, $data);
        $nameid = $listData['id_member'];
        $kid = $listData['kbnid'];
        $title = $listData['title'];
        $kbmes = '' . $txt['kb_aapprove4'] . ' [url=' . $scripturl . '?action=kb;area=article;cont=' . $kid . ']' . $txt['kb_aapprove2'] . '[/url] ' . $txt['kb_aapprove3'] . '';
        KB_sendpm($nameid, $txt['kb_aapprove7'], $kbmes);
        $mes = '' . $txt['kb_log_text1'] . ' <strong><a href="' . $scripturl . '?action=kb;area=article;cont=' . $kid . '">' . $title . '</a></strong>';
        KB_log_actions('unapp_article', $kid, $mes);
        KBrecountItems();
        KB_cleanCache();
        redirectexit('action=kb;area=article;cont=' . $_REQUEST['inap'] . '');
    }
}
Пример #7
0
function KB_approve()
{
    global $scripturl, $sourcedir, $txt, $smcFunc, $context;
    $list_options = array('id' => 'kb_know', 'title' => $txt['kb_alist'], 'items_per_page' => 30, 'base_href' => $scripturl . '?action=kb;area=manage', 'default_sort_col' => 'title', 'start_var_name' => 'startarticle', 'request_vars' => array('desc' => 'descarticle', 'sort' => 'sortarticle'), 'get_items' => array('function' => create_function('$start, $items_per_page, $sort', '
				global $user_info, $context, $smcFunc;

        	if ($context[\'user\'][\'is_guest\'])
		       $groupid = -1;
	         else
	           $groupid =  $user_info[\'groups\'][0];
			   
		    $request = $smcFunc[\'db_query\'](\'\', \'
			    SELECT k.kbnid, k.title, k.views, k.date, p.view, k.id_cat, k.id_member, m.real_name
                FROM {db_prefix}kb_articles AS k
			    LEFT JOIN {db_prefix}members AS m  ON (k.id_member = m.id_member) 
			    LEFT JOIN {db_prefix}kb_category AS c ON (k.id_cat = c.kbid)
			    LEFT JOIN {db_prefix}kb_catperm AS p ON (p.id_group = {int:groupid} AND k.id_cat = p.id_cat)
			    WHERE approved = 0
                ORDER BY {raw:sort}
                LIMIT {int:start}, {int:per_page}\',
            array(
			   \'groupid\' => $groupid,
			   \'sort\' => $sort,
			   \'start\' => $start,
			   \'per_page\' => $items_per_page,
            )
		 );
		$kbcn = array();
			while ($row = $smcFunc[\'db_fetch_assoc\']($request))
				
				if($row[\'view\'] != \'0\')
				   $kbcn[] = $row;
				   
			$smcFunc[\'db_free_result\']($request);

		return $kbcn;
			')), 'get_count' => array('function' => create_function('', '
				global $smcFunc;

				$request = $smcFunc[\'db_query\'](\'\', \'
					SELECT COUNT(*)
					FROM {db_prefix}kb_articles
					WHERE approved = 0 \',
			        array());
				
				list ($total_kbn) = $smcFunc[\'db_fetch_row\']($request);
				$smcFunc[\'db_free_result\']($request);

				return $total_kbn;
			')), 'no_items_label' => $txt['knowledgebasenone'], 'columns' => array('title' => array('header' => array('value' => $txt['knowledgebasetitle']), 'data' => array('function' => create_function('$row', '
					global $scripturl;
						return \'<a href="\'.$scripturl.\'?action=kb;area=article;cont=\'.$row[\'kbnid\'].\'">\'.$row[\'title\'].\'</a>\';
					'), 'style' => 'width: 20%; text-align: left;'), 'sort' => array('default' => 'title', 'reverse' => 'title DESC')), 'author' => array('header' => array('value' => $txt['knowledgebaseauthor']), 'data' => array('function' => create_function('$row', '
                        global $scripturl;
						return \'<a href="\'.$scripturl.\'?action=profile;u=\'.$row[\'id_member\'].\'">\'.$row[\'real_name\'].\'</a>\';
					'), 'style' => 'width: 4%; text-align: center;'), 'sort' => array('default' => 'real_name', 'reverse' => 'real_name DESC')), 'date' => array('header' => array('value' => $txt['knowledgebasecreated']), 'data' => array('function' => create_function('$row', '

						return timeformat($row[\'date\']);
					'), 'style' => 'width: 5%; text-align: center;')), 'views' => array('header' => array('value' => '<input type="checkbox" name="all" class="input_check" onclick="invertAll(this, this.form);" />'), 'data' => array('function' => create_function('$row', '
                         global $sc,$scripturl;
						return \'<input type="checkbox" class="input_check" name="approve1[]" value="\' . $row[\'kbnid\'] . \'" />\';
					'), 'style' => 'width: 2%; text-align: center;'))), 'form' => array('href' => $scripturl . '?action=kb;area=manage', 'include_sort' => true, 'include_start' => true, 'hidden_fields' => array($context['session_var'] => $context['session_id'])), 'additional_rows' => array(array('position' => 'below_table_data', 'value' => '
						<input type="submit" name="approve_article" value="' . $txt['kb_app_aart'] . '" class="button_submit" onclick="return confirmSubmit();" />
						<input type="submit" name="approve_article_all" value="' . $txt['kb_app_art'] . '" class="button_submit" onclick="return confirmSubmit();" />
						<input type="submit" name="remove" value="' . $txt['kb_remove_log2'] . '" class="button_submit" onclick="return confirmSubmit();" />
						<input type="submit" name="removeall3" value="' . $txt['kb_remove_log1'] . '" class="button_submit" onclick="return confirmSubmit();" />')));
    require_once $sourcedir . '/Subs-List.php';
    createList($list_options);
    if (isset($_POST['removeall3'])) {
        checkSession();
        $query_params = array('table' => 'kb_articles', 'where' => 'approved = {int:one}');
        $query_data = array('one' => 0);
        KB_DeleteData($query_params, $query_data);
        KB_cleanCache();
        redirectexit('action=kb;area=manage');
    }
    if (!empty($_POST['remove']) && isset($_POST['approve1'])) {
        checkSession();
        $query_params = array('table' => 'kb_articles', 'where' => 'kbnid IN ({array_string:delete_actions}) AND approved = {int:one}');
        $query_data = array('delete_actions' => array_unique($_POST['approve1']), 'one' => 0);
        KB_DeleteData($query_params, $query_data);
        KB_cleanCache();
        redirectexit('action=kb;area=manage');
    }
    if (isset($_POST['approve_article_all'])) {
        checkSession();
        $result = $smcFunc['db_query']('', '
		    SELECT id_member,title,kbnid
		    FROM {db_prefix}kb_articles
		    WHERE approved = {int:approved}', array('approved' => 0));
        $context['kbinfo'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($result)) {
            $context['kbinfo'][] = $row;
        }
        $smcFunc['db_free_result']($result);
        foreach ($context['kbinfo'] as $kb) {
            $kbmes = '' . $txt['kb_aapprove1'] . ' [url=' . $scripturl . '?action=kb;area=article;cont=' . $kb['kbnid'] . ']' . $txt['kb_aapprove2'] . '[/url] ' . $txt['kb_aapprove3'] . '';
            KB_sendpm($kb['id_member'], $txt['kb_aapprove6'], $kbmes);
            $mes = '' . $txt['kb_log_text2'] . ' <strong><a href="' . $scripturl . '?action=kb;area=article;cont=' . $kb['kbnid'] . '">' . $kb['title'] . '</a></strong>';
            KB_log_actions('app_article', 0, $mes);
        }
        $query_params = array('table' => 'kb_articles', 'set' => 'approved = {int:one}', 'where' => '');
        $query_data = array('one' => 1);
        kb_UpdateData($query_params, $query_data);
        KBrecountItems();
        KB_cleanCache();
        redirectexit('action=kb;area=manage');
    } elseif (!empty($_POST['approve_article']) && isset($_POST['approve1'])) {
        checkSession();
        $query_params = array('table' => 'kb_articles', 'set' => 'approved = {int:one}', 'where' => 'kbnid IN ({array_string:delete_actions})');
        $query_data = array('one' => 1, 'delete_actions' => array_unique($_POST['approve1']));
        kb_UpdateData($query_params, $query_data);
        $result = $smcFunc['db_query']('', '
		    SELECT id_member,title,kbnid
		    FROM {db_prefix}kb_articles
		    WHERE kbnid IN ({array_string:delete_actions})', array('delete_actions' => array_unique($_POST['approve1'])));
        $context['kbinfo'] = array();
        while ($row = $smcFunc['db_fetch_assoc']($result)) {
            $context['kbinfo'][] = $row;
        }
        $smcFunc['db_free_result']($result);
        foreach ($context['kbinfo'] as $kb) {
            $kbmes = '' . $txt['kb_aapprove1'] . ' [url=' . $scripturl . '?action=kb;area=article;cont=' . $kb['kbnid'] . ']' . $txt['kb_aapprove2'] . '[/url] ' . $txt['kb_aapprove3'] . '';
            KB_sendpm($kb['id_member'], $txt['kb_aapprove6'], $kbmes);
            $mes = '' . $txt['kb_log_text2'] . ' <strong><a href="' . $scripturl . '?action=kb;area=article;cont=' . $kb['kbnid'] . '">' . $kb['title'] . '</a></strong>';
            KB_log_actions('app_article', 0, $mes);
        }
        KBrecountItems();
        KB_cleanCache();
        redirectexit('action=kb;area=manage');
    }
}
Пример #8
0
function KB_rate()
{
    global $txt, $smcFunc, $user_info;
    $id = !empty($_REQUEST['kbnid']) ? (int) $_REQUEST['kbnid'] : 0;
    if (empty($id)) {
        fatal_lang_error('kb_ratenosel', false);
    }
    isAllowedTo('rate_kb');
    checkSession('get');
    $dbresult = $smcFunc['db_query']('', '
	    SELECT id_article, id_member
	    FROM {db_prefix}kb_rating
	    WHERE id_member = {int:member} AND id_article = {int:art}', array('art' => $id, 'member' => $user_info['id']));
    if ($smcFunc['db_affected_rows']() != 0) {
        fatal_lang_error('kb_rateoneonly', false);
    }
    $smcFunc['db_free_result']($dbresult);
    $value = !empty($_REQUEST['value']) ? (int) $_REQUEST['value'] : 0;
    if ($value == 0) {
        $data = array('table' => 'kb_rating', 'cols' => array('id_article' => 'int', 'id_member' => 'int', 'value' => 'int'));
        $values = array($id, $user_info['id'], 0);
        $indexes = array();
        KB_InsertData($data, $values, $indexes);
        $query_params = array('table' => 'kb_articles', 'set' => 'rate = rate - {int:one}', 'where' => 'kbnid = {int:kbnid}');
        $query_data = array('kbnid' => $id, 'one' => 1);
        kb_UpdateData($query_params, $query_data);
        $request = $smcFunc['db_query']('', '
		    SELECT rate
	        FROM {db_prefix}kb_articles
	        WHERE kbnid = {int:kbnid}', array('kbnid' => $id));
        list($quantity) = $smcFunc['db_fetch_row']($request);
        $smcFunc['db_free_result']($request);
        if ($quantity < 0) {
            $query_params1 = array('table' => 'kb_articles', 'set' => 'rate = {int:one}', 'where' => 'kbnid = {int:kbnid}');
            $query_data1 = array('kbnid' => $id, 'one' => 0);
            kb_UpdateData($query_params1, $query_data1);
        }
        KB_cleanCache();
    } else {
        $data = array('table' => 'kb_rating', 'cols' => array('id_article' => 'int', 'id_member' => 'int', 'value' => 'int'));
        $values = array($id, $user_info['id'], 1);
        $indexes = array();
        KB_InsertData($data, $values, $indexes);
        $query_params2 = array('table' => 'kb_articles', 'set' => 'rate = rate + {int:one}', 'where' => 'kbnid = {int:kbnid}');
        $query_data2 = array('kbnid' => $id, 'one' => 1);
        kb_UpdateData($query_params2, $query_data2);
        KB_cleanCache();
    }
    redirectexit('action=kb;area=article;cont=' . $id . '');
}