36                 $this->errorText=array();
 
   37                 $this->coursefiles=array();
 
   45                 $suffixes=array_merge($this->requiredFiles,$this->optionalFiles);
 
   47                 foreach ($files as 
$file) {
 
   48                         foreach($suffixes as $suffix) {
 
   49                                 if (strcasecmp(substr($file, -(strlen($suffix)+1)), 
".".$suffix)==0)
 
   50                                         $this->coursefiles[$suffix] = 
$file;    
 
   55                 $missingFiles = array_diff ($this->requiredFiles, array_keys($this->coursefiles));
 
   56                 if (count($missingFiles)==4)
 
   57                         $this->errorText[]=
"Missing all required files.<br>You want to check if your learning module is of a different type.";
 
   58                 else if (count($missingFiles)>0)
 
   59                         $this->errorText[]=
"Missing required file(s): ".implode(
"<bR>", $missingFiles);
 
   65                 foreach ($this->coursefiles as $suffix=>
$filename) {
 
   77                 foreach ($this->data[
"des"] as 
$row) {
 
   78                         if (strcasecmp ($row[
"system_id"],$system_id)==0)
 
   90                 $requiredKeys=array(
"system_id", 
"type", 
"command_line", 
"file_name",
 
   91                                                                                                 "max_score", 
"mastery_score", 
"max_time_allowed",
 
   92                                                                                                 "time_limit_action", 
"system_vendor", 
"core_vendor",
 
   93                                                                                                 "web_launch", 
"au_password");
 
   98                 $requiredKeys=array(
"system_id", 
"title", 
"description", 
"developer_id");
 
  103                 $requiredKeys=array(
"course_creator", 
"course_id", 
"course_system", 
"course_title",
 
  104                                                                                                  "level", 
"max_fields_cst", 
"total_aus", 
"total_blocks", 
"version");
 
  105                 $this->
checkCourseFile(
"crs", $this->data[
"crs"], $requiredKeys, 
"course");
 
  106                 $requiredKeys=array(
"max_normal");
 
  107                 $this->
checkCourseFile(
"crs", $this->data[
"crs"], $requiredKeys, 
"course_behavior");
 
  110                 $requiredKeys=array(
"block", 
"member");
 
  119                 if (count(
$data)>0 && is_array(
$data[$group])) {
 
  121                         $keys=array_keys(
$data[$group]);
 
  123                         $missingKeys = array_diff ($requiredKeys, $keys);
 
  124                         $optionalKeys = array_diff ($keys, $requiredKeys);
 
  126                         if (count($missingKeys)>0)
 
  127                                 $this->errorText[]=
"missing keys in ".strtoupper($fileSuffix).
"-File: ".implode(
",", $missingKeys);
 
  129                 } 
else if (count(
$data)>0 && !is_array(
$data[$group])) {
 
  130                         $this->errorText[]=
"missing Group in ".strtoupper($fileSuffix).
"-File: $group";
 
  132                         $this->errorText[]=
"empty ".strtoupper($fileSuffix).
"-File";
 
  138                 if (count(
$data)>0) {
 
  140                         for ($colnr=0;$colnr<count(
$data);$colnr++) {
 
  142                                         $colcount=count(
$data[$colnr]);
 
  143                                 else if ($colcount!=count(
$data[$colnr]))
 
  144                                         $this->errorText[]=strtoupper($fileSuffix).
"-File: unexpected number of columns in line ".($colnr+2);
 
  152                 $max=$this->data[crs][course][max_fields_cst];
 
  154                         $value=$this->data[cst][
$row][member];
 
  155                         if ((is_array($value) && count($value)>$max) || (!is_array($value) && $max==1)) {
 
  156                                 $this->errorText[]=
"CRS-File: max_fields_cst does not match number of fields in the CST-File";
 
  174                 for($i=0;$i<count($lines);$i++) {
 
  175                         if (trim($lines[$i])==
"[Course_Description]") {
 
  176                                 for ($i++;$i<count($lines);$i++) {
 
  177                                         if (strlen(trim($lines[$i]))>0) {
 
  178                                                 $data[
"Course_Description"][description]=$lines[$i];
 
  191                 while ((
$data = fgetcsv($handle, 1000, 
",")) !== FALSE) {
 
  194                         } 
else if (count(
$data)>1) {
 
  196                                 for ($col=0; $col<count(
$data); $col++) {
 
  197                                         if (array_key_exists($header[$col], $data2)) {
 
  198                                                 $value=$data2[$header[$col]];
 
  199                                                 if (!is_array($value))
 
  200                                                         $data2[$header[$col]]=array($value, utf8_encode(
$data[$col]));
 
  202                                                         $data2[$header[$col]][]=utf8_encode(
$data[$col]);
 
  204                                                 $data2[$header[$col]]=utf8_encode(
$data[$col]);
 
  214                 if (substr($dir, -1)!=
"/")
 
  217                 $handle=opendir($dir); 
 
  218                 while (
$file = readdir ($handle)) { 
 
  220                         if (is_dir($dir.$file))
 
  231                 $arr=array_change_key_case($arr, CASE_LOWER);
 
  232                 foreach ($arr as $k=>$v) {
 
  240                 include_once(
"./Modules/ScormAicc/classes/AICC/class.ilAICCTree.php");
 
  241                 include_once(
"./Modules/ScormAicc/classes/AICC/class.ilAICCCourse.php");
 
  242                 include_once(
"./Modules/ScormAicc/classes/AICC/class.ilAICCUnit.php");
 
  243                 include_once(
"./Modules/ScormAicc/classes/AICC/class.ilAICCBlock.php");
 
  247                 $course->setALMId($alm_id);
 
  248                 $course->setSystemId(
"root");
 
  249                 $course->setTitle($this->data[
"crs"][
"course"][
"course_title"]);
 
  250                 $course->setDescription($this->data[
"crs"][
"course_description"][
"description"]);
 
  252                 $course->setCourseCreator($this->data[
"crs"][
"course"][
"course_creator"]);
 
  253                 $course->setCourseId($this->data[
"crs"][
"course"][
"course_id"]);
 
  254                 $course->setCourseSystem($this->data[
"crs"][
"course"][
"course_system"]);
 
  255                 $course->setCourseTitle($this->data[
"crs"][
"course"][
"course_title"]);
 
  256                 $course->setLevel($this->data[
"crs"][
"course"][
"level"]);
 
  257                 $course->setMaxFieldsCst($this->data[
"crs"][
"course"][
"max_fields_cst"]);
 
  258                 $course->setMaxFieldsOrt($this->data[
"crs"][
"course"][
"max_fields_ort"]);
 
  259                 $course->setTotalAUs($this->data[
"crs"][
"course"][
"total_aus"]);
 
  260                 $course->setTotalBlocks($this->data[
"crs"][
"course"][
"total_blocks"]);
 
  261                 $course->setTotalComplexObj($this->data[
"crs"][
"course"][
"total_complex_obj"]);
 
  262                 $course->setTotalObjectives($this->data[
"crs"][
"course"][
"total_objectives"]);
 
  263                 $course->setVersion($this->data[
"crs"][
"course"][
"version"]);
 
  264                 $course->setMaxNormal($this->data[
"crs"][
"course_behavior"][
"max_normal"]);
 
  265                 $course->setDescription($this->data[
"crs"][
"course_description"][
"description"]);
 
  267                 $identifier[
"root"]=$course->getId();
 
  270                 foreach ($this->data[
"cst"] as 
$row) {
 
  271                         $system_id=strtolower($row[
"block"]);
 
  272                         if ($system_id!=
"root") {
 
  275                                 $unit->setALMId($alm_id);
 
  276                                 $unit->setType(
"sbl");
 
  277                                 $unit->setTitle($description[
"title"]);
 
  278                                 $unit->setDescription($description[
"description"]);
 
  279                                 $unit->setDeveloperId($description[
"developer_id"]);
 
  280                                 $unit->setSystemId($description[
"system_id"]);
 
  282                                 $identifier[$system_id]=$unit->getId();
 
  287                 foreach ($this->data[
"au"] as $row) {
 
  288                         $sysid=strtolower($row[
"system_id"]);
 
  291                         $unit->setAUType($row[
"c_type"]);
 
  292                         $unit->setCommand_line($row[
"command_line"]);
 
  293                         $unit->setMaxTimeAllowed($row[
"max_time_allowed"]);
 
  294                         $unit->setTimeLimitAction($row[
"time_limit_action"]);
 
  295                         $unit->setMaxScore($row[
"max_score"]);
 
  296                         $unit->setCoreVendor($row[
"core_vendor"]);
 
  297                         $unit->setSystemVendor($row[
"system_vendor"]);
 
  298                         $unit->setFilename($row[
"file_name"]);
 
  299                         $unit->setMasteryScore($row[
"mastery_score"]);
 
  300                         $unit->setWebLaunch($row[
"web_launch"]);
 
  301                         $unit->setAUPassword($row[
"au_password"]);
 
  304                         $unit->setALMId($alm_id);
 
  305                         $unit->setType(
"sau");
 
  306                         $unit->setTitle($description[
"title"]);
 
  307                         $unit->setDescription($description[
"description"]);
 
  308                         $unit->setDeveloperId($description[
"developer_id"]);
 
  309                         $unit->setSystemId($description[
"system_id"]);
 
  311                         $identifier[$sysid]=$unit->getId();     
 
  316                 $tree->addTree($alm_id, $identifier[
"root"]);
 
  319                 foreach ($this->data[
"cst"] as $row) {
 
  320                         $members=$row[
"member"];
 
  321                         if (!is_array($members))
 
  322                                 $members=array($members);
 
  323                         $parentid=$identifier[strtolower($row[
"block"])];
 
  325                         foreach($members as $member) {
 
  326                                 $memberid=$identifier[strtolower($member)];
 
  327                                 $tree->insertNode($memberid, $parentid);