protected function saveFileRecord() { $this->fileRecord = $this->fileDAO->getRecordTemplate(); $this->form->setRecordValuesFromFields($this->fileRecord); $this->fileRecord['id'] = null; $recordId = $this->form->getField('id')->getValue(); $this->fileRecord['recordId'] = !empty($recordId) ? $recordId : $this->form->getField('_tmpId')->getValue(); $this->fileRecord['recordType'] = !empty($recordId) ? $this->form->getField('recordType')->getValue() : '_tmpRecord'; $this->fileRecord['fileUpdateTime'] = CoreUtils::getDateTime(); $maxOrder = $this->fileDAO->getMaxOrderByRecord($this->fileRecord['recordType'], $this->fileRecord['recordId'], $this->fileRecord['fileCategory'], $this->fileRecord['filePosition']); // numerowanie od 0! $this->fileRecord['fileOrder'] = $maxOrder + 1; $uploadStruct = $this->form->getField('_fileUpload')->getValue(); $this->fileDAO->save($this->fileRecord, $uploadStruct); }
/** * UWAGA! * Z założenia to jest odporne na takie sytuacje jak dodanie lub usunięcie załączników * współbieżnie przez innego użytkownika, w wyniku czego lista identyfikatorów jest * nieaktualna. Na tej liście mogą niektóre identyfikatory wystepowac po klika razy * a moga też byc kompletne smiecie. */ protected function updateFilesOrder() { foreach ($this->swfAttachmentTypes as $listName => $listInfo) { if ($this->isSWFUploadOrderingActive($listName)) { $orderFieldValue = $this->form->getField($listName . '_order')->getValue(); if (!empty($orderFieldValue)) { $ids = explode(',', $orderFieldValue); $order = array_flip($ids); $files = $this->fileDAO->getListByRecord($this->getRecordType(), $this->record['id'], $listInfo['fileCategory'], $listName); $i = 0; foreach ($files as $file) { if (array_key_exists($file['id'], $order)) { $file['fileOrder'] = $order[$file['id']]; } else { $file['fileOrder'] = sizeof($files) + $i; $i++; } $this->fileDAO->save($file); } } } } }