Skip to content

Commit d2795ca

Browse files
committed
added admin controller and config options
1 parent 710b7b7 commit d2795ca

File tree

3 files changed

+151
-16
lines changed

3 files changed

+151
-16
lines changed

bootstrap.php

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,71 @@ public static function run()
1515
/** @var Autoloader $autoloader */
1616
$autoloader = $context->getService('autoloader');
1717
$autoloader->addClassMap([
18+
'Foolz\Foolframe\Controller\Admin\Plugins\WebM' => __DIR__.'/classes/controller/admin.php',
1819
'Foolz\Foolfuuka\Plugins\UploadWebM\Model\WebM' => __DIR__.'/classes/model/webm.php'
1920
]);
2021

2122
$context->getContainer()
2223
->register('foolfuuka-plugin.upload_webm', 'Foolz\Foolfuuka\Plugins\UploadWebM\Model\WebM')
2324
->addArgument($context);
2425

25-
Event::forge('Foolz\Foolfuuka\Model\Media::upload.config')
26-
->setCall('Foolz\Foolfuuka\Plugins\UploadWebM\Model\WebM::updateConfig')
27-
->setPriority(1);
26+
Event::forge('Foolz\Foolframe\Model\Context.handleWeb.has_auth')
27+
->setCall(function ($object) use ($context) {
28+
if ($context->getService('auth')->hasAccess('maccess.admin')) {
29+
$context->getRouteCollection()->add(
30+
'foolfuuka.plugin.upload_webm.admin',
31+
new \Symfony\Component\Routing\Route(
32+
'/admin/plugins/webm/{_suffix}',
33+
[
34+
'_suffix' => 'manage',
35+
'_controller' => 'Foolz\Foolframe\Controller\Admin\Plugins\WebM::manage'
36+
],
37+
[
38+
'_suffix' => '.*'
39+
]
40+
)
41+
);
2842

29-
Event::forge('Foolz\Foolfuuka\Model\Media::insert.result.media_data')
30-
->setCall('Foolz\Foolfuuka\Plugins\UploadWebM\Model\WebM::processMedia')
31-
->setPriority(1);
43+
Event::forge('Foolz\Foolframe\Controller\Admin.before.sidebar.add')
44+
->setCall(function ($object) {
45+
$sidebar = $object->getParam('sidebar');
46+
$sidebar[]['plugins'] = [
47+
'content' => [
48+
'webm/manage' => [
49+
'level' => 'admin',
50+
'name' => 'WebM Preferences',
51+
'icon' => 'icon-file'
52+
]
53+
]
54+
];
55+
$object->setParam('sidebar', $sidebar);
56+
});
57+
}
58+
});
3259

33-
Event::forge('Foolz\Foolfuuka\Model\Media::insert.result.create_thumbnail')
34-
->setCall('Foolz\Foolfuuka\Plugins\UploadWebM\Model\WebM::processThumb')
35-
->setPriority(1);
60+
$auth = $context->getService('auth');
61+
$pref = $context->getService('preferences');
62+
63+
if (
64+
$auth->hasAccess('maccess.admin')
65+
|| ($auth->hasAccess('maccess.mod') && $pref->get('foolfuuka.plugins.upload_webm.allow_mods'))
66+
|| $pref->get('foolfuuka.plugins.upload_webm.allow_users')
67+
) {
68+
Event::forge('Foolz\Foolfuuka\Model\Media::upload.config')
69+
->setCall(function ($object) use ($context) {
70+
$context->getService('foolfuuka-plugin.upload_webm')->updateConfig($object);
71+
});
72+
73+
Event::forge('Foolz\Foolfuuka\Model\Media::insert.result.media_data')
74+
->setCall(function ($object) use ($context) {
75+
$context->getService('foolfuuka-plugin.upload_webm')->processMedia($object);
76+
});
77+
78+
Event::forge('Foolz\Foolfuuka\Model\Media::insert.result.create_thumbnail')
79+
->setCall(function ($object) use ($context) {
80+
$context->getService('foolfuuka-plugin.upload_webm')->processThumb($object);
81+
});
82+
}
3683
});
3784
}
3885
}

classes/controller/admin.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
namespace Foolz\Foolframe\Controller\Admin\Plugins;
4+
5+
use Foolz\Foolframe\Model\Validation\ActiveConstraint\Trim;
6+
use Symfony\Component\HttpFoundation\Request;
7+
use Symfony\Component\HttpFoundation\Response;
8+
9+
class WebM extends \Foolz\Foolframe\Controller\Admin
10+
{
11+
public function before()
12+
{
13+
parent::before();
14+
15+
$this->param_manager->setParam('controller_title', 'WebM Preferences');
16+
}
17+
18+
public function security()
19+
{
20+
return $this->getAuth()->hasAccess('maccess.admin');
21+
}
22+
23+
function structure()
24+
{
25+
return [
26+
'open' => [
27+
'type' => 'open'
28+
],
29+
'foolfuuka.plugins.upload_webm.binary_path' => [
30+
'preferences' => true,
31+
'type' => 'input',
32+
'label' => _i('The path to ffmpeg/avconv binary.'),
33+
'class' => 'span3',
34+
'validation' => [new Trim()]
35+
],
36+
'foolfuuka.plugins.upload_webm.allow_mods' => [
37+
'preferences' => true,
38+
'type' => 'checkbox',
39+
'help' => _i('Allow Moderators to upload WebM files.')
40+
],
41+
'foolfuuka.plugins.upload_webm.allow_users' => [
42+
'preferences' => true,
43+
'type' => 'checkbox',
44+
'help' => _i('Allow Users to upload WebM files.')
45+
],
46+
'submit' => [
47+
'type' => 'submit',
48+
'class' => 'btn-primary',
49+
'value' => _i('Submit')
50+
],
51+
'close' => [
52+
'type' => 'close'
53+
],
54+
];
55+
}
56+
57+
function action_manage()
58+
{
59+
$this->param_manager->setParam('method_title', 'Manage');
60+
61+
$data['form'] = $this->structure();
62+
63+
$this->preferences->submit_auto($this->getRequest(), $data['form'], $this->getPost());
64+
65+
$this->builder->createPartial('body', 'form_creator')
66+
->getParamManager()->setParams($data);
67+
68+
return new Response($this->builder->build());
69+
}
70+
}

classes/model/webm.php

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,25 @@
22

33
namespace Foolz\Foolfuuka\Plugins\UploadWebM\Model;
44

5-
class WebM
5+
use Foolz\Foolframe\Model\Context;
6+
use Foolz\Foolframe\Model\Model;
7+
use Foolz\Foolframe\Model\Preferences;
8+
9+
class WebM extends Model
610
{
7-
public static function updateConfig($object)
11+
/**
12+
* @var Preferences
13+
*/
14+
protected $preferences;
15+
16+
public function __construct(Context $context)
17+
{
18+
parent::__construct($context);
19+
20+
$this->preferences = $context->getService('preferences');
21+
}
22+
23+
public function updateConfig($object)
824
{
925
$extensions = $object->getParam('ext_whitelist');
1026
$mime_types = $object->getParam('mime_whitelist');
@@ -16,17 +32,19 @@ public static function updateConfig($object)
1632
$object->setParam('mime_whitelist', $mime_types);
1733
}
1834

19-
public static function processMedia($object)
35+
public function processMedia($object)
2036
{
2137
if ($object->getParam('dimensions') === false && $object->getParam('file')->getMimeType() == 'video/webm') {
22-
exec('/usr/local/bin/ffmpeg -i '.$object->getParam('path').' -vframes 1 '.$object->getParam('path').'.png');
38+
if ($this->preferences->get('foolfuuka.plugins.upload_webm.binary_path')) {
39+
exec($this->preferences->get('foolfuuka.plugins.upload_webm.binary_path').' -i '.$object->getParam('path').' -vframes 1 '.$object->getParam('path').'.png');
2340

24-
$object->setParam('dimensions', getimagesize($object->getParam('path').'.png'));
25-
$object->setParam('preview_orig', $object->getParam('time').'s.png');
41+
$object->setParam('dimensions', getimagesize($object->getParam('path').'.png'));
42+
$object->setParam('preview_orig', $object->getParam('time').'s.png');
43+
}
2644
}
2745
}
2846

29-
public static function processThumb($object)
47+
public function processThumb($object)
3048
{
3149
if ($object->getParam('media')->getMimeType() == 'video/webm') {
3250
exec($object->getParam('exec') .

0 commit comments

Comments
 (0)