I am exploring how CMS's in PHP work. I am talking about full-powered, fully developed CMS's like Drupal, Wordpress, and Joomla. What are the main components and systems that are incorporated into something like this.
For example; I know you will need a page loader to handle all page requests (direct all requests to index.php using the .htaccess file), you will need a database class, a templating class, and a hook system to provide user extendability. What else am I missing?
(Also, is there a book that explains the working components of a full-fledged CMS?)