Upgraded surveys creation

This commit is contained in:
Pierre 2018-04-22 14:05:14 +02:00
parent ddfe2f4e8e
commit ae7dd0bed3
3 changed files with 27 additions and 25 deletions

View File

@ -7,7 +7,7 @@
* @author Pierre HUBERT
*/
class postsController {
class PostsController {
/**
* Visibility levels for the API
@ -296,9 +296,14 @@ class postsController {
if(count($answers) < 2)
Rest_fatal_error(400, "Please specify at least two valid answers for the survey !");
//Save informations about the survey
$survey_question = removeHTMLnodes($question);
$survey_answers = $answers;
//Save information about the survey
$survey = new Survey();
$survey->set_question(removeHTMLnodes($question));
foreach($answers as $name){
$choice = new SurveyChoice();
$choice->set_name($name);
$survey->add_choice($choice);
}
}
//The content type is not supported
@ -338,8 +343,7 @@ class postsController {
isset($link_image) ? $link_image : null,
//For survey posts
isset($survey_question) ? $survey_question : null,
isset($survey_answers) ? $survey_answers : array()
isset($survey) ? $survey : null
);
//Check for errors

View File

@ -25,24 +25,21 @@ class SurveyComponent {
/**
* Create a new survey
*
* @param int $postID The target post for the survey
* @param int $userID The ID of the user creating the survey
* @param string $question The question for the survey
* @param array $answers The answers for the survey
* @param Survey $survey Information about the survey to create
* @return bool True for a sucess / False for a failure
*/
public function create(int $postID, int $userID, string $question, array $answers) : bool {
public function create(Survey $survey) : bool {
//Create the main survey informations
$main_infos = array(
"ID_utilisateurs" => $userID,
"ID_texte" => $postID,
$main_info = array(
"ID_utilisateurs" => $survey->get_userID(),
"ID_texte" => $survey->get_postID(),
"date_creation" => mysql_date(),
"question" => $question
"question" => $survey->get_question()
);
//Try to create survey main informations table
if(!CS::get()->db->addLine($this::SURVEY_INFOS_TABLE, $main_infos))
if(!CS::get()->db->addLine($this::SURVEY_INFOS_TABLE, $main_info))
return false;
//Get the ID of the survey
@ -54,11 +51,11 @@ class SurveyComponent {
//Process each answer
$answers_data = array();
foreach($answers as $line){
foreach($survey->get_choices() as $choice){
$answers_data[] = array(
"ID_sondage" => $surveyID,
"date_creation" => mysql_date(),
"Choix" => $line
"Choix" => $choice->get_name()
);
}
@ -79,7 +76,7 @@ class SurveyComponent {
public function get_infos(int $postID) : Survey {
//Get informations about the survey
$survey = $this->get_survey_infos($postID);
$survey = $this->get_survey_info($postID);
//Check for errors
if(!$survey->isValid())
@ -214,7 +211,7 @@ class SurveyComponent {
* @return Survey Information about the survey, or an invalid object in case
* of failure
*/
private function get_survey_infos(int $postID) : Survey {
private function get_survey_info(int $postID) : Survey {
//Fetch the database
$conditions = "WHERE ID_texte = ?";

View File

@ -348,16 +348,14 @@ class Posts {
* @param string $link_title The title of the link associated with the post (if any)
* @param string $link_description The description of the link associated with the post (if any)
* @param string $link_image The link pointing on the image associated with the post (if any)
* @param string $survey_question The question of the survey associated with the post (if any)
* @param array $survey_answers The answers of the survey associated with the post (if any)
* @param Survey $survey Information about a related survey (if any)
* @return int The ID of the created post or -1 in case of failure
*/
public function create(string $kind_page, int $kind_page_id, int $userID, string $content,
int $visibility, string $kind, int $file_size = 0,
string $file_type = null, string $file_path = null, int $videoID = 0,
int $time_end = 0, string $link_url = null, string $link_title = null,
string $link_description = null, string $link_image = null, string $survey_question = null,
array $survey_answers = array()) : int {
string $link_description = null, string $link_image = null, Survey $survey = null) : int {
//Generate new post informations
//Get the corresponding kind of post for the database
@ -424,7 +422,10 @@ class Posts {
//Create the survey if required
if($kind == $this::POST_KIND_SURVEY){
CS::get()->components->survey->create($postID, $userID, $survey_question, $survey_answers);
//Complete the request
$survey->set_postID($postID);
$survey->set_userID($userID);
components()->survey->create($survey);
}
return $postID;