MDL-65313 core_favourite: add component-scoped favourite service class
[moodle.git] / favourites / classes / service_factory.php
CommitLineData
77105132
JD
1<?php
2// This file is part of Moodle - http://moodle.org/
3//
4// Moodle is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// Moodle is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16/**
0551ed35 17 * Contains the service_factory, a locator for services for the favourites subsystem.
77105132
JD
18 *
19 * Services encapsulate the business logic, and any data manipulation code, and are what clients should interact with.
20 *
21 * @package core_favourites
22 * @copyright 2018 Jake Dallimore <jrhdallimore@gmail.com>
23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 */
25namespace core_favourites;
26
27defined('MOODLE_INTERNAL') || die();
28
29/**
0551ed35 30 * Class service_factory, providing functions for location of service objects for the favourites subsystem.
77105132
JD
31 *
32 * This class is responsible for providing service objects to clients only.
33 *
34 * @copyright 2018 Jake Dallimore <jrhdallimore@gmail.com>
35 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36 */
0551ed35 37class service_factory {
77105132
JD
38
39 /**
40 * Returns a basic service object providing operations for user favourites.
41 *
42 * @param \context_user $context the context of the user to which the service should be scoped.
0551ed35 43 * @return \core_favourites\local\service\user_favourite_service the service object.
77105132 44 */
0551ed35
JD
45 public static function get_service_for_user_context(\context_user $context) : local\service\user_favourite_service {
46 return new local\service\user_favourite_service($context, new local\repository\favourite_repository());
77105132 47 }
f962859b
JD
48
49 /**
50 * Returns a basic service object providing operations for favourites belonging to a given component.
51 *
52 * @param string $component frankenstyle component name.
53 * @return local\service\component_favourite_service the service object.
54 */
55 public static function get_service_for_component(string $component) : local\service\component_favourite_service {
56 return new local\service\component_favourite_service($component, new local\repository\favourite_repository());
57 }
77105132
JD
58}
59