2011-06-03 00:22:11 +02:00
< ? php
2016-09-29 10:53:17 +02:00
2017-01-02 03:57:23 +01:00
function admin_questions_title ()
{
return _ ( " Answer questions " );
2013-11-25 21:04:58 +01:00
}
2016-11-15 16:28:20 +01:00
/**
* Renders a hint for new questions to answer .
*/
2017-01-02 03:57:23 +01:00
function admin_new_questions ()
{
global $privileges , $page ;
2016-09-29 10:53:17 +02:00
2017-01-02 03:57:23 +01:00
if ( $page != " admin_questions " ) {
if ( in_array ( " admin_questions " , $privileges )) {
$new_messages = sql_num_query ( " SELECT * FROM `Questions` WHERE `AID` IS NULL " );
2016-11-15 16:28:20 +01:00
2017-01-02 03:57:23 +01:00
if ( $new_messages > 0 ) {
return '<a href="' . page_link_to ( " admin_questions " ) . '">' . _ ( 'There are unanswered questions!' ) . '</a>' ;
}
}
2016-09-29 10:53:17 +02:00
}
2017-01-02 03:57:23 +01:00
return null ;
2011-06-03 00:22:11 +02:00
}
2017-01-02 03:57:23 +01:00
function admin_questions ()
{
global $user ;
2016-09-29 10:53:17 +02:00
2017-01-02 03:57:23 +01:00
if ( ! isset ( $_REQUEST [ 'action' ])) {
$unanswered_questions_table = [];
$questions = sql_select ( " SELECT * FROM `Questions` WHERE `AID` IS NULL " );
foreach ( $questions as $question ) {
$user_source = User ( $question [ 'UID' ]);
2016-09-29 10:53:17 +02:00
2017-01-02 03:57:23 +01:00
$unanswered_questions_table [] = [
2014-08-23 19:15:10 +02:00
'from' => User_Nick_render ( $user_source ),
'question' => str_replace ( " \n " , " <br /> " , $question [ 'Question' ]),
2016-09-29 10:53:17 +02:00
'answer' => form ([
2014-12-06 22:46:23 +01:00
form_textarea ( 'answer' , '' , '' ),
2017-01-02 03:57:23 +01:00
form_submit ( 'submit' , _ ( " Save " ))
2016-09-29 10:53:17 +02:00
], page_link_to ( 'admin_questions' ) . '&action=answer&id=' . $question [ 'QID' ]),
2017-01-02 03:57:23 +01:00
'actions' => button ( page_link_to ( " admin_questions " ) . '&action=delete&id=' . $question [ 'QID' ], _ ( " delete " ), 'btn-xs' )
2016-09-29 10:53:17 +02:00
];
2017-01-02 03:57:23 +01:00
}
2016-09-29 10:53:17 +02:00
2017-01-02 03:57:23 +01:00
$answered_questions_table = [];
$questions = sql_select ( " SELECT * FROM `Questions` WHERE NOT `AID` IS NULL " );
foreach ( $questions as $question ) {
$user_source = User ( $question [ 'UID' ]);
$answer_user_source = User ( $question [ 'AID' ]);
$answered_questions_table [] = [
2014-08-23 19:15:10 +02:00
'from' => User_Nick_render ( $user_source ),
2014-08-22 22:34:13 +02:00
'question' => str_replace ( " \n " , " <br /> " , $question [ 'Question' ]),
2014-08-23 19:15:10 +02:00
'answered_by' => User_Nick_render ( $answer_user_source ),
2014-08-22 22:34:13 +02:00
'answer' => str_replace ( " \n " , " <br /> " , $question [ 'Answer' ]),
2017-01-02 03:57:23 +01:00
'actions' => button ( page_link_to ( " admin_questions " ) . '&action=delete&id=' . $question [ 'QID' ], _ ( " delete " ), 'btn-xs' )
2016-09-29 10:53:17 +02:00
];
2017-01-02 03:57:23 +01:00
}
2016-09-29 10:53:17 +02:00
2017-01-02 03:57:23 +01:00
return page_with_title ( admin_questions_title (), [
2014-08-23 19:15:10 +02:00
'<h2>' . _ ( " Unanswered questions " ) . '</h2>' ,
2016-09-29 10:53:17 +02:00
table ([
2014-08-23 19:15:10 +02:00
'from' => _ ( " From " ),
'question' => _ ( " Question " ),
'answer' => _ ( " Answer " ),
2017-01-02 03:57:23 +01:00
'actions' => ''
2016-09-29 10:53:17 +02:00
], $unanswered_questions_table ),
2014-08-23 19:15:10 +02:00
'<h2>' . _ ( " Answered questions " ) . '</h2>' ,
2016-09-29 10:53:17 +02:00
table ([
2014-08-23 19:15:10 +02:00
'from' => _ ( " From " ),
'question' => _ ( " Question " ),
'answered_by' => _ ( " Answered by " ),
'answer' => _ ( " Answer " ),
2017-01-02 03:57:23 +01:00
'actions' => ''
], $answered_questions_table )
2016-09-29 10:53:17 +02:00
]);
2017-01-02 03:57:23 +01:00
} else {
switch ( $_REQUEST [ 'action' ]) {
2014-08-22 22:34:13 +02:00
case 'answer' :
2016-09-29 10:53:17 +02:00
if ( isset ( $_REQUEST [ 'id' ]) && preg_match ( " /^[0-9] { 1,11} $ / " , $_REQUEST [ 'id' ])) {
2017-01-02 03:57:23 +01:00
$question_id = $_REQUEST [ 'id' ];
2016-09-29 10:53:17 +02:00
} else {
2017-01-02 03:57:23 +01:00
return error ( " Incomplete call, missing Question ID. " , true );
2016-09-29 10:53:17 +02:00
}
2016-09-29 12:45:06 +02:00
$question = sql_select ( " SELECT * FROM `Questions` WHERE `QID`=' " . sql_escape ( $question_id ) . " ' LIMIT 1 " );
2014-08-22 22:34:13 +02:00
if ( count ( $question ) > 0 && $question [ 0 ][ 'AID' ] == null ) {
2017-01-02 03:57:23 +01:00
$answer = trim ( preg_replace ( " /([^ \ p { L} \ p { P} \ p { Z} \ p { N} \n ] { 1,})/ui " , '' , strip_tags ( $_REQUEST [ 'answer' ])));
2016-09-29 10:53:17 +02:00
2017-01-02 03:57:23 +01:00
if ( $answer != " " ) {
sql_query ( " UPDATE `Questions` SET `AID`=' " . sql_escape ( $user [ 'UID' ]) . " ', `Answer`=' " . sql_escape ( $answer ) . " ' WHERE `QID`=' " . sql_escape ( $question_id ) . " ' LIMIT 1 " );
engelsystem_log ( " Question " . $question [ 0 ][ 'Question' ] . " answered: " . $answer );
redirect ( page_link_to ( " admin_questions " ));
} else {
return error ( " Enter an answer! " , true );
}
2016-09-29 10:53:17 +02:00
} else {
2017-01-02 03:57:23 +01:00
return error ( " No question found. " , true );
2016-09-29 10:53:17 +02:00
}
2012-12-26 14:02:27 +01:00
break ;
2014-08-22 22:34:13 +02:00
case 'delete' :
2016-09-29 10:53:17 +02:00
if ( isset ( $_REQUEST [ 'id' ]) && preg_match ( " /^[0-9] { 1,11} $ / " , $_REQUEST [ 'id' ])) {
2017-01-02 03:57:23 +01:00
$question_id = $_REQUEST [ 'id' ];
2016-09-29 10:53:17 +02:00
} else {
2017-01-02 03:57:23 +01:00
return error ( " Incomplete call, missing Question ID. " , true );
2016-09-29 10:53:17 +02:00
}
2016-09-29 12:45:06 +02:00
$question = sql_select ( " SELECT * FROM `Questions` WHERE `QID`=' " . sql_escape ( $question_id ) . " ' LIMIT 1 " );
2012-12-26 14:02:27 +01:00
if ( count ( $question ) > 0 ) {
2017-01-02 03:57:23 +01:00
sql_query ( " DELETE FROM `Questions` WHERE `QID`=' " . sql_escape ( $question_id ) . " ' LIMIT 1 " );
engelsystem_log ( " Question deleted: " . $question [ 0 ][ 'Question' ]);
redirect ( page_link_to ( " admin_questions " ));
2016-09-29 10:53:17 +02:00
} else {
2017-01-02 03:57:23 +01:00
return error ( " No question found. " , true );
2016-09-29 10:53:17 +02:00
}
2012-12-26 14:02:27 +01:00
break ;
}
2017-01-02 03:57:23 +01:00
}
2011-06-03 00:22:11 +02:00
}