/** * savePluginWrapper Save a plugin wrapper * * @param array $pluginData * @param SiteEntity $site * @param null $oldWrapper * * @return null|PluginWrapperEntity */ public function savePluginWrapper($pluginData, SiteEntity $site, $oldWrapper = null) { if (!empty($oldWrapper) && !is_a($oldWrapper, '\\Rcm\\Entity\\PluginWrapper')) { throw new RuntimeException('Wrapper passed in is not a valid plugin wrapper.'); } /** @var \Rcm\Repository\PluginInstance $pluginInstanceRepo */ $pluginInstanceRepo = $this->_em->getRepository('\\Rcm\\Entity\\PluginInstance'); $pluginData = $this->prepareData($pluginData); $pluginInstance = $pluginInstanceRepo->updatePlugin($pluginData, $site); if (!empty($oldWrapper) && ($pluginData['siteWide'] || $oldWrapper->getInstance()->isSiteWide()) && $pluginInstance->getInstanceId() != $oldWrapper->getInstance()->getInstanceId()) { $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->update('\\Rcm\\Entity\\PluginWrapper', 'wrapper')->set('wrapper.instance', $pluginInstance->getInstanceId())->where('wrapper.instance = :oldInstance')->setParameter('oldInstance', $oldWrapper->getInstance()); $queryBuilder->getQuery()->execute(); } if (!empty($oldWrapper) && $oldWrapper->getRenderOrderNumber() == $pluginData['rank'] && $oldWrapper->getRowNumber() == $pluginData['rowNumber'] && $oldWrapper->getColumnClass() == $pluginData['columnClass'] && $oldWrapper->getLayoutContainer() == $pluginData['containerName'] && ($oldWrapper->getInstance()->getInstanceId() == $pluginInstance->getInstanceId() || $pluginData['siteWide'])) { return $oldWrapper; } $pluginWrapper = new PluginWrapperEntity(); $pluginWrapper->populate($pluginData); $pluginWrapper->setInstance($pluginInstance); $this->_em->persist($pluginWrapper); $this->_em->flush($pluginWrapper); return $pluginWrapper; }
public function testUtilities() { $data = []; $data['layoutContainer'] = 'TESTCONT'; $data['renderOrder'] = 3; $data['height'] = 123; $data['width'] = 321; $data['divFloat'] = 'left'; $data['instance'] = new PluginInstance(); $obj1 = new PluginWrapper(); $obj1->populate($data); $this->assertEquals($data['layoutContainer'], $obj1->getLayoutContainer()); $this->assertEquals($data['renderOrder'], $obj1->getRenderOrderNumber()); // Why does this return an altered data format? // $this->assertEquals($data['height'] . 'px', $obj1->getHeight()); // $this->assertEquals($data['width'] . 'px', $obj1->getWidth()); // // $this->assertEquals($data['divFloat'], $obj1->getDivFloat()); $this->assertEquals($data['instance'], $obj1->getInstance()); $json = json_encode($obj1); $this->assertJson($json); $iterator = $obj1->getIterator(); $this->assertInstanceOf('\\ArrayIterator', $iterator); $array = $obj1->toArray(); $this->assertEquals($data['layoutContainer'], $array['layoutContainer']); $this->assertEquals($data['renderOrder'], $array['renderOrder']); // $this->assertEquals($data['height'], $array['height']); // $this->assertEquals($data['width'], $array['width']); // $this->assertEquals($data['divFloat'], $array['divFloat']); $this->assertEquals($data['instance'], $array['instance']); }