proposition for minor restructuring of base.php and book.php as included
and thoughts about the configuration page.

- splitting off the Page class from base.php to a separate file to lighten base.php and since you're already mostly using a 1 object/class = 1 file approach for the major objects/classes

- taking the search part out of the getJson function in book.php and convert it to a standalone function placed in base php (afterall, it is basic functionality where getJson is intended to output json structures. that the search happens to return its result as a json structure is only fortunate.

- Another thing which needs to be looked at is the configuration page, I've not yet tried it myself, still thinking about the best approach. As long as there's only a few settings exposed it won't be much of an issue, but if control over new functionality ever makes it way into the exposed configuration options, the PageCustomize function will become a rather laborious and difficult to maintain construction and it is already scoring bad marks as it is. Considering that the whole functionality of cops centers around json structures, the first solution I was thinking of was to create a json structure of the configurable settings together with required type of html object and feed that to a php file to merge with a html template. Whether or not that makes it more manageable and improve its review score is something I cannot assess at this point. Would actually need to have a working prototype to get comparison date.