-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap.php
More file actions
111 lines (94 loc) · 5.5 KB
/
Copy pathbootstrap.php
File metadata and controls
111 lines (94 loc) · 5.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
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
<?php
use Foolz\FoolFrame\Model\Auth;
use Foolz\FoolFrame\Model\Autoloader;
use Foolz\FoolFrame\Model\Context;
use Foolz\FoolFuuka\Plugins\GeoipRegionLock\Model\GeoipRegionLock;
use Foolz\Plugin\Event;
use Foolz\Plugin\Result;
class HHVM_GeoIpBlock
{
public function run()
{
Event::forge('Foolz\Plugin\Plugin::execute#foolz/foolfuuka-plugin-geoip-region-lock')
->setCall(function(Result $result) {
/* @var $context Context */
$context = $result->getParam('context');
/** @var Autoloader $autoloader */
$autoloader = $context->getService('autoloader');
$autoloader->addClassMap([
'Foolz\FoolFrame\Controller\Admin\Plugins\GeoipRegionLock' => __DIR__.'/classes/controller/admin.php',
'Foolz\FoolFuuka\Plugins\GeoipRegionLock\Model\GeoipRegionLock' =>__DIR__.'/classes/model/geoip_region_lock.php'
]);
Event::forge('Foolz\FoolFrame\Model\Context::handleWeb#obj.afterAuth')
->setCall(function($result) use ($context) {
// don't add the admin panels if the user is not an admin
/** @var Auth $auth */
$auth = $context->getService('auth');
if ($auth->hasAccess('maccess.admin')) {
$context->getRouteCollection()->add(
'foolframe.plugin.geoip_region_lock.admin', new \Symfony\Component\Routing\Route(
'/admin/plugins/geoip_region_lock/{_suffix}',
[
'_suffix' => 'manage',
'_controller' => '\Foolz\FoolFrame\Controller\Admin\Plugins\GeoipRegionLock::manage'
],
[
'_suffix' => '.*'
]
)
);
Event::forge('Foolz\FoolFrame\Controller\Admin::before#var.sidebar')
->setCall(function($result) {
$sidebar = $result->getParam('sidebar');
$sidebar[]['plugins'] = [
"content" => ["geoip_region_lock/manage" => ["level" => "admin", "name" => 'GeoIP Region Lock', "icon" => 'icon-flag']]
];
$result->setParam('sidebar', $sidebar);
});
}
$preferences = $context->getService('preferences');
$context->getContainer()
->register('foolfuuka-plugin.geoip_region_lock', 'Foolz\FoolFuuka\Plugins\GeoipRegionLock\Model\GeoipRegionLock')
->addArgument($context);
/** @var GeoipRegionLock $object */
$object = $context->getService('foolfuuka-plugin.geoip_region_lock');
if (!$auth->hasAccess('maccess.mod') && !($preferences->get('foolfuuka.plugins.geoip_region_lock.allow_logged_in') && $auth->hasAccess('access.user'))) {
Event::forge('Foolz\FoolFrame\Model\Context::handleWeb#obj.response')
->setCall(function(Result $result) use ($context, $object) {
$object->blockCountryView($result);
})
->setPriority(2);
Event::forge('Foolz\FoolFuuka\Model\CommentInsert::insert#call.beforeMethod')
->setCall(function(Result $result) use ($context, $object) {
$object->blockCountryComment($result);
})
->setPriority(4);
}
});
Event::forge('Foolz\FoolFuuka\Model\RadixCollection::structure#var.structure')
->setCall(function(Result $result){
$structure = $result->getParam('structure');
$structure['plugin_geo_ip_region_lock_allow_comment'] = [
'database' => true,
'boards_preferences' => true,
'type' => 'input',
'class' => 'span3',
'label' => 'Nations allowed to post comments',
'help' => _i('Comma separated list of GeoIP 2-letter nation codes.'),
'default_value' => false
];
$structure['plugin_geo_ip_region_lock_disallow_comment'] = [
'database' => true,
'boards_preferences' => true,
'type' => 'input',
'class' => 'span3',
'label' => 'Nations disallowed to post comments',
'help' => _i('Comma separated list of GeoIP 2-letter nation codes.'),
'default_value' => false
];
$result->setParam('structure', $structure)->set($structure);
})->setPriority(8);
});
}
}
(new HHVM_GeoIpBlock())->run();