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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<?php
namespace ServiceProvider;
use Core\Paginator;
use Core\OAuth2;
use Model\Config;
use Model\Project;
use Model\Webhook;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
use League\HTMLToMarkdown\HtmlConverter;
class ClassProvider implements ServiceProviderInterface
{
private $classes = array(
'Model' => array(
'Acl',
'Action',
'Authentication',
'Board',
'Budget',
'Category',
'Color',
'Comment',
'Config',
'Currency',
'DateParser',
'File',
'HourlyRate',
'LastLogin',
'Link',
'Notification',
'Project',
'ProjectActivity',
'ProjectAnalytic',
'ProjectDuplication',
'ProjectDailyColumnStats',
'ProjectDailyStats',
'ProjectIntegration',
'ProjectPermission',
'Subtask',
'SubtaskExport',
'SubtaskForecast',
'SubtaskTimeTracking',
'Swimlane',
'Task',
'TaskAnalytic',
'TaskCreation',
'TaskDuplication',
'TaskExport',
'TaskFinder',
'TaskFilter',
'TaskLink',
'TaskModification',
'TaskPermission',
'TaskPosition',
'TaskStatus',
'TaskValidator',
'Timetable',
'TimetableDay',
'TimetableExtra',
'TimetableWeek',
'TimetableOff',
'Transition',
'User',
'UserSession',
'Webhook',
),
'Core' => array(
'EmailClient',
'Helper',
'HttpClient',
'Lexer',
'MemoryCache',
'Request',
'Router',
'Session',
'Template',
),
'Integration' => array(
'BitbucketWebhook',
'GithubWebhook',
'GitlabWebhook',
'HipchatWebhook',
'Jabber',
'Mailgun',
'Postmark',
'Sendgrid',
'SlackWebhook',
'Smtp',
)
);
public function register(Container $container)
{
foreach ($this->classes as $namespace => $classes) {
foreach ($classes as $name) {
$class = '\\'.$namespace.'\\'.$name;
$container[lcfirst($name)] = function ($c) use ($class) {
return new $class($c);
};
}
}
$container['paginator'] = $container->factory(function ($c) {
return new Paginator($c);
});
$container['oauth'] = $container->factory(function ($c) {
return new OAuth2($c);
});
$container['htmlConverter'] = function($c) {
return new HtmlConverter(array('strip_tags' => true));
};
}
}
|