function get_books_structure_publisher($publisher, $isbn = false) { global $OUTPUT; set_time_limit(0); $books = get_books($publisher); try { if (!empty($books)) { // Fix bug, when there is just one received book if (!is_array($books) || !isset($books[0])) { $books = array($books); } echo '<ol>'; foreach ($books as $book) { // Disable scorm import $bookformat = core_text::strtolower($book['formato']); if (!in_array($bookformat, rcommon_book::$allowedformats)) { continue; } $codisbn = $book['isbn']; // Si se ha especificado un isbn guarda el libro if (!$isbn || $codisbn == $isbn) { $message = 'ISBN: ' . $codisbn; // Obtiene los datos del indice del libro try { $instance = new StdClass(); $instance->isbn = $codisbn; $instance->name = $book['titulo']; $instance->summary = $book['titulo']; $instance->format = $bookformat; $instance->levelid = isset($book['nivel']) ? $book['nivel'] : false; $instance->publisherid = $publisher->id; rcommon_book::add_update($instance); get_book_structure($publisher, $codisbn); echo '<li>' . $OUTPUT->notification($message, 'notifysuccess') . '</li>'; } catch (Exception $e) { $message .= " - Error: " . $e->getMessage(); echo '<li>' . $OUTPUT->notification($message) . '</li>'; } } } echo '</ol>'; return true; } else { echo get_string('nobooks', 'local_rcommon'); return true; } } catch (Exception $fault) { $message = rcommon_ws_error('get_books_structure_publisher', $fault->getMessage()); throw new Exception($message); } return false; }
function valid_activity($resultext, $book, $rcontentactivityid, $unidadid) { global $CFG, $DB; require_once $CFG->dirroot . '/local/rcommon/WebServices/BooksStructure.php'; $actividad = false; try { // Busco la actividad por actividadid del rcontent, cuando no hay que ForzarGuardar if ($rcontentactivityid != 0 && !isForzarGuardar($resultext)) { $actividad = rcommon_activity::get($rcontentactivityid); // If rcontent has a specific activity error if you come from or are not equal ws if ($actividad && (!isset($resultext->idActividad) || $actividad->code != $resultext->idActividad)) { return false; } } // Search the activity from the WS if (isset($resultext->idActividad) && !empty($resultext->idActividad)) { // Buscamos la unidad por codigo if (!$actividad) { $actividad = rcommon_activity::get_from_code($resultext->idActividad, $unidadid, $book->id); } if ($book->structureforaccess == 1) { // Just update if no isset unit/actividad title or no isset unit/activity order $update = $actividad && (empty($activitat->name) && !empty($resultext->ActividadTitulo) || empty($activitat->sortorder) && !empty($resultext->ActividadOrden)); // Si no se ha encontrado la unidad o se ha encontrado pero cambia el nombre o orden llamamos al ws if (!$actividad || $update) { $publisher = rcommon_publisher::get($book->publisherid); get_book_structure($publisher, $book->isbn); // Obtengo los nuevos datos de la actividad if (!$actividad) { $actividad = rcommon_activity::get_from_code($resultext->idActividad, $unidadid, $book->id); } } } // Activity not found, error raised if (!$actividad) { log_to_file("wsSeguimiento: function valid_activity - Activity not found. Activitycode: {$resultext->idActividad} Unitid: {$unidadid} Bookid: {$book->id}"); return false; } return $actividad; } } catch (Exception $e) { log_to_file("wsSeguimiento: function valid_activity - Exception = " . $e->getMessage()); return false; } // No activity found but not specified return true; }