Puede modificar solo las dos líneas:
->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)
EDITAR:
Omitiendo el FALSE
El parámetro habría colocado los acentos graves antes de los corchetes y los convertiría en parte del nombre/valor de la tabla, haciendo que la consulta no se pueda utilizar.
El NULL
El parámetro está ahí solo porque la función requiere que el segundo parámetro sea un valor, y como no tenemos uno, enviamos NULL.