-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReviewsProvider.php
More file actions
68 lines (56 loc) · 2.5 KB
/
ReviewsProvider.php
File metadata and controls
68 lines (56 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
/***************************************************************************
* *
* Copyright (c) 2004 Simbirsk Technologies Ltd. All rights reserved. *
* *
* This is commercial software, only users who have purchased a valid *
* license and accept to the terms of the License Agreement can install *
* and use this program. *
* *
****************************************************************************
* PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. *
****************************************************************************/
use Core\ReviewsProviders\BaseReviewsProvider;
use Core\ReviewsProviders\DefaultReviewsProvider;
if (!defined('AREA') ) { die('Access denied'); }
class ReviewsProvider
{
private static $default_review_provider = null;
public static function getDefaultProvider()
{
if (self::$default_review_provider === null) {
self::$default_review_provider = new DefaultReviewsProvider();
}
return self::$default_review_provider;
}
/**
* @param array $engine_data
* @param bool $check_required
*
* @return BaseReviewsProvider|null
*/
public static function load(array $engine_data, bool $check_required = false): ?BaseReviewsProvider
{
if (empty($engine_data['reviews_provider'])) {
throw new RuntimeException(self::makeErrorMessage(__METHOD__, 'Empty reviews_provider'));
}
$classname = self::getClassname($engine_data['reviews_provider']);
if (!class_exists($classname)) {
throw new RuntimeException(self::makeErrorMessage(__METHOD__, "Review class does not exist: {$classname}"));
}
$engine_data['bypass_required_data'] = empty($check_required);
return new $classname($engine_data);
}
protected static function makeErrorMessage($method, $message)
{
return sprintf("In %s: %s", $method, $message);
}
public static function getClassname(string $providerName): string
{
return sprintf(
"Core\\ReviewsProviders\\%s",
implode('', array_map('ucfirst', explode('_', $providerName)))
);
}
}