Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit 0b0978b

Browse files
author
Jamie Snape
committed
Revise sizequota module forms and add install script
1 parent f55f80f commit 0b0978b

File tree

26 files changed

+747
-869
lines changed

26 files changed

+747
-869
lines changed

core/constant/core.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@
8282
define('MIDAS_RESOURCE_ASSETSTORE', 5);
8383
define('MIDAS_RESOURCE_COMMUNITY', 6);
8484

85+
define('MIDAS_SIZE_B', 1);
86+
define('MIDAS_SIZE_KB', 1000);
87+
define('MIDAS_SIZE_MB', 1000000);
88+
define('MIDAS_SIZE_GB', 1000000000);
89+
define('MIDAS_SIZE_TB', 1000000000000);
90+
8591
define('MIDAS_TASK_ITEM_THUMBNAIL', 0);
8692

8793
define('MIDAS_USER_PUBLIC', 0);

core/models/base/SettingModelBase.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ abstract public function getDaoByName($name, $module = 'core');
4646
public function getValueByName($name, $module = 'core')
4747
{
4848
$dao = $this->getDaoByName($name, $module);
49-
if ($dao == false) {
49+
if ($dao === false) {
5050
return null;
5151
}
5252

@@ -66,12 +66,12 @@ public function setConfig($name, $value, $module = 'core')
6666
throw new Zend_Exception('Module name is not a string.');
6767
}
6868
$dao = $this->getDaoByName($name, $module);
69-
if ($dao != false && $dao->getValue() == $value) {
69+
if ($dao !== false && $dao->getValue() === $value) {
7070
return;
7171
}
72-
if ($dao != false && $value === null) {
72+
if ($dao !== false && $value === null) {
7373
$this->delete($dao);
74-
} elseif ($dao != false) {
74+
} elseif ($dao !== false) {
7575
$dao->setValue($value);
7676
$this->save($dao);
7777
} else {

core/views/community/manage.phtml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ $this->headScript()->appendFile($this->coreWebroot.'/public/js/jquery/jquery.tab
7777
<?php
7878
foreach ($this->customTabs as $modules) {
7979
foreach ($modules as $name => $url) {
80-
echo "<li><a href='{$this->escape($url)}?communityId={$this->escape($this->communityDao->getKey())}'>{$this->escape($name)}</a></li>";
80+
$query = parse_url($url, PHP_URL_QUERY);
81+
echo '<li><a href="'.$this->escape($url).(is_null($query) ? '?' : '&').'communityId='.$this->escape($this->communityDao->getKey()).'">'.$this->escape($name).'</a></li>';
8182
}
8283
}
8384
?>

modules/sizequota/Notification.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public function getCommunityTab($args)
6161
$moduleWebroot = $fc->getBaseUrl().'/'.$this->moduleName;
6262

6363
return array(
64-
$this->t('Storage Quota') => $moduleWebroot.'/config/folder?folderId='.$community->getFolderId(),
64+
$this->t('Storage Quota') => $moduleWebroot.'/folder/index?folderId='.$community->getFolderId(),
6565
);
6666
}
6767

@@ -81,7 +81,7 @@ public function getUserTab($args)
8181
$moduleWebroot = $fc->getBaseUrl().'/'.$this->moduleName;
8282

8383
return array(
84-
$this->t('Storage Quota') => $moduleWebroot.'/config/folder?folderId='.$user->getFolderId(),
84+
$this->t('Storage Quota') => $moduleWebroot.'/folder/index?folderId='.$user->getFolderId(),
8585
);
8686
} else {
8787
return array();
@@ -122,7 +122,7 @@ public function getExtraHtmlSimple($args)
122122
}
123123
$rootFolder = $folderModel->getRoot($folder);
124124
$quota = $folderQuotaModel->getFolderQuota($rootFolder);
125-
$assetstoreFree = disk_free_space($this->Assetstore->getDefault()->getPath());
125+
$assetstoreFree = UtilityComponent::diskFreeSpace($this->Assetstore->getDefault()->getPath());
126126
if ($quota == '') {
127127
$free = $assetstoreFree;
128128
} else {
@@ -162,7 +162,7 @@ public function getExtraHtmlRevision($args)
162162
} else {
163163
$rootFolder = $folderModel->getRoot($folders[0]);
164164
$quota = $folderQuotaModel->getFolderQuota($rootFolder);
165-
$assetstoreFree = disk_free_space($this->Assetstore->getDefault()->getPath());
165+
$assetstoreFree = UtilityComponent::diskFreeSpace($this->Assetstore->getDefault()->getPath());
166166
if ($quota == '') {
167167
$free = $assetstoreFree;
168168
} else {

modules/sizequota/constant/module.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,17 @@
1818
limitations under the License.
1919
=========================================================================*/
2020

21-
define('MIDAS_USE_DEFAULT_QUOTA', 0);
22-
define('MIDAS_USE_SPECIFIC_QUOTA', 1);
21+
define('MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_KEY', 'defaultuserquota');
22+
define('MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_DEFAULT_VALUE', '');
23+
24+
define('MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_UNIT_KEY', 'default_user_quota_unit');
25+
define('MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_VALUE_KEY', 'default_user_quota_value');
26+
27+
define('MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_KEY', 'defaultcommunityquota');
28+
define('MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_DEFAULT_VALUE', '');
29+
30+
define('MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_UNIT_KEY', 'default_community_quota_unit');
31+
define('MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_VALUE_KEY', 'default_community_quota_value');
32+
33+
define('MIDAS_SIZEQUOTA_USE_DEFAULT_QUOTA', 0);
34+
define('MIDAS_SIZEQUOTA_USE_SPECIFIC_QUOTA', 1);
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
<?php
2+
/*=========================================================================
3+
MIDAS Server
4+
Copyright (c) Kitware SAS. 26 rue Louis Guérin. 69100 Villeurbanne, FRANCE
5+
All rights reserved.
6+
More information http://www.kitware.com
7+
8+
Licensed under the Apache License, Version 2.0 (the "License");
9+
you may not use this file except in compliance with the License.
10+
You may obtain a copy of the License at
11+
12+
http://www.apache.org/licenses/LICENSE-2.0.txt
13+
14+
Unless required by applicable law or agreed to in writing, software
15+
distributed under the License is distributed on an "AS IS" BASIS,
16+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17+
See the License for the specific language governing permissions and
18+
limitations under the License.
19+
=========================================================================*/
20+
21+
/** Admin controller for the sizequota module. */
22+
class Sizequota_AdminController extends Sizequota_AppController
23+
{
24+
/** @var array */
25+
public $_models = array('Setting');
26+
27+
/** Index action */
28+
public function indexAction()
29+
{
30+
$this->requireAdminPrivileges();
31+
32+
$this->view->pageTitle = 'Size Quota Module Configuration';
33+
$form = new Sizequota_Form_Admin();
34+
35+
if ($this->getRequest()->isPost()) {
36+
$data = $this->getRequest()->getPost();
37+
38+
if ($form->isValid($data)) {
39+
$values = $form->getValues();
40+
41+
if (!is_null($values[MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_VALUE_KEY]) && !is_null(MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_UNIT_KEY)) {
42+
if ($values[MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_VALUE_KEY] === '') {
43+
$this->Setting->setConfig(
44+
MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_KEY,
45+
'',
46+
$this->moduleName
47+
);
48+
} else {
49+
$this->Setting->setConfig(
50+
MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_KEY,
51+
round($values[MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_VALUE_KEY] * $values[MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_UNIT_KEY]),
52+
$this->moduleName
53+
);
54+
}
55+
}
56+
57+
if (!is_null($values[MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_VALUE_KEY]) && !is_null(MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_UNIT_KEY)) {
58+
if ($values[MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_VALUE_KEY] === '') {
59+
$this->Setting->setConfig(
60+
MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_KEY,
61+
'',
62+
$this->moduleName
63+
);
64+
} else {
65+
$this->Setting->setConfig(
66+
MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_KEY,
67+
round($values[MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_VALUE_KEY] * $values[MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_UNIT_KEY]),
68+
$this->moduleName
69+
);
70+
}
71+
}
72+
}
73+
74+
$form->populate($data);
75+
} else {
76+
$defaultUserQuota = $this->Setting->getValueByName(MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_KEY, $this->moduleName);
77+
78+
if (!is_null($defaultUserQuota)) {
79+
$defaultUserQuotaValueAndUnit = self::computeQuotaValueAndUnit($defaultUserQuota);
80+
$form->setDefault(MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_VALUE_KEY, $defaultUserQuotaValueAndUnit['value']);
81+
$form->setDefault(MIDAS_SIZEQUOTA_DEFAULT_USER_QUOTA_UNIT_KEY, $defaultUserQuotaValueAndUnit['unit']);
82+
}
83+
84+
$defaultCommunityQuota = $this->Setting->getValueByName(MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_KEY, $this->moduleName);
85+
86+
if (!is_null($defaultCommunityQuota)) {
87+
$defaultCommunityQuotaValueAndUnit = self::computeQuotaValueAndUnit($defaultCommunityQuota);
88+
89+
$form->setDefault(MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_VALUE_KEY, $defaultCommunityQuotaValueAndUnit['value']);
90+
$form->setDefault(MIDAS_SIZEQUOTA_DEFAULT_COMMUNITY_QUOTA_UNIT_KEY, $defaultCommunityQuotaValueAndUnit['unit']);
91+
}
92+
}
93+
94+
$this->view->form = $form;
95+
session_start();
96+
}
97+
98+
/**
99+
* Compute quota value and unit.
100+
*
101+
* @param int|string $bytes
102+
* @return array
103+
*/
104+
protected static function computeQuotaValueAndUnit($bytes)
105+
{
106+
if ($bytes >= MIDAS_SIZE_TB) {
107+
return array('value' => $bytes / MIDAS_SIZE_TB, 'unit' => MIDAS_SIZE_TB);
108+
}
109+
110+
if ($bytes >= MIDAS_SIZE_GB) {
111+
return array('value' => $bytes / MIDAS_SIZE_GB, 'unit' => MIDAS_SIZE_GB);
112+
}
113+
114+
if ($bytes >= MIDAS_SIZE_MB) {
115+
return array('value' => $bytes / MIDAS_SIZE_MB, 'unit' => MIDAS_SIZE_MB);
116+
}
117+
118+
if ($bytes >= MIDAS_SIZE_KB) {
119+
return array('value' => $bytes / MIDAS_SIZE_KB, 'unit' => MIDAS_SIZE_KB);
120+
}
121+
122+
if ($bytes > 0) {
123+
return array('value' => $bytes, 'unit' => MIDAS_SIZE_TB);
124+
}
125+
126+
return array('value' => '', 'unit' => MIDAS_SIZE_MB);
127+
}
128+
}

0 commit comments

Comments
 (0)