Example #1
0
 /**
  * Write skill level status
  *
  * @param	int		skill level id
  * @param	int		user id
  * @param	int		status
  */
 static function writeUserSkillLevelStatus($a_level_id, $a_user_id, $a_trigger_ref_id, $a_tref_id = 0, $a_status = ilBasicSkill::ACHIEVED, $a_force = false, $a_self_eval = 0)
 {
     global $ilDB;
     $skill_id = ilBasicSkill::lookupLevelSkillId($a_level_id);
     $trigger_ref_id = $a_trigger_ref_id;
     $trigger_obj_id = ilObject::_lookupObjId($trigger_ref_id);
     $trigger_title = ilObject::_lookupTitle($trigger_obj_id);
     $trigger_type = ilObject::_lookupType($trigger_obj_id);
     $update = false;
     // check whether current skill user level is identical
     // to the one that should be set (-> no change required)
     /*			$ilDB->setLimit(1);
     			$set = $ilDB->query("SELECT status, valid FROM skl_user_skill_level WHERE ".
     				"level_id = ".$ilDB->quote($a_level_id, "integer")." AND ".
     				"user_id = ".$ilDB->quote($a_user_id, "integer")." AND ".
     				"tref_id = ".$ilDB->quote((int) $a_tref_id, "integer")." AND ".
     				"trigger_obj_id = ".$ilDB->quote($trigger_obj_id, "integer")." AND ".
     				"self_eval = ".$ilDB->quote($a_self_eval, "integer").
     				" ORDER BY status_date DESC"
     			);
     			$rec = $ilDB->fetchAssoc($set);
     			if (!$rec["valid"] || $rec["status"] != $a_status)
     			{
     				$save = true;
     			}*/
     if ($a_self_eval) {
         $ilDB->setLimit(1);
         $set = $ilDB->query("SELECT * FROM skl_user_skill_level WHERE " . "skill_id = " . $ilDB->quote($skill_id, "integer") . " AND " . "user_id = " . $ilDB->quote($a_user_id, "integer") . " AND " . "tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") . " AND " . "trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer") . " AND " . "self_eval = " . $ilDB->quote($a_self_eval, "integer") . " ORDER BY status_date DESC");
         $rec = $ilDB->fetchAssoc($set);
         $status_day = substr($rec["status_date"], 0, 10);
         $today = substr(ilUtil::now(), 0, 10);
         if ($rec["valid"] && $rec["status"] == $a_status && $status_day == $today) {
             $update = true;
         }
     }
     if ($update) {
         $now = ilUtil::now();
         $ilDB->manipulate("UPDATE skl_user_skill_level SET " . " level_id = " . $ilDB->quote($a_level_id, "integer") . "," . " status_date = " . $ilDB->quote($now, "timestamp") . " WHERE user_id = " . $ilDB->quote($a_user_id, "integer") . " AND status_date = " . $ilDB->quote($rec["status_date"], "timestamp") . " AND skill_id = " . $ilDB->quote($rec["skill_id"], "integer") . " AND status = " . $ilDB->quote($a_status, "integer") . " AND trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer") . " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") . " AND self_eval = " . $ilDB->quote($a_self_eval, "integer"));
     } else {
         $now = ilUtil::now();
         $ilDB->manipulate("INSERT INTO skl_user_skill_level " . "(level_id, user_id, tref_id, status_date, skill_id, status, valid, trigger_ref_id," . "trigger_obj_id, trigger_obj_type, trigger_title, self_eval) VALUES (" . $ilDB->quote($a_level_id, "integer") . "," . $ilDB->quote($a_user_id, "integer") . "," . $ilDB->quote((int) $a_tref_id, "integer") . "," . $ilDB->quote($now, "timestamp") . "," . $ilDB->quote($skill_id, "integer") . "," . $ilDB->quote($a_status, "integer") . "," . $ilDB->quote(1, "integer") . "," . $ilDB->quote($trigger_ref_id, "integer") . "," . $ilDB->quote($trigger_obj_id, "integer") . "," . $ilDB->quote($trigger_type, "text") . "," . $ilDB->quote($trigger_title, "text") . "," . $ilDB->quote($a_self_eval, "integer") . ")");
     }
     // fix (removed level_id and added skill id, since table should hold only
     // one entry per skill)
     $ilDB->manipulate("DELETE FROM skl_user_has_level WHERE " . " user_id = " . $ilDB->quote($a_user_id, "integer") . " AND skill_id = " . $ilDB->quote($skill_id, "integer") . " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") . " AND trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer") . " AND self_eval = " . $ilDB->quote($a_self_eval, "integer"));
     if ($a_status == ilBasicSkill::ACHIEVED) {
         $ilDB->manipulate("INSERT INTO skl_user_has_level " . "(level_id, user_id, tref_id, status_date, skill_id, trigger_ref_id, trigger_obj_id, trigger_obj_type, trigger_title, self_eval) VALUES (" . $ilDB->quote($a_level_id, "integer") . "," . $ilDB->quote($a_user_id, "integer") . "," . $ilDB->quote($a_tref_id, "integer") . "," . $ilDB->quote($now, "timestamp") . "," . $ilDB->quote($skill_id, "integer") . "," . $ilDB->quote($trigger_ref_id, "integer") . "," . $ilDB->quote($trigger_obj_id, "integer") . "," . $ilDB->quote($trigger_type, "text") . "," . $ilDB->quote($trigger_title, "text") . "," . $ilDB->quote($a_self_eval, "integer") . ")");
     }
 }
 /**
  * Write skill level status
  *
  * @param	int		skill level id
  * @param	int		user id
  * @param	int		status
  */
 static function writeUserSkillLevelStatus($a_level_id, $a_user_id, $a_status = ilBasicSkill::ACHIEVED, $a_force = false)
 {
     global $ilDB;
     $skill_id = ilBasicSkill::lookupLevelSkillId($a_level_id);
     $trigger = ilBasicSkill::lookupLevelTrigger($a_level_id);
     $trigger_ref_id = $trigger["ref_id"];
     $trigger_obj_id = $trigger["obj_id"];
     $trigger_title = ilObject::_lookupTitle($trigger["obj_id"]);
     $save = false;
     if ($a_force) {
         $save = true;
     } else {
         // check whether current skill user level is identical
         // to the one that should be set (-> no change required)
         $ilDB->setLimit(1);
         $set = $ilDB->query("SELECT status, valid FROM skl_user_skill_level WHERE " . "level_id = " . $ilDB->quote($a_level_id, "integer") . " AND " . "user_id = " . $ilDB->quote($a_user_id, "integer") . " ORDER BY status_date DESC");
         $rec = $ilDB->fetchAssoc($set);
         if (!$rec["valid"] || $rec["status"] != $a_status) {
             $save = true;
         }
     }
     if ($save) {
         $now = ilUtil::now();
         $ilDB->manipulate("INSERT INTO skl_user_skill_level " . "(level_id, user_id, status_date, skill_id, status, valid, trigger_ref_id," . "trigger_obj_id, trigger_title) VALUES (" . $ilDB->quote($a_level_id, "integer") . "," . $ilDB->quote($a_user_id, "integer") . "," . $ilDB->quote($now, "timestamp") . "," . $ilDB->quote($skill_id, "integer") . "," . $ilDB->quote($a_status, "integer") . "," . $ilDB->quote(1, "integer") . "," . $ilDB->quote($trigger_ref_id, "integer") . "," . $ilDB->quote($trigger_obj_id, "integer") . "," . $ilDB->quote($trigger_title, "text") . ")");
         $ilDB->manipulate("DELETE FROM skl_user_has_level WHERE " . " user_id = " . $ilDB->quote($a_user_id, "integer") . " AND level_id = " . $ilDB->quote($a_level_id, "integer"));
         if ($a_status == ilBasicSkill::ACHIEVED) {
             $ilDB->manipulate("INSERT INTO skl_user_has_level " . "(level_id, user_id, status_date, skill_id, trigger_ref_id, trigger_obj_id, trigger_title) VALUES (" . $ilDB->quote($a_level_id, "integer") . "," . $ilDB->quote($a_user_id, "integer") . "," . $ilDB->quote($now, "timestamp") . "," . $ilDB->quote($skill_id, "integer") . "," . $ilDB->quote($trigger_ref_id, "integer") . "," . $ilDB->quote($trigger_obj_id, "integer") . "," . $ilDB->quote($trigger_title, "text") . ")");
         }
     }
 }