Skip to content

Commit 917995f

Browse files
getRecordSetItems performance optimization
1 parent 639f679 commit 917995f

27 files changed

Lines changed: 44 additions & 10358 deletions

.gitignoree renamed to .gitignore

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public/assets/*
55
!public/assets/.protected/.gitkeep
66
!public/assets/.protected/.htaccess
77
!public/assets/.htaccess
8-
public/_resources/vendor/
8+
public/_resources/*
99
.env
1010
tmp/*
1111
!tmp/.gitkeep
@@ -14,5 +14,3 @@ silverstripe-cache/*
1414
.DS_Store
1515
.gitmodules
1616
nbproject/
17-
18-

everydatastore/src/Extension/MemberExtension.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ public function updateCMSFields(FieldList $fields) {
168168
}
169169

170170
$Avatar = UploadField::create('Avatar', _t($this->owner->ClassName . '.AVATAR', 'Avatars'));
171-
//$Avatar->setAllowedExtensions(['png,jpg,jpeg']);
172171
$Avatar->setAllowedMaxFileNumber(1);
173172
$fields->addFieldToTab('Root.' . _t('Global.AVATAR', 'Avatar'), $Avatar, 'Active');
174173

everydatastore/src/Helper/AssetHelper.php

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,41 +32,48 @@ class AssetHelper extends EveryDataStoreHelper {
3232
public static function createFolder($folderName, $parentFolder = null) {
3333
$member = self::getMember();
3434
if ($member) {
35-
$Folder = $parentFolder ? Folder::find_or_make(strtolower($parentFolder->Filename . '/' . $folderName)) : Folder::find_or_make(strtolower($folderName));
36-
if ($Folder) {
37-
$AdministratorsGroup = Group::get()->filter(array('Title' => 'Administrators'))->First();
38-
$editorGroups = $member->CurrentDataStore()->Groups()->filter(array(
35+
$folder = $parentFolder ? Folder::find_or_make(strtolower($parentFolder->Filename . '/' . $folderName)) : Folder::find_or_make(strtolower($folderName));
36+
if ($folder) {
37+
self::setAssetPermissions($folder);
38+
return $folder;
39+
}
40+
}
41+
}
42+
43+
/**
44+
* Sets permissions for folder
45+
* @param DataObject $folder
46+
*/
47+
public static function setAssetPermissions($asset){
48+
$administratorsGroup = Group::get()->filter(array('Title' => 'Administrators'))->First();
49+
$editorGroups = self::getCurrentDataStore()->Groups()->filter(array(
3950
'Permissions.Code' => array('CREATE_FILE', 'EDIT_FILE', 'VIEW_FILE', 'DELETE_FILE')
4051
));
4152

4253
if ($editorGroups) {
43-
$Folder->CanEditType = 'OnlyTheseUsers';
54+
$asset->CanEditType = 'OnlyTheseUsers';
4455
foreach ($editorGroups as $editorGroup) {
45-
$Folder->EditorGroups()->add($editorGroup);
56+
$asset->EditorGroups()->add($editorGroup);
4657
}
4758
}
4859

49-
$viewerGroups = $member->CurrentDataStore()->Groups()->filter(array(
60+
$viewerGroups = self::getCurrentDataStore()->Groups()->filter(array(
5061
'Permissions.Code' => array('VIEW_FILE')
5162
));
5263

5364
if ($viewerGroups) {
54-
$Folder->CanViewType = 'OnlyTheseUsers';
65+
$asset->CanViewType = 'OnlyTheseUsers';
5566
foreach ($viewerGroups as $viewerGroup) {
56-
$Folder->ViewerGroups()->add($viewerGroup);
67+
$asset->ViewerGroups()->add($viewerGroup);
5768
}
5869
}
5970

60-
if ($AdministratorsGroup) {
61-
$Folder->EditorGroups()->add($AdministratorsGroup);
62-
$Folder->ViewerGroups()->add($AdministratorsGroup);
71+
if ($administratorsGroup) {
72+
$asset->EditorGroups()->add($administratorsGroup);
73+
$asset->ViewerGroups()->add($administratorsGroup);
6374
}
64-
65-
return $Folder;
66-
}
67-
}
6875
}
69-
76+
7077
/**
7178
* This function inspects if folder exists
7279
* @param integer $folderID
@@ -169,6 +176,7 @@ public static function createFileFromLocale($fileObject, $localFilePath, $output
169176
}
170177

171178

179+
172180
/**
173181
* This function creates file hash
174182
* @param string $path

everydatastore/src/Helper/RecordSetItemDataHelper.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use EveryDataStore\Helper\EveryDataStoreHelper;
66
use EveryDataStore\Model\RecordSet\RecordSetItem;
77
use SilverStripe\Versioned\Versioned;
8+
use SilverStripe\Assets\Folder;
89

910
/** EveryDataStore v1.0
1011
*
@@ -20,8 +21,9 @@ class RecordSetItemDataHelper extends EveryDataStoreHelper {
2021
*/
2122
public static function getUploadFieldValue($recordSetItemData) {
2223
$ret = [];
23-
$folderChilds = Versioned::get_by_stage('SilverStripe\Assets\Folder', Versioned::LIVE)->filter(['ParentID' => $recordSetItemData->FolderID])->sort("ID ASC");
24-
foreach ($folderChilds as $folder) {
24+
//$folderChilds = Versioned::get_by_stage('SilverStripe\Assets\Folder', Versioned::LIVE)->filter(['ParentID' => $recordSetItemData->FolderID])->sort("ID ASC");
25+
26+
foreach ($recordSetItemData->Folder()->Children() as $folder) {
2527
foreach ($folder->Children() as $child) {
2628
if ($child->ClassName !== 'SilverStripe\Assets\Folder'){
2729
$ret[] = array(
@@ -35,6 +37,7 @@ public static function getUploadFieldValue($recordSetItemData) {
3537
}
3638
}
3739
}
40+
3841
return $ret;
3942
}
4043

everydatastore/src/Model/DataStore.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ public function getUploadAllowedFileExtensions(){
235235
$allowedFileExtensions = explode(',', str_replace(['[',']', '"'], '', $this->UploadAllowedExtensions));
236236
if($allowedFileExtensions){
237237
foreach($allowedFileExtensions as $ext){
238-
$ret[] = ['Label' => strtoupper($ext), 'value' => '.'.$ext];
238+
$ret[] = ['label' => strtoupper($ext), 'value' => '.'.$ext];
239239
}
240240
}
241241
return $ret;
@@ -409,6 +409,7 @@ private function createDefaultConfig() {
409409
$defaultConfig = [
410410
'DateFormat' => 'd.m.Y',
411411
'DateTimeFormat' => 'd.m.Y H:i:s',
412+
'Timezone' => 'Europe/Berlin',
412413
'TimeFormat' => 'H:i:s',
413414
'ItemsPerPage' => 10,
414415
'MenuBadgeUpdateInterval' => 50000, // Milliseconds

everydatastore/src/Model/RecordSet/RecordSet.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ private function createDefaultFolder($member, $folderTitle) {
210210
public function getRecordResultlistFields($getAll = False) {
211211
$ids = $this->getRecordResultlistFormFieldIDs($getAll);
212212
if ($ids) {
213-
return FormField::get()->filter(array('ID' => $ids));
213+
return FormField::get()->filter(array('ID' => $ids))->Sort('Column.Section.Sort ASC,Column.Sort ASC, Sort ASC');
214214
}
215215

216216
}
@@ -222,13 +222,13 @@ public function getRecordResultlistFormFieldIDs($getAll = False) {
222222
if ($section->Columns()) {
223223
foreach ($section->Columns() as $column) {
224224
if ($column->FormFields()) {
225-
foreach ($column->FormFields()->Sort('Column.Section.Sort', 'ASC') as $FormField) {
225+
foreach ($column->FormFields()->Sort("Sort ASC") as $FormField) {
226226
if ($getAll == true) {
227-
if ($FormField->getActive() && $FormField->ID) {
227+
if ($FormField->getActive()) {
228228
array_push($ids, $FormField->ID);
229229
}
230230
} else {
231-
if ($FormField->getActive() && $FormField->showInResultlist() && $FormField->ID) {
231+
if ($FormField->getActive() && $FormField->showInResultlist()) {
232232
array_push($ids, $FormField->ID);
233233
}
234234
}
@@ -257,7 +257,7 @@ public function RecordResultlistLabels() {
257257
return $this->getRecordResultlistFieldsToArray($getAll = false);
258258
}
259259

260-
public function getRecordResultlistFieldsToArray($getAll = false) {
260+
public function getRecordResultlistFieldsToArray($getAll = false, $sort = false) {
261261
$fields = [];
262262
if (!empty($this->getRecordResultlistFields($getAll))) {
263263
foreach ($this->getRecordResultlistFields($getAll) as $field) {
@@ -270,7 +270,7 @@ public function getRecordResultlistFieldsToArray($getAll = false) {
270270
}
271271
}
272272

273-
EveryDataStoreHelper::array_sort_by_column($fields, 'Label');
273+
if($sort) EveryDataStoreHelper::array_sort_by_column($fields, 'Label');
274274
return $fields;
275275
}
276276

everydatastore/src/Model/RecordSet/RecordSetItemData.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ public function FormFieldTypeSlug() {
7373
}
7474

7575
public function Value() {
76+
7677
if($this->Value || $this->FolderID > 0){
78+
7779
$retValue = $this->Value;
7880
$textFieldType = $this->FormField()->getTextFieldType();
7981

@@ -126,6 +128,9 @@ public function Value() {
126128
return RecordSetItemDataHelper::getRelationFieldValue($this);
127129
}
128130

131+
if(is_array(unserialize($this->Value))){
132+
$retValue = unserialize($this->Value);
133+
}
129134
return $retValue;
130135
}
131136
}

0 commit comments

Comments
 (0)