summaryrefslogtreecommitdiffstats
path: root/admin/survey/classes/objects/obj.SpremenljivkaSkala.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/classes/objects/obj.SpremenljivkaSkala.php')
-rw-r--r--admin/survey/classes/objects/obj.SpremenljivkaSkala.php195
1 files changed, 195 insertions, 0 deletions
diff --git a/admin/survey/classes/objects/obj.SpremenljivkaSkala.php b/admin/survey/classes/objects/obj.SpremenljivkaSkala.php
new file mode 100644
index 0000000..da020ad
--- /dev/null
+++ b/admin/survey/classes/objects/obj.SpremenljivkaSkala.php
@@ -0,0 +1,195 @@
+<?php
+/*
+ *
+ * skala - 0 Ordinalna
+ * skala - 1 Nominalna
+ * skala - 2 Razmernostna
+ *
+ * Radio grupe so privzeto ordinalne, vendar jih v primeru kadar imamo samo dve kategoriji
+ * in ni drugače uporabniško določeno označimo kot nominalne
+ *
+ *
+ * Spremenljivka je nominalna: Kategorij odgovorov ni mogoče primerjati niti ni mogoče računati povprečij. Npr. spol, barva, regija, država.
+ * Spremenlijvka je ordinialna: Kategorije odgovorov je mogoče primerjati; računamo lahko tudi povprečje. Npr. lestvice na skalah (strinjanje, zadovoljstvo,…)
+ *
+ */
+class SpremenljivkaSkala {
+
+ // set a constant
+ const ORD = 0;
+ const NOM = 1;
+ const RAZ = 2;
+
+ private $spr_id; #id spremenljivke
+ private $spr_data; #podatkispremenljivke (cache)
+ private $skala = -1; #skala spremenljivke
+
+ /** SpremenljivkaSkala
+ *
+ * @param Intiger $spr_id
+ */
+ function __construct($spr_id) {
+ $this->spr_id = (int)$spr_id;
+ $this->spr_data = Cache::srv_spremenljivka($this->spr_id);
+
+ #polovimo nastavitev iz baze
+ $tmpSkala = (int)$this->spr_data['skala'];
+ $this->skala = $this->getSpremenljivkaRealSkala($tmpSkala);
+ }
+
+
+ /** Vrene pravo skalo spremenljivke, glede na št. kategorij, ipd..., če ni uporabniško določena
+ * Lahko vrne tudi NULL za nagovor ali za tipe nove tipe kateri niso dodani
+ *
+ * @param (int) $skala
+ *
+ * @return SpremenljivkaSkala::ORD = 0
+ * @return SpremenljivkaSkala::NOM = 1
+ * @return SpremenljivkaSkala::RAZ = 2
+ * @return NULL
+ */
+ function getSpremenljivkaRealSkala($skala) {
+ # če je skala večja ali enaka 0 je uporabniško določena
+ if ((int)$skala >= 0) {
+ return $skala;
+ } else {
+ # če ne pa je vse odvisno od vrste spremenljivke in drugih zadev (in od vasjinega razpoloženja)
+ switch ((int)$this->spr_data['tip']) {
+ #radio
+ case 1:
+ #dropdown
+ case 3:
+ $sql = sisplet_query("SELECT count(*) FROM srv_vrednost WHERE spr_id = '$this->spr_id'");
+ list($cnt) = mysqli_fetch_row($sql);
+ # če imamo samo dve kategoriji jo razglasimo za nominalno
+ if ((int)$cnt == 2) {
+ return SpremenljivkaSkala::NOM;
+ } else {
+ return SpremenljivkaSkala::ORD;
+ }
+ break;
+ #checkbox
+ case 2:
+ return SpremenljivkaSkala::NOM;
+ break;
+ #tekst old
+ case 4:
+ return SpremenljivkaSkala::NOM;
+ break;
+ #6 multigrid
+ case 6:
+ $sql = sisplet_query("SELECT count(*) FROM srv_grid WHERE spr_id = '$this->spr_id'");
+ list($cnt) = mysqli_fetch_row($sql);
+ # če imamo samo dve kategoriji jo razglasimo za nominalno
+ if ((int)$cnt == 2) {
+ return SpremenljivkaSkala::NOM;
+ } else {
+ return SpremenljivkaSkala::ORD;
+ }
+ break;
+ #number
+ case 7:
+ return SpremenljivkaSkala::RAZ;
+ break;
+ #datum
+ case 8:
+ return SpremenljivkaSkala::ORD;
+ break;
+ #multi checkbox
+ case 16 : // mcheckbox
+ return SpremenljivkaSkala::NOM;
+ break;
+ #razvrščanje
+ case 17:
+ return SpremenljivkaSkala::ORD;
+ break;
+ #vsota
+ case 18:
+ return SpremenljivkaSkala::RAZ;
+ break;
+ #multi tekst
+ case 19:
+ return SpremenljivkaSkala::NOM;
+ break;
+ #multi num
+ case 20:
+ return SpremenljivkaSkala::RAZ;
+ break;
+ #tekst *
+ case 21:
+ return SpremenljivkaSkala::NOM;
+ break;
+ #kalkulacija
+ case 22:
+ return SpremenljivkaSkala::NOM;
+ break;
+ }
+ }
+ return NULL;
+ }
+
+ /** vrne skalo spremenljivke kot numerično vrednost
+ *
+ * @return (Intiger) $this->skala
+ */
+ function getSkala() {
+ if ((int)$skala >= 0) {
+ return $this->skala;
+ }
+ return NULL;
+ }
+
+ /** vrne skalo spremenljivke kot tekstovno vrednost
+ *
+ * @return (text) $this->skala
+ */
+ function getSkalaAsText() {
+ global $lang;
+ switch ($this->skala) {
+ case SpremenljivkaSkala::ORD:
+ return $lang['srv_analiza_oblika_ordi'];
+ break;
+ case SpremenljivkaSkala::NOM:
+ return $lang['srv_analiza_oblika_nomi'];
+ break;
+ case SpremenljivkaSkala::RAZ:
+ return $lang['srv_analiza_oblika_razm'];
+ break;
+ }
+ return NULL;
+ }
+
+ /** Ali lahko za tip spremenljivke spremenimo skalo
+ *
+ * skalo lahko spremninjamo pri
+ * -radio
+ * -dropdown
+ * -multi radio
+ *
+ * @return boolean
+ */
+ function canChangeSkala() {
+ switch ((int)$this->spr_data['tip']) {
+ case 1:
+ case 3:
+ case 6:
+ return true;
+ break;
+ }
+ return false;
+ }
+
+ /** Ali je trenutna skala enaka pogoju
+ *
+ * @param const(ORD|NOM|RAZ) $what
+ * @return boolean
+ */
+ function is($what) {
+ return ($this->getSkala() == $what) ? TRUE : FALSE;
+ }
+
+ function __toString() {
+ return (String)$this->getSkala();
+ }
+}
+