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; } }