help.verua.ch/scp/kb.php

115 lines
4.6 KiB
PHP
Raw Normal View History

2026-01-05 08:46:20 +01:00
<?php
/*********************************************************************
kb.php
Knowledge Base handle
Peter Rotich <peter@osticket.com>
Copyright (c) 2006-2010 osTicket
http://www.osticket.com
Released under the GNU General Public License WITHOUT ANY WARRANTY.
See LICENSE.TXT for details.
vim: expandtab sw=4 ts=4 sts=4:
$Id: $
**********************************************************************/
require('staff.inc.php');
if(!$thisuser->canManageKb() && !$thisuser->isadmin()) die('Zugriff verweigert');
$page='';
$answer=null; //clean start.
if(($id=$_REQUEST['id']?$_REQUEST['id']:$_POST['id']) && is_numeric($id)) {
$replyID=0;
$resp=db_query('SELECT * FROM '.KB_PREMADE_TABLE.' WHERE premade_id='.db_input($id));
if($resp && db_num_rows($resp))
$answer=db_fetch_array($resp);
else
$errors['err']='Unbekannte ID#'.$id; //Sucker...invalid id
if(!$errors && $answer['premade_id']==$id)
$page='reply.inc.php';
}
if($_POST):
$errors=array();
switch(strtolower($_POST['a'])):
case 'update':
case 'add':
if(!$_POST['id'] && $_POST['a']=='update')
$errors['err']='Fehlende oder Ung&uuml;ltige Gruppen-ID';
if(!$_POST['title'])
$errors['title']='Titel/Betreff erforderlich';
if(!$_POST['answer'])
$errors['answer']='Antwort erforderlich';
if(!$errors){
$sql=' SET updated=NOW(),isenabled='.db_input($_POST['isenabled']).
', dept_id='.db_input($_POST['dept_id']).
', title='.db_input(Format::striptags($_POST['title'])).
', answer='.db_input(Format::striptags($_POST['answer']));
if($_POST['a']=='add'){ //create
$res=db_query('INSERT INTO '.KB_PREMADE_TABLE.' '.$sql.',created=NOW()');
if(!$res or !($replyID=db_insert_id()))
$errors['err']='Erstellen der Antwort nicht m&oumlglich. Interner Fehler';
else
$msg='Vergefertigte Antwort erstellt';
}elseif($_POST['a']=='update'){ //update
$res=db_query('UPDATE '.KB_PREMADE_TABLE.' '.$sql.' WHERE premade_id='.db_input($_POST['id']));
if($res && db_affected_rows()){
$msg='Premade reply updated';
$answer=db_fetch_array(db_query('SELECT * FROM '.KB_PREMADE_TABLE.' WHERE premade_id='.db_input($id)));
}
else
$errors['err']='Interner Fehler beim &auml;ndern aufgetreten. Bitte nochmals versuchen';
}
if($errors['err'] && db_errno()==1062)
$errors['title']='Titel existiert bereits!';
}else{
$errors['err']=$errors['err']?$errors['err']:'Fehler aufgetreten. Bitte nochmals versuchen';
}
break;
case 'process':
if(!$_POST['canned'] || !is_array($_POST['canned']))
$errors['err']='Sie m&uuml;ssen mindestens ein Element ausw&auml;hlen';
else{
$msg='';
$ids=implode(',',$_POST['canned']);
$selected=count($_POST['canned']);
if(isset($_POST['enable'])) {
if(db_query('UPDATE '.KB_PREMADE_TABLE.' SET isenabled=1,updated=NOW() WHERE isenabled=0 AND premade_id IN('.$ids.')'))
$msg=db_affected_rows()." von $selected ausgew&auml;hlten Antworten aktiviert";
}elseif(isset($_POST['disable'])) {
if(db_query('UPDATE '.KB_PREMADE_TABLE.' SET isenabled=0, updated=NOW() WHERE isenabled=1 AND premade_id IN('.$ids.')'))
$msg=db_affected_rows()." von $selected ausgew&auml;hlten Antworten deaktiviert";
}elseif(isset($_POST['delete'])) {
if(db_query('DELETE FROM '.KB_PREMADE_TABLE.' WHERE premade_id IN('.$ids.')'))
$msg=db_affected_rows()." von $selected ausgew&auml;hlten Antworten gel&ouml;scht";
}
if(!$msg)
$errors['err']='Fehler aufgetreten. Bitte nochmals versuchen';
}
break;
default:
$errors['err']='Unbekannte Aktion';
endswitch;
endif;
//new reply??
if(!$page && $_REQUEST['a']=='add' && !$replyID)
$page='reply.inc.php';
$inc=$page?$page:'premade.inc.php';
$nav->setTabActive('kbase');
$nav->addSubMenu(array('desc'=>'Fertige Antworten','href'=>'kb.php','iconclass'=>'premade'));
$nav->addSubMenu(array('desc'=>'Neue Antwort anlegen','href'=>'kb.php?a=add','iconclass'=>'newPremade'));
require_once(STAFFINC_DIR.'header.inc.php');
require_once(STAFFINC_DIR.$inc);
require_once(STAFFINC_DIR.'footer.inc.php');
?>