Puoi modificare solo le due righe:
->where('(library.available_until >=', date("Y-m-d H:i:s"), FALSE)
->or_where("library.available_until = '00-00-00 00:00:00')", NULL, FALSE)
MODIFICA:
Omettendo il FALSE
parametro avrebbe posizionato i backtick prima delle parentesi e li avrebbe resi parte del nome/valore della tabella, rendendo la query inutilizzabile.
Il NULL
parametro è presente solo perché la funzione richiede che il secondo parametro sia un valore e poiché non ne abbiamo uno, inviamo NULL.