180 lines
4.2 KiB
PHP
180 lines
4.2 KiB
PHP
![]() |
<?php
|
||
|
/** Shranjujemo nastavitve ankete. Za vsako anketo unikatno.
|
||
|
*
|
||
|
* @author veselicg
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/** Ker za statičen klas ne moremo narediti destructor funkcije,
|
||
|
* si pomagamo s lastno destruktor instanco,
|
||
|
* katera pokliče destruct funkcijo našega statičnega razreda
|
||
|
*
|
||
|
* @author veselicg
|
||
|
*
|
||
|
*/
|
||
|
class SurveySessionDestructor
|
||
|
{
|
||
|
/** pokličemo destruktor funkcijo
|
||
|
*
|
||
|
*/
|
||
|
public function __destruct()
|
||
|
{
|
||
|
SurveySession::destruct();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class SurveySession {
|
||
|
|
||
|
private static $destructorInstance;
|
||
|
private static $anketa = null;
|
||
|
private static $data = array();
|
||
|
private static $updated = false;
|
||
|
|
||
|
|
||
|
static function sessionStart($anketa = null) {
|
||
|
if (null === self::$destructorInstance)
|
||
|
self::$destructorInstance = new SurveySessionDestructor();
|
||
|
|
||
|
if ($anketa == null || (int)$anketa == 0 || !is_numeric($anketa))
|
||
|
{
|
||
|
throw new Exception('Survey ID is mandatory for SurveySession!');
|
||
|
}
|
||
|
self::$anketa = $anketa;
|
||
|
|
||
|
# preberemo vse nastavitve za to anketo
|
||
|
$sql = sisplet_query("SELECT what,value FROM srv_survey_session WHERE ank_id='".self::$anketa."'");
|
||
|
while (list($what,$value) = mysqli_fetch_row($sql))
|
||
|
{
|
||
|
self::$data[$what] = unserialize($value);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function get($what=null) {
|
||
|
if (self::$anketa == null)
|
||
|
{
|
||
|
throw new Exception('Survey ID is mandatory for SurveySession!');
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
if ($what == null)
|
||
|
{
|
||
|
return self::$data;
|
||
|
}
|
||
|
else if (isset(self::$data[$what]))
|
||
|
{
|
||
|
return self::$data[$what];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
static function set($what,$value) {
|
||
|
if (self::$anketa == null)
|
||
|
{
|
||
|
throw new Exception('Survey ID is mandatory for SurveySession!');
|
||
|
return null;
|
||
|
}
|
||
|
if ($what == null)
|
||
|
{
|
||
|
throw new Exception('Variable \'what\' is mandatory for SurveySession!');
|
||
|
return null;
|
||
|
}
|
||
|
if (!is_string($what))
|
||
|
{
|
||
|
throw new Exception('Variable \'what\' must be string!');
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
# če je vse ok setiramo vrednost
|
||
|
self::$data[$what] = $value;
|
||
|
self::$updated = true;
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
static public function remove($what)
|
||
|
{
|
||
|
if (self::$anketa == null)
|
||
|
{
|
||
|
throw new Exception('Survey ID is mandatory for SurveySession!');
|
||
|
return null;
|
||
|
}
|
||
|
if ($what == null)
|
||
|
{
|
||
|
throw new Exception('Variable \'what\' is mandatory for remove()!');
|
||
|
return null;
|
||
|
}
|
||
|
if (!is_string($what))
|
||
|
{
|
||
|
throw new Exception('Variable \'what\' must be string!');
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
if (isset(self::$data[$what])) {
|
||
|
unset (self::$data[$what]);
|
||
|
|
||
|
#pobrišemo še iz baze
|
||
|
$deleteString = "DELETE FROM srv_survey_session WHERE ank_id = '".self::$anketa."' AND what='$what'";
|
||
|
$query = sisplet_query($deleteString);
|
||
|
self::$updated = true;
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/** ob ukinitvi klassa shranimo vse vrednosti
|
||
|
*
|
||
|
*/
|
||
|
static public function destruct()
|
||
|
{
|
||
|
if (self::$anketa == null)
|
||
|
{
|
||
|
throw new Exception('Survey ID is mandatory for SurveySession!');
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
// v destructu več nimamo connect_db resoursa
|
||
|
global $connect_db;
|
||
|
if ($connect_db == null) {
|
||
|
// poizkusimo še 1x
|
||
|
global $mysql_server, $mysql_username, $mysql_password, $mysql_database_name;
|
||
|
if (!$connect_db = mysqli_connect($mysql_server, $mysql_username, $mysql_password, $mysql_database_name)) {
|
||
|
die ('Please try again later [ERR: DB])');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# pripravimo string za shranjevanje
|
||
|
if (count(self::$data) > 0 && self::$updated) {
|
||
|
$insertStringArray = array();
|
||
|
foreach (self::$data AS $what => $value) {
|
||
|
$insertStringArray[] = "('".self::$anketa."', '".$what."', '".serialize($value)."')";
|
||
|
}
|
||
|
$insertString = "INSERT INTO srv_survey_session (ank_id,what,value) VALUES ".implode(', ',$insertStringArray);
|
||
|
$insertString .=" ON DUPLICATE KEY UPDATE value = VALUES(value)";
|
||
|
$query = sisplet_query($insertString, $connect_db);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function append($where,$what,$value)
|
||
|
{
|
||
|
if (self::$anketa == null)
|
||
|
{
|
||
|
throw new Exception('Survey ID is mandatory for SurveySession!');
|
||
|
return null;
|
||
|
}
|
||
|
if ($what == null)
|
||
|
{
|
||
|
throw new Exception('Variable \'what\' is mandatory for remove()!');
|
||
|
return null;
|
||
|
}
|
||
|
if (!is_string($what))
|
||
|
{
|
||
|
throw new Exception('Variable \'what\' must be string!');
|
||
|
return null;
|
||
|
}
|
||
|
self::$updated = true;
|
||
|
self::$data[$where][$what] = $value;
|
||
|
}
|
||
|
}
|