Public Member Functions | Data Fields

ilSurveyExecutionGUI Class Reference

Survey execution graphical output. More...

Public Member Functions

 ilSurveyExecutionGUI ($a_object)
 ilSurveyExecutionGUI constructor
executeCommand ()
 execute command
 getCommand ($cmd)
 Retrieves the ilCtrl command.
 resume ()
 Resumes the survey.
 start ($resume=false)
 Starts the survey.
 previous ()
 Navigates to the previous pages.
 next ()
 Navigates to the next pages.
 outSurveyPage ($activepage, $direction)
 Output of the active survey question to the screen.
 navigate ($navigationDirection="next")
 Survey navigation.
 saveActiveQuestionData (&$data)
 Saves the users input of the active page.
 cancel ()
 Called on cancel.
 runShowFinishedPage ()
 Creates the finished page for a running survey.
 exitSurvey ()
 Exits the survey after finishing it.
 outNavigationButtons ($navigationblock="top", $page)
 Creates the navigation buttons for a survey.

Data Fields

 $object
 $lng
 $tpl
 $ctrl
 $ilias
 $tree

Detailed Description

Survey execution graphical output.

The ilSurveyExecutionGUI class creates the execution output for the ilObjSurveyGUI class. This saves some heap space because the ilObjSurveyGUI class will be smaller.

Author:
Helmut Schottmüller <helmut.schottmueller@mac.com>
Version:
Id:
class.ilSurveyExecutionGUI.php 13392 2007-03-05 10:19:18Z hschottm

class.ilSurveyExecutionGUI.php Survey

Definition at line 38 of file class.ilSurveyExecutionGUI.php.


Member Function Documentation

ilSurveyExecutionGUI::cancel (  ) 

Called on cancel.

Called on cancel

private

Definition at line 438 of file class.ilSurveyExecutionGUI.php.

        {
                $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
        }

& ilSurveyExecutionGUI::executeCommand (  ) 

execute command

Definition at line 70 of file class.ilSurveyExecutionGUI.php.

References $cmd, and getCommand().

        {
                $cmd = $this->ctrl->getCmd();
                $next_class = $this->ctrl->getNextClass($this);

                $cmd = $this->getCommand($cmd);
                switch($next_class)
                {
                        default:
                                $ret =& $this->$cmd();
                                break;
                }
                return $ret;
        }

Here is the call graph for this function:

ilSurveyExecutionGUI::exitSurvey (  ) 

Exits the survey after finishing it.

Exits the survey after finishing it

public

Definition at line 474 of file class.ilSurveyExecutionGUI.php.

        {
                $this->ctrl->redirectByClass("ilobjsurveygui", "backToRepository");
        }

ilSurveyExecutionGUI::getCommand ( cmd  ) 

Retrieves the ilCtrl command.

Retrieves the ilCtrl command

public

Definition at line 92 of file class.ilSurveyExecutionGUI.php.

References $cmd.

Referenced by executeCommand().

        {
                return $cmd;
        }

Here is the caller graph for this function:

ilSurveyExecutionGUI::ilSurveyExecutionGUI ( a_object  ) 

ilSurveyExecutionGUI constructor

The constructor takes possible arguments an creates an instance of the ilSurveyExecutionGUI object.

Parameters:
object $a_object Associated ilObjSurvey class public

Definition at line 55 of file class.ilSurveyExecutionGUI.php.

References $ilCtrl, $ilias, $lng, $tpl, and $tree.

  {
                global $lng, $tpl, $ilCtrl, $ilias, $tree;

    $this->lng =& $lng;
    $this->tpl =& $tpl;
                $this->ctrl =& $ilCtrl;
                $this->ilias =& $ilias;
                $this->object =& $a_object;
                $this->tree =& $tree;
        }

ilSurveyExecutionGUI::navigate ( navigationDirection = "next"  ) 

Survey navigation.

Survey navigation

private

Definition at line 336 of file class.ilSurveyExecutionGUI.php.

References $_GET, $_SESSION, $data, $rbacsystem, outSurveyPage(), saveActiveQuestionData(), and sendInfo().

Referenced by next(), and previous().

        {
                global $ilUser;
                global $rbacsystem;

                if (!$rbacsystem->checkAccess("read", $this->object->ref_id)) 
                {
                        // only with read access it is possible to run the test
                        $this->ilias->raiseError($this->lng->txt("cannot_read_survey"),$this->ilias->error_obj->MESSAGE);
                }

                // check users input when it is a metric question
                unset($_SESSION["svy_errors"]);
                $page_error = 0;
                $page = $this->object->getNextPage($_GET["qid"], 0);
                foreach ($page as $data)
                {
                        $page_error += $this->saveActiveQuestionData($data);
                }
                if ($page_error && (strcmp($navigationDirection, "previous") != 0))
                {
                        if ($page_error == 1)
                        {
                                sendInfo($this->lng->txt("svy_page_error"));
                        }
                        else
                        {
                                sendInfo($this->lng->txt("svy_page_errors"));
                        }
                }
                else
                {
                        $page_error = "";
                }

                $direction = 0;
                switch ($navigationDirection)
                {
                        case "next":
                        default:
                                $activepage = $_GET["qid"];
                                if (!$page_error)
                                {
                                        $direction = 1;
                                }
                                break;
                        case "previous":
                                $activepage = $_GET["qid"];
                                if (!$page_error)
                                {
                                        $direction = -1;
                                }
                                break;
                }
                $this->outSurveyPage($activepage, $direction);
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilSurveyExecutionGUI::next (  ) 

Navigates to the next pages.

Navigates to the next pages

private

Definition at line 205 of file class.ilSurveyExecutionGUI.php.

References navigate().

        {
                $this->navigate("next");
        }

Here is the call graph for this function:

ilSurveyExecutionGUI::outNavigationButtons ( navigationblock = "top",
page 
)

Creates the navigation buttons for a survey.

Creates the navigation buttons for a survey. Runs twice to generate a top and a bottom navigation to ease the use of long forms.

public

Definition at line 488 of file class.ilSurveyExecutionGUI.php.

Referenced by outSurveyPage().

        {
                $prevpage = $this->object->getNextPage($page[0]["question_id"], -1);
                $this->tpl->setCurrentBlock($navigationblock . "_prev");
                if ($prevpage === 0)
                {
                        $this->tpl->setVariable("BTN_PREV", $this->lng->txt("survey_start"));
                }
                else
                {
                        $this->tpl->setVariable("BTN_PREV", $this->lng->txt("survey_previous"));
                }
                $this->tpl->parseCurrentBlock();
                $nextpage = $this->object->getNextPage($page[0]["question_id"], 1);
                $this->tpl->setCurrentBlock($navigationblock . "_next");
                if ($nextpage === 1)
                {
                        $this->tpl->setVariable("BTN_NEXT", $this->lng->txt("survey_finish"));
                }
                else
                {
                        $this->tpl->setVariable("BTN_NEXT", $this->lng->txt("survey_next"));
                }
                $this->tpl->parseCurrentBlock();
        }

Here is the caller graph for this function:

ilSurveyExecutionGUI::outSurveyPage ( activepage,
direction 
)

Output of the active survey question to the screen.

Output of the active survey question to the screen

private

Definition at line 217 of file class.ilSurveyExecutionGUI.php.

References $_SESSION, $data, $error_messages, ilUtil::getImagePath(), outNavigationButtons(), runShowFinishedPage(), and sendInfo().

Referenced by navigate(), and start().

        {
                global $ilUser;

                // security check if someone tries to go into a survey using an URL to one of the questions
                $canStart = $this->object->canStartSurvey($_SESSION["anonymous_id"]);
                if (!$canStart["result"])
                {
                        sendInfo(implode("<br />", $canStart["messages"]), TRUE);
                        $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
                }
                $survey_started = $this->object->isSurveyStarted($ilUser->getId(), $_SESSION["anonymous_id"]);
                if ($survey_started === FALSE)
                {
                        sendInfo($this->lng->txt("survey_use_start_button"), TRUE);
                        $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
                }
                
                $page = $this->object->getNextPage($activepage, $direction);
                $constraint_true = 0;

                // check for constraints
                if (count($page[0]["constraints"]))
                {
                        while (is_array($page) and ($constraint_true == 0) and (count($page[0]["constraints"])))
                        {
                                $constraint_true = 1;
                                foreach ($page[0]["constraints"] as $constraint)
                                {
                                        $working_data = $this->object->loadWorkingData($constraint["question"], $ilUser->id);
                                        $constraint_true = $constraint_true & $this->object->checkConstraint($constraint, $working_data);
                                }
                                if ($constraint_true == 0)
                                {
                                        $page = $this->object->getNextPage($page[0]["question_id"], $direction);
                                }
                        }
                }

                $qid = "";
                if ($page === 0)
                {
                        $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
                }
                else if ($page === 1)
                {
                        $this->object->finishSurvey($ilUser->id, $_SESSION["anonymous_id"]);
                        if (array_key_exists("anonymous_id", $_SESSION)) unset($_SESSION["anonymous_id"]);
                        if (array_key_exists("accesscode", $_SESSION)) unset($_SESSION["accesscode"]);
                        $this->runShowFinishedPage();
                        return;
                }
                else
                {
                        $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_content.html", true);

                        if (!($this->object->getAnonymize() && $this->object->isAccessibleWithoutCode() && ($_SESSION["AccountId"] == ANONYMOUS_USER_ID)))
                        {
                                $this->tpl->setCurrentBlock("suspend_survey");
                                $this->tpl->setVariable("TEXT_SUSPEND", $this->lng->txt("cancel_survey"));
                                $this->tpl->setVariable("HREF_SUSPEND", $this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "infoScreen"));
                                $this->tpl->setVariable("HREF_IMG_SUSPEND", $this->ctrl->getLinkTargetByClass("ilObjSurveyGUI", "infoScreen"));
                                $this->tpl->setVariable("ALT_IMG_SUSPEND", $this->lng->txt("cancel_survey"));
                                $this->tpl->setVariable("TITLE_IMG_SUSPEND", $this->lng->txt("cancel_survey"));
                                $this->tpl->setVariable("IMG_SUSPEND", ilUtil::getImagePath("cancel.gif"));
                                $this->tpl->parseCurrentBlock();
                        }
                        $this->outNavigationButtons("top", $page);
                        $this->tpl->addBlockFile("NOMINAL_QUESTION", "nominal_question", "tpl.il_svy_out_nominal.html", true);
                        $this->tpl->addBlockFile("ORDINAL_QUESTION", "ordinal_question", "tpl.il_svy_out_ordinal.html", true);
                        $this->tpl->addBlockFile("METRIC_QUESTION", "metric_question", "tpl.il_svy_out_metric.html", true);
                        $this->tpl->addBlockFile("TEXT_QUESTION", "text_question", "tpl.il_svy_out_text.html", true);
                        $this->tpl->setCurrentBlock("percentage");
                        $percentage = (int)(($page[0]["position"])*100);
                        $this->tpl->setVariable("PERCENT_BAR_START", ilUtil::getImagePath("bar_start.gif"));
                        $this->tpl->setVariable("PERCENT_BAR_FILLED", ilUtil::getImagePath("bar_filled.gif"));
                        $this->tpl->setVariable("PERCENT_BAR_EMPTY", ilUtil::getImagePath("bar_empty.gif"));
                        $this->tpl->setVariable("PERCENT_BAR_END", ilUtil::getImagePath("bar_end.gif"));
                        $this->tpl->setVariable("PERCENTAGE_ALT", $this->lng->txt("percentage"));
                        $this->tpl->setVariable("PERCENTAGE_VALUE", $percentage);
                        $this->tpl->setVariable("PERCENTAGE_UNFINISHED", 100-$percentage);
                        $this->tpl->parseCurrentBlock();
                        if (count($page) > 1)
                        {
                                $this->tpl->setCurrentBlock("questionblock_title");
                                $this->tpl->setVariable("TEXT_QUESTIONBLOCK_TITLE", $page[0]["questionblock_title"]);
                                $this->tpl->parseCurrentBlock();
                        }
                        foreach ($page as $data)
                        {
                                $this->tpl->setCurrentBlock("survey_content");
                                if ($data["heading"])
                                {
                                        $this->tpl->setVariable("QUESTION_HEADING", $data["heading"]);
                                }
                                $question_gui = $this->object->getQuestionGUI($data["type_tag"], $data["question_id"]);
                                $working_data = $this->object->loadWorkingData($data["question_id"], $ilUser->id);
                                $question_gui->object->setObligatory($data["obligatory"]);
                                $error_messages = array();
                                if (is_array($_SESSION["svy_errors"]))
                                {
                                        $error_messages = $_SESSION["svy_errors"];
                                }
                                $question_gui->outWorkingForm($working_data, $this->object->getShowQuestionTitles(), $error_messages[$data["question_id"]]);
                                $qid = "&qid=" . $data["question_id"];
                                $this->tpl->parse("survey_content");
                        }
                        $this->outNavigationButtons("bottom", $page);
                        $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this) . $qid);
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilSurveyExecutionGUI::previous (  ) 

Navigates to the previous pages.

Navigates to the previous pages

private

Definition at line 193 of file class.ilSurveyExecutionGUI.php.

References navigate().

        {
                $this->navigate("previous");
        }

Here is the call graph for this function:

ilSurveyExecutionGUI::resume (  ) 

Resumes the survey.

Resumes the survey

private

Definition at line 104 of file class.ilSurveyExecutionGUI.php.

References start().

        {
                $this->start(true);
        }

Here is the call graph for this function:

ilSurveyExecutionGUI::runShowFinishedPage (  ) 

Creates the finished page for a running survey.

Creates the finished page for a running survey

public

Definition at line 450 of file class.ilSurveyExecutionGUI.php.

References $_SESSION.

Referenced by outSurveyPage().

        {
                unset($_SESSION["anonymous_id"]);
                if (strlen($this->object->getOutro()) == 0)
                {
                        $this->ctrl->redirectByClass("ilobjsurveygui", "backToRepository");
                }
                else
                {
                        $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_svy_svy_finished.html", true);
                        $this->tpl->setVariable("TEXT_FINISHED", $this->object->prepareTextareaOutput($this->object->getOutro()));
                        $this->tpl->setVariable("BTN_EXIT", $this->lng->txt("exit"));
                        $this->tpl->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this));
                        $this->tpl->parseCurrentBlock();
                }
        }

Here is the caller graph for this function:

ilSurveyExecutionGUI::saveActiveQuestionData ( &$  data  ) 

Saves the users input of the active page.

Saves the users input of the active page

private

Definition at line 400 of file class.ilSurveyExecutionGUI.php.

References $_POST, $_SESSION, $data, $user_id, and SurveyQuestion::_instanciateQuestion().

Referenced by navigate().

        {
                global $ilUser;
                
                include_once "./survey/classes/class.SurveyQuestion.php";
                $question =& SurveyQuestion::_instanciateQuestion($data["question_id"]);
                $error = $question->checkUserInput($_POST);
                if (strlen($error) == 0)
                {
                        $user_id = $ilUser->getId();
                        // delete old answers
                        $this->object->deleteWorkingData($data["question_id"], $user_id);

                        if ($this->object->isSurveyStarted($user_id, $_SESSION["anonymous_id"]) === FALSE)
                        {
                                $this->object->startSurvey($user_id, $_SESSION["anonymous_id"]);
                        }
                        if ($this->object->getAnonymize())
                        {
                                $user_id = 0;
                        }
                        $question->saveUserInput($_POST, $this->object->getSurveyId(), $user_id, $_SESSION["anonymous_id"]);
                        return 0;
                }
                else
                {
                        $_SESSION["svy_errors"][$question->getId()] = $error;
                        return 1;
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilSurveyExecutionGUI::start ( resume = false  ) 

Starts the survey.

Starts the survey

private

Definition at line 116 of file class.ilSurveyExecutionGUI.php.

References $_POST, $_SESSION, $rbacsystem, outSurveyPage(), and sendInfo().

Referenced by resume().

        {
                global $ilUser;
                global $rbacsystem;

                unset($_SESSION["svy_errors"]);
                if (!$rbacsystem->checkAccess("read", $this->object->ref_id)) 
                {
                        // only with read access it is possible to run the test
                        $this->ilias->raiseError($this->lng->txt("cannot_read_survey"),$this->ilias->error_obj->MESSAGE);
                }

                if ($this->object->getAnonymize() && !$this->object->isAccessibleWithoutCode())
                {
                        if ($resume)
                        {
                                $anonymize_key = $this->object->getAnonymousId($_POST["anonymous_id"]);
                                if ($anonymize_key)
                                {
                                        $_SESSION["anonymous_id"] = $anonymize_key;
                                }
                                else
                                {
                                        unset($_POST["cmd"]["resume"]);
                                        sendInfo(sprintf($this->lng->txt("error_retrieving_anonymous_survey"), $_POST["anonymous_id"]));
                                }
                        }
                }
                
                $direction = 0;

                if ($this->object->getAnonymize() && !$this->object->isAccessibleWithoutCode())
                {
                        if ($this->object->checkSurveyCode($_POST["anonymous_id"]))
                        {
                                $_SESSION["anonymous_id"] = $_POST["anonymous_id"];
                        }
                        else
                        {
                                sendInfo(sprintf($this->lng->txt("error_retrieving_anonymous_survey"), $_POST["anonymous_id"]), true);
                                $this->ctrl->redirectByClass("ilobjsurveygui", "infoScreen");
                        }
                }
                if ($this->object->isAccessibleWithoutCode())
                {
                        $anonymous_id = $this->object->getUserSurveyCode($ilUser->getId());
                        if (strlen($anonymous_id))
                        {
                                $_SESSION["anonymous_id"] = $anonymous_id;
                        }
                        else
                        {
                                $_SESSION["anonymous_id"] = $this->object->createNewAccessCode();
                        }
                }
                
                $activepage = "";
                if ($resume)
                {
                        $activepage = $this->object->getLastActivePage($ilUser->id);
                        $direction = 0;
                }
                // explicitly set the survey started!
                if ($this->object->isSurveyStarted($ilUser->getId(), $_SESSION["anonymous_id"]) === FALSE)
                {
                        $this->object->startSurvey($ilUser->getId(), $_SESSION["anonymous_id"]);
                }
                $this->outSurveyPage($activepage, $direction);
        }

Here is the call graph for this function:

Here is the caller graph for this function:


Field Documentation

ilSurveyExecutionGUI::$ctrl

Definition at line 43 of file class.ilSurveyExecutionGUI.php.

ilSurveyExecutionGUI::$ilias

Definition at line 44 of file class.ilSurveyExecutionGUI.php.

Referenced by ilSurveyExecutionGUI().

ilSurveyExecutionGUI::$lng

Definition at line 41 of file class.ilSurveyExecutionGUI.php.

Referenced by ilSurveyExecutionGUI().

ilSurveyExecutionGUI::$object

Definition at line 40 of file class.ilSurveyExecutionGUI.php.

ilSurveyExecutionGUI::$tpl

Definition at line 42 of file class.ilSurveyExecutionGUI.php.

Referenced by ilSurveyExecutionGUI().

ilSurveyExecutionGUI::$tree

Definition at line 45 of file class.ilSurveyExecutionGUI.php.

Referenced by ilSurveyExecutionGUI().


The documentation for this class was generated from the following file: