ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilObjSurveyQuestionPool Class Reference
+ Inheritance diagram for ilObjSurveyQuestionPool:
+ Collaboration diagram for ilObjSurveyQuestionPool:

Public Member Functions

 __construct ($a_id=0, $a_call_by_reference=true)
 Constructor @access public. More...
 
 create ($a_upload=false)
 create question pool object More...
 
 update ()
 update object data More...
 
 read ()
 read object data from db into object @access public More...
 
 cloneObject ($a_target_id, $a_copy_id=0, $a_omit_tree=false)
 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 ()
 
 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 ()
 
 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
 __construct ($a_id=0, $a_reference=true)
 Constructor @access public. More...
 
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not) More...
 
 read ()
 read object data from db into object More...
 
 getId ()
 get object id @access public More...
 
 setId ($a_id)
 set object id @access public More...
 
 setRefId ($a_id)
 set reference id @access public More...
 
 getRefId ()
 get reference id @access public More...
 
 getType ()
 get object type @access public More...
 
 setType ($a_type)
 set object type @access public More...
 
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions More...
 
 getTitle ()
 get object title @access public More...
 
 getUntranslatedTitle ()
 get untranslated object title @access 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...
 
 setOfflineStatus ($a_status)
 Set offline status. More...
 
 getOfflineStatus ()
 Get offline status. More...
 
 supportsOfflineHandling ()
 Check whether object supports offline handling. More...
 
 getOwner ()
 get object owner More...
 
 getOwnerName ()
 
 setOwner ($a_owner)
 set object owner More...
 
 getCreateDate ()
 get create date @access public More...
 
 getLastUpdateDate ()
 get last update date @access public More...
 
 getDiskUsage ()
 Gets the disk usage of the object in bytes. 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...
 
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!? More...
 
 setPermissions ($a_parent_ref)
 set permissions of object More...
 
 setParentRolePermissions ($a_parent_ref)
 Initialize the permissions of parent roles (local roles of categories, global roles...) This method is overwritten in e.g courses, groups for building permission intersections with non_member templates. More...
 
 createReference ()
 creates reference for object More...
 
 countReferences ()
 count references of object 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) @access public More...
 
 applyDidacticTemplate ($a_tpl_id)
 Apply template. More...
 
 setRegisterMode ($a_bool)
 
 isUserRegistered ($a_user_id=0)
 
 requireRegistration ()
 
 getXMLZip ()
 
 getHTMLDirectory ()
 
 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...
 
 getPossibleSubObjects ($a_filter=true)
 get all possible subobjects of this type the object can decide which types of subobjects are possible jut in time overwrite if the decision distinguish from standard model More...
 

Static Public Member Functions

static _setOnline ($a_obj_id, $a_online_status)
 
static _lookupOnline ($a_obj_id)
 
static _isWriteable ($object_id, $user_id)
 Returns true, if the question pool is writeable by a given user. More...
 
static _getQuestiontypes ()
 Creates a list of all available question types. More...
 
static _getQuestionTypeTranslations ()
 
static _getAvailableQuestionpools ($use_object_id=false, $could_be_offline=false, $showPath=false, $permission="read")
 Returns the available question pools for the active user. More...
 
- Static Public Member Functions inherited from ilObject
static _lookupObjIdByImportId ($a_import_id)
 
static _lookupImportId ($a_obj_id)
 
static _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id More...
 
static _getIdForImportId ($a_import_id)
 get current object id for import id (static) More...
 
static _getAllReferences ($a_id)
 get all reference ids of object More...
 
static _lookupTitle ($a_id)
 lookup object title More...
 
static lookupOfflineStatus ($a_obj_id)
 Lookup offline status using objectDataCache. More...
 
static _lookupOwner ($a_id)
 lookup object owner More...
 
static _getIdsForTitle ($title, $type='', $partialmatch=false)
 
static _lookupDescription ($a_id)
 lookup object description More...
 
static _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update More...
 
static _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects. More...
 
static _lookupObjId ($a_id)
 
static _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree More...
 
static setDeletedDates ($a_ref_ids)
 Set deleted date. More...
 
static _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
static _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
static _writeTitle ($a_obj_id, $a_title)
 write title to db (static) More...
 
static _writeDescription ($a_obj_id, $a_desc)
 write description to db (static) More...
 
static _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static) More...
 
static _lookupType ($a_id, $a_reference=false)
 lookup object type More...
 
static _isInTrash ($a_ref_id)
 checks wether object is in trash More...
 
static _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash More...
 
static _lookupObjectId ($a_ref_id)
 lookup object id More...
 
static _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type More...
 
static _exists ($a_id, $a_reference=false, $a_type=null)
 checks if an object exists in object_data@access public 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 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 fixMissingTitles ($a_type, array &$a_obj_title_map)
 Try to fix missing object titles. More...
 
static _lookupCreationDate ($a_id)
 Lookup creation date. 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
 
 $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
 

Protected Attributes

 $user
 
 $plugin_admin
 
- Protected Attributes inherited from ilObject
 $objDefinition
 
 $db
 
 $log
 
 $error
 
 $tree
 
 $app_event_handler
 
 $rbacadmin
 
 $rbacreview
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

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

Constructor @access public.

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

Reimplemented from ilObject.

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

62 {
63 global $DIC;
64
65 $this->log = $DIC["ilLog"];
66 $this->db = $DIC->database();
67 $this->user = $DIC->user();
68 $this->plugin_admin = $DIC["ilPluginAdmin"];
69 $this->type = "spl";
70 parent::__construct($a_id, $a_call_by_reference);
71 }
user()
Definition: user.php:4
global $DIC
Definition: saml.php:7

References $DIC, and user().

+ Here is the call graph for this function:

Member Function Documentation

◆ _getAvailableQuestionpools()

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

Returns the available question pools for the active user.

Returns
array The available question pools @access public

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

922 {
923 global $DIC;
924
925 $ilUser = $DIC->user();
926 global $DIC;
927
928 $ilDB = $DIC->database();
929
930 $result_array = array();
931 $qpls = ilUtil::_getObjectsByOperations("spl", $permission, $ilUser->getId(), -1);
932 $titles = ilObject::_prepareCloneSelection($qpls, "spl", $showPath);
933 $allqpls = array();
934 $result = $ilDB->query("SELECT obj_fi, isonline FROM svy_qpl");
935 while ($row = $ilDB->fetchAssoc($result)) {
936 $allqpls[$row['obj_fi']] = $row['isonline'];
937 }
938 foreach ($qpls as $ref_id) {
940 if ($could_be_offline || $allqpls[$obj_id] == 1) {
941 if ($use_object_id) {
942 $result_array[$obj_id] = $titles[$ref_id];
943 } else {
944 $result_array[$ref_id] = $titles[$ref_id];
945 }
946 }
947 }
948 return $result_array;
949 }
$result
static _lookupObjectId($a_ref_id)
lookup object id
static _prepareCloneSelection($a_ref_ids, $new_type, $show_path=true)
Prepare copy wizard object selection.
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,...
$row
global $ilDB
$ilUser
Definition: imgupload.php:18

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

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

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getQuestiontypes()

static ilObjSurveyQuestionPool::_getQuestiontypes ( )
static

Creates a list of all available question types.

Returns
array An array containing the available questiontypes @access public

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

812 {
813 global $DIC;
814
815 $ilDB = $DIC->database();
816 global $DIC;
817
818 $lng = $DIC->language();
819
820 $lng->loadLanguageModule("survey");
821 $types = array();
822 $query_result = $ilDB->query("SELECT * FROM svy_qtype ORDER BY type_tag");
823 while ($row = $ilDB->fetchAssoc($query_result)) {
824 //array_push($questiontypes, $row["type_tag"]);
825 if ($row["plugin"] == 0) {
826 $types[$lng->txt($row["type_tag"])] = $row;
827 } else {
828 global $DIC;
829
830 $ilPluginAdmin = $DIC["ilPluginAdmin"];
831 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, "SurveyQuestionPool", "svyq");
832 foreach ($pl_names as $pl_name) {
833 $pl = ilPlugin::getPluginObject(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $pl_name);
834 if (strcmp($pl->getQuestionType(), $row["type_tag"]) == 0) {
835 $types[$pl->getQuestionTypeTranslation()] = $row;
836 }
837 }
838 }
839 }
840 ksort($types);
841
842
843 // #14263 - default sorting
844
845 $default_sorting = array_flip(array(
846 "SurveySingleChoiceQuestion",
847 "SurveyMultipleChoiceQuestion",
848 "SurveyMatrixQuestion",
849 "SurveyMetricQuestion",
850 "SurveyTextQuestion"
851 ));
852
853 $sorted = array();
854 $idx = sizeof($default_sorting);
855 foreach ($types as $caption => $item) {
856 $type = $item["type_tag"];
857 $item["caption"] = $caption;
858
859 // default
860 if (array_key_exists($type, $default_sorting)) {
861 $sorted[$default_sorting[$type]] = $item;
862 }
863 // plugin (append alphabetically sorted)
864 else {
865 $sorted[$idx] = $item;
866 $idx++;
867 }
868 }
869 ksort($sorted);
870
871 // redo captions as index
872 $types = array();
873 foreach ($sorted as $item) {
874 $types[$item["caption"]] = $item;
875 }
876
877 return $types;
878 }
const IL_COMP_MODULE
static getPluginObject(string $a_ctype, string $a_cname, string $a_slot_id, string $a_pname)

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

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

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getQuestionTypeTranslations()

static ilObjSurveyQuestionPool::_getQuestionTypeTranslations ( )
static

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

881 {
882 global $DIC;
883
884 $ilDB = $DIC->database();
885 global $DIC;
886
887 $lng = $DIC->language();
888 global $DIC;
889
890 $ilLog = $DIC["ilLog"];
891 global $DIC;
892
893 $ilPluginAdmin = $DIC["ilPluginAdmin"];
894
895 $lng->loadLanguageModule("survey");
896 $result = $ilDB->query("SELECT * FROM svy_qtype");
897 $types = array();
898 while ($row = $ilDB->fetchAssoc($result)) {
899 if ($row["plugin"] == 0) {
900 $types[$row['type_tag']] = $lng->txt($row["type_tag"]);
901 } else {
902 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, "SurveyQuestionPool", "svyq");
903 foreach ($pl_names as $pl_name) {
904 $pl = ilPlugin::getPluginObject(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $pl_name);
905 if (strcmp($pl->getQuestionType(), $row["type_tag"]) == 0) {
906 $types[$row['type_tag']] = $pl->getQuestionTypeTranslation();
907 }
908 }
909 }
910 }
911 ksort($types);
912 return $types;
913 }

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

Referenced by ilObjSurvey\getQuestionsTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _isWriteable()

static ilObjSurveyQuestionPool::_isWriteable (   $object_id,
  $user_id 
)
static

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 @access public

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

787 {
788 global $DIC;
789
790 $rbacsystem = $DIC->rbac()->system();
791 global $DIC;
792
793 $ilDB = $DIC->database();
794
795 $refs = ilObject::_getAllReferences($object_id);
796 $result = false;
797 foreach ($refs as $ref) {
798 if ($rbacsystem->checkAccess("write", $ref) && (ilObject::_hasUntrashedReference($object_id))) {
799 $result = true;
800 }
801 }
802 return $result;
803 }
static _getAllReferences($a_id)
get all reference ids of object
static _hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash

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

Referenced by SurveyQuestion\_isWriteable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _lookupOnline()

static ilObjSurveyQuestionPool::_lookupOnline (   $a_obj_id)
static

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

762 {
763 global $DIC;
764
765 $ilDB = $DIC->database();
766
767 $result = $ilDB->queryF(
768 "SELECT isonline FROM svy_qpl WHERE obj_fi = %s",
769 array('integer'),
770 array($a_obj_id)
771 );
772 if ($result->numRows() == 1) {
773 $row = $ilDB->fetchAssoc($result);
774 return $row["isonline"];
775 }
776 return 0;
777 }

References $DIC, $ilDB, $result, and $row.

Referenced by ilObjSurveyQuestionPoolListGUI\getProperties().

+ Here is the caller graph for this function:

◆ _setOnline()

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

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

714 {
715 global $DIC;
716
717 $ilDB = $DIC->database();
718
719 $status = "0";
720 switch ($a_online_status) {
721 case 0:
722 case 1:
723 $status = "$a_online_status";
724 break;
725 }
726 $affectedRows = $ilDB->manipulateF(
727 "UPDATE svy_qpl SET isonline = %s WHERE obj_fi = %s",
728 array('text','integer'),
729 array($status, $a_obj_id)
730 );
731 }

References $DIC, and $ilDB.

◆ cloneObject()

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

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

@access public

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

118 {
120 $newObj = parent::cloneObject($a_target_id, $a_copy_id, $a_omit_tree);
121
122 //copy online status if object is not the root copy object
123 $cp_options = ilCopyWizardOptions::_getInstance($a_copy_id);
124
125 if (!$cp_options->isRootNode($this->getRefId())) {
126 $newObj->setOnline($this->getOnline());
127 }
128
129 $newObj->saveToDb();
130 // clone the questions in the question pool
131 $questions = &$this->getQuestions();
132 foreach ($questions as $question_id) {
133 $newObj->copyQuestion($question_id, $newObj->getId());
134 }
135
136 // clone meta data
137 include_once "./Services/MetaData/classes/class.ilMD.php";
138 $md = new ilMD($this->getId(), 0, $this->getType());
139 $new_md = &$md->cloneMD($newObj->getId(), 0, $newObj->getType());
140
141 // update the metadata with the new title of the question pool
142 $newObj->updateMetaData();
143 return $newObj;
144 }
static _getInstance($a_copy_id)
Get instance of copy wizard options.
getType()
get object type @access public
getId()
get object id @access public

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

+ 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 @access public

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

171 {
172 $question_gui = &$this->createQuestion("", $question_id);
173 if ($question_gui->object->getObjId() == $questionpool_to) {
174 // the question is copied into the same question pool
175 $this->duplicateQuestion($question_id);
176 } else {
177 // the question is copied into another question pool
178 $newtitle = $question_gui->object->getTitle();
179 if ($question_gui->object->questionTitleExists($question_gui->object->getTitle(), $questionpool_to)) {
180 $counter = 2;
181 while ($question_gui->object->questionTitleExists($question_gui->object->getTitle() . " ($counter)", $questionpool_to)) {
182 $counter++;
183 }
184 $newtitle = $question_gui->object->getTitle() . " ($counter)";
185 }
186 $question_gui->object->copyObject($this->getId(), $newtitle);
187 }
188 }
& createQuestion($question_type, $question_id=-1)
duplicateQuestion($question_id, $obj_id="")
Duplicates a question for a questionpool.

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

Referenced by pasteFromClipboard().

+ 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 1018 of file class.ilObjSurveyQuestionPool.php.

1019 {
1020 if (!array_key_exists("spl_clipboard", $_SESSION)) {
1021 $_SESSION["spl_clipboard"] = array();
1022 }
1023 $_SESSION["spl_clipboard"][$question_id] = array("question_id" => $question_id, "action" => "copy");
1024 }
$_SESSION["AccountId"]

References $_SESSION.

◆ create()

ilObjSurveyQuestionPool::create (   $a_upload = false)

create question pool object

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

77 {
78 parent::create();
79 if (!$a_upload) {
80 $this->createMetaData();
81 }
82 }
createMetaData()
create meta data entry

References ilObject\createMetaData().

+ 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)

Exceptions
ilSurveyException

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

478 {
479 $spl_data_dir = ilUtil::getDataDir() . "/spl_data";
480 ilUtil::makeDir($spl_data_dir);
481 if (!is_writable($spl_data_dir)) {
482 include_once "Modules/Survey/exceptions/class.ilSurveyException.php";
483 throw new ilSurveyException("Survey Questionpool Data Directory (" . $spl_data_dir . ") not writeable.");
484 }
485
486 // create learning module directory (data_dir/lm_data/lm_<id>)
487 $spl_dir = $spl_data_dir . "/spl_" . $this->getId();
488 ilUtil::makeDir($spl_dir);
489 if (!@is_dir($spl_dir)) {
490 include_once "Modules/Survey/exceptions/class.ilSurveyException.php";
491 throw new ilSurveyException("Creation of Survey Questionpool Directory failed.");
492 }
493 // create Export subdirectory (data_dir/lm_data/lm_<id>/Export)
494 $export_dir = $spl_dir . "/export";
495 ilUtil::makeDir($export_dir);
496 if (!@is_dir($export_dir)) {
497 include_once "Modules/Survey/exceptions/class.ilSurveyException.php";
498 throw new ilSurveyException("Creation of Survey Questionpool Export Directory failed.");
499 }
500 }
Survey exception class.
static getDataDir()
get data directory (outside webspace)
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...

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

+ 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)

Exceptions
ilSurveyException

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

554 {
555 $spl_data_dir = ilUtil::getDataDir() . "/spl_data";
556 ilUtil::makeDir($spl_data_dir);
557
558 if (!is_writable($spl_data_dir)) {
559 include_once "Modules/Survey/exceptions/class.ilSurveyException.php";
560 throw new ilSurveyException("Survey Questionpool Data Directory (" . $spl_data_dir . ") not writeable.");
561 }
562
563 // create test directory (data_dir/spl_data/spl_<id>)
564 $spl_dir = $spl_data_dir . "/spl_" . $this->getId();
565 ilUtil::makeDir($spl_dir);
566 if (!@is_dir($spl_dir)) {
567 include_once "Modules/Survey/exceptions/class.ilSurveyException.php";
568 throw new ilSurveyException("Creation of Survey Questionpool Directory failed.");
569 }
570
571 // create import subdirectory (data_dir/spl_data/spl_<id>/import)
572 $import_dir = $spl_dir . "/import";
573 ilUtil::makeDir($import_dir);
574 if (!@is_dir($import_dir)) {
575 include_once "Modules/Survey/exceptions/class.ilSurveyException.php";
576 throw new ilSurveyException("Creation of Survey Questionpool Import Directory failed.");
577 }
578 }

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

+ Here is the call graph for this function:

◆ createQuestion()

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

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

147 {
148 if ((!$question_type) and ($question_id > 0)) {
149 $question_type = $this->getQuestiontype($question_id);
150 }
151
152 include_once "./Modules/SurveyQuestionPool/classes/class." . $question_type . "GUI.php";
153 $question_type_gui = $question_type . "GUI";
154 $question = new $question_type_gui();
155
156 if ($question_id > 0) {
157 $question->object->loadFromDb($question_id);
158 }
159
160 return $question;
161 }
getQuestiontype($question_id)
Returns the question type of a question with a given id.

References getQuestiontype().

Referenced by copyQuestion().

+ 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

@access public

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

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

249 {
250 $remove = parent::delete();
251 // always call parent delete function first!!
252 if (!$remove) {
253 return false;
254 }
255
256 // delete all related questions
257 $this->deleteAllData();
258
259 // delete meta data
260 $this->deleteMetaData();
261
262 return true;
263 }
deleteMetaData()
delete meta data entry

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

+ Here is the call graph for this function:

◆ deleteAllData()

ilObjSurveyQuestionPool::deleteAllData ( )

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

266 {
268 $result = $ilDB->queryF(
269 "SELECT question_id FROM svy_question WHERE obj_fi = %s AND original_id IS NULL",
270 array('integer'),
271 array($this->getId())
272 );
273 $found_questions = array();
274 while ($row = $ilDB->fetchAssoc($result)) {
275 $this->removeQuestion($row["question_id"]);
276 }
277
278 // delete export files
279 $spl_data_dir = ilUtil::getDataDir() . "/spl_data";
280 $directory = $spl_data_dir . "/spl_" . $this->getId();
281 if (is_dir($directory)) {
282 ilUtil::delDir($directory);
283 }
284 }
removeQuestion($question_id)
Removes a question from the question pool.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively

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

Referenced by delete().

+ 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 @access public

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

405 {
407 include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
408 $question = SurveyQuestion::_instanciateQuestion($question_id);
409 $suffix = "";
410 $counter = 1;
411 while ($question->questionTitleExists($question->getTitle() . $suffix, $obj_id)) {
412 $counter++;
413 if ($counter > 1) {
414 $suffix = " ($counter)";
415 }
416 }
417 if ($obj_id) {
418 $question->setObjId($obj_id);
419 }
420 $question->duplicate(false, $question->getTitle() . $suffix, $ilUser->fullname, $ilUser->id);
421 }
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.

References $ilUser, $user, and SurveyQuestion\_instanciateQuestion().

Referenced by copyQuestion(), and paste().

+ 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 505 of file class.ilObjSurveyQuestionPool.php.

506 {
507 $export_dir = ilUtil::getDataDir() . "/spl_data" . "/spl_" . $this->getId() . "/export";
508 return $export_dir;
509 }

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

+ Here is the call graph for this function:

◆ getExportFiles()

ilObjSurveyQuestionPool::getExportFiles (   $dir)

get export files

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

515 {
516 // quit if import dir not available
517 if (!@is_dir($dir) or
518 !is_writeable($dir)) {
519 return array();
520 }
521
522 // open directory
523 $dir = dir($dir);
524
525 // initialize array
526 $file = array();
527
528 // get files and save the in the array
529 while ($entry = $dir->read()) {
530 if ($entry != "." &&
531 $entry != ".." &&
532 preg_match("/^[0-9]{10}__[0-9]+__(spl_)*[0-9]+\.[A-Za-z]{3}$/", $entry)) {
533 $file[] = $entry;
534 }
535 }
536
537 // close import directory
538 $dir->close();
539 // sort files
540 sort($file);
541 reset($file);
542
543 return $file;
544 }

◆ getImportDirectory()

ilObjSurveyQuestionPool::getImportDirectory ( )

get import directory of survey

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

584 {
585 $import_dir = ilUtil::getDataDir() . "/spl_data" .
586 "/spl_" . $this->getId() . "/import";
587 if (@is_dir($import_dir)) {
588 return $import_dir;
589 } else {
590 return false;
591 }
592 }

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

+ Here is the call graph for this function:

◆ getOnline()

ilObjSurveyQuestionPool::getOnline ( )

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

754 {
755 if (strcmp($this->online, "") == 0) {
756 $this->online = "0";
757 }
758 return $this->online;
759 }

References $online.

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

+ 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 973 of file class.ilObjSurveyQuestionPool.php.

974 {
976
977 $found = array();
978 $query_result = $ilDB->query("SELECT svy_question.*, svy_qtype.type_tag FROM svy_question, svy_qtype " .
979 "WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id " .
980 "AND svy_question.tstamp > 0 AND " . $ilDB->in('svy_question.question_id', $question_ids, false, 'integer') . " " .
981 "ORDER BY svy_question.title");
982 if ($query_result->numRows() > 0) {
983 while ($data = $ilDB->fetchAssoc($query_result)) {
984 if (in_array($data["question_id"], $question_ids)) {
985 array_push($found, array('id' => $data["question_id"],
986 'title' => $data["title"],
987 'description' => $data["description"],
988 'type_tag' => $data["type_tag"]));
989 }
990 }
991 }
992 return $found;
993 }
$data
Definition: bench.php:6

References $data, ilObject\$db, and $ilDB.

◆ getQuestions()

& ilObjSurveyQuestionPool::getQuestions ( )

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

656 {
658 $questions = array();
659 $result = $ilDB->queryF(
660 "SELECT question_id FROM svy_question WHERE obj_fi = %s AND svy_question.tstamp > 0 AND original_id IS NULL",
661 array('integer'),
662 array($this->getId())
663 );
664 if ($result->numRows()) {
665 while ($row = $ilDB->fetchAssoc($result)) {
666 array_push($questions, $row["question_id"]);
667 }
668 }
669 return $questions;
670 }

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

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

+ 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.

@access public

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

429 {
432 $where = "";
433 if (is_array($arrFilter)) {
434 foreach ($arrFilter as $key => $value) {
435 $arrFilter[$key] = str_replace('%', '', $arrFilter[$key]);
436 }
437 if (array_key_exists('title', $arrFilter) && strlen($arrFilter['title'])) {
438 $where .= " AND " . $ilDB->like('svy_question.title', 'text', "%%" . $arrFilter['title'] . "%%");
439 }
440 if (array_key_exists('description', $arrFilter) && strlen($arrFilter['description'])) {
441 $where .= " AND " . $ilDB->like('svy_question.description', 'text', "%%" . $arrFilter['description'] . "%%");
442 }
443 if (array_key_exists('author', $arrFilter) && strlen($arrFilter['author'])) {
444 $where .= " AND " . $ilDB->like('svy_question.author', 'text', "%%" . $arrFilter['author'] . "%%");
445 }
446 if (array_key_exists('type', $arrFilter) && strlen($arrFilter['type'])) {
447 $where .= " AND svy_qtype.type_tag = " . $ilDB->quote($arrFilter['type'], 'text');
448 }
449 }
450 $query_result = $ilDB->queryF(
451 "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,
452 array('integer'),
453 array($this->getId())
454 );
455 $rows = array();
456 if ($query_result->numRows()) {
457 while ($row = $ilDB->fetchAssoc($query_result)) {
458 if ($row["plugin"]) {
459 if ($this->isPluginActive($row["type_tag"])) {
460 array_push($rows, $row);
461 }
462 } else {
463 array_push($rows, $row);
464 }
465 }
466 }
467 return $rows;
468 }
isPluginActive($a_pname)
Checks whether or not a question plugin with a given name is active.
$key
Definition: croninfo.php:18
$rows
Definition: xhr_table.php:10

References ilObject\$db, $ilDB, $ilUser, $key, $row, $rows, $user, ilObject\getId(), and isPluginActive().

+ 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 @access public

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

382 {
384 $result_array = array();
385 $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'));
386 while ($row = $ilDB->fetchAssoc($result)) {
387 if ($row["plugin"]) {
388 if ($this->isPluginActive($row["type_tag"])) {
389 array_push($result_array, $row);
390 }
391 } else {
392 array_push($result_array, $row);
393 }
394 }
395 return $result_array;
396 }

References ilObject\$db, $ilDB, $result, $row, and isPluginActive().

+ 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 @access private

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

310 {
312 if ($question_id < 1) {
313 return;
314 }
315 $result = $ilDB->queryF(
316 "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",
317 array('integer'),
318 array($question_id)
319 );
320 if ($result->numRows() == 1) {
321 $data = $ilDB->fetchAssoc($result);
322 return $data["type_tag"];
323 } else {
324 return;
325 }
326 }

References $data, ilObject\$db, $ilDB, and $result.

Referenced by createQuestion(), and toXML().

+ Here is the caller 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 @access public

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

679 {
680 if (is_file($source)) {
681 $isZip = (strcmp(strtolower(substr($source, -3)), 'zip') == 0);
682 if ($isZip) {
683 // unzip file
685
686 // determine filenames of xml files
687 $subdir = basename($source, ".zip");
688 $source = dirname($source) . "/" . $subdir . "/" . $subdir . ".xml";
689 }
690
691 $fh = fopen($source, "r") or die("");
692 $xml = fread($fh, filesize($source));
693 fclose($fh) or die("");
694 if ($isZip) {
695 $subdir = basename($source, ".zip");
696 if (@is_dir(dirname($source) . "/" . $subdir)) {
697 ilUtil::delDir(dirname($source) . "/" . $subdir);
698 }
699 }
700 if (strpos($xml, "questestinterop") > 0) {
701 include_once("./Modules/Survey/exceptions/class.ilInvalidSurveyImportFileException.php");
702 throw new ilInvalidSurveyImportFileException("Unsupported survey version (< 3.8) found.");
703 } else {
704 // survey questions for ILIAS >= 3.8
705 include_once "./Services/Survey/classes/class.SurveyImportParser.php";
706 $import = new SurveyImportParser($this->getId(), "", $spl_exists);
707 $import->setXMLContent($xml);
708 $import->startParsing();
709 }
710 }
711 }
$source
Definition: linkback.php:22
Survey Question Import Parser.
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
if(!file_exists(getcwd() . '/ilias.ini.php'))
registration confirmation script for ilias
Definition: confirmReg.php:12

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

+ 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 @access public

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

336 {
338 // check out the already answered questions
339 $result = $ilDB->queryF(
340 "SELECT answer_id FROM svy_answer WHERE question_fi = %s",
341 array('integer'),
342 array($question_id)
343 );
344 $answered = $result->numRows();
345
346 // check out the questions inserted in surveys
347 $result = $ilDB->queryF(
348 "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",
349 array('integer'),
350 array($question_id)
351 );
352 $inserted = $result->numRows();
353 if (($inserted + $answered) == 0) {
354 return false;
355 }
356 $result_array = array();
357 while ($row = $ilDB->fetchObject($result)) {
358 array_push($result_array, $row);
359 }
360 return $result_array;
361 }

References ilObject\$db, $ilDB, $result, and $row.

◆ isPluginActive()

ilObjSurveyQuestionPool::isPluginActive (   $a_pname)

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

Parameters
string$a_pnameThe plugin name @access public

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

958 {
959 $ilPluginAdmin = $this->plugin_admin;
960 if ($ilPluginAdmin->isActive(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $a_pname)) {
961 return true;
962 } else {
963 return false;
964 }
965 }

References $plugin_admin, and IL_COMP_MODULE.

Referenced by getQuestionsData(), and getQuestionsInfo().

+ Here is the caller graph for this function:

◆ loadFromDb()

ilObjSurveyQuestionPool::loadFromDb ( )

Loads a ilObjQuestionpool object from a database.

@access public

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

196 {
198
199 $result = $ilDB->queryF(
200 "SELECT * FROM svy_qpl WHERE obj_fi = %s",
201 array('integer'),
202 array($this->getId())
203 );
204 if ($result->numRows() == 1) {
205 $row = $ilDB->fetchAssoc($result);
206 $this->setOnline($row["isonline"]);
207 }
208 }
setOnline($a_online_status)
Sets the questionpool online status.

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

Referenced by read().

+ 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 1031 of file class.ilObjSurveyQuestionPool.php.

1032 {
1033 if (!array_key_exists("spl_clipboard", $_SESSION)) {
1034 $_SESSION["spl_clipboard"] = array();
1035 }
1036 $_SESSION["spl_clipboard"][$question_id] = array("question_id" => $question_id, "action" => "move");
1037 }

References $_SESSION.

◆ paste()

ilObjSurveyQuestionPool::paste (   $question_id)

Pastes a question in the question pool.

Parameters
integer$question_idThe database id of the question @access public

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

370 {
371 $this->duplicateQuestion($question_id, $this->getId());
372 }

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

+ Here is the call graph for this function:

◆ pasteFromClipboard()

ilObjSurveyQuestionPool::pasteFromClipboard ( )

Copies/Moves a question from the clipboard.

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

1043 {
1044 $ilDB = $this->db;
1045
1046 if (array_key_exists("spl_clipboard", $_SESSION)) {
1047 foreach ($_SESSION["spl_clipboard"] as $question_object) {
1048 if (strcmp($question_object["action"], "move") == 0) {
1049 $result = $ilDB->queryF(
1050 "SELECT obj_fi FROM svy_question WHERE question_id = %s",
1051 array('integer'),
1052 array($question_object["question_id"])
1053 );
1054 if ($result->numRows() == 1) {
1055 $row = $ilDB->fetchAssoc($result);
1056 $source_questionpool = $row["obj_fi"];
1057 if ($this->getId() != $source_questionpool) {
1058 // change the questionpool id in the qpl_questions table
1059 $affectedRows = $ilDB->manipulateF(
1060 "UPDATE svy_question SET obj_fi = %s WHERE question_id = %s",
1061 array('integer','integer'),
1062 array($this->getId(), $question_object["question_id"])
1063 );
1064
1065 // move question data to the new target directory
1066 $source_path = CLIENT_WEB_DIR . "/survey/" . $source_questionpool . "/" . $question_object["question_id"] . "/";
1067 if (@is_dir($source_path)) {
1068 $target_path = CLIENT_WEB_DIR . "/survey/" . $this->getId() . "/";
1069 if (!@is_dir($target_path)) {
1070 ilUtil::makeDirParents($target_path);
1071 }
1072 @rename($source_path, $target_path . $question_object["question_id"]);
1073 }
1074 } else {
1075 ilUtil::sendFailure($this->lng->txt("spl_move_same_pool"), true);
1076 return;
1077 }
1078 }
1079 } else {
1080 $this->copyQuestion($question_object["question_id"], $this->getId());
1081 }
1082 }
1083 }
1084 ilUtil::sendSuccess($this->lng->txt("spl_paste_success"), true);
1085 unset($_SESSION["spl_clipboard"]);
1086 }
copyQuestion($question_id, $questionpool_to)
Copies a question into another question pool.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static makeDirParents($a_dir)
Create a new directory and all parent directories.

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

+ Here is the call graph for this function:

◆ purgeQuestions()

ilObjSurveyQuestionPool::purgeQuestions ( )

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

999 {
1000 $ilDB = $this->db;
1002
1003 $result = $ilDB->queryF(
1004 "SELECT question_id FROM svy_question WHERE owner_fi = %s AND tstamp = %s",
1005 array("integer", "integer"),
1006 array($ilUser->getId(), 0)
1007 );
1008 while ($data = $ilDB->fetchAssoc($result)) {
1009 $this->removeQuestion($data["question_id"]);
1010 }
1011 }

References $data, ilObject\$db, $ilDB, $ilUser, $result, $user, and removeQuestion().

+ Here is the call graph for this function:

◆ read()

ilObjSurveyQuestionPool::read ( )

read object data from db into object @access public

Reimplemented from ilObject.

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

107 {
108 parent::read();
109 $this->loadFromDb();
110 }
loadFromDb()
Loads a ilObjQuestionpool object from a database.

References loadFromDb().

+ 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 @access private

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

293 {
294 if ($question_id < 1) {
295 return;
296 }
297 include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
298 $question = &SurveyQuestion::_instanciateQuestion($question_id);
299 $question->delete($question_id);
300 }

References SurveyQuestion\_instanciateQuestion().

Referenced by deleteAllData(), and purgeQuestions().

+ 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.

@access public

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

216 {
218
220
221 $result = $ilDB->queryF(
222 "SELECT * FROM svy_qpl WHERE obj_fi = %s",
223 array('integer'),
224 array($this->getId())
225 );
226 if ($result->numRows() == 1) {
227 $affectedRows = $ilDB->manipulateF(
228 "UPDATE svy_qpl SET isonline = %s, tstamp = %s WHERE obj_fi = %s",
229 array('text','integer','integer'),
230 array($this->getOnline(), time(), $this->getId())
231 );
232 } else {
233 $next_id = $ilDB->nextId('svy_qpl');
234 $query = $ilDB->manipulateF(
235 "INSERT INTO svy_qpl (id_questionpool, isonline, obj_fi, tstamp) VALUES (%s, %s, %s, %s)",
236 array('integer', 'text', 'integer', 'integer'),
237 array($next_id, $this->getOnline(), $this->getId(), time())
238 );
239 }
240 }
update($pash, $contents, Config $config)
$query

References ilObject\$db, $ilDB, $query, $result, ilObject\getId(), getOnline(), and League\Flysystem\Adapter\Polyfill\update().

+ 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 @access public

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

1095 {
1096 $ilDB = $this->db;
1097
1098 foreach ($this->getQuestions() as $question_id) {
1099 $status = (int) (in_array($question_id, $obligatory_questions));
1100
1101 $ilDB->manipulate("UPDATE svy_question" .
1102 " SET obligatory = " . $ilDB->quote($status, "integer") .
1103 " WHERE question_id = " . $ilDB->quote($question_id, "integer"));
1104 }
1105 }

References ilObject\$db, $ilDB, and getQuestions().

+ 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 @access User interface

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

741 {
742 switch ($a_online_status) {
743 case 0:
744 case 1:
745 $this->online = $a_online_status;
746 break;
747 default:
748 $this->online = 0;
749 break;
750 }
751 }

Referenced by loadFromDb().

+ Here is the caller graph for this function:

◆ toXML()

ilObjSurveyQuestionPool::toXML (   $questions)

export questions to xml

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

598 {
599 if (!is_array($questions)) {
600 $questions = &$this->getQuestions();
601 }
602 if (count($questions) == 0) {
603 $questions = &$this->getQuestions();
604 }
605 $xml = "";
606
607 include_once("./Services/Xml/classes/class.ilXmlWriter.php");
608 $a_xml_writer = new ilXmlWriter;
609 // set xml header
610 $a_xml_writer->xmlHeader();
611 $attrs = array(
612 "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
613 "xsi:noNamespaceSchemaLocation" => "http://www.ilias.de/download/xsd/ilias_survey_4_2.xsd"
614 );
615 $a_xml_writer->xmlStartTag("surveyobject", $attrs);
616 $attrs = array(
617 "id" => "qpl_" . $this->getId(),
618 "label" => $this->getTitle(),
619 "online" => $this->getOnline()
620 );
621 $a_xml_writer->xmlStartTag("surveyquestions", $attrs);
622 $a_xml_writer->xmlElement("dummy", null, "dummy");
623 // add ILIAS specific metadata
624 $a_xml_writer->xmlStartTag("metadata");
625 $a_xml_writer->xmlStartTag("metadatafield");
626 $a_xml_writer->xmlElement("fieldlabel", null, "SCORM");
627 include_once "./Services/MetaData/classes/class.ilMD.php";
628 $md = new ilMD($this->getId(), 0, $this->getType());
629 $writer = new ilXmlWriter();
630 $md->toXml($writer);
631 $metadata = $writer->xmlDumpMem();
632 $a_xml_writer->xmlElement("fieldentry", null, $metadata);
633 $a_xml_writer->xmlEndTag("metadatafield");
634 $a_xml_writer->xmlEndTag("metadata");
635
636 $a_xml_writer->xmlEndTag("surveyquestions");
637 $a_xml_writer->xmlEndTag("surveyobject");
638
639 $xml = $a_xml_writer->xmlDumpMem(false);
640
641 $questionxml = "";
642 foreach ($questions as $key => $value) {
643 $questiontype = $this->getQuestiontype($value);
644 include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
645 SurveyQuestion::_includeClass($questiontype);
646 $question = new $questiontype();
647 $question->loadFromDb($value);
648 $questionxml .= $question->toXML(false);
649 }
650
651 $xml = str_replace("<dummy>dummy</dummy>", $questionxml, $xml);
652 return $xml;
653 }
$metadata['__DYNAMIC:1__']
static _includeClass($question_type, $gui=0)
Include the php class file for a given question type.
getTitle()
get object title @access public
XML writer class.
xmlHeader()
Writes xml header @access public.

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

+ Here is the call graph for this function:

◆ update()

ilObjSurveyQuestionPool::update ( )

update object data

@access public

Returns
boolean

Reimplemented from ilObject.

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

91 {
92 $this->updateMetaData();
93 if (!parent::update()) {
94 return false;
95 }
96
97 // put here object specific stuff
98
99 return true;
100 }
updateMetaData()
update meta data entry

References League\Flysystem\Adapter\Polyfill\update(), and ilObject\updateMetaData().

+ Here is the call graph for this function:

Field Documentation

◆ $online

ilObjSurveyQuestionPool::$online

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

Referenced by getOnline().

◆ $plugin_admin

ilObjSurveyQuestionPool::$plugin_admin
protected

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

Referenced by isPluginActive().

◆ $user

ilObjSurveyQuestionPool::$user
protected

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