/** * @return Cardwall_RendererPresenter */ private function getPresenter(array $artifact_ids, PFUser $user, $form = null) { $redirect_parameter = 'cardwall[renderer][' . $this->report->id . ']=' . $this->id; $field = $this->getField(); if (!$field) { $board = new Cardwall_Board(array(), new Cardwall_OnTop_Config_ColumnCollection(), new Cardwall_MappingCollection()); } else { $field_provider = new Cardwall_FieldProviders_CustomFieldRetriever($field); $column_preferences = new Cardwall_UserPreferences_Autostack_AutostackRenderer($user, $this->report); $columns = $this->config->getRendererColumns($field, $column_preferences); $column_autostack = new Cardwall_UserPreferences_UserPreferencesAutostackFactory(); $column_autostack->setAutostack($columns, $column_preferences); $display_preferences = new Cardwall_UserPreferences_UserPreferencesDisplayUser(Cardwall_UserPreferences_UserPreferencesDisplayUser::DISPLAY_AVATARS); $mapping_collection = $this->config->getCardwallMappings(array($field->getId() => $field), $columns); $presenter_builder = new Cardwall_CardInCellPresenterBuilder(new Cardwall_CardInCellPresenterFactory($field_provider, $mapping_collection), new Cardwall_CardFields(UserManager::instance(), Tracker_FormElementFactory::instance()), $display_preferences, $user); $swimline_factory = new Cardwall_SwimlineFactory($this->config, $field_provider); $board_builder = new Cardwall_RendererBoardBuilder($presenter_builder, Tracker_ArtifactFactory::instance(), $swimline_factory); $board = $board_builder->getBoard($artifact_ids, $columns, $mapping_collection); } return new Cardwall_RendererPresenter($board, $this->getQrCode(), $redirect_parameter, $field, $form); }