summaryrefslogtreecommitdiffstats
path: root/admin/survey/classes/class.SurveyTextAnalysis.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/classes/class.SurveyTextAnalysis.php')
-rw-r--r--admin/survey/classes/class.SurveyTextAnalysis.php407
1 files changed, 407 insertions, 0 deletions
diff --git a/admin/survey/classes/class.SurveyTextAnalysis.php b/admin/survey/classes/class.SurveyTextAnalysis.php
new file mode 100644
index 0000000..2f083e8
--- /dev/null
+++ b/admin/survey/classes/class.SurveyTextAnalysis.php
@@ -0,0 +1,407 @@
+<?php
+
+class SurveyTextAnalysis{
+
+ private $anketa; # id ankete
+ private $db_table; # katere tabele uporabljamo
+
+
+ function __construct($anketa){
+ global $lang;
+
+ if ((int)$anketa > 0){
+
+ $this->anketa = $anketa;
+
+ # polovimo vrsto tabel (aktivne / neaktivne)
+ SurveyInfo :: getInstance()->SurveyInit($this->anketa);
+ if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) {
+ $this->db_table = '_active';
+ }
+ }
+ else {
+ echo 'Invalid Survey ID!';
+ exit();
+ }
+ }
+
+
+ function displayTable(){
+ global $lang;
+
+ $data = $this->getData();
+
+
+ // Tabela z vsotami stevil znakov - po straneh in vprasanjih
+ echo '<h2>'.$lang['srv_text_analysis_title1'].'</h2>';
+ echo '<table class="text_analysis_table">';
+
+ // Header row
+ echo '<tr>';
+
+ echo '<th style="width:120px;">'.$lang['srv_text_analysis_page'].'</th>';
+ echo '<th style="width:120px;">'.$lang['srv_text_analysis_question'].'</th>';
+
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_charCount'].'</th>';
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_charCountBlank'].'</th>';
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_charCountHTML'].'</th>';
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_wordCount'].'</th>';
+
+ echo '</tr>';
+
+ // Loop po straneh v anketi
+ foreach($data['grupe'] as $gru_id => $grupa){
+
+ // Loop po vprasanjih na strani
+ foreach($grupa['spremenljivke'] as $spr_id => $spremenljivka){
+
+ echo '<tr>';
+
+ echo '<td>'.$grupa['naslov'].'</td>';
+ echo '<td>'.$spremenljivka['variable'].'</td>';
+
+ echo '<td>'.$spremenljivka['sum_char_count'].'</td>';
+ echo '<td>'.$spremenljivka['sum_char_count_noBlank'].'</td>';
+ echo '<td>'.$spremenljivka['sum_char_count_html'].'</td>';
+ echo '<td>'.$spremenljivka['sum_word_count'].'</td>';
+
+ echo '</tr>';
+ }
+
+ // Vsota znakov na strani
+ echo '<tr class="sum">';
+
+ echo '<td>'.$grupa['naslov'].'</td>';
+ echo '<td>'.$lang['srv_text_analysis_sum'].'</td>';
+
+ echo '<td>'.$grupa['sum_char_count'].'</td>';
+ echo '<td>'.$grupa['sum_char_count_noBlank'].'</td>';
+ echo '<td>'.$grupa['sum_char_count_html'].'</td>';
+ echo '<td>'.$grupa['sum_word_count'].'</td>';
+
+ echo '</tr>';
+ }
+
+ // Vsota znakov v anketi
+ echo '<tr class="sum">';
+
+ echo '<td></td>';
+ echo '<td>'.$lang['srv_text_analysis_sumSurvey'].'</td>';
+
+ echo '<td>'.$data['sum_char_count'].'</td>';
+ echo '<td>'.$data['sum_char_count_noBlank'].'</td>';
+ echo '<td>'.$data['sum_char_count_html'].'</td>';
+ echo '<td>'.$data['sum_word_count'].'</td>';
+
+ echo '</tr>';
+
+ echo '</table>';
+
+
+ // Tabela s podrobnostmi - stevilo znakov po posameznih vprasnajih in vrednostih
+ echo '<h2>'.$lang['srv_text_analysis_title2'].'</h2>';
+ echo '<table class="text_analysis_table">';
+
+ // Header row
+ echo '<tr>';
+
+ echo '<th style="width:120px;">'.$lang['srv_text_analysis_page'].'</th>';
+ echo '<th style="width:120px;">'.$lang['srv_text_analysis_question'].'</th>';
+ echo '<th style="width:120px;">'.$lang['srv_text_analysis_value'].'</th>';
+ echo '<th>'.$lang['srv_text_analysis_text'].'</th>';
+
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_charCount'].'</th>';
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_charCountBlank'].'</th>';
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_charCountHTML'].'</th>';
+ echo '<th style="width:130px;">'.$lang['srv_text_analysis_wordCount'].'</th>';
+
+ echo '</tr>';
+
+ // Loop po straneh v anketi
+ foreach($data['grupe'] as $gru_id => $grupa){
+
+ // Loop po vprasanjih na strani
+ foreach($grupa['spremenljivke'] as $spr_id => $spremenljivka){
+
+ echo '<tr class="colored">';
+
+ echo '<td>'.$grupa['naslov'].'</td>';
+ echo '<td>'.$spremenljivka['variable'].'</td>';
+ echo '<td></td>';
+
+ $naslov = strip_tags($spremenljivka['naslov']);
+ $naslov = ($spremenljivka['char_count'] > 50) ? substr($naslov, 0, 47).'...' : $naslov;
+ echo '<td>'.$naslov.'</td>';
+
+ echo '<td>'.$spremenljivka['char_count'].'</td>';
+ echo '<td>'.$spremenljivka['char_count_noBlank'].'</td>';
+ echo '<td>'.$spremenljivka['char_count_html'].'</td>';
+ echo '<td>'.$spremenljivka['word_count'].'</td>';
+
+ echo '</tr>';
+
+ // Loop po vrednostih v vprasanju
+ foreach($spremenljivka['vrednosti'] as $vre_id => $vrednost){
+
+ echo '<tr>';
+
+ echo '<td>'.$grupa['naslov'].'</td>';
+ echo '<td>'.$spremenljivka['variable'].'</td>';
+ echo '<td>'.$vrednost['variable'].'</td>';
+
+ $naslov = strip_tags($vrednost['naslov']);
+ $naslov = ($vrednost['char_count'] > 50) ? substr($naslov, 0, 47).'...' : $naslov;
+ echo '<td>'.$naslov.'</td>';
+
+ echo '<td>'.$vrednost['char_count'].'</td>';
+ echo '<td>'.$vrednost['char_count_noBlank'].'</td>';
+ echo '<td>'.$vrednost['char_count_html'].'</td>';
+ echo '<td>'.$vrednost['word_count'].'</td>';
+
+ echo '</tr>';
+ }
+ }
+ }
+
+ echo '</table>';
+ }
+
+ // Preracunamo vse potrebne podatke
+ function getData(){
+
+ $data = array();
+
+ $data['sum_char_count'] = 0;
+ $data['sum_char_count_noBlank'] = 0;
+ $data['sum_char_count_html'] = 0;
+ $data['sum_word_count'] = 0;
+
+ // Loop cez vse vrednosti v vprasanjih na straneh v anketi
+ $sqlGrupa = sisplet_query("SELECT id, ank_id, naslov, vrstni_red FROM srv_grupa WHERE ank_id='$this->anketa' ORDER BY vrstni_red ASC");
+ while($rowGrupa = mysqli_fetch_array($sqlGrupa)){
+
+ $data['grupe'][$rowGrupa['id']]['naslov'] = $rowGrupa['naslov'];
+
+ $data['grupe'][$rowGrupa['id']]['sum_char_count'] = 0;
+ $data['grupe'][$rowGrupa['id']]['sum_char_count_noBlank'] = 0;
+ $data['grupe'][$rowGrupa['id']]['sum_char_count_html'] = 0;
+ $data['grupe'][$rowGrupa['id']]['sum_word_count'] = 0;
+
+ $sqlSpr = sisplet_query("SELECT id, naslov, variable, vrstni_red FROM srv_spremenljivka WHERE gru_id='".$rowGrupa['id']."' ORDER BY vrstni_red ASC");
+ while($rowSpr = mysqli_fetch_array($sqlSpr)){
+
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['variable'] = $rowSpr['variable'];
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['naslov'] = $rowSpr['naslov'];
+
+ $naslov = utf8_decode(html_entity_decode($rowSpr['naslov'], ENT_COMPAT, 'utf-8'));
+
+ // Stevilo znakov za naslov vprasanja
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['char_count'] = strlen(strip_tags($naslov));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['char_count_noBlank'] = strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['char_count_html'] = strlen($naslov);
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['word_count'] = count(explode(" ", strip_tags($naslov)));
+
+ // Stevilo vseh znakov v vprasanju (se sesteva z znaki v vrednostih)
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_char_count'] = strlen(strip_tags($naslov));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_char_count_noBlank'] = strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_char_count_html'] = strlen($naslov);
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_word_count'] = count(explode(" ", strip_tags($naslov)));
+
+ // Stevilo vseh znakov na strani (se sesteva z znaki v vrednostih)
+ $data['grupe'][$rowGrupa['id']]['sum_char_count'] += strlen(strip_tags($naslov));
+ $data['grupe'][$rowGrupa['id']]['sum_char_count_noBlank'] += strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['grupe'][$rowGrupa['id']]['sum_char_count_html'] += strlen($naslov);
+ $data['grupe'][$rowGrupa['id']]['sum_word_count'] += count(explode(" ", strip_tags($naslov)));
+
+ // Stevilo vseh znakov v anketi (se sesteva z znaki v vrednostih)
+ $data['sum_char_count'] += strlen(strip_tags($naslov));
+ $data['sum_char_count_noBlank'] += strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['sum_char_count_html'] += strlen($naslov);
+ $data['sum_word_count'] += count(explode(" ", strip_tags($naslov)));
+
+ $sqlVre = sisplet_query("SELECT id, naslov, variable, vrstni_red FROM srv_vrednost WHERE spr_id='".$rowSpr['id']."' ORDER BY vrstni_red ASC");
+ while($rowVre = mysqli_fetch_array($sqlVre)){
+
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['vrednosti'][$rowVre['id']]['variable'] = $rowVre['variable'];
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['vrednosti'][$rowVre['id']]['naslov'] = $rowVre['naslov'];
+
+ $naslov = utf8_decode(html_entity_decode($rowVre['naslov'], ENT_COMPAT, 'utf-8'));
+
+ // Stevilo znakov za vrednost
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['vrednosti'][$rowVre['id']]['char_count'] = strlen(strip_tags($naslov));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['vrednosti'][$rowVre['id']]['char_count_noBlank'] = strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['vrednosti'][$rowVre['id']]['char_count_html'] = strlen($naslov);
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['vrednosti'][$rowVre['id']]['word_count'] = count(explode(" ", strip_tags($naslov)));
+
+ // Stevilo vseh znakov v vprasanju (se sesteva z znaki v vrednostih)
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_char_count'] += strlen(strip_tags($naslov));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_char_count_noBlank'] += strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_char_count_html'] += strlen($naslov);
+ $data['grupe'][$rowGrupa['id']]['spremenljivke'][$rowSpr['id']]['sum_word_count'] += count(explode(" ", strip_tags($naslov)));
+
+ // Stevilo vseh znakov na strani (se sesteva z znaki v vrednostih)
+ $data['grupe'][$rowGrupa['id']]['sum_char_count'] += strlen(strip_tags($naslov));
+ $data['grupe'][$rowGrupa['id']]['sum_char_count_noBlank'] += strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['grupe'][$rowGrupa['id']]['sum_char_count_html'] += strlen($naslov);
+ $data['grupe'][$rowGrupa['id']]['sum_word_count'] += count(explode(" ", strip_tags($naslov)));
+
+ // Stevilo vseh znakov v anketi (se sesteva z znaki v vrednostih)
+ $data['sum_char_count'] += strlen(strip_tags($naslov));
+ $data['sum_char_count_noBlank'] += strlen(strip_tags(str_replace(" ","",$naslov)));
+ $data['sum_char_count_html'] += strlen($naslov);
+ $data['sum_word_count'] += count(explode(" ", strip_tags($naslov)));
+ }
+ }
+ }
+
+ return $data;
+ }
+
+
+ function exportCSVTable($table=1){
+ global $lang;
+
+ $data = $this->getData();
+
+ $csvArray = array();
+
+ // Izpisemo prvo tabelo (z vsotami po vprasanjih in straneh)
+ if($table == 1){
+
+ // Header row
+ $csvRow = array();
+
+ $csvRow[] = $lang['srv_text_analysis_page'];
+ $csvRow[] = $lang['srv_text_analysis_question'];
+
+ $csvRow[] = $lang['srv_text_analysis_charCount'];
+ $csvRow[] = strip_tags($lang['srv_text_analysis_charCountBlank']);
+ $csvRow[] = strip_tags($lang['srv_text_analysis_charCountHTML']);
+ $csvRow[] = $lang['srv_text_analysis_wordCount'];
+
+ $csvArray[] = $csvRow;
+
+ // Loop po straneh v anketi
+ foreach($data['grupe'] as $gru_id => $grupa){
+
+ // Loop po vprasanjih na strani
+ foreach($grupa['spremenljivke'] as $spr_id => $spremenljivka){
+
+ $csvRow = array();
+
+ $csvRow[] = $grupa['naslov'];
+ $csvRow[] = $spremenljivka['variable'];
+
+ $csvRow[] = $spremenljivka['sum_char_count'];
+ $csvRow[] = $spremenljivka['sum_char_count_noBlank'];
+ $csvRow[] = $spremenljivka['sum_char_count_html'];
+ $csvRow[] = $spremenljivka['sum_word_count'];
+
+ $csvArray[] = $csvRow;
+ }
+
+ // Vsota znakov na strani
+ $csvRow = array();
+
+ $csvRow[] = $grupa['naslov'];
+ $csvRow[] = $lang['srv_text_analysis_sum'];
+
+ $csvRow[] = $grupa['sum_char_count'];
+ $csvRow[] = $grupa['sum_char_count_noBlank'];
+ $csvRow[] = $grupa['sum_char_count_html'];
+ $csvRow[] = $grupa['sum_word_count'];
+
+ $csvArray[] = $csvRow;
+ }
+
+ // Vsota znakov v anketi
+ $csvRow = array();
+
+ $csvRow[] = ' ';
+ $csvRow[] = $lang['srv_text_analysis_sumSurvey'];
+
+ $csvRow[] = $data['sum_char_count'];
+ $csvRow[] = $data['sum_char_count_noBlank'];
+ $csvRow[] = $data['sum_char_count_html'];
+ $csvRow[] = $data['sum_word_count'];
+
+ $csvArray[] = $csvRow;
+ }
+ // Izpisemo drugo tabelo (posamezno stevilo znakov po vprasanju in variabli)
+ else{
+
+ // Header row
+ $csvRow = array();
+
+ $csvRow[] = $lang['srv_text_analysis_page'];
+ $csvRow[] = $lang['srv_text_analysis_question'];
+ $csvRow[] = $lang['srv_text_analysis_value'];
+ $csvRow[] = $lang['srv_text_analysis_text'];
+
+ $csvRow[] = $lang['srv_text_analysis_charCount'];
+ $csvRow[] = strip_tags($lang['srv_text_analysis_charCountBlank']);
+ $csvRow[] = strip_tags($lang['srv_text_analysis_charCountHTML']);
+ $csvRow[] = $lang['srv_text_analysis_wordCount'];
+
+ $csvArray[] = $csvRow;
+
+ // Loop po straneh v anketi
+ foreach($data['grupe'] as $gru_id => $grupa){
+
+ // Loop po vprasanjih na strani
+ foreach($grupa['spremenljivke'] as $spr_id => $spremenljivka){
+
+ $csvRow = array();
+
+ $csvRow[] = $grupa['naslov'];
+ $csvRow[] = $spremenljivka['variable'];
+ $csvRow[] = ' ';
+
+ $naslov = strip_tags($spremenljivka['naslov']);
+ $naslov = ($spremenljivka['char_count'] > 50) ? substr($naslov, 0, 47).'...' : $naslov;
+ $csvRow[] = $naslov;
+
+ $csvRow[] = $spremenljivka['char_count'];
+ $csvRow[] = $spremenljivka['char_count_noBlank'];
+ $csvRow[] = $spremenljivka['char_count_html'];
+ $csvRow[] = $spremenljivka['word_count'];
+
+ $csvArray[] = $csvRow;
+
+ // Loop po vrednostih v vprasanju
+ foreach($spremenljivka['vrednosti'] as $vre_id => $vrednost){
+
+ $csvRow = array();
+
+ $csvRow[] = $grupa['naslov'];
+ $csvRow[] = $spremenljivka['variable'];
+ $csvRow[] = $vrednost['variable'];
+
+ $naslov = strip_tags($vrednost['naslov']);
+ $naslov = ($vrednost['char_count'] > 50) ? substr($naslov, 0, 47).'...' : $naslov;
+ $csvRow[] = $naslov;
+
+ $csvRow[] = $vrednost['char_count'];
+ $csvRow[] = $vrednost['char_count_noBlank'];
+ $csvRow[] = $vrednost['char_count_html'];
+ $csvRow[] = $vrednost['word_count'];
+
+ $csvArray[] = $csvRow;
+ }
+ }
+ }
+ }
+
+ // Izvozimo CSV
+ $fp = fopen('php://output', 'w');
+
+ header('Content-Type: application/csv charset=windows-1250');
+ header('Content-Disposition: attachement; filename="textAnalysis_'.$this->anketa.'.csv";');
+
+ foreach ($csvArray as $row) {
+ fputcsv($fp, $row, ';', ' ');
+ }
+
+ fclose($fp);
+ }
+} \ No newline at end of file