function makeMetaData($class, $json) { $classObject = array(); foreach ($json as $key => $object) { $propery = new stdClass(); $propery->name = $key; $propery->is_collection = false; //$propery->debug = $object; if (is_array($object)) { $propery->type = className($key); $propery->is_collection = true; makeMetaData($key, $object[0]); } elseif (is_numeric($object)) { $propery->type = "NSNumber"; } elseif (is_bool($object)) { $propery->type = "BOOL"; } elseif (is_string($object)) { $propery->type = "NSString"; } else { $propery->type = "NSString"; } $classObject[] = $propery; } addClassToMetaData($class, $classObject); }
function createItemList($itemlist, $depth = 0) { global $blocking; $out = ""; $ident = ""; for ($i = 0; $i < $depth; $i++) { $ident .= " "; } foreach ($itemlist as $item) { $identifier = "I_" . $item['ID']; $out .= $ident . '<item identifier="' . $identifier . '" isvisible="true" '; if ($item['contentType'] != 'LABEL') { $out .= 'identifierref="R_' . $item['ID'] . '" '; } $out .= '>' . "\n"; $out .= $ident . ' <title>' . htmlspecialchars($item['name']) . '</title>' . "\n"; // Check if previous was blocking // not valid for scorm 2004 /* if (!empty($blocking) && ($item['contentType'] != 'LABEL')) { $out .= ' <adlcp:prerequisites type="aicc_script"><![CDATA[I_'.$blocking.']]></adlcp:prerequisites>'."\n"; } */ // Add metadata, except for LABELS if ($item['contentType'] != 'LABEL') { $out .= makeMetaData($item['name'], $item['itemComment'], $identifier); } if (!isset($item['children'])) { // change only if we do not recurse. $blocking = ($item['lock'] == 'CLOSE') ? $item['ID'] : ''; } else { $out .= createItemList($item['children'], $depth + 1); } $out .= $ident . '</item>' . "\n"; } return $out; }