Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}