in pp3/module/Application/src/Application/Controller/PluginVersionController.php [42:141]
public function editAction() {
$pvId = $this->params()->fromQuery('id');
$search = $this->params()->fromQuery('search');
$pluginVersion = $this->_pluginVersionRepository->find($pvId);
if ((!$pluginVersion || empty($pvId) || !$pluginVersion->getPlugin()->isOwnedBy($this->getAuthenticatedUserId())) && !$this->isAdmin()) {
return $this->redirect()->toRoute('plugin', array(
'action' => 'list'
));
}
$req = $this->request;
if ($req->isPost()) {
$relnotes = $this->params()->fromPost('relnotes');
if ($pluginVersion->getErrorMessage()) {
$pluginVersion->setErrorMessage(null);
$this->_pluginVersionRepository->persist($pluginVersion);
}
if (!empty($relnotes)) {
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$pluginVersion->setRelnotes($purifier->purify($relnotes));
$this->_pluginVersionRepository->persist($pluginVersion);
$showFlash = true;
}
// handle nb versions assignmnent
$selectedNbVersionIds = $this->params()->fromPost('nbVersion_ids');
if (!empty($selectedNbVersionIds)) {
$assignedNbVersions = array();
foreach($pluginVersion->getNbVersionsPluginVersions() as $nbvPv) {
// remove if deselected
if (!in_array($nbvPv->getNbVersionId(), $selectedNbVersionIds)) {
$this->_nbVersionPluginVersionRepository->remove($nbvPv);
$showFlash = true;
} else {
$assignedNbVersions[] = $nbvPv->getNbVersionId();
}
}
// and add newly selected
foreach($selectedNbVersionIds as $selectedNbVersionId) {
if (!in_array($selectedNbVersionId, $assignedNbVersions)) {
$newNbvpv = new NbVersionPluginVersion();
$newNbvpv->setNbVersion($this->_nbVersionRepository->find($selectedNbVersionId));
$newNbvpv->setPluginVersion($pluginVersion);
$pluginVersion->addNbVersion($newNbvpv);
$showFlash = true;
}
}
$this->_pluginVersionRepository->persist($pluginVersion);
} else {
// remove all
foreach($pluginVersion->getNbVersionsPluginVersions() as $nbvPv) {
$this->_nbVersionPluginVersionRepository->remove($nbvPv);
$showFlash = true;
}
}
$this->rebuildAllCatalogs();
if ($showFlash) {
$plugin = $pluginVersion->getPlugin();
$plugin->setLastUpdatedAt(new \DateTime('now'));
$this->_pluginRepository->persist($plugin);
$this->flashMessenger()->setNamespace('success')->addMessage('Plugin version updated');
return $this->redirect()->toUrl('./edit?id='.$pluginVersion->getId());
}
}
// droping verification
$verificationId = $this->params()->fromQuery('verifId');
if ($verificationId) {
$verification = $this->_verificationRepository->find($verificationId);
if ($verification && $verification->getNbVersionPluginVersion()->getPluginVersion()->getId() == $pluginVersion->getId()) {
$this->_verificationRepository->remove($verification);
$nbvPv = $verification->getNbVersionPluginVersion();
$nbvPv->setVerification(null);
$this->_nbVersionPluginVersionRepository->persist($nbvPv);
$this->flashMessenger()->setNamespace('success')->addMessage('Verification dropped');
return $this->redirect()->toUrl('./edit?id='.$pluginVersion->getId());
}
}
$verifiedNbVersions = $this->_nbVersionRepository->getVerifiedNbVersionIdsForPlugin($pluginVersion->getPlugin()->getId());
$verifiedNbVersionIds = array();
foreach($verifiedNbVersions as $v) {
$verifiedNbVersionIds[]=$v['id'];
}
if ($this->isAdmin() && !empty($search)) {
$backUrl = $this->url()->fromRoute('admin', array('action' => 'index'), array('query' => array('search' => $search)));
} else {
$backUrl = $this->url()->fromRoute('plugin', array('action' => 'list'));
}
return new ViewModel([
'pluginVersion' => $pluginVersion,
'nbVersions' => $this->_nbVersionRepository->findAll(),
'verifiedNbVersionIds' => $verifiedNbVersionIds,
'return' => $backUrl,
]);
}