/**
  * Update the Question content
  *
  * @access  private
  * @param   boolean  $no_delete  YES/NO (optional)
  * @return  string   the udpatemessage
  */
 function execCommandUpdateQuestions($no_delete = false)
 {
     $questions = Request::getArray('questions');
     $deleteQuestions = Request::getArray('DeleteQuestions');
     // remove any empty questions
     $deletecount = 0;
     $qgroup =& $this->tree->getGroupObject($this->itemID);
     $questionsDB = $qgroup->getChildren();
     $cmd = Request::optionArray('cmd');
     if (!empty($cmd)) {
         if (key($cmd) == "UpdateItem") {
             $delete_empty_questions = 1;
         }
     }
     for ($i = 0; $i < count($questions); $i++) {
         if (!isset($deleteQuestions[$i])) {
             $question = new EvaluationQuestion($questions[$i]['questionID'], NULL, EVAL_LOAD_FIRST_CHILDREN);
             // remove any empty questions
             if (empty($questions[$i]['text']) && $delete_empty_questions) {
                 $question->delete();
                 $deletecount++;
                 // upadate the questiontext to the db
             } else {
                 $question->setText($questions[$i]['text']);
                 $question->save();
             }
         }
     }
     $msg = NULL;
     if ($deletecount == 1) {
         $msg = _("Es wurde eine leere Frage entfernt.");
     } elseif ($deletecount > 1) {
         $msg = sprintf(_("Es wurden %s leere Fragen entfernt."), $deletecount);
     }
     return $msg;
 }
function save1($myuserid)
{
    $mineexists = 0;
    /*Existiert Question/Template schon?*/
    $qdb = new EvaluationQuestionDB();
    if (!$template_id) {
        $template_id = Request::option("template_id");
    }
    if ($qdb->exists($template_id)) {
        $question = new EvaluationQuestion($template_id, NULL, EVAL_LOAD_ALL_CHILDREN);
        if ($question->getParentID() != $myuserid) {
            $foreign = TRUE;
            $question = new EvaluationQuestion();
            $question->setParentID($myuserid);
        } else {
            $overwrite = 1;
            //$question->delete();
            //$question = new EvaluationQuestion();
            //$template_id=$question->getObjectID();
        }
    } else {
        $question = new EvaluationQuestion();
    }
    /*Get Vars ----------------------------------------------------*/
    $template_name = Request::get("template_name");
    $template_type = Request::get("template_type");
    $template_multiple = Request::get("template_multiple");
    $template_add_num_answers = Request::option("template_add_num_answers");
    $template_residual = Request::get("template_residual");
    $template_residual_text = Request::get("template_residual_text");
    $template_answers = Request::getArray("template_answers");
    /*end: Get Vars -----------------------------------------------*/
    $question->setParentID($myuserid);
    $question->setMultiplechoice($template_multiple);
    $question->setText(trim($template_name), YES);
    $question->setType($template_type);
    while ($answerrem = $question->getChild()) {
        $id = $answerrem->getObjectID();
        $answerrem->delete();
        $question->removeChildID($id);
    }
    $controlnumber = count($template_answers);
    $ausgleich = 0;
    for ($i = 0; $i < $controlnumber; $i++) {
        $text = $template_answers[$i]['text'];
        $answerID = $template_answers[$i]['answer_id'];
        $answer = new EvaluationAnswer();
        if (!$foreign) {
            $answer->setObjectID($answerID);
        }
        $answer->setText(trim($text), YES);
        $question->addChild($answer);
        /*Anzahl der Antworten bei Polskalen anpassen ------------------------*/
        if ($template_type == EVALQUESTION_TYPE_POL && $i == 0) {
            $answerdiff = $controlnumber - $template_add_num_answers;
            if ($template_residual) {
                //echo "Hust<br>";
                //$answerdiff;
            }
            if ($answerdiff > 0) {
                /*differenz abziehen => answers überspringen*/
                $i = $i + $answerdiff;
                $ausgleich = $ausgleich - $answerdiff;
            }
            while ($answerdiff < 0) {
                $ausgleich = $ausgleich + 1;
                $answer = new EvaluationAnswer();
                $answer->setText("");
                $answer->setParentID($question->getObjectID());
                $answer->setPosition($i + $ausgleich);
                $answer->setValue($i + 1 + $ausgleich);
                $question->addChild($answer);
                $answerdiff++;
            }
        }
        /*end: Polskala antworten angleichen ----------------------------------*/
    }
    /*create residual category-----------------------------------------------*/
    if ($template_residual) {
        $answer = new EvaluationAnswer();
        $answer->setResidual($template_residual);
        $answer->setText(trim($template_residual_text), QUOTED);
        $answer->setParentID($question->getObjectID());
        $answer->setPosition($i + $ausgleich + 1);
        $answer->setValue(-1);
        $question->addChild($answer);
    }
    /*object HIER NOCH NICHT in db speichern!      */
    // $question->save();
    if (!$overwrite) {
        $db = new EvaluationQuestionDB();
        $lib = new EvalTemplateGUI();
        $lib->setUniqueName($question, $db, $myuserid, YES);
    }
    if ($question->isError()) {
        EvalCommon::showErrorReport($question, _("Fehler beim Speichern."));
    }
    return $question;
}