ILIAS  Release_3_10_x_branch Revision 61812
 All Data Structures Namespaces Files Functions Variables Groups 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.
 create ($a_upload=false)
 create question pool object
 update ()
 update object data
 read ($a_force_db=false)
 read object data from db into object
 cloneObject ($a_target_id, $a_copy_id=0)
 Creates a 1:1 copy of the object and places the copy in a given repository.
createQuestion ($question_type, $question_id=-1)
 copyQuestion ($question_id, $questionpool_to)
 Copies a question into another question pool.
 loadFromDb ()
 Loads a ilObjQuestionpool object from a database.
 saveToDb ()
 Saves a ilObjSurveyQuestionPool object to a database.
 delete ()
 delete object and all related data
 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.
 getTitle ()
 get title of survey question pool object
 setTitle ($a_title)
 set title of survey question pool object
 removeQuestion ($question_id)
 Removes a question from the question pool.
 getQuestiontype ($question_id)
 Returns the question type of a question with a given id.
 isInUse ($question_id)
 Checks if a question is in use by a survey.
 paste ($question_id)
 Pastes a question in the question pool.
getQuestionsInfo ($question_array)
 Retrieves the datase entries for questions from a given array.
 duplicateQuestion ($question_id, $obj_id="")
 Duplicates a question for a questionpool.
 getQuestionsTable ($sort, $sortorder, $filter_text, $sel_filter_type, $startrow=0)
 Calculates the data for the output of the questionpool.
 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)
 getExportDirectory ()
 get export directory of survey
 getExportFiles ($dir)
 get export files
 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)
 getImportDirectory ()
 get import directory of survey
 toXML ($questions)
 export questions to xml
getQuestions ()
 importObject ($source, $spl_exists=FALSE)
 Imports survey questions into ILIAS.
 setOnline ($a_online_status)
 Sets the questionpool online status.
 getOnline ()
 _lookupOnline ($a_obj_id)
 _isWriteable ($object_id, $user_id)
 Returns true, if the question pool is writeable by a given user.
_getQuestiontypes ()
 Creates a list of all available question types.
_getAvailableQuestionpools ($use_object_id=FALSE, $could_be_offline=FALSE, $showPath=FALSE, $permission="read")
 Returns the available question pools for the active user.
 isPluginActive ($a_pname)
 Checks wheather or not a question plugin with a given name is active.
- Public Member Functions inherited from ilObject
 ilObject ($a_id=0, $a_reference=true)
 Constructor public.
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not)
 getId ()
 get object id public
 setId ($a_id)
 set object id public
 setRefId ($a_id)
 set reference id public
 getRefId ()
 get reference id public
 getType ()
 get object type public
 setType ($a_type)
 set object type public
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions
 getUntranslatedTitle ()
 get untranslated object title public
 getDescription ()
 get object description
 setDescription ($a_desc)
 set object description
 getLongDescription ()
 get object long description (stored in object_description)
 getImportId ()
 get import id
 setImportId ($a_import_id)
 set import id
 _lookupObjIdByImportId ($a_import_id)
 getOwner ()
 get object owner
 getOwnerName ()
 _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id
 setOwner ($a_owner)
 set object owner
 getCreateDate ()
 get create date public
 getLastUpdateDate ()
 get last update date public
 setObjDataRecord ($a_record)
 set object_data record (note: this method should only be called from the ilObjectFactory class)
 create ()
 create
 MDUpdateListener ($a_element)
 Meta data update listener.
 createMetaData ()
 create meta data entry
 updateMetaData ()
 update meta data entry
 deleteMetaData ()
 delete meta data entry
 updateOwner ()
 update owner of object in db
 _getIdForImportId ($a_import_id)
 get current object id for import id (static)
 _getAllReferences ($a_id)
 get all reference ids of object
 _lookupTitle ($a_id)
 lookup object title
 _lookupDescription ($a_id)
 lookup object description
 _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update
 _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects.
 _lookupObjId ($a_id)
 _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree
 _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes
 _writeTitle ($a_obj_id, $a_title)
 write title to db (static)
 _writeDescription ($a_obj_id, $a_desc)
 write description to db (static)
 _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static)
 _lookupType ($a_id, $a_reference=false)
 lookup object type
 _isInTrash ($a_ref_id)
 checks wether object is in trash
 _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash
 _lookupObjectId ($a_ref_id)
 lookup object id
 _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!?
 setPermissions ($a_parent_ref)
 set permissions of object
 createReference ()
 creates reference for object
 countReferences ()
 count references of object
 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
 createRoleFolder ()
 creates a local role folder
 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.
 cloneDependencies ($a_target_id, $a_copy_id)
 Clone object dependencies.
 cloneMetaData ($target_obj)
 Copy meta data.

Data Fields

 $online
- Data Fields inherited from ilObject
 $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

Additional Inherited Members

- Static Public Member Functions inherited from ilObject
static _getIdsForTitle ($title, $type= '')
 _exists ($a_id, $a_reference=false)
 checks if an object exists in object_data
static _getObjectsByType ($a_obj_type="")
 Get objects by type.
static _prepareCloneSelection ($a_ref_ids, $new_type)
 Prepare copy wizard object selection.
static _getIcon ($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)

Detailed Description

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

Member Function Documentation

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

Returns the available question pools for the active user.

Returns the available question pools for the active user

Returns
array The available question pools public

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

References $result, ilObject\$title, ilUtil\_getObjectsByOperations(), and ilObject\_prepareCloneSelection().

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

{
global $ilUser;
global $ilDB;
$result_array = array();
$qpls = ilUtil::_getObjectsByOperations("spl", $permission, $ilUser->getId(), -1);
$titles = ilObject::_prepareCloneSelection($qpls, "spl");
if (count($qpls))
{
$query = "";
if ($could_be_offline)
{
$query = sprintf("SELECT object_data.*, object_reference.ref_id FROM object_data, object_reference, survey_questionpool WHERE object_data.obj_id = object_reference.obj_id AND object_reference.ref_id IN ('%s') AND survey_questionpool.obj_fi = object_data.obj_id ORDER BY object_data.title",
implode("','", $qpls)
);
}
else
{
$query = sprintf("SELECT object_data.*, object_reference.ref_id FROM object_data, object_reference, survey_questionpool WHERE object_data.obj_id = object_reference.obj_id AND object_reference.ref_id IN ('%s') AND survey_questionpool.online = '1' AND survey_questionpool.obj_fi = object_data.obj_id ORDER BY object_data.title",
implode("','", $qpls)
);
}
$result = $ilDB->query($query);
while ($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))
{
$title = (($showPath) ? $titles[$row["ref_id"]] : $row["title"]);
if ($use_object_id)
{
$result_array[$row["obj_id"]] = $title;
}
else
{
$result_array[$row["ref_id"]] = $title;
}
}
}
return $result_array;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

& ilObjSurveyQuestionPool::_getQuestiontypes ( )

Creates a list of all available question types.

Creates a list of all available question types

Returns
array An array containing the available questiontypes public

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

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

Referenced by ilObjSurveyGUI\browseForQuestionsObject(), and ilObjSurveyGUI\questionsObject().

{
global $ilDB;
global $lng;
$lng->loadLanguageModule("survey");
$types = array();
$query = "SELECT * FROM survey_questiontype ORDER BY type_tag";
$query_result = $ilDB->query($query);
while ($row = $query_result->fetchRow(MDB2_FETCHMODE_ASSOC))
{
//array_push($questiontypes, $row["type_tag"]);
if ($row["plugin"] == 0)
{
$types[$lng->txt($row["type_tag"])] = $row;
}
else
{
global $ilPluginAdmin;
$pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, "SurveyQuestionPool", "svyq");
foreach ($pl_names as $pl_name)
{
$pl = ilPlugin::getPluginObject(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $pl_name);
if (strcmp($pl->getQuestionType(), $row["type_tag"]) == 0)
{
$types[$pl->getQuestionTypeTranslation()] = $row;
}
}
}
}
ksort($types);
return $types;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjSurveyQuestionPool::_isWriteable (   $object_id,
  $user_id 
)

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

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

References $result, and ilObject\_hasUntrashedReference().

{
global $rbacsystem;
global $ilDB;
$result_array = array();
$query = sprintf("SELECT object_data.*, object_data.obj_id, object_reference.ref_id FROM object_data, object_reference WHERE object_data.obj_id = object_reference.obj_id AND object_data.obj_id = %s",
$ilDB->quote($object_id . "")
);
$result = $ilDB->query($query);
while ($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))
{
include_once "./classes/class.ilObject.php";
if ($rbacsystem->checkAccess("write", $row["ref_id"]) && (ilObject::_hasUntrashedReference($row["obj_id"])))
{
return true;
}
}
return false;
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::_lookupOnline (   $a_obj_id)

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

References $result.

Referenced by ilObjSurveyQuestionPoolListGUI\getProperties().

{
global $ilDB;
$query = sprintf("SELECT online FROM survey_questionpool WHERE obj_fi = %s",
$ilDB->quote($a_obj_id . "")
);
$result = $ilDB->query($query);
if ($result->numRows() == 1)
{
$row = $result->fetchRow(MDB2_FETCHMODE_ASSOC);
return $row["online"];
}
return 0;
}

+ Here is the caller graph for this function:

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.

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

public

Reimplemented from ilObject.

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

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

{
global $ilLog;
$newObj = parent::cloneObject($a_target_id,$a_copy_id);
$newObj->setOnline($this->getOnline());
$newObj->saveToDb();
// clone the questions in the question pool
$questions =& $this->getQuestions();
foreach ($questions as $question_id)
{
$newObj->copyQuestion($question_id, $newObj->getId());
}
// clone meta data
include_once "./Services/MetaData/classes/class.ilMD.php";
$md = new ilMD($this->getId(),0,$this->getType());
$new_md =& $md->cloneMD($newObj->getId(),0,$newObj->getType());
// update the metadata with the new title of the question pool
$newObj->updateMetaData();
return $newObj;
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::copyQuestion (   $question_id,
  $questionpool_to 
)

Copies a question into another question pool.

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

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

{
$question_gui =& $this->createQuestion("", $question_id);
if ($question_gui->object->getObjId() == $questionpool_to)
{
// the question is copied into the same question pool
$this->duplicateQuestion($question_id);
}
else
{
// the question is copied into another question pool
$newtitle = $question_gui->object->getTitle();
if ($question_gui->object->questionTitleExists($question_gui->object->getTitle(), $questionpool_to))
{
$counter = 2;
while ($question_gui->object->questionTitleExists($question_gui->object->getTitle() . " ($counter)", $questionpool_to))
{
$counter++;
}
$newtitle = $question_gui->object->getTitle() . " ($counter)";
}
$question_gui->object->copyObject($this->getId(), $newtitle);
}
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::create (   $a_upload = false)

create question pool object

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

References ilObject\create(), and ilObject\createMetaData().

{
if(!$a_upload)
{
$this->createMetaData();
}
}

+ Here is the call graph for this function:

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

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

{
include_once "./Services/Utilities/classes/class.ilUtil.php";
$spl_data_dir = ilUtil::getDataDir()."/spl_data";
ilUtil::makeDir($spl_data_dir);
if(!is_writable($spl_data_dir))
{
$this->ilias->raiseError("Survey Questionpool Data Directory (".$spl_data_dir
.") not writeable.",$this->ilias->error_obj->FATAL);
}
// create learning module directory (data_dir/lm_data/lm_<id>)
$spl_dir = $spl_data_dir."/spl_".$this->getId();
ilUtil::makeDir($spl_dir);
if(!@is_dir($spl_dir))
{
$this->ilias->raiseError("Creation of Survey Questionpool Directory failed.",$this->ilias->error_obj->FATAL);
}
// create Export subdirectory (data_dir/lm_data/lm_<id>/Export)
$export_dir = $spl_dir."/export";
ilUtil::makeDir($export_dir);
if(!@is_dir($export_dir))
{
$this->ilias->raiseError("Creation of Export Directory failed.",$this->ilias->error_obj->FATAL);
}
}

+ Here is the call graph for this function:

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

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

{
include_once "./Services/Utilities/classes/class.ilUtil.php";
$spl_data_dir = ilUtil::getDataDir()."/spl_data";
ilUtil::makeDir($spl_data_dir);
if(!is_writable($spl_data_dir))
{
$this->ilias->raiseError("Survey Questionpool Data Directory (".$spl_data_dir
.") not writeable.",$this->ilias->error_obj->FATAL);
}
// create test directory (data_dir/spl_data/spl_<id>)
$spl_dir = $spl_data_dir."/spl_".$this->getId();
ilUtil::makeDir($spl_dir);
if(!@is_dir($spl_dir))
{
$this->ilias->raiseError("Creation of Survey Questionpool Directory failed.",$this->ilias->error_obj->FATAL);
}
// create import subdirectory (data_dir/spl_data/spl_<id>/import)
$import_dir = $spl_dir."/import";
ilUtil::makeDir($import_dir);
if(!@is_dir($import_dir))
{
$this->ilias->raiseError("Creation of Import Directory failed.",$this->ilias->error_obj->FATAL);
}
}

+ Here is the call graph for this function:

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

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

References getQuestiontype().

Referenced by copyQuestion().

{
if ((!$question_type) and ($question_id > 0))
{
$question_type = $this->getQuestiontype($question_id);
}
include_once "./Modules/SurveyQuestionPool/classes/class.".$question_type."GUI.php";
$question_type_gui = $question_type . "GUI";
$question =& new $question_type_gui();
if ($question_id > 0)
{
$question->object->loadFromDb($question_id);
}
return $question;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Reimplemented from ilObject.

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

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

{
$remove = parent::delete();
// always call parent delete function first!!
if (!$remove)
{
return false;
}
// delete all related questions
$this->deleteAllData();
// delete meta data
$this->deleteMetaData();
return true;
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::deleteAllData ( )

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

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

Referenced by delete().

{
$query = sprintf("SELECT question_id FROM survey_question WHERE obj_fi = %s AND original_id IS NULL",
$this->ilias->db->quote($this->getId())
);
$result = $this->ilias->db->query($query);
$found_questions = array();
while ($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))
{
$this->removeQuestion($row["question_id"]);
}
// delete export files
include_once "./Services/Utilities/classes/class.ilUtil.php";
$spl_data_dir = ilUtil::getDataDir()."/spl_data";
$directory = $spl_data_dir."/spl_".$this->getId();
if (is_dir($directory))
{
include_once "./Services/Utilities/classes/class.ilUtil.php";
ilUtil::delDir($directory);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Duplicates a question for a questionpool.

Duplicates a question for a questionpool

Parameters
integer$question_idThe database id of the question public

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

References SurveyQuestion\_instanciateQuestion().

Referenced by copyQuestion(), and paste().

{
global $ilUser;
include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
$question = SurveyQuestion::_instanciateQuestion($question_id);
$suffix = "";
$counter = 1;
while ($question->questionTitleExists($question->getTitle().$suffix, $obj_id))
{
$counter++;
if ($counter > 1) $suffix = " ($counter)";
}
if ($obj_id)
{
$question->setObjId($obj_id);
}
$question->duplicate(false, $question->getTitle() . $suffix, $ilUser->fullname, $ilUser->id);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjSurveyQuestionPool::getExportDirectory ( )

get export directory of survey

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

References ilUtil\getDataDir().

{
include_once "./Services/Utilities/classes/class.ilUtil.php";
$export_dir = ilUtil::getDataDir()."/spl_data"."/spl_".$this->getId()."/export";
return $export_dir;
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::getExportFiles (   $dir)

get export files

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

References $dir, and $file.

{
// quit if import dir not available
if (!@is_dir($dir) or
!is_writeable($dir))
{
return array();
}
// open directory
$dir = dir($dir);
// initialize array
$file = array();
// get files and save the in the array
while ($entry = $dir->read())
{
if ($entry != "." and
$entry != ".." and
substr($entry, -4) == ".xml" and
ereg("^[0-9]{10}_{2}[0-9]+_{2}(spl__)*[0-9]+\.xml\$", $entry))
{
$file[] = $entry;
}
}
// close import directory
$dir->close();
// sort files
sort ($file);
reset ($file);
return $file;
}
ilObjSurveyQuestionPool::getImportDirectory ( )

get import directory of survey

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

References ilUtil\getDataDir().

{
include_once "./Services/Utilities/classes/class.ilUtil.php";
$import_dir = ilUtil::getDataDir()."/spl_data".
"/spl_".$this->getId()."/import";
if(@is_dir($import_dir))
{
return $import_dir;
}
else
{
return false;
}
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::getOnline ( )

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

References $online.

Referenced by cloneObject().

{
if (strcmp($this->online, "") == 0) $this->online = "0";
return $this->online;
}

+ Here is the caller graph for this function:

& ilObjSurveyQuestionPool::getQuestions ( )

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

References $result.

Referenced by cloneObject(), and toXML().

{
$questions = array();
$query = sprintf("SELECT question_id FROM survey_question WHERE obj_fi = %s AND ISNULL(original_id)",
$this->ilias->db->quote($this->getId() . "")
);
$result = $this->ilias->db->query($query);
if ($result->numRows())
{
while ($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))
{
array_push($questions, $row["question_id"]);
}
}
return $questions;
}

+ Here is the caller graph for this function:

& ilObjSurveyQuestionPool::getQuestionsInfo (   $question_array)

Retrieves the datase entries for questions from a given 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 479 of file class.ilObjSurveyQuestionPool.php.

References $result, and isPluginActive().

{
$result_array = array();
$query = sprintf("SELECT survey_question.*, survey_questiontype.type_tag, survey_questiontype.plugin FROM survey_question, survey_questiontype WHERE survey_question.questiontype_fi = survey_questiontype.questiontype_id AND survey_question.question_id IN ('%s')",
join($question_array, "','")
);
$result = $this->ilias->db->query($query);
while ($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))
{
if ($row["plugin"])
{
if ($this->isPluginActive($row["type_tag"]))
{
array_push($result_array, $row);
}
}
else
{
array_push($result_array, $row);
}
}
return $result_array;
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::getQuestionsTable (   $sort,
  $sortorder,
  $filter_text,
  $sel_filter_type,
  $startrow = 0 
)

Calculates the data for the output of the questionpool.

Calculates the data for the output of the questionpool

public

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

References ilObject\getId(), ilUtil\getImagePath(), and isPluginActive().

{
global $ilUser;
$where = "";
if (strlen($filter_text) > 0)
{
switch($sel_filter_type)
{
case "title":
$where = " AND survey_question.title LIKE " . $this->ilias->db->quote("%" . $filter_text . "%");
break;
case "description":
$where = " AND survey_question.description LIKE " . $this->ilias->db->quote("%" . $filter_text . "%");
break;
case "author":
$where = " AND survey_question.author LIKE " . $this->ilias->db->quote("%" . $filter_text . "%");
break;
}
}
// build sort order for sql query
$order = "";
$images = array();
include_once "./Services/Utilities/classes/class.ilUtil.php";
switch ($sort)
{
case "title":
$order = " ORDER BY title $sortorder";
$images["title"] = " <img src=\"" . ilUtil::getImagePath(strtolower($sortorder) . "_order.gif") . "\" alt=\"" . strtolower($sortorder) . "ending order\" />";
break;
case "description":
$order = " ORDER BY description $sortorder";
$images["description"] = " <img src=\"" . ilUtil::getImagePath(strtolower($sortorder) . "_order.gif") . "\" alt=\"" . strtolower($sortorder) . "ending order\" />";
break;
case "type":
$order = " ORDER BY questiontype_id $sortorder";
$images["type"] = " <img src=\"" . ilUtil::getImagePath(strtolower($sortorder) . "_order.gif") . "\" alt=\"" . strtolower($sortorder) . "ending order\" />";
break;
case "author":
$order = " ORDER BY author $sortorder";
$images["author"] = " <img src=\"" . ilUtil::getImagePath(strtolower($sortorder) . "_order.gif") . "\" alt=\"" . strtolower($sortorder) . "ending order\" />";
break;
case "created":
$order = " ORDER BY created $sortorder";
$images["created"] = " <img src=\"" . ilUtil::getImagePath(strtolower($sortorder) . "_order.gif") . "\" alt=\"" . strtolower($sortorder) . "ending order\" />";
break;
case "updated":
$order = " ORDER BY timestamp14 $sortorder";
$images["updated"] = " <img src=\"" . ilUtil::getImagePath(strtolower($sortorder) . "_order.gif") . "\" alt=\"" . strtolower($sortorder) . "ending order\" />";
break;
}
$maxentries = $ilUser->prefs["hits_per_page"];
if ($maxentries < 1)
{
$maxentries = 9999;
}
$query = "SELECT survey_question.question_id, survey_question.TIMESTAMP + 0 AS timestamp14 FROM survey_question, survey_questiontype WHERE survey_question.questiontype_fi = survey_questiontype.questiontype_id AND survey_question.obj_fi = " . $this->getId() . " AND ISNULL(survey_question.original_id) $where$order$limit";
$query_result = $this->ilias->db->query($query);
$max = $query_result->numRows();
if ($startrow > $max -1)
{
$startrow = $max - ($max % $maxentries);
}
else if ($startrow < 0)
{
$startrow = 0;
}
$limit = " LIMIT $startrow, $maxentries";
$query = "SELECT survey_question.*, survey_question.TIMESTAMP + 0 AS timestamp14, survey_questiontype.type_tag, survey_questiontype.plugin FROM survey_question, survey_questiontype WHERE survey_question.questiontype_fi = survey_questiontype.questiontype_id AND survey_question.obj_fi = " . $this->getId() . " AND ISNULL(survey_question.original_id) $where$order$limit";
$query_result = $this->ilias->db->query($query);
$rows = array();
if ($query_result->numRows())
{
while ($row = $query_result->fetchRow(MDB2_FETCHMODE_ASSOC))
{
if ($row["plugin"])
{
if ($this->isPluginActive($row["type_tag"]))
{
array_push($rows, $row);
}
}
else
{
array_push($rows, $row);
}
}
}
$nextrow = $startrow + $maxentries;
if ($nextrow > $max - 1)
{
$nextrow = $startrow;
}
$prevrow = $startrow - $maxentries;
if ($prevrow < 0)
{
$prevrow = 0;
}
return array(
"rows" => $rows,
"images" => $images,
"startrow" => $startrow,
"nextrow" => $nextrow,
"prevrow" => $prevrow,
"step" => $maxentries,
"rowcount" => $max
);
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::getQuestiontype (   $question_id)

Returns the question type of a question with a given 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 405 of file class.ilObjSurveyQuestionPool.php.

References $data, and $result.

Referenced by createQuestion(), and toXML().

{
if ($question_id < 1) return;
$query = sprintf("SELECT survey_questiontype.type_tag FROM survey_question, survey_questiontype WHERE survey_question.questiontype_fi = survey_questiontype.questiontype_id AND survey_question.question_id = %s",
$this->ilias->db->quote($question_id)
);
$result = $this->ilias->db->query($query);
if ($result->numRows() == 1)
{
$data = $result->fetchRow(MDB2_FETCHMODE_OBJECT);
return $data->type_tag;
} else {
return;
}
}

+ Here is the caller graph for this function:

ilObjSurveyQuestionPool::getTitle ( )

get title of survey question pool object

Returns
string title

Reimplemented from ilObject.

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

Referenced by toXML().

{
//return $this->title;
return parent::getTitle();
}

+ Here is the caller graph for this function:

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

References ilObject\ilObject().

{
$this->type = "spl";
$this->ilObject($a_id,$a_call_by_reference);
}

+ Here is the call graph for this function:

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

Imports survey questions into ILIAS.

Imports survey questions into ILIAS

Parameters
string$sourceThe filename of an XML import file public

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

{
if (is_file($source))
{
$fh = fopen($source, "r") or die("");
$xml = fread($fh, filesize($source));
fclose($fh) or die("");
if (strpos($xml, "questestinterop") > 0)
{
// survey questions for ILIAS < 3.8
include_once "./Services/Survey/classes/class.SurveyImportParserPre38.php";
$import = new SurveyImportParserPre38($this, "", $spl_exists);
$import->setXMLContent($xml);
$import->startParsing();
}
else
{
// survey questions for ILIAS >= 3.8
include_once "./Services/Survey/classes/class.SurveyImportParser.php";
$import = new SurveyImportParser($this, "", $spl_exists);
$import->setXMLContent($xml);
$import->startParsing();
}
}
}
ilObjSurveyQuestionPool::isInUse (   $question_id)

Checks if a question is in use by a survey.

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

References $result.

{
// check out the already answered questions
$query = sprintf("SELECT answer_id FROM survey_answer WHERE question_fi = %s",
$this->ilias->db->quote($question_id)
);
$result = $this->ilias->db->query($query);
$answered = $result->numRows();
// check out the questions inserted in surveys
$query = sprintf("SELECT survey_survey.* FROM survey_survey, survey_survey_question WHERE survey_survey_question.survey_fi = survey_survey.survey_id AND survey_survey_question.question_fi = %s",
$this->ilias->db->quote($question_id)
);
$result = $this->ilias->db->query($query);
$inserted = $result->numRows();
if (($inserted + $answered) == 0)
{
return false;
}
$result_array = array();
while ($row = $result->fetchRow(MDB2_FETCHMODE_OBJECT))
{
array_push($result_array, $row);
}
return $result_array;
}
ilObjSurveyQuestionPool::isPluginActive (   $a_pname)

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

Parameters
string$a_pnameThe plugin name public

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

References IL_COMP_MODULE.

Referenced by getQuestionsInfo(), and getQuestionsTable().

{
global $ilPluginAdmin;
if ($ilPluginAdmin->isActive(IL_COMP_MODULE, "SurveyQuestionPool", "svyq", $a_pname))
{
return TRUE;
}
else
{
return FALSE;
}
}

+ Here is the caller graph for this function:

ilObjSurveyQuestionPool::loadFromDb ( )

Loads a ilObjQuestionpool object from a database.

Loads a ilObjQuestionpool object from a database

public

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

References $result, and setOnline().

Referenced by read().

{
global $ilDB;
$query = sprintf("SELECT * FROM survey_questionpool WHERE obj_fi = %s",
$ilDB->quote($this->getId() . "")
);
$result = $ilDB->query($query);
if ($result->numRows() == 1)
{
$row = $result->fetchRow(MDB2_FETCHMODE_ASSOC);
$this->setOnline($row["online"]);
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Reimplemented from ilObject.

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

References $_GET, and ilObject\getType().

{
global $tree;
switch ($a_event)
{
case "link":
//var_dump("<pre>",$a_params,"</pre>");
//echo "Module name ".$this->getRefId()." triggered by link event. Objects linked into target object ref_id: ".$a_ref_id;
//exit;
break;
case "cut":
//echo "Module name ".$this->getRefId()." triggered by cut event. Objects are removed from target object ref_id: ".$a_ref_id;
//exit;
break;
case "copy":
//var_dump("<pre>",$a_params,"</pre>");
//echo "Module name ".$this->getRefId()." triggered by copy event. Objects are copied into target object ref_id: ".$a_ref_id;
//exit;
break;
case "paste":
//echo "Module name ".$this->getRefId()." triggered by paste (cut) event. Objects are pasted into target object ref_id: ".$a_ref_id;
//exit;
break;
case "new":
//echo "Module name ".$this->getRefId()." triggered by paste (new) event. Objects are applied to target object ref_id: ".$a_ref_id;
//exit;
break;
}
// At the beginning of the recursive process it avoids second call of the notify function with the same parameter
if ($a_node_id==$_GET["ref_id"])
{
$parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
$parent_type = $parent_obj->getType();
if($parent_type == $this->getType())
{
$a_node_id = (int) $tree->getParentId($a_node_id);
}
}
parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::paste (   $question_id)

Pastes a question in the question pool.

Pastes a question in the question pool

Parameters
integer$question_idThe database id of the question public

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

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

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

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::read (   $a_force_db = false)

read object data from db into object

Parameters
booleanpublic

Reimplemented from ilObject.

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

References loadFromDb().

{
parent::read($a_force_db);
$this->loadFromDb();
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::removeQuestion (   $question_id)

Removes a question from the question pool.

Removes a question from the question pool

Parameters
integer$question_idThe database id of the question private

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

References SurveyQuestion\_instanciateQuestion().

Referenced by deleteAllData().

{
if ($question_id < 1) return;
include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
$question =& SurveyQuestion::_instanciateQuestion($question_id);
$question->delete($question_id);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilObjSurveyQuestionPool::saveToDb ( )

Saves a ilObjSurveyQuestionPool object to a database.

Saves a ilObjSurveyQuestionPool object to a database

public

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

References ilObject\$ilias, and $result.

{
global $ilDB;
$query = sprintf("SELECT * FROM survey_questionpool WHERE obj_fi = %s",
$ilDB->quote($this->getId() . "")
);
$result = $ilDB->query($query);
if ($result->numRows() == 1)
{
$query = sprintf("UPDATE survey_questionpool SET online = %s WHERE obj_fi = %s",
$ilDB->quote($this->getOnline() . ""),
$ilDB->quote($this->getId() . "")
);
$result = $ilDB->query($query);
if (PEAR::isError($result))
{
global $ilias;
$ilias->raiseError($result->getMessage());
}
}
else
{
$query = sprintf("INSERT INTO survey_questionpool (online, obj_fi) VALUES (%s, %s)",
$ilDB->quote($this->getOnline() . ""),
$ilDB->quote($this->getId() . "")
);
$result = $ilDB->query($query);
if (PEAR::isError($result))
{
global $ilias;
$ilias->raiseError($result->getMessage());
}
}
}
ilObjSurveyQuestionPool::setOnline (   $a_online_status)

Sets the questionpool online status.

Sets the questionpool online status

Parameters
integer$a_online_statusOnline status of the questionpool
See Also
online Public

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

Referenced by loadFromDb().

{
switch ($a_online_status)
{
case 0:
case 1:
$this->online = $a_online_status;
break;
default:
$this->online = 0;
break;
}
}

+ Here is the caller graph for this function:

ilObjSurveyQuestionPool::setTitle (   $a_title)

set title of survey question pool object

Reimplemented from ilObject.

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

{
parent::setTitle($a_title);
}
ilObjSurveyQuestionPool::toXML (   $questions)

export questions to xml

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

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

{
if (!is_array($questions))
{
$questions =& $this->getQuestions();
}
if (count($questions) == 0)
{
$questions =& $this->getQuestions();
}
$xml = "";
include_once("./classes/class.ilXmlWriter.php");
$a_xml_writer = new ilXmlWriter;
// set xml header
$a_xml_writer->xmlHeader();
$attrs = array(
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xsi:noNamespaceSchemaLocation" => "http://www.ilias.de/download/xsd/ilias_survey_3_8.xsd"
);
$a_xml_writer->xmlStartTag("surveyobject", $attrs);
$attrs = array(
"id" => "qpl_" . $this->getId(),
"label" => $this->getTitle()
);
$a_xml_writer->xmlStartTag("surveyquestions", $attrs);
$a_xml_writer->xmlElement("dummy", NULL, "dummy");
// add ILIAS specific metadata
$a_xml_writer->xmlStartTag("metadata");
$a_xml_writer->xmlStartTag("metadatafield");
$a_xml_writer->xmlElement("fieldlabel", NULL, "SCORM");
include_once "./Services/MetaData/classes/class.ilMD.php";
$md = new ilMD($this->getId(),0, $this->getType());
$writer = new ilXmlWriter();
$md->toXml($writer);
$metadata = $writer->xmlDumpMem();
$a_xml_writer->xmlElement("fieldentry", NULL, $metadata);
$a_xml_writer->xmlEndTag("metadatafield");
$a_xml_writer->xmlEndTag("metadata");
$a_xml_writer->xmlEndTag("surveyquestions");
$a_xml_writer->xmlEndTag("surveyobject");
$xml = $a_xml_writer->xmlDumpMem(FALSE);
$questionxml = "";
foreach ($questions as $key => $value)
{
$questiontype = $this->getQuestiontype($value);
include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
$question = new $questiontype();
$question->loadFromDb($value);
$questionxml .= $question->toXML(false);
}
$xml = str_replace("<dummy>dummy</dummy>", $questionxml, $xml);
return $xml;
}

+ Here is the call graph for this function:

ilObjSurveyQuestionPool::update ( )

update object data

public

Returns
boolean

Reimplemented from ilObject.

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

References ilObject\updateMetaData().

{
$this->updateMetaData();
if (!parent::update())
{
return false;
}
// put here object specific stuff
return true;
}

+ Here is the call graph for this function:

Field Documentation

ilObjSurveyQuestionPool::$online

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

Referenced by getOnline().


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