Пример #1
0
 public function call()
 {
     try {
         $survey_code = strtoupper($this->getArgument('survey'));
         $survey_mng = new SurveyManager();
         if (!$survey_code || !$survey_mng->isSurvey($survey_code)) {
             $answer = new Answer('error', array("error" => "Survey not found"), 'xml');
             $answer->setXMLOpt("rootName", "dashboard");
             return $answer;
         }
         $emotion_obj = new Emotion();
         $emote = NULL;
         $intensity_distr = NULL;
         $subset = $this->getArgument('subset');
         if ($subset) {
             if ($emotion_obj->isEmotion($subset)) {
                 $emote = $subset;
             } else {
                 $intensity_distr = $subset;
             }
         }
         $a_split_words = preg_split('/[\\n\\r\\s]+/', $this->getArgument('search'));
         $a_words = array();
         foreach ($a_split_words as $word) {
             $a_words[$word] = 1;
         }
         $a_words = array_keys($a_words);
         $a_words = array_filter($a_words);
         $survey_result_mng = new SurveyResultManager();
         $starting = $this->getArgument('starting');
         $ending = $this->getArgument('ending');
         if ($survey_result_mng->isSurveyFree($survey_code)) {
             $starting = $starting ? $starting : 0;
             $ending = $ending ? $ending : 0;
             if (!$starting && !$ending) {
                 $ending = 50;
             } else {
                 if ($ending > $starting + 50) {
                     $ending = $starting + 50;
                 }
             }
         }
         $a_survey_results = $survey_result_mng->filterResults($survey_code, $a_words, $emote, $intensity_distr, $starting, $ending);
         $a_results = array();
         foreach ($a_survey_results as $result) {
             $verbatims = $result['verbatim'];
             if ($a_words) {
                 $patterns = array();
                 $replacements = array();
                 foreach ($a_words as $search_word) {
                     array_push($patterns, "/{$search_word}/");
                     array_push($replacements, "<b>{$search_word}</b>");
                 }
                 $verbatims = preg_replace($patterns, $replacements, $verbatims);
             }
             $a_verbatims = preg_split('/[\\n\\r\\s]+/', $verbatims);
             $verbatims = implode(" ", $a_verbatims);
             $intensity_level = 1;
             if ($result['intensity_level'] >= 33 && $result['intensity_level'] < 66) {
                 $intensity_level = 2;
             } else {
                 if ($result['intensity_level'] >= 66) {
                     $intensity_level = 3;
                 }
             }
             list($timestamp, $ts_color) = verbatim_date($result['end_time']);
             array_push($a_results, array($verbatims, "_attributes" => array("face" => $result['emote'] . "_intensity_{$intensity_level}", "id" => $result['survey_result_id'], 'timestamp' => $timestamp, 'ts_color' => $ts_color)));
         }
         //$test_str = var_export($a_survey_results,true);
         $to_xml = array();
         if (count($a_results)) {
             $to_xml = array('verbatim' => $a_results);
         }
         $answer = new Answer('ok', $to_xml, 'xml');
         $answer->setXMLOpt("rootName", "verbatims");
         $answer->setXMLOpt("rootAttributes", array("survey" => $survey_code, "search" => $this->getArgument('search'), "starting" => $this->getArgument('starting'), "ending" => $this->getArgument('ending'), "subset" => $this->getArgument('subset')));
         return $answer;
     } catch (Exception $e) {
         $answer = new Answer('error', array("error" => $e->getMessage()), 'xml');
         $answer->setXMLOpt("rootName", "verbatims");
         return $answer;
     }
 }