예제 #1
0
function save_book_structure($response, $book)
{
    $units = isset($response['libros']['libro']['unidades']['unidad']) ? $response['libros']['libro']['unidades']['unidad'] : false;
    // Guarda los datos del libro
    $book->structureforaccess = count($units) > 0 ? 1 : 0;
    $bookid = rcommon_book::add_update($book);
    if (!$bookid) {
        return;
    }
    if ($units) {
        $docleaning = true;
        // If we have no errors, we will clean old units and activities
        $timemodified = time();
        // Time to do the cleaning
        // If is not associtive, it will have only one unit
        if (is_associative_array($units)) {
            $units = array($units);
        }
        foreach ($units as $unit) {
            $actividades = isset($unit['actividades']['actividad']) ? $unit['actividades']['actividad'] : false;
            // Unit with no code detected!
            if (!isset($unit['id']) || empty($unit['id'])) {
                $docleaning = false;
                continue;
            }
            $unitinstance = new stdClass();
            $unitinstance->bookid = $bookid;
            $unitinstance->code = $unit['id'];
            $unitinstance->name = isset($unit['titulo']) ? $unit['titulo'] : "";
            $unitinstance->summary = $unitinstance->name;
            $unitinstance->sortorder = isset($unit['orden']) ? $unit['orden'] : "";
            // echo "<li>Unit: {$unitinstance->name}";
            $unitid = rcommon_unit::add_update($unitinstance);
            if (!$unitid) {
                // Cannot Add/Update Unit
                $docleaning = false;
                continue;
            }
            if ($actividades) {
                // If is not associtive, it will have only one activity
                if (is_associative_array($actividades)) {
                    $actividades = array($actividades);
                }
                foreach ($actividades as $act) {
                    // Activity with no code detected!
                    if (!isset($act['id']) || empty($act['id'])) {
                        $docleaning = false;
                        continue;
                    }
                    $activityinstance = new stdClass();
                    $activityinstance->bookid = $bookid;
                    $activityinstance->unitid = $unitid;
                    $activityinstance->code = $act['id'];
                    $activityinstance->name = isset($act['titulo']) ? $act['titulo'] : "";
                    $activityinstance->summary = $activityinstance->name;
                    $activityinstance->sortorder = isset($act['orden']) ? $act['orden'] : "";
                    $activid = rcommon_activity::add_update($activityinstance);
                    if (!$activid) {
                        // Cannot Add/Update Activity
                        $docleaning = false;
                    }
                }
            }
        }
        if ($docleaning) {
            rcommon_book::clean($bookid, $timemodified);
        }
    }
}