query_runner = new QueryRunner( $database ); $this->tables = new Tables( $database->prefix ); $this->posts_table = $database->posts; $this->clock = new SystemClock(); $this->iso_time = new IsoTime(); $this->plain_text = new PlainText(); $this->address_rules = new AddressRules( $home_url ); $this->address_match = new AddressMatch( $this->address_rules ); $this->page_builders = new PageBuilders(); $this->rest_routes = new RestRoutes(); $this->settings_store = new SettingsStore(); $this->scan_state_store = new ScanStateStore(); $this->data_version = new DataVersion(); $this->scheduler_log = new SchedulerLog(); $this->database_health = new DatabaseHealth( $this->query_runner ); $this->link_row_mapper = new LinkRowMapper(); $this->link_presenter = new LinkPresenter( $this->iso_time ); $this->link_lookup = new LinkLookup( $this->query_runner, $this->tables, $this->link_row_mapper ); $this->closest_page_finder = new ClosestPageFinder( $this->query_runner, $this->posts_table ); $this->link_detail_presenter = new LinkDetailPresenter( $this->query_runner, $this->tables, $this->link_presenter, $this->closest_page_finder, $this->plain_text, new PlaceAddress(), $this->page_builders ); $this->post_link_sync = new PostLinkSync( $this->query_runner, $this->tables, new AddressFinder( $this->address_rules, $this->plain_text ), $this->address_rules, $this->settings_store, $this->data_version ); } }