/** * Creates an openskos background job to export with the given settings to a file. * * @return int The job id */ public function exportWithBackgroundJob() { $user = OpenSKOS_Db_Table_Users::requireById($this->get('userId')); $tenant = OpenSKOS_Db_Table_Tenants::fromCode($user->tenant); $tenantCollections = $tenant->findDependentRowset('OpenSKOS_Db_Table_Collections'); if (!$tenantCollections->count()) { throw new Zend_Exception('Current tenant does not have any collections. At least one is required.', 404); } // We use the first collection of the tenant for the export job, // because the collection is important for the jobs, but the export is not related to any specific collection. $firstTenantCollection = $tenantCollections->current(); $model = new OpenSKOS_Db_Table_Jobs(); $job = $model->fetchNew()->setFromArray(array('collection' => $firstTenantCollection->id, 'user' => $user->id, 'task' => OpenSKOS_Db_Table_Row_Job::JOB_TASK_EXPORT, 'parameters' => serialize($this->getSettings()), 'created' => new Zend_Db_Expr('NOW()')))->save(); return $job; }
/** * Fully remove the concept scheme. * */ public function deleteAction() { $this->_requireAccess('editor.concept-schemes', 'delete', self::RESPONSE_TYPE_HTML); $user = $this->getCurrentUser(); $conceptScheme = $this->_getConceptScheme(); $getConceptSchemesWithDeleteJob = $this->_getConceptSchemesWithDeleteJob(); if (!isset($getConceptSchemesWithDeleteJob[$conceptScheme['uuid']])) { $model = new OpenSKOS_Db_Table_Jobs(); $job = $model->fetchNew()->setFromArray(array('collection' => $conceptScheme['collection'], 'user' => $user->id, 'task' => OpenSKOS_Db_Table_Row_Job::JOB_TASK_DELETE_CONCEPT_SCHEME, 'parameters' => serialize(array('uuid' => $conceptScheme['uuid'])), 'created' => new Zend_Db_Expr('NOW()')))->save(); $this->getHelper('FlashMessenger')->addMessage(_('A job for deleting the concept scheme was added.')); } else { $this->getHelper('FlashMessenger')->addMessage(_('A job for deleting the concept scheme already exists.')); } $this->_helper->redirector('index'); }
public function importAction() { $this->_requireAccess('editor.collections', 'manage'); $collection = $this->_getCollection(); if ($collection->OAI_baseURL) { $this->getHelper('FlashMessenger')->setNamespace('error')->addMessage(_('Since this collection has an OAI Server as source, you can not upload files for import.')); $this->_helper->redirector('edit', null, null, array('collection' => $collection->code)); return; } $form = $collection->getUploadForm(); $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $upload = new Zend_File_Transfer_Adapter_Http(); $path = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOption('upload_path'); $tenant_path = $path . '/' . $collection->tenant; if (!is_dir($tenant_path)) { if (!@mkdir($tenant_path, 0777, true)) { $this->getHelper('FlashMessenger')->setNamespace('error')->addMessage(_('Failed to create upload folder')); $this->_helper->redirector('edit', null, null, array('collection' => $collection->code)); return; } } try { $fileName = uniqid() . '_' . $_FILES['xml']['name']; $upload->addFilter('Rename', array('target' => $tenant_path . '/' . $fileName, 'overwrite' => false))->receive(); } catch (Zend_File_Transfer_Exception $e) { $form->getElement('xml')->setErrors(array($e->getMessage())); return $this->_forward('edit'); } catch (Zend_Filter_Exception $e) { $form->getElement('xml')->setErrors(array(_('A file with that name is already scheduled for import. Please delete the job if you want to import it again.'))); return $this->_forward('edit'); } $model = new OpenSKOS_Db_Table_Jobs(); $fileinfo = $upload->getFileInfo('xml'); $parameters = array('name' => $fileName, 'type' => $fileinfo['xml']['type'], 'size' => $fileinfo['xml']['size'], 'destination' => $fileinfo['xml']['destination'], 'deletebeforeimport' => (int) $formData['deletebeforeimport'] == 1, 'status' => $formData['status'], 'ignoreIncomingStatus' => (int) $formData['ignoreIncomingStatus'] == 1, 'lang' => $formData['lang'], 'toBeChecked' => (int) $formData['toBeChecked'] == 1, 'purge' => (int) $formData['purge'] == 1, 'onlyNewConcepts' => (int) $formData['onlyNewConcepts'] == 1, 'useUriAsIdentifier' => (int) $formData['useUriAsIdentifier'] == 1); $job = $model->fetchNew()->setFromArray(array('collection' => $collection->id, 'user' => Zend_Auth::getInstance()->getIdentity()->id, 'task' => OpenSKOS_Db_Table_Row_Job::JOB_TASK_IMPORT, 'parameters' => serialize($parameters), 'created' => new Zend_Db_Expr('NOW()')))->save(); } else { return $this->_forward('edit'); } $this->getHelper('FlashMessenger')->addMessage(_('An import job is scheduled')); $this->_helper->redirector('edit', null, null, array('collection' => $collection->code)); }