ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
ilObjSurveyQuestionPool Class Reference
+ Inheritance diagram for ilObjSurveyQuestionPool:
+ Collaboration diagram for ilObjSurveyQuestionPool:

Public Member Functions

 ilObjSurveyQuestionPool ($a_id=0, $a_call_by_reference=true)
 Constructor public. More...
 
 create ($a_upload=false)
 create question pool object More...
 
 update ()
 update object data More...
 
 read ($a_force_db=false)
 read object data from db into object More...
 
 cloneObject ($a_target_id, $a_copy_id=0)
 Creates a 1:1 copy of the object and places the copy in a given repository. More...
 
createQuestion ($question_type, $question_id=-1)
 
 copyQuestion ($question_id, $questionpool_to)
 Copies a question into another question pool. More...
 
 loadFromDb ()
 Loads a ilObjQuestionpool object from a database. More...
 
 saveToDb ()
 Saves a ilObjSurveyQuestionPool object to a database. More...
 
 delete ()
 delete object and all related data More...
 
 deleteAllData ()
 
 notify ($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
 notifys an object about an event occured Based on the event happend, each object may decide how it reacts. More...
 
 getTitle ()
 get title of survey question pool object More...
 
 setTitle ($a_title)
 set title of survey question pool object More...
 
 removeQuestion ($question_id)
 Removes a question from the question pool. More...
 
 getQuestiontype ($question_id)
 Returns the question type of a question with a given id. More...
 
 isInUse ($question_id)
 Checks if a question is in use by a survey. More...
 
 paste ($question_id)
 Pastes a question in the question pool. More...
 
getQuestionsInfo ($question_array)
 Retrieves the datase entries for questions from a given array. More...
 
 duplicateQuestion ($question_id, $obj_id="")
 Duplicates a question for a questionpool. More...
 
 getQuestionsData ($arrFilter)
 Calculates the data for the output of the questionpool. More...
 
 createExportDirectory ()
 creates data directory for export files (data_dir/spl_data/spl_<id>/export, depending on data directory that is set in ILIAS setup/ini) More...
 
 getExportDirectory ()
 get export directory of survey More...
 
 getExportFiles ($dir)
 get export files More...
 
 createImportDirectory ()
 creates data directory for import files (data_dir/spl_data/spl_<id>/import, depending on data directory that is set in ILIAS setup/ini) More...
 
 getImportDirectory ()
 get import directory of survey More...
 
 toXML ($questions)
 export questions to xml More...
 
getQuestions ()
 
 importObject ($source, $spl_exists=FALSE)
 Imports survey questions into ILIAS. More...
 
 setOnline ($a_online_status)
 Sets the questionpool online status. More...
 
 getOnline ()
 
 _lookupOnline ($a_obj_id)
 
 _isWriteable ($object_id, $user_id)
 Returns true, if the question pool is writeable by a given user. More...
 
_getQuestiontypes ()
 Creates a list of all available question types. More...
 
 _getAvailableQuestionpools ($use_object_id=FALSE, $could_be_offline=FALSE, $showPath=FALSE, $permission="read")
 Returns the available question pools for the active user. More...
 
 isPluginActive ($a_pname)
 Checks whether or not a question plugin with a given name is active. More...
 
 getQuestionInfos ($question_ids)
 Returns title, description and type for an array of question id's. More...
 
 purgeQuestions ()
 
 copyToClipboard ($question_id)
 Copies a question to the clipboard. More...
 
 moveToClipboard ($question_id)
 Moves a question to the clipboard. More...
 
 pasteFromClipboard ()
 Copies/Moves a question from the clipboard. More...
 
 setObligatoryStates ($obligatory_questions)
 Sets the obligatory states for questions in a survey from the questions form. More...
 
- Public Member Functions inherited from ilObject
 ilObject ($a_id=0, $a_reference=true)
 Constructor public. More...
 
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not) More...
 
 read ($a_force_db=false)
 read object data from db into object More...
 
 getId ()
 get object id public More...
 
 setId ($a_id)
 set object id public More...
 
 setRefId ($a_id)
 set reference id public More...
 
 getRefId ()
 get reference id public More...
 
 getType ()
 get object type public More...
 
 setType ($a_type)
 set object type public More...
 
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions More...
 
 getTitle ()
 get object title public More...
 
 getUntranslatedTitle ()
 get untranslated object title public More...
 
 setTitle ($a_title)
 set object title More...
 
 getDescription ()
 get object description More...
 
 setDescription ($a_desc)
 set object description More...
 
 getLongDescription ()
 get object long description (stored in object_description) More...
 
 getImportId ()
 get import id More...
 
 setImportId ($a_import_id)
 set import id More...
 
 getOwner ()
 get object owner More...
 
 getOwnerName ()
 
 _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id More...
 
 setOwner ($a_owner)
 set object owner More...
 
 getCreateDate ()
 get create date public More...
 
 getLastUpdateDate ()
 get last update date public More...
 
 getDiskUsage ()
 Gets the disk usage of the object in bytes. More...
 
 setObjDataRecord ($a_record)
 set object_data record (note: this method should only be called from the ilObjectFactory class) More...
 
 create ()
 create More...
 
 update ()
 update object in db More...
 
 MDUpdateListener ($a_element)
 Meta data update listener. More...
 
 createMetaData ()
 create meta data entry More...
 
 updateMetaData ()
 update meta data entry More...
 
 deleteMetaData ()
 delete meta data entry More...
 
 updateOwner ()
 update owner of object in db More...
 
 _getIdForImportId ($a_import_id)
 get current object id for import id (static) More...
 
 _lookupOwner ($a_id)
 lookup object owner More...
 
 _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update More...
 
 _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects. More...
 
 _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree More...
 
 _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
 _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
 _writeTitle ($a_obj_id, $a_title)
 write title to db (static) More...
 
 _writeDescription ($a_obj_id, $a_desc)
 write description to db (static) More...
 
 _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static) More...
 
 _isInTrash ($a_ref_id)
 checks wether object is in trash More...
 
 _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash More...
 
 _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type More...
 
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!? More...
 
 setPermissions ($a_parent_ref)
 set permissions of object More...
 
 createReference ()
 creates reference for object More...
 
 countReferences ()
 count references of object More...
 
 delete ()
 delete object or referenced object (in the case of a referenced object, object data is only deleted if last reference is deleted) This function removes an object entirely from system!! More...
 
 initDefaultRoles ()
 init default roles settings Purpose of this function is to create a local role folder and local roles, that are needed depending on the object type If you want to setup default local roles you MUST overwrite this method in derived object classes (see ilObjForum for an example) public More...
 
 createRoleFolder ()
 creates a local role folder More...
 
 applyDidacticTemplate ($a_tpl_id)
 Apply template. More...
 
 notify ($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
 notifys an object about an event occured Based on the event passed, each object may decide how it reacts. More...
 
 setRegisterMode ($a_bool)
 
 isUserRegistered ($a_user_id=0)
 
 requireRegistration ()
 
 getXMLZip ()
 
 getHTMLDirectory ()
 
 cloneObject ($a_target_id, $a_copy_id=0, $a_omit_tree=false)
 Clone object permissions, put in tree ... More...
 
 appendCopyInfo ($a_target_id, $a_copy_id)
 Prepend Copy info if object with same name exists in that container. More...
 
 cloneDependencies ($a_target_id, $a_copy_id)
 Clone object dependencies. More...
 
 cloneMetaData ($target_obj)
 Copy meta data. More...
 
 _lookupCreationDate ($a_id)
 Lookup creation date. More...
 

Static Public Member Functions

static _setOnline ($a_obj_id, $a_online_status)
 
static & _getQuestionTypeTranslations ()
 
- Static Public Member Functions inherited from ilObject
static _lookupObjIdByImportId ($a_import_id)
 
static _getAllReferences ($a_id)
 get all reference ids of object More...
 
static _lookupTitle ($a_id)
 lookup object title More...
 
static _getIdsForTitle ($title, $type='', $partialmatch=false)
 
static _lookupDescription ($a_id)
 lookup object description More...
 
static _lookupObjId ($a_id)
 
static setDeletedDates ($a_ref_ids)
 Set deleted date type $ilDB. More...
 
static _lookupType ($a_id, $a_reference=false)
 lookup object type More...
 
static _lookupObjectId ($a_ref_id)
 lookup object id More...
 
static _exists ($a_id, $a_reference=false, $a_type=null)
 checks if an object exists in object_data More...
 
static _getObjectsByType ($a_obj_type="", $a_owner="")
 Get objects by type. More...
 
static _prepareCloneSelection ($a_ref_ids, $new_type, $show_path=true)
 Prepare copy wizard object selection. More...
 
static _getIcon ($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
 Get icon for repository item. More...
 
static collectDeletionDependencies (&$deps, $a_ref_id, $a_obj_id, $a_type, $a_depth=0)
 Collect deletion dependencies. More...
 
static getDeletionDependencies ($a_obj_id)
 Get deletion dependencies. More...
 
static getLongDescriptions (array $a_obj_ids)
 Get long description data. More...
 
static getAllOwnedRepositoryObjects ($a_user_id)
 Get all ids of objects user owns. More...
 
static hasAutoRating ($a_type, $a_ref_id)
 Check if auto rating is active for parent group/course. More...
 

Data Fields

 $online
 
- Data Fields inherited from ilObject
const TITLE_LENGTH = 255
 max length of object title More...
 
const DESC_LENGTH = 128
 
 $ilias
 
 $lng
 
 $id
 
 $ref_id
 
 $type
 
 $title
 
 $untranslatedTitle
 
 $desc
 
 $long_desc
 
 $owner
 
 $create_date
 
 $last_update
 
 $import_id
 
 $register = false
 
 $referenced
 
 $objectList
 
 $max_title
 
 $max_desc
 
 $add_dots
 
 $obj_data_record
 object_data record More...
 

Detailed Description

Definition at line 36 of file class.ilObjSurveyQuestionPool.php.

Member Function Documentation

◆ _getAvailableQuestionpools()

ilObjSurveyQuestionPool::_getAvailableQuestionpools (   $use_object_id = FALSE,
  $could_be_offline = FALSE,
  $showPath = FALSE,
  $permission = "read" 
)

Returns the available question pools for the active user.

Returns
array The available question pools public

Definition at line 987 of file class.ilObjSurveyQuestionPool.php.

References $ilUser, ilObject\$ref_id, $result, $row, ilUtil\_getObjectsByOperations(), ilObject\_lookupObjectId(), and ilObject\_prepareCloneSelection().

Referenced by ilSurveyQuestionbrowserTableGUI\__construct(), ilObjSurvey\getAvailableQuestionpools(), and ilObjSurvey\getQuestionpoolTitles().

988  {
989  global $ilUser;
990  global $ilDB;
991 
992  $result_array = array();
993  $qpls = ilUtil::_getObjectsByOperations("spl", $permission, $ilUser->getId(), -1);
994  $titles = ilObject::_prepareCloneSelection($qpls, "spl", $showPath);
995  $allqpls = array();
996  $result = $ilDB->query("SELECT obj_fi, isonline FROM svy_qpl");
997  while ($row = $ilDB->fetchAssoc($result))
998  {
999  $allqpls[$row['obj_fi']] = $row['isonline'];
1000  }
1001  foreach ($qpls as $ref_id)
1002  {
1003  $obj_id = ilObject::_lookupObjectId($ref_id);
1004  if ($could_be_offline || $allqpls[$obj_id] == 1)
1005  {
1006  if ($use_object_id)
1007  {
1008  $result_array[$obj_id] = $titles[$ref_id];
1009  }
1010  else
1011  {
1012  $result_array[$ref_id] = $titles[$ref_id];
1013  }
1014  }
1015  }
1016  return $result_array;
1017  }
static _prepareCloneSelection($a_ref_ids, $new_type, $show_path=true)
Prepare copy wizard object selection.
$result
static _getObjectsByOperations($a_obj_type, $a_operation, $a_usr_id=0, $limit=0)
Get all objects of a specific type and check access This function is not recursive, instead it parses the serialized rbac_pa entries.
static _lookupObjectId($a_ref_id)
lookup object id
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getQuestiontypes()

& ilObjSurveyQuestionPool::_getQuestiontypes ( )

Creates a list of all available question types.

Returns
array An array containing the available questiontypes public

Definition at line 915 of file class.ilObjSurveyQuestionPool.php.

References ilObject\$lng, $row, ilPlugin\getPluginObject(), and IL_COMP_MODULE.

Referenced by ilSurveyPageGUI\addQuestion(), ilSurveyPageGUI\addQuestionToolbarForm(), ilSurveyPageGUI\getPageNodes(), ilSurveyQuestionTableGUI\importData(), and ilSurveyEditorGUI\questionsObject().

916  {
917  global $ilDB;
918  global $lng;
919 
920  $lng->loadLanguageModule("survey");
921  $types = array();
922  $query_result = $ilDB->query("SELECT * FROM svy_qtype ORDER BY type_tag");
923  while ($row = $ilDB->fetchAssoc($query_result))
924  {
925  //array_push($questiontypes, $row["type_tag"]);
926  if ($row["plugin"] == 0)
927  {
928  $types[$lng->txt($row["type_tag"])] = $row;
929  }
930  else
931  {
932  global $ilPluginAdmin;
933  $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, "SurveyQuestionPool", "svyq");
934  foreach ($pl_names as $pl_name)
935  {
936  $pl = ilPlugin::getPluginObject(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $pl_name);
937  if (strcmp($pl->getQuestionType(), $row["type_tag"]) == 0)
938  {
939  $types[$pl->getQuestionTypeTranslation()] = $row;
940  }
941  }
942  }
943  }
944  ksort($types);
945  return $types;
946  }
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get plugin object.
const IL_COMP_MODULE
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getQuestionTypeTranslations()

static& ilObjSurveyQuestionPool::_getQuestionTypeTranslations ( )
static

Definition at line 948 of file class.ilObjSurveyQuestionPool.php.

References $ilLog, ilObject\$lng, $result, $row, ilPlugin\getPluginObject(), and IL_COMP_MODULE.

Referenced by ilObjSurvey\getQuestionsTable().

949  {
950  global $ilDB;
951  global $lng;
952  global $ilLog;
953  global $ilPluginAdmin;
954 
955  $lng->loadLanguageModule("survey");
956  $result = $ilDB->query("SELECT * FROM svy_qtype");
957  $types = array();
958  while ($row = $ilDB->fetchAssoc($result))
959  {
960  if ($row["plugin"] == 0)
961  {
962  $types[$row['type_tag']] = $lng->txt($row["type_tag"]);
963  }
964  else
965  {
966  $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, "SurveyQuestionPool", "svyq");
967  foreach ($pl_names as $pl_name)
968  {
969  $pl = ilPlugin::getPluginObject(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $pl_name);
970  if (strcmp($pl->getQuestionType(), $row["type_tag"]) == 0)
971  {
972  $types[$row['type_tag']] = $pl->getQuestionTypeTranslation();
973  }
974  }
975  }
976  }
977  ksort($types);
978  return $types;
979  }
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get plugin object.
$result
const IL_COMP_MODULE
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _isWriteable()

ilObjSurveyQuestionPool::_isWriteable (   $object_id,
  $user_id 
)

Returns true, if the question pool is writeable by a given user.

Parameters
integer$object_idThe object id of the question pool
integer$user_idThe database id of the user public

Definition at line 892 of file class.ilObjSurveyQuestionPool.php.

References $result, ilObject\_getAllReferences(), and ilObject\_hasUntrashedReference().

Referenced by SurveyQuestion\_isWriteable().

893  {
894  global $rbacsystem;
895  global $ilDB;
896 
897  $refs = ilObject::_getAllReferences($object_id);
898  $result = false;
899  foreach ($refs as $ref)
900  {
901  if ($rbacsystem->checkAccess("write", $ref) && (ilObject::_hasUntrashedReference($object_id)))
902  {
903  $result = true;
904  }
905  }
906  return $result;
907  }
$result
static _getAllReferences($a_id)
get all reference ids of object
_hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _lookupOnline()

ilObjSurveyQuestionPool::_lookupOnline (   $a_obj_id)

Definition at line 869 of file class.ilObjSurveyQuestionPool.php.

References $result, and $row.

Referenced by ilObjSurveyQuestionPoolListGUI\getProperties().

870  {
871  global $ilDB;
872 
873  $result = $ilDB->queryF("SELECT isonline FROM svy_qpl WHERE obj_fi = %s",
874  array('integer'),
875  array($a_obj_id)
876  );
877  if ($result->numRows() == 1)
878  {
879  $row = $ilDB->fetchAssoc($result);
880  return $row["isonline"];
881  }
882  return 0;
883  }
$result
+ Here is the caller graph for this function:

◆ _setOnline()

static ilObjSurveyQuestionPool::_setOnline (   $a_obj_id,
  $a_online_status 
)
static

Definition at line 824 of file class.ilObjSurveyQuestionPool.php.

825  {
826  global $ilDB;
827 
828  $status = "0";
829  switch ($a_online_status)
830  {
831  case 0:
832  case 1:
833  $status = "$a_online_status";
834  break;
835  }
836  $affectedRows = $ilDB->manipulateF("UPDATE svy_qpl SET isonline = %s WHERE obj_fi = %s",
837  array('text','integer'),
838  array($status, $a_obj_id)
839  );
840  }

◆ cloneObject()

ilObjSurveyQuestionPool::cloneObject (   $a_target_id,
  $a_copy_id = 0 
)

Creates a 1:1 copy of the object and places the copy in a given repository.

public

Definition at line 104 of file class.ilObjSurveyQuestionPool.php.

References $ilLog, ilObject\getId(), getOnline(), getQuestions(), and ilObject\getType().

105  {
106  global $ilLog;
107  $newObj = parent::cloneObject($a_target_id,$a_copy_id);
108  $newObj->setOnline($this->getOnline());
109  $newObj->saveToDb();
110  // clone the questions in the question pool
111  $questions =& $this->getQuestions();
112  foreach ($questions as $question_id)
113  {
114  $newObj->copyQuestion($question_id, $newObj->getId());
115  }
116 
117  // clone meta data
118  include_once "./Services/MetaData/classes/class.ilMD.php";
119  $md = new ilMD($this->getId(),0,$this->getType());
120  $new_md =& $md->cloneMD($newObj->getId(),0,$newObj->getType());
121 
122  // update the metadata with the new title of the question pool
123  $newObj->updateMetaData();
124  return $newObj;
125  }
getId()
get object id public
getType()
get object type public
+ Here is the call graph for this function:

◆ copyQuestion()

ilObjSurveyQuestionPool::copyQuestion (   $question_id,
  $questionpool_to 
)

Copies a question into another question pool.

Parameters
integer$question_idDatabase id of the question
integer$questionpool_toDatabase id of the target questionpool public

Definition at line 153 of file class.ilObjSurveyQuestionPool.php.

References createQuestion(), duplicateQuestion(), and ilObject\getId().

Referenced by pasteFromClipboard().

154  {
155  $question_gui =& $this->createQuestion("", $question_id);
156  if ($question_gui->object->getObjId() == $questionpool_to)
157  {
158  // the question is copied into the same question pool
159  $this->duplicateQuestion($question_id);
160  }
161  else
162  {
163  // the question is copied into another question pool
164  $newtitle = $question_gui->object->getTitle();
165  if ($question_gui->object->questionTitleExists($question_gui->object->getTitle(), $questionpool_to))
166  {
167  $counter = 2;
168  while ($question_gui->object->questionTitleExists($question_gui->object->getTitle() . " ($counter)", $questionpool_to))
169  {
170  $counter++;
171  }
172  $newtitle = $question_gui->object->getTitle() . " ($counter)";
173  }
174  $question_gui->object->copyObject($this->getId(), $newtitle);
175  }
176  }
duplicateQuestion($question_id, $obj_id="")
Duplicates a question for a questionpool.
getId()
get object id public
& createQuestion($question_type, $question_id=-1)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyToClipboard()

ilObjSurveyQuestionPool::copyToClipboard (   $question_id)

Copies a question to the clipboard.

Parameters
integer$question_idObject id of the question

Definition at line 1091 of file class.ilObjSurveyQuestionPool.php.

References $_SESSION.

1092  {
1093  if (!array_key_exists("spl_clipboard", $_SESSION))
1094  {
1095  $_SESSION["spl_clipboard"] = array();
1096  }
1097  $_SESSION["spl_clipboard"][$question_id] = array("question_id" => $question_id, "action" => "copy");
1098  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']

◆ create()

ilObjSurveyQuestionPool::create (   $a_upload = false)

create question pool object

Definition at line 60 of file class.ilObjSurveyQuestionPool.php.

References ilObject\createMetaData().

61  {
62  parent::create();
63  if(!$a_upload)
64  {
65  $this->createMetaData();
66  }
67  }
createMetaData()
create meta data entry
+ Here is the call graph for this function:

◆ createExportDirectory()

ilObjSurveyQuestionPool::createExportDirectory ( )

creates data directory for export files (data_dir/spl_data/spl_<id>/export, depending on data directory that is set in ILIAS setup/ini)

Definition at line 564 of file class.ilObjSurveyQuestionPool.php.

References ilUtil\getDataDir(), ilObject\getId(), and ilUtil\makeDir().

565  {
566  include_once "./Services/Utilities/classes/class.ilUtil.php";
567  $spl_data_dir = ilUtil::getDataDir()."/spl_data";
568  ilUtil::makeDir($spl_data_dir);
569  if(!is_writable($spl_data_dir))
570  {
571  $this->ilias->raiseError("Survey Questionpool Data Directory (".$spl_data_dir
572  .") not writeable.",$this->ilias->error_obj->FATAL);
573  }
574 
575  // create learning module directory (data_dir/lm_data/lm_<id>)
576  $spl_dir = $spl_data_dir."/spl_".$this->getId();
577  ilUtil::makeDir($spl_dir);
578  if(!@is_dir($spl_dir))
579  {
580  $this->ilias->raiseError("Creation of Survey Questionpool Directory failed.",$this->ilias->error_obj->FATAL);
581  }
582  // create Export subdirectory (data_dir/lm_data/lm_<id>/Export)
583  $export_dir = $spl_dir."/export";
584  ilUtil::makeDir($export_dir);
585  if(!@is_dir($export_dir))
586  {
587  $this->ilias->raiseError("Creation of Export Directory failed.",$this->ilias->error_obj->FATAL);
588  }
589  }
getId()
get object id public
redirection script todo: (a better solution should control the processing via a xml file) ...
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:

◆ createImportDirectory()

ilObjSurveyQuestionPool::createImportDirectory ( )

creates data directory for import files (data_dir/spl_data/spl_<id>/import, depending on data directory that is set in ILIAS setup/ini)

Definition at line 644 of file class.ilObjSurveyQuestionPool.php.

References ilUtil\getDataDir(), ilObject\getId(), and ilUtil\makeDir().

645  {
646  include_once "./Services/Utilities/classes/class.ilUtil.php";
647  $spl_data_dir = ilUtil::getDataDir()."/spl_data";
648  ilUtil::makeDir($spl_data_dir);
649 
650  if(!is_writable($spl_data_dir))
651  {
652  $this->ilias->raiseError("Survey Questionpool Data Directory (".$spl_data_dir
653  .") not writeable.",$this->ilias->error_obj->FATAL);
654  }
655 
656  // create test directory (data_dir/spl_data/spl_<id>)
657  $spl_dir = $spl_data_dir."/spl_".$this->getId();
658  ilUtil::makeDir($spl_dir);
659  if(!@is_dir($spl_dir))
660  {
661  $this->ilias->raiseError("Creation of Survey Questionpool Directory failed.",$this->ilias->error_obj->FATAL);
662  }
663 
664  // create import subdirectory (data_dir/spl_data/spl_<id>/import)
665  $import_dir = $spl_dir."/import";
666  ilUtil::makeDir($import_dir);
667  if(!@is_dir($import_dir))
668  {
669  $this->ilias->raiseError("Creation of Import Directory failed.",$this->ilias->error_obj->FATAL);
670  }
671  }
getId()
get object id public
redirection script todo: (a better solution should control the processing via a xml file) ...
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:

◆ createQuestion()

& ilObjSurveyQuestionPool::createQuestion (   $question_type,
  $question_id = -1 
)

Definition at line 127 of file class.ilObjSurveyQuestionPool.php.

References getQuestiontype().

Referenced by copyQuestion().

128  {
129  if ((!$question_type) and ($question_id > 0))
130  {
131  $question_type = $this->getQuestiontype($question_id);
132  }
133 
134  include_once "./Modules/SurveyQuestionPool/classes/class.".$question_type."GUI.php";
135  $question_type_gui = $question_type . "GUI";
136  $question =& new $question_type_gui();
137 
138  if ($question_id > 0)
139  {
140  $question->object->loadFromDb($question_id);
141  }
142 
143  return $question;
144  }
getQuestiontype($question_id)
Returns the question type of a question with a given id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ delete()

ilObjSurveyQuestionPool::delete ( )

delete object and all related data

public

Returns
boolean true if all object data were removed; false if only a references were removed

Definition at line 234 of file class.ilObjSurveyQuestionPool.php.

References deleteAllData(), and ilObject\deleteMetaData().

235  {
236  $remove = parent::delete();
237  // always call parent delete function first!!
238  if (!$remove)
239  {
240  return false;
241  }
242 
243  // delete all related questions
244  $this->deleteAllData();
245 
246  // delete meta data
247  $this->deleteMetaData();
248 
249  return true;
250  }
deleteMetaData()
delete meta data entry
+ Here is the call graph for this function:

◆ deleteAllData()

ilObjSurveyQuestionPool::deleteAllData ( )

Definition at line 252 of file class.ilObjSurveyQuestionPool.php.

References $result, $row, ilUtil\delDir(), ilUtil\getDataDir(), ilObject\getId(), and removeQuestion().

Referenced by delete().

253  {
254  global $ilDB;
255  $result = $ilDB->queryF("SELECT question_id FROM svy_question WHERE obj_fi = %s AND original_id IS NULL",
256  array('integer'),
257  array($this->getId())
258  );
259  $found_questions = array();
260  while ($row = $ilDB->fetchAssoc($result))
261  {
262  $this->removeQuestion($row["question_id"]);
263  }
264 
265  // delete export files
266  include_once "./Services/Utilities/classes/class.ilUtil.php";
267  $spl_data_dir = ilUtil::getDataDir()."/spl_data";
268  $directory = $spl_data_dir."/spl_".$this->getId();
269  if (is_dir($directory))
270  {
271  include_once "./Services/Utilities/classes/class.ilUtil.php";
272  ilUtil::delDir($directory);
273  }
274  }
$result
getId()
get object id public
removeQuestion($question_id)
Removes a question from the question pool.
static getDataDir()
get data directory (outside webspace)
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ duplicateQuestion()

ilObjSurveyQuestionPool::duplicateQuestion (   $question_id,
  $obj_id = "" 
)

Duplicates a question for a questionpool.

Parameters
integer$question_idThe database id of the question public

Definition at line 482 of file class.ilObjSurveyQuestionPool.php.

References $ilUser, and SurveyQuestion\_instanciateQuestion().

Referenced by copyQuestion(), and paste().

483  {
484  global $ilUser;
485  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
486  $question = SurveyQuestion::_instanciateQuestion($question_id);
487  $suffix = "";
488  $counter = 1;
489  while ($question->questionTitleExists($question->getTitle().$suffix, $obj_id))
490  {
491  $counter++;
492  if ($counter > 1) $suffix = " ($counter)";
493  }
494  if ($obj_id)
495  {
496  $question->setObjId($obj_id);
497  }
498  $question->duplicate(false, $question->getTitle() . $suffix, $ilUser->fullname, $ilUser->id);
499  }
global $ilUser
Definition: imgupload.php:15
& _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExportDirectory()

ilObjSurveyQuestionPool::getExportDirectory ( )

get export directory of survey

Definition at line 594 of file class.ilObjSurveyQuestionPool.php.

References ilUtil\getDataDir().

595  {
596  include_once "./Services/Utilities/classes/class.ilUtil.php";
597  $export_dir = ilUtil::getDataDir()."/spl_data"."/spl_".$this->getId()."/export";
598  return $export_dir;
599  }
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:

◆ getExportFiles()

ilObjSurveyQuestionPool::getExportFiles (   $dir)

get export files

Definition at line 604 of file class.ilObjSurveyQuestionPool.php.

References $file.

605  {
606  // quit if import dir not available
607  if (!@is_dir($dir) or
608  !is_writeable($dir))
609  {
610  return array();
611  }
612 
613  // open directory
614  $dir = dir($dir);
615 
616  // initialize array
617  $file = array();
618 
619  // get files and save the in the array
620  while ($entry = $dir->read())
621  {
622  if ($entry != "." &&
623  $entry != ".." &&
624  ereg("^[0-9]{10}_{2}[0-9]+_{2}(spl_)*[0-9]+\.[A-Za-z]{3}\$", $entry))
625  {
626  $file[] = $entry;
627  }
628  }
629 
630  // close import directory
631  $dir->close();
632  // sort files
633  sort ($file);
634  reset ($file);
635 
636  return $file;
637  }
print $file

◆ getImportDirectory()

ilObjSurveyQuestionPool::getImportDirectory ( )

get import directory of survey

Definition at line 676 of file class.ilObjSurveyQuestionPool.php.

References ilUtil\getDataDir().

677  {
678  include_once "./Services/Utilities/classes/class.ilUtil.php";
679  $import_dir = ilUtil::getDataDir()."/spl_data".
680  "/spl_".$this->getId()."/import";
681  if(@is_dir($import_dir))
682  {
683  return $import_dir;
684  }
685  else
686  {
687  return false;
688  }
689  }
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:

◆ getOnline()

ilObjSurveyQuestionPool::getOnline ( )

Definition at line 863 of file class.ilObjSurveyQuestionPool.php.

References $online.

Referenced by cloneObject(), saveToDb(), and toXML().

864  {
865  if (strcmp($this->online, "") == 0) $this->online = "0";
866  return $this->online;
867  }
+ Here is the caller graph for this function:

◆ getQuestionInfos()

ilObjSurveyQuestionPool::getQuestionInfos (   $question_ids)

Returns title, description and type for an array of question id's.

Parameters
array$question_idsAn array of question id's
Returns
array Array of associated arrays with title, description, type_tag

Definition at line 1044 of file class.ilObjSurveyQuestionPool.php.

References $data, and ilDB\fetchAssoc().

1045  {
1046  global $ilDB;
1047 
1048  $found = array();
1049  $query_result = $ilDB->query("SELECT svy_question.*, svy_qtype.type_tag FROM svy_question, svy_qtype " .
1050  "WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id " .
1051  "AND svy_question.tstamp > 0 AND " . $ilDB->in('svy_question.question_id', $question_ids, false, 'integer') . " " .
1052  "ORDER BY svy_question.title");
1053  if ($query_result->numRows() > 0)
1054  {
1055  while ($data = $ilDB->fetchAssoc($query_result))
1056  {
1057  if (in_array($data["question_id"], $question_ids))
1058  {
1059  array_push($found, array('id' => $data["question_id"],
1060  'title' => $data["title"],
1061  'description' => $data["description"],
1062  'type_tag' => $data["type_tag"]));
1063  }
1064  }
1065  }
1066  return $found;
1067  }
fetchAssoc($a_set)
Fetch row as associative array from result set.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
+ Here is the call graph for this function:

◆ getQuestions()

& ilObjSurveyQuestionPool::getQuestions ( )

Definition at line 755 of file class.ilObjSurveyQuestionPool.php.

References $result, $row, and ilObject\getId().

Referenced by cloneObject(), setObligatoryStates(), and toXML().

756  {
757  global $ilDB;
758  $questions = array();
759  $result = $ilDB->queryF("SELECT question_id FROM svy_question WHERE obj_fi = %s AND svy_question.tstamp > 0 AND original_id IS NULL",
760  array('integer'),
761  array($this->getId())
762  );
763  if ($result->numRows())
764  {
765  while ($row = $ilDB->fetchAssoc($result))
766  {
767  array_push($questions, $row["question_id"]);
768  }
769  }
770  return $questions;
771  }
$result
getId()
get object id public
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getQuestionsData()

ilObjSurveyQuestionPool::getQuestionsData (   $arrFilter)

Calculates the data for the output of the questionpool.

public

Definition at line 506 of file class.ilObjSurveyQuestionPool.php.

References $ilUser, $row, ilObject\getId(), and isPluginActive().

507  {
508  global $ilUser;
509  global $ilDB;
510  $where = "";
511  if (is_array($arrFilter))
512  {
513  foreach ($arrFilter as $key => $value)
514  {
515  $arrFilter[$key] = str_replace('%', '', $arrFilter[$key]);
516  }
517  if (array_key_exists('title', $arrFilter) && strlen($arrFilter['title']))
518  {
519  $where .= " AND " . $ilDB->like('svy_question.title', 'text', "%%" . $arrFilter['title'] . "%%");
520  }
521  if (array_key_exists('description', $arrFilter) && strlen($arrFilter['description']))
522  {
523  $where .= " AND " . $ilDB->like('svy_question.description', 'text', "%%" . $arrFilter['description'] . "%%");
524  }
525  if (array_key_exists('author', $arrFilter) && strlen($arrFilter['author']))
526  {
527  $where .= " AND " . $ilDB->like('svy_question.author', 'text', "%%" . $arrFilter['author'] . "%%");
528  }
529  if (array_key_exists('type', $arrFilter) && strlen($arrFilter['type']))
530  {
531  $where .= " AND svy_qtype.type_tag = " . $ilDB->quote($arrFilter['type'], 'text');
532  }
533  }
534  $query_result = $ilDB->queryF("SELECT svy_question.*, svy_qtype.type_tag, svy_qtype.plugin FROM svy_question, svy_qtype WHERE svy_question.original_id IS NULL AND svy_question.tstamp > 0 AND svy_question.questiontype_fi = svy_qtype.questiontype_id AND svy_question.obj_fi = %s" . $where,
535  array('integer'),
536  array($this->getId())
537  );
538  $rows = array();
539  if ($query_result->numRows())
540  {
541  while ($row = $ilDB->fetchAssoc($query_result))
542  {
543  if ($row["plugin"])
544  {
545  if ($this->isPluginActive($row["type_tag"]))
546  {
547  array_push($rows, $row);
548  }
549  }
550  else
551  {
552  array_push($rows, $row);
553  }
554  }
555  }
556  return $rows;
557  }
isPluginActive($a_pname)
Checks whether or not a question plugin with a given name is active.
getId()
get object id public
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:

◆ getQuestionsInfo()

& ilObjSurveyQuestionPool::getQuestionsInfo (   $question_array)

Retrieves the datase entries for questions from a given array.

Parameters
array$question_arrayAn array containing the id's of the questions
Returns
array An array containing the database rows of the given question id's public

Definition at line 454 of file class.ilObjSurveyQuestionPool.php.

References $result, $row, and isPluginActive().

455  {
456  global $ilDB;
457  $result_array = array();
458  $result = $ilDB->query("SELECT svy_question.*, svy_qtype.type_tag, svy_qtype.plugin FROM svy_question, svy_qtype WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id AND svy_question.tstamp > 0 AND " . $ilDB->in('svy_question.question_id', $question_array, false, 'integer'));
459  while ($row = $ilDB->fetchAssoc($result))
460  {
461  if ($row["plugin"])
462  {
463  if ($this->isPluginActive($row["type_tag"]))
464  {
465  array_push($result_array, $row);
466  }
467  }
468  else
469  {
470  array_push($result_array, $row);
471  }
472  }
473  return $result_array;
474  }
$result
isPluginActive($a_pname)
Checks whether or not a question plugin with a given name is active.
+ Here is the call graph for this function:

◆ getQuestiontype()

ilObjSurveyQuestionPool::getQuestiontype (   $question_id)

Returns the question type of a question with a given id.

Parameters
integer$question_idThe database id of the question
Returns
string The question type string private

Definition at line 382 of file class.ilObjSurveyQuestionPool.php.

References $data, $result, and ilDB\fetchAssoc().

Referenced by createQuestion(), and toXML().

383  {
384  global $ilDB;
385  if ($question_id < 1) return;
386  $result = $ilDB->queryF("SELECT svy_qtype.type_tag FROM svy_question, svy_qtype WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id AND svy_question.question_id = %s",
387  array('integer'),
388  array($question_id)
389  );
390  if ($result->numRows() == 1)
391  {
392  $data = $ilDB->fetchAssoc($result);
393  return $data["type_tag"];
394  }
395  else
396  {
397  return;
398  }
399  }
$result
fetchAssoc($a_set)
Fetch row as associative array from result set.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTitle()

ilObjSurveyQuestionPool::getTitle ( )

get title of survey question pool object

Returns
string title

Definition at line 347 of file class.ilObjSurveyQuestionPool.php.

Referenced by toXML().

348  {
349  //return $this->title;
350  return parent::getTitle();
351  }
+ Here is the caller graph for this function:

◆ ilObjSurveyQuestionPool()

ilObjSurveyQuestionPool::ilObjSurveyQuestionPool (   $a_id = 0,
  $a_call_by_reference = true 
)

Constructor public.

Parameters
integerreference_id or object_id
booleantreat the id as reference_id (true) or object_id (false)

Definition at line 51 of file class.ilObjSurveyQuestionPool.php.

References ilObject\ilObject().

52  {
53  $this->type = "spl";
54  $this->ilObject($a_id,$a_call_by_reference);
55  }
ilObject($a_id=0, $a_reference=true)
Constructor public.
+ Here is the call graph for this function:

◆ importObject()

ilObjSurveyQuestionPool::importObject (   $source,
  $spl_exists = FALSE 
)

Imports survey questions into ILIAS.

Parameters
string$sourceThe filename of an XML import file public

Definition at line 779 of file class.ilObjSurveyQuestionPool.php.

References ilUtil\delDir(), ilObject\getId(), and ilUtil\unzip().

780  {
781  if (is_file($source))
782  {
783  $isZip = (strcmp(strtolower(substr($source, -3)), 'zip') == 0);
784  if ($isZip)
785  {
786  // unzip file
787  ilUtil::unzip($source);
788 
789  // determine filenames of xml files
790  $subdir = basename($source, ".zip");
791  $source = dirname($source)."/".$subdir."/".$subdir.".xml";
792  }
793 
794  $fh = fopen($source, "r") or die("");
795  $xml = fread($fh, filesize($source));
796  fclose($fh) or die("");
797  if ($isZip)
798  {
799  $subdir = basename($source, ".zip");
800  if (@is_dir(dirname($source)."/".$subdir))
801  {
802  ilUtil::delDir(dirname($source)."/".$subdir);
803  }
804  }
805  if (strpos($xml, "questestinterop") > 0)
806  {
807  // survey questions for ILIAS < 3.8
808  include_once "./Services/Survey/classes/class.SurveyImportParserPre38.php";
809  $import = new SurveyImportParserPre38($this->getId(), "", $spl_exists);
810  $import->setXMLContent($xml);
811  $import->startParsing();
812  }
813  else
814  {
815  // survey questions for ILIAS >= 3.8
816  include_once "./Services/Survey/classes/class.SurveyImportParser.php";
817  $import = new SurveyImportParser($this->getId(), "", $spl_exists);
818  $import->setXMLContent($xml);
819  $import->startParsing();
820  }
821  }
822  }
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
Survey Question Import Parser.
getId()
get object id public
if(!file_exists(getcwd().'/ilias.ini.php')) if(isset( $_GET["client_id"]))
registration confirmation script for ilias
Definition: confirmReg.php:20
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
Survey Question Import Parser.
+ Here is the call graph for this function:

◆ isInUse()

ilObjSurveyQuestionPool::isInUse (   $question_id)

Checks if a question is in use by a survey.

Parameters
integer$question_idThe database id of the question
Returns
mixed An array of the surveys which use the question, when the question is in use by at least one survey, otherwise false public

Definition at line 408 of file class.ilObjSurveyQuestionPool.php.

References $result, and $row.

409  {
410  global $ilDB;
411  // check out the already answered questions
412  $result = $ilDB->queryF("SELECT answer_id FROM svy_answer WHERE question_fi = %s",
413  array('integer'),
414  array($question_id)
415  );
416  $answered = $result->numRows();
417 
418  // check out the questions inserted in surveys
419  $result = $ilDB->queryF("SELECT svy_svy.* FROM svy_svy, svy_svy_qst WHERE svy_svy_qst.survey_fi = svy_svy.survey_id AND svy_svy_qst.question_fi = %s",
420  array('integer'),
421  array($question_id)
422  );
423  $inserted = $result->numRows();
424  if (($inserted + $answered) == 0)
425  {
426  return false;
427  }
428  $result_array = array();
429  while ($row = $ilDB->fetchObject($result))
430  {
431  array_push($result_array, $row);
432  }
433  return $result_array;
434  }
$result

◆ isPluginActive()

ilObjSurveyQuestionPool::isPluginActive (   $a_pname)

Checks whether or not a question plugin with a given name is active.

Parameters
string$a_pnameThe plugin name public

Definition at line 1025 of file class.ilObjSurveyQuestionPool.php.

References IL_COMP_MODULE.

Referenced by getQuestionsData(), and getQuestionsInfo().

1026  {
1027  global $ilPluginAdmin;
1028  if ($ilPluginAdmin->isActive(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $a_pname))
1029  {
1030  return TRUE;
1031  }
1032  else
1033  {
1034  return FALSE;
1035  }
1036  }
const IL_COMP_MODULE
+ Here is the caller graph for this function:

◆ loadFromDb()

ilObjSurveyQuestionPool::loadFromDb ( )

Loads a ilObjQuestionpool object from a database.

public

Definition at line 183 of file class.ilObjSurveyQuestionPool.php.

References $result, $row, ilObject\getId(), and setOnline().

Referenced by read().

184  {
185  global $ilDB;
186 
187  $result = $ilDB->queryF("SELECT * FROM svy_qpl WHERE obj_fi = %s",
188  array('integer'),
189  array($this->getId())
190  );
191  if ($result->numRows() == 1)
192  {
193  $row = $ilDB->fetchAssoc($result);
194  $this->setOnline($row["isonline"]);
195  }
196  }
$result
setOnline($a_online_status)
Sets the questionpool online status.
getId()
get object id public
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ moveToClipboard()

ilObjSurveyQuestionPool::moveToClipboard (   $question_id)

Moves a question to the clipboard.

Parameters
integer$question_idObject id of the question

Definition at line 1105 of file class.ilObjSurveyQuestionPool.php.

References $_SESSION.

1106  {
1107  if (!array_key_exists("spl_clipboard", $_SESSION))
1108  {
1109  $_SESSION["spl_clipboard"] = array();
1110  }
1111  $_SESSION["spl_clipboard"][$question_id] = array("question_id" => $question_id, "action" => "move");
1112  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']

◆ notify()

ilObjSurveyQuestionPool::notify (   $a_event,
  $a_ref_id,
  $a_parent_non_rbac_id,
  $a_node_id,
  $a_params = 0 
)

notifys an object about an event occured Based on the event happend, each object may decide how it reacts.

If you are not required to handle any events related to your module, just delete this method. (For an example how this method is used, look at ilObjGroup)

public

Parameters
stringevent
integerreference id of object where the event occured
arraypasses optional parameters if required
Returns
boolean

Definition at line 289 of file class.ilObjSurveyQuestionPool.php.

References $_GET, and ilObject\getType().

290  {
291  global $tree;
292 
293  switch ($a_event)
294  {
295  case "link":
296 
297  //var_dump("<pre>",$a_params,"</pre>");
298  //echo "Module name ".$this->getRefId()." triggered by link event. Objects linked into target object ref_id: ".$a_ref_id;
299  //exit;
300  break;
301 
302  case "cut":
303 
304  //echo "Module name ".$this->getRefId()." triggered by cut event. Objects are removed from target object ref_id: ".$a_ref_id;
305  //exit;
306  break;
307 
308  case "copy":
309 
310  //var_dump("<pre>",$a_params,"</pre>");
311  //echo "Module name ".$this->getRefId()." triggered by copy event. Objects are copied into target object ref_id: ".$a_ref_id;
312  //exit;
313  break;
314 
315  case "paste":
316 
317  //echo "Module name ".$this->getRefId()." triggered by paste (cut) event. Objects are pasted into target object ref_id: ".$a_ref_id;
318  //exit;
319  break;
320 
321  case "new":
322 
323  //echo "Module name ".$this->getRefId()." triggered by paste (new) event. Objects are applied to target object ref_id: ".$a_ref_id;
324  //exit;
325  break;
326  }
327 
328  // At the beginning of the recursive process it avoids second call of the notify function with the same parameter
329  if ($a_node_id==$_GET["ref_id"])
330  {
331  $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
332  $parent_type = $parent_obj->getType();
333  if($parent_type == $this->getType())
334  {
335  $a_node_id = (int) $tree->getParentId($a_node_id);
336  }
337  }
338 
339  parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
340  }
$_GET["client_id"]
redirection script todo: (a better solution should control the processing via a xml file) ...
getType()
get object type public
+ Here is the call graph for this function:

◆ paste()

ilObjSurveyQuestionPool::paste (   $question_id)

Pastes a question in the question pool.

Parameters
integer$question_idThe database id of the question public

Definition at line 442 of file class.ilObjSurveyQuestionPool.php.

References duplicateQuestion(), and ilObject\getId().

443  {
444  $this->duplicateQuestion($question_id, $this->getId());
445  }
duplicateQuestion($question_id, $obj_id="")
Duplicates a question for a questionpool.
getId()
get object id public
+ Here is the call graph for this function:

◆ pasteFromClipboard()

ilObjSurveyQuestionPool::pasteFromClipboard ( )

Copies/Moves a question from the clipboard.

Definition at line 1117 of file class.ilObjSurveyQuestionPool.php.

References $_SESSION, $result, $row, copyQuestion(), ilObject\getId(), ilUtil\makeDirParents(), ilUtil\sendFailure(), and ilUtil\sendSuccess().

1118  {
1119  global $ilDB;
1120 
1121  if (array_key_exists("spl_clipboard", $_SESSION))
1122  {
1123  foreach ($_SESSION["spl_clipboard"] as $question_object)
1124  {
1125  if (strcmp($question_object["action"], "move") == 0)
1126  {
1127  $result = $ilDB->queryF("SELECT obj_fi FROM svy_question WHERE question_id = %s",
1128  array('integer'),
1129  array($question_object["question_id"])
1130  );
1131  if ($result->numRows() == 1)
1132  {
1133  $row = $ilDB->fetchAssoc($result);
1134  $source_questionpool = $row["obj_fi"];
1135  if ($this->getId() != $source_questionpool)
1136  {
1137  // change the questionpool id in the qpl_questions table
1138  $affectedRows = $ilDB->manipulateF("UPDATE svy_question SET obj_fi = %s WHERE question_id = %s",
1139  array('integer','integer'),
1140  array($this->getId(), $question_object["question_id"])
1141  );
1142 
1143  // move question data to the new target directory
1144  $source_path = CLIENT_WEB_DIR . "/survey/" . $source_questionpool . "/" . $question_object["question_id"] . "/";
1145  if (@is_dir($source_path))
1146  {
1147  $target_path = CLIENT_WEB_DIR . "/survey/" . $this->getId() . "/";
1148  if (!@is_dir($target_path))
1149  {
1150  include_once "./Services/Utilities/classes/class.ilUtil.php";
1151  ilUtil::makeDirParents($target_path);
1152  }
1153  @rename($source_path, $target_path . $question_object["question_id"]);
1154  }
1155  }
1156  else
1157  {
1158  ilUtil::sendFailure($this->lng->txt("spl_move_same_pool"), true);
1159  return;
1160  }
1161  }
1162  }
1163  else
1164  {
1165  $this->copyQuestion($question_object["question_id"], $this->getId());
1166  }
1167  }
1168  }
1169  ilUtil::sendSuccess($this->lng->txt("spl_paste_success"), true);
1170  unset($_SESSION["spl_clipboard"]);
1171  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static makeDirParents($a_dir)
Create a new directory and all parent directories.
$result
copyQuestion($question_id, $questionpool_to)
Copies a question into another question pool.
getId()
get object id public
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
+ Here is the call graph for this function:

◆ purgeQuestions()

ilObjSurveyQuestionPool::purgeQuestions ( )

Definition at line 1072 of file class.ilObjSurveyQuestionPool.php.

References $data, $ilUser, $result, ilDB\fetchAssoc(), and removeQuestion().

1073  {
1074  global $ilDB, $ilUser;
1075 
1076  $result = $ilDB->queryF("SELECT question_id FROM svy_question WHERE owner_fi = %s AND tstamp = %s",
1077  array("integer", "integer"),
1078  array($ilUser->getId(), 0)
1079  );
1080  while ($data = $ilDB->fetchAssoc($result))
1081  {
1082  $this->removeQuestion($data["question_id"]);
1083  }
1084  }
$result
fetchAssoc($a_set)
Fetch row as associative array from result set.
removeQuestion($question_id)
Removes a question from the question pool.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:

◆ read()

ilObjSurveyQuestionPool::read (   $a_force_db = false)

read object data from db into object

Parameters
booleanpublic

Definition at line 93 of file class.ilObjSurveyQuestionPool.php.

References loadFromDb().

94  {
95  parent::read($a_force_db);
96  $this->loadFromDb();
97  }
loadFromDb()
Loads a ilObjQuestionpool object from a database.
+ Here is the call graph for this function:

◆ removeQuestion()

ilObjSurveyQuestionPool::removeQuestion (   $question_id)

Removes a question from the question pool.

Parameters
integer$question_idThe database id of the question private

Definition at line 367 of file class.ilObjSurveyQuestionPool.php.

References SurveyQuestion\_instanciateQuestion().

Referenced by deleteAllData(), and purgeQuestions().

368  {
369  if ($question_id < 1) return;
370  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
371  $question =& SurveyQuestion::_instanciateQuestion($question_id);
372  $question->delete($question_id);
373  }
& _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveToDb()

ilObjSurveyQuestionPool::saveToDb ( )

Saves a ilObjSurveyQuestionPool object to a database.

public

Definition at line 203 of file class.ilObjSurveyQuestionPool.php.

References $query, $result, ilObject\getId(), and getOnline().

204  {
205  global $ilDB;
206 
207  $result = $ilDB->queryF("SELECT * FROM svy_qpl WHERE obj_fi = %s",
208  array('integer'),
209  array($this->getId())
210  );
211  if ($result->numRows() == 1)
212  {
213  $affectedRows = $ilDB->manipulateF("UPDATE svy_qpl SET isonline = %s, tstamp = %s WHERE obj_fi = %s",
214  array('text','integer','integer'),
215  array($this->getOnline(), time(), $this->getId())
216  );
217  }
218  else
219  {
220  $next_id = $ilDB->nextId('svy_qpl');
221  $query = $ilDB->manipulateF("INSERT INTO svy_qpl (id_questionpool, isonline, obj_fi, tstamp) VALUES (%s, %s, %s, %s)",
222  array('integer', 'text', 'integer', 'integer'),
223  array($next_id, $this->getOnline(), $this->getId(), time())
224  );
225  }
226  }
$result
getId()
get object id public
+ Here is the call graph for this function:

◆ setObligatoryStates()

ilObjSurveyQuestionPool::setObligatoryStates (   $obligatory_questions)

Sets the obligatory states for questions in a survey from the questions form.

Parameters
array$obligatory_questionsThe questions which should be set obligatory from the questions form, the remaining questions should be setted not obligatory public

Definition at line 1179 of file class.ilObjSurveyQuestionPool.php.

References getQuestions().

1180  {
1181  global $ilDB;
1182 
1183  foreach($this->getQuestions() as $question_id)
1184  {
1185  $status = (int)(in_array($question_id, $obligatory_questions));
1186 
1187  $ilDB->manipulate("UPDATE svy_question".
1188  " SET obligatory = ".$ilDB->quote($status, "integer").
1189  " WHERE question_id = ".$ilDB->quote($question_id, "integer"));
1190  }
1191  }
+ Here is the call graph for this function:

◆ setOnline()

ilObjSurveyQuestionPool::setOnline (   $a_online_status)

Sets the questionpool online status.

Parameters
integer$a_online_statusOnline status of the questionpool
See also
online User interface

Definition at line 849 of file class.ilObjSurveyQuestionPool.php.

Referenced by loadFromDb().

850  {
851  switch ($a_online_status)
852  {
853  case 0:
854  case 1:
855  $this->online = $a_online_status;
856  break;
857  default:
858  $this->online = 0;
859  break;
860  }
861  }
+ Here is the caller graph for this function:

◆ setTitle()

ilObjSurveyQuestionPool::setTitle (   $a_title)

set title of survey question pool object

Definition at line 356 of file class.ilObjSurveyQuestionPool.php.

357  {
358  parent::setTitle($a_title);
359  }

◆ toXML()

ilObjSurveyQuestionPool::toXML (   $questions)

export questions to xml

Definition at line 694 of file class.ilObjSurveyQuestionPool.php.

References SurveyQuestion\_includeClass(), ilObject\getId(), getOnline(), getQuestions(), getQuestiontype(), getTitle(), ilObject\getType(), and ilXmlWriter\xmlHeader().

695  {
696  if (!is_array($questions))
697  {
698  $questions =& $this->getQuestions();
699  }
700  if (count($questions) == 0)
701  {
702  $questions =& $this->getQuestions();
703  }
704  $xml = "";
705 
706  include_once("./Services/Xml/classes/class.ilXmlWriter.php");
707  $a_xml_writer = new ilXmlWriter;
708  // set xml header
709  $a_xml_writer->xmlHeader();
710  $attrs = array(
711  "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
712  "xsi:noNamespaceSchemaLocation" => "http://www.ilias.de/download/xsd/ilias_survey_4_2.xsd"
713  );
714  $a_xml_writer->xmlStartTag("surveyobject", $attrs);
715  $attrs = array(
716  "id" => "qpl_" . $this->getId(),
717  "label" => $this->getTitle(),
718  "online" => $this->getOnline()
719  );
720  $a_xml_writer->xmlStartTag("surveyquestions", $attrs);
721  $a_xml_writer->xmlElement("dummy", NULL, "dummy");
722  // add ILIAS specific metadata
723  $a_xml_writer->xmlStartTag("metadata");
724  $a_xml_writer->xmlStartTag("metadatafield");
725  $a_xml_writer->xmlElement("fieldlabel", NULL, "SCORM");
726  include_once "./Services/MetaData/classes/class.ilMD.php";
727  $md = new ilMD($this->getId(),0, $this->getType());
728  $writer = new ilXmlWriter();
729  $md->toXml($writer);
730  $metadata = $writer->xmlDumpMem();
731  $a_xml_writer->xmlElement("fieldentry", NULL, $metadata);
732  $a_xml_writer->xmlEndTag("metadatafield");
733  $a_xml_writer->xmlEndTag("metadata");
734 
735  $a_xml_writer->xmlEndTag("surveyquestions");
736  $a_xml_writer->xmlEndTag("surveyobject");
737 
738  $xml = $a_xml_writer->xmlDumpMem(FALSE);
739 
740  $questionxml = "";
741  foreach ($questions as $key => $value)
742  {
743  $questiontype = $this->getQuestiontype($value);
744  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
745  SurveyQuestion::_includeClass($questiontype);
746  $question = new $questiontype();
747  $question->loadFromDb($value);
748  $questionxml .= $question->toXML(false);
749  }
750 
751  $xml = str_replace("<dummy>dummy</dummy>", $questionxml, $xml);
752  return $xml;
753  }
getQuestiontype($question_id)
Returns the question type of a question with a given id.
getTitle()
get title of survey question pool object
static _includeClass($question_type, $gui=0)
Include the php class file for a given question type.
XML writer class.
getId()
get object id public
xmlHeader()
Writes xml header public.
getType()
get object type public
+ Here is the call graph for this function:

◆ update()

ilObjSurveyQuestionPool::update ( )

update object data

public

Returns
boolean

Definition at line 75 of file class.ilObjSurveyQuestionPool.php.

References ilObject\updateMetaData().

76  {
77  $this->updateMetaData();
78  if (!parent::update())
79  {
80  return false;
81  }
82 
83  // put here object specific stuff
84 
85  return true;
86  }
updateMetaData()
update meta data entry
+ Here is the call graph for this function:

Field Documentation

◆ $online

ilObjSurveyQuestionPool::$online

Definition at line 43 of file class.ilObjSurveyQuestionPool.php.

Referenced by getOnline().


The documentation for this class was generated from the following file: