Пример #1
0
 /**
  * Set the plugin instance to be wrapped
  *
  * @param PluginInstance $instance Instance to wrap
  *
  * @return void
  */
 public function setInstance(PluginInstance $instance)
 {
     $this->instance = $instance;
     $this->pluginInstanceId = $instance->getInstanceId();
 }
Пример #2
0
 /**
  * __clone
  *
  * @return void
  */
 public function __clone()
 {
     if (!$this->pluginWrapperId) {
         return;
     }
     $this->pluginWrapperId = null;
     if (!$this->instance->isSiteWide()) {
         $pluginInstance = clone $this->instance;
         $this->instance = $pluginInstance;
     }
 }
Пример #3
0
 /**
  * updateSiteSitewide
  *
  * @param PluginInstanceEntity $pluginInstance
  * @param SiteEntity           $site
  * @param null                 $oldPluginInstance
  *
  * @return void
  */
 public function updateSiteSitewide(PluginInstanceEntity $pluginInstance, SiteEntity $site, $oldPluginInstance = null)
 {
     // ignore non-sitewides
     if (!$pluginInstance->isSiteWide()) {
         return;
     }
     if (!empty($oldPluginInstance)) {
         $site->removeSiteWidePlugin($oldPluginInstance);
     }
     $site->addSiteWidePlugin($pluginInstance);
     $this->_em->persist($site);
 }
Пример #4
0
 /**
  * @param $pluginName
  * @param $instanceConfig
  *
  * @return \Rcm\Entity\PluginInstance
  */
 protected function getNewPlugin($pluginName, $instanceConfig)
 {
     $em = $this->entityManager;
     $pluginInstance = new PluginInstance();
     $pluginInstance->setPlugin($pluginName);
     $pluginInstance->setInstanceConfig($instanceConfig);
     $em->persist($pluginInstance);
     return $pluginInstance;
 }
Пример #5
0
 /**
  * Test Clone
  *
  * @return void
  *
  * @covers \Rcm\Entity\Page
  */
 public function testClone()
 {
     $site = new Site();
     $site->setSiteId(55);
     $container = ['pageId' => '200', 'name' => 'pageOne', 'author' => 'Westin Shafer', 'createdDate' => new \DateTime('yesterday'), 'lastPublished' => new \DateTime('yesterday'), 'revisions' => [0 => ['revisionId' => 100, 'author' => 'Westin Shafer', 'createdDate' => new \DateTime('yesterday'), 'publishedDate' => new \DateTime('yesterday'), 'published' => true, 'md5' => 'revisionMD5', 'instances' => [0 => ['pluginWrapperId' => 43, 'layoutContainer' => 'layoutOne', 'renderOrder' => 0, 'height' => 32, 'width' => 100, 'divFloat' => 'right', 'instance' => ['pluginInstanceId' => 44, 'plugin' => 'MockPlugin', 'siteWide' => false, 'displayName' => null, 'instanceConfig' => ['var1' => 1, 'var2' => 2], 'md5' => 'firstMd5']], 1 => ['pluginWrapperId' => 45, 'layoutContainer' => 'layoutTwo', 'renderOrder' => 1, 'height' => 33, 'width' => 101, 'divFloat' => 'none', 'instance' => ['pluginInstanceId' => 46, 'plugin' => 'MockPlugin2', 'siteWide' => true, 'displayName' => 'TestSiteWide', 'instanceConfig' => ['var3' => 3, 'var4' => 4], 'md5' => 'secondMd5']]]], 1 => ['revisionId' => 101, 'author' => 'Westin Shafer', 'createdDate' => new \DateTime('-1 month'), 'publishedDate' => new \DateTime('-1 month'), 'published' => false, 'md5' => 'revision2MD5', 'instances' => [0 => ['pluginWrapperId' => 47, 'layoutContainer' => 'layoutThree', 'renderOrder' => 2, 'height' => 33, 'width' => 102, 'divFloat' => 'right', 'instance' => ['pluginInstanceId' => 48, 'plugin' => 'MockPlugin3', 'siteWide' => false, 'displayName' => null, 'instanceConfig' => ['var1' => 1, 'var2' => 2], 'md5' => 'firstMd5']], 1 => ['pluginWrapperId' => 49, 'layoutContainer' => 'layoutFour', 'renderOrder' => 3, 'height' => 34, 'width' => 103, 'divFloat' => 'left', 'instance' => ['pluginInstanceId' => 50, 'plugin' => 'MockPlugin4', 'siteWide' => true, 'displayName' => 'TestSiteWide2', 'instanceConfig' => ['var3' => 3, 'var4' => 4], 'md5' => 'secondMd5']]]]]];
     $this->page->setPageId($container['pageId']);
     $this->page->setName($container['name']);
     $this->page->setAuthor($container['author']);
     $this->page->setCreatedDate($container['createdDate']);
     $this->page->setLastPublished($container['lastPublished']);
     $this->page->setSite($site);
     foreach ($container['revisions'] as $index => $revisionData) {
         $revision = new Revision();
         $revision->setRevisionId($revisionData['revisionId']);
         $revision->setAuthor($revisionData['author']);
         $revision->setCreatedDate($revisionData['createdDate']);
         $revision->publishRevision();
         $revision->setPublishedDate($revisionData['publishedDate']);
         $revision->setMd5($revisionData['md5']);
         foreach ($revisionData['instances'] as $instance) {
             $plugin = new PluginInstance();
             $plugin->setInstanceId($instance['instance']['pluginInstanceId']);
             $plugin->setPlugin($instance['instance']['plugin']);
             if ($instance['instance']['siteWide']) {
                 $plugin->setSiteWide();
             }
             $plugin->setDisplayName($instance['instance']['displayName']);
             $plugin->setInstanceConfig($instance['instance']['instanceConfig']);
             $plugin->setMd5($instance['instance']['md5']);
             $wrapper = new PluginWrapper();
             $wrapper->setPluginWrapperId($instance['pluginWrapperId']);
             $wrapper->setLayoutContainer($instance['layoutContainer']);
             $wrapper->setRenderOrderNumber($instance['renderOrder']);
             $wrapper->setHeight($instance['height']);
             $wrapper->setWidth($instance['width']);
             $wrapper->setDivFloat($instance['divFloat']);
             $wrapper->setInstance($plugin);
             $revision->addPluginWrapper($wrapper);
         }
         if ($index === 0) {
             $this->page->setPublishedRevision($revision);
         } elseif ($index === 1) {
             $this->page->setStagedRevision($revision);
         }
         $this->page->addRevision($revision);
     }
     $this->assertCount(2, $this->page->getRevisions());
     $clonedContainer = clone $this->page;
     /* Test Container */
     $this->assertNotEquals($this->page->getPageId(), $clonedContainer->getPageId());
     $this->assertNull($clonedContainer->getPageId());
     $this->assertNull($clonedContainer->getPublishedRevision());
     $this->assertCount(1, $clonedContainer->getRevisions());
     $containerName = $clonedContainer->getName();
     $containerIsempty = empty($containerName);
     $this->assertTrue($containerIsempty);
     $this->assertNull($clonedContainer->getParent());
     $currentRevision = $this->page->getPublishedRevision();
     $clonedCurrentRev = $clonedContainer->getStagedRevision();
     /* Test Revision */
     $this->assertNotEquals($currentRevision->getRevisionId(), $clonedCurrentRev->getRevisionId());
     $this->assertNull($clonedCurrentRev->getRevisionId());
     $this->assertEquals($currentRevision->getAuthor(), $clonedCurrentRev->getAuthor());
     $this->assertNotEquals($currentRevision->getCreatedDate(), $clonedCurrentRev->getCreatedDate());
     $this->assertFalse($clonedCurrentRev->wasPublished());
     $this->assertEquals($currentRevision->getMd5(), $clonedCurrentRev->getMd5());
     $revisionWrappers = $currentRevision->getPluginWrappers();
     $clonedWrappers = $clonedCurrentRev->getPluginWrappers();
     $this->assertNotEquals($revisionWrappers, $clonedWrappers);
     /** @var \Rcm\Entity\PluginWrapper $clonedWrapper */
     foreach ($clonedWrappers as $clonedWrapper) {
         if (!$clonedWrapper->getInstance()->isSiteWide()) {
             $this->assertNull($clonedWrapper->getInstance()->getInstanceId());
         } else {
             $this->assertNotNull($clonedWrapper->getInstance()->getInstanceId());
         }
     }
     $page = new Page();
     $clone = clone $page;
     $this->assertInstanceOf('\\Rcm\\Entity\\Page', $clone);
 }
Пример #6
0
 /**
  * Test Clone
  *
  * @return void
  *
  * @covers \Rcm\Entity\Revision
  */
 public function testClone()
 {
     $revision = ['revisionId' => 100, 'author' => 'Westin Shafer', 'createdDate' => new \DateTime('yesterday'), 'publishedDate' => new \DateTime('yesterday'), 'published' => true, 'md5' => 'revisionMD5', 'instances' => [0 => ['pluginWrapperId' => 43, 'layoutContainer' => 'layoutOne', 'renderOrder' => 0, 'height' => 32, 'width' => 100, 'divFloat' => 'right', 'instance' => ['pluginInstanceId' => 44, 'plugin' => 'MockPlugin', 'siteWide' => false, 'displayName' => null, 'instanceConfig' => ['var1' => 1, 'var2' => 2], 'md5' => 'firstMd5']], 1 => ['pluginWrapperId' => 45, 'layoutContainer' => 'layoutTwo', 'renderOrder' => 1, 'height' => 33, 'width' => 101, 'divFloat' => 'none', 'instance' => ['pluginInstanceId' => 46, 'plugin' => 'MockPlugin2', 'siteWide' => true, 'displayName' => 'TestSiteWide', 'instanceConfig' => ['var3' => 3, 'var4' => 4], 'md5' => 'secondMd5']]]];
     $this->revision->setRevisionId($revision['revisionId']);
     $this->revision->setAuthor($revision['author']);
     $this->revision->setCreatedDate($revision['createdDate']);
     $this->revision->publishRevision();
     $this->revision->setPublishedDate($revision['publishedDate']);
     $this->revision->setMd5($revision['md5']);
     foreach ($revision['instances'] as $instance) {
         $plugin = new PluginInstance();
         $plugin->setInstanceId($instance['instance']['pluginInstanceId']);
         $plugin->setPlugin($instance['instance']['plugin']);
         if ($instance['instance']['siteWide']) {
             $plugin->setSiteWide();
         }
         $plugin->setDisplayName($instance['instance']['displayName']);
         $plugin->setInstanceConfig($instance['instance']['instanceConfig']);
         $plugin->setMd5($instance['instance']['md5']);
         $wrapper = new PluginWrapper();
         $wrapper->setPluginWrapperId($instance['pluginWrapperId']);
         $wrapper->setLayoutContainer($instance['layoutContainer']);
         $wrapper->setRenderOrderNumber($instance['renderOrder']);
         $wrapper->setHeight($instance['height']);
         $wrapper->setWidth($instance['width']);
         $wrapper->setDivFloat($instance['divFloat']);
         $wrapper->setInstance($plugin);
         $this->revision->addPluginWrapper($wrapper);
     }
     $clonedRevision = clone $this->revision;
     /* Test Revision */
     $this->assertNotEquals($this->revision->getRevisionId(), $clonedRevision->getRevisionId());
     $this->assertNull($clonedRevision->getRevisionId());
     $this->assertEquals($this->revision->getAuthor(), $clonedRevision->getAuthor());
     $this->assertNotEquals($this->revision->getCreatedDate(), $clonedRevision->getCreatedDate());
     $this->assertNotEquals($this->revision->getPublishedDate(), $clonedRevision->getPublishedDate());
     $this->assertTrue($this->revision->wasPublished());
     $this->assertEquals($this->revision->getMd5(), $clonedRevision->getMd5());
     $clonedWrappers = $clonedRevision->getPluginWrappers();
     $revisionWrappers = $this->revision->getPluginWrappers();
     $this->assertNotEquals($revisionWrappers, $clonedWrappers);
     /** @var \Rcm\Entity\PluginWrapper $clonedWrapper */
     foreach ($clonedWrappers as $clonedWrapper) {
         if (!$clonedWrapper->getInstance()->isSiteWide()) {
             $this->assertNull($clonedWrapper->getInstance()->getInstanceId());
         } else {
             $this->assertNotNull($clonedWrapper->getInstance()->getInstanceId());
         }
     }
 }
Пример #7
0
 /**
  * Get a container revision
  *
  * @param $revisionData
  *
  * @return Revision
  */
 private function getRevision($revisionData)
 {
     $revision = new Revision();
     $revision->setRevisionId($revisionData['revisionId']);
     $revision->setAuthor($revisionData['author']);
     $revision->setCreatedDate($revisionData['createdDate']);
     $revision->publishRevision();
     $revision->setPublishedDate($revisionData['publishedDate']);
     $revision->setMd5($revisionData['md5']);
     foreach ($revisionData['instances'] as $instance) {
         $plugin = new PluginInstance();
         $plugin->setInstanceId($instance['instance']['pluginInstanceId']);
         $plugin->setPlugin($instance['instance']['plugin']);
         $plugin->setDisplayName($instance['instance']['displayName']);
         $plugin->setInstanceConfig($instance['instance']['instanceConfig']);
         $plugin->setMd5($instance['instance']['md5']);
         if ($instance['instance']['siteWide']) {
             $plugin->setSiteWide();
             $this->site->addSiteWidePlugin($plugin);
         }
         $wrapper = new PluginWrapper();
         $wrapper->setPluginWrapperId($instance['pluginWrapperId']);
         $wrapper->setLayoutContainer($instance['layoutContainer']);
         $wrapper->setRenderOrderNumber($instance['renderOrder']);
         $wrapper->setHeight($instance['height']);
         $wrapper->setWidth($instance['width']);
         $wrapper->setDivFloat($instance['divFloat']);
         $wrapper->setInstance($plugin);
         $revision->addPluginWrapper($wrapper);
     }
     return $revision;
 }
Пример #8
0
 /**
  * Get Instance Config From Entity
  *
  * @param PluginInstance $pluginInstance
  *
  * @return array
  */
 protected function getInstanceConfigFromEntity(PluginInstance $pluginInstance)
 {
     //Instance configs less than 0 are default instanc configs
     if ($pluginInstance->getInstanceId() < 0) {
         return $this->getDefaultInstanceConfig($pluginInstance->getPlugin());
     } else {
         $instanceConfig = $pluginInstance->getInstanceConfig();
         if (!is_array($instanceConfig)) {
             $instanceConfig = [];
         }
         //Merge the default and db instance configs. Db overwrites.
         $instanceConfig = $this->mergeConfigArrays($this->getDefaultInstanceConfig($pluginInstance->getPlugin()), $instanceConfig);
     }
     return $instanceConfig;
 }
Пример #9
0
 public function testUtilities()
 {
     $data = $this->getTestData();
     $obj1 = new PluginInstance();
     $obj1->populate($data);
     $this->assertEquals($data['plugin'], $obj1->getPlugin());
     $this->assertEquals($data['siteWide'], $obj1->isSiteWide());
     $this->assertEquals($data['displayName'], $obj1->getDisplayName());
     $this->assertEquals($data['instanceConfig'], $obj1->getInstanceConfig());
     $this->assertEquals($data['md5'], $obj1->getMd5());
     $this->assertEquals($data['previousInstance']->getInstanceId(), $obj1->getPreviousInstance());
     $this->assertEquals($data['renderedCss'], $obj1->getRenderedCss());
     $this->assertEquals($data['renderedJs'], $obj1->getRenderedJs());
     $this->assertEquals($data['renderedHtml'], $obj1->getRenderedHtml());
     $this->assertEquals($data['canCache'], $obj1->getCanCache());
     $this->assertEquals($data['editCss'], $obj1->getEditCss());
     $this->assertEquals($data['editJs'], $obj1->getEditJs());
     $this->assertEquals($data['icon'], $obj1->getIcon());
     $this->assertEquals($data['tooltip'], $obj1->getTooltip());
     $data['saveData'] = ['testSave' => 'saveData'];
     $obj1->populate($data);
     $this->assertEquals($data['saveData'], $obj1->getInstanceConfig());
     $this->assertEquals(md5(serialize($data['saveData'])), $obj1->getMd5());
     // sync the data back up
     $data['md5'] = $obj1->getMd5();
     $data['instanceConfig'] = $obj1->getInstanceConfig();
     $json = json_encode($obj1);
     $this->assertJson($json);
     $iterator = $obj1->getIterator();
     $this->assertInstanceOf('\\ArrayIterator', $iterator);
     $array = $obj1->toArray();
     $this->assertEquals($data['plugin'], $array['plugin']);
     $this->assertEquals($data['siteWide'], $array['siteWide']);
     $this->assertEquals($data['displayName'], $array['displayName']);
     // @todo this breaks in travis?
     // $this->assertEquals($data['instanceConfig'], $array['instanceConfig']);
     $this->assertEquals($data['md5'], $array['md5']);
     $this->assertEquals($data['renderedCss'], $array['renderedCss']);
     $this->assertEquals($data['renderedJs'], $array['renderedJs']);
     $this->assertEquals($data['renderedHtml'], $array['renderedHtml']);
     $this->assertEquals($data['canCache'], $array['canCache']);
     $this->assertEquals($data['editCss'], $array['editCss']);
     $this->assertEquals($data['editJs'], $array['editJs']);
     $this->assertEquals($data['icon'], $array['icon']);
     $this->assertEquals($data['tooltip'], $array['tooltip']);
 }
Пример #10
0
 /**
  * getPluginHeadScript
  *
  * @param PluginInstance $instance
  *
  * @return void
  */
 protected function getPluginHeadScript(PluginInstance $instance)
 {
     $view = $this->getView();
     $jsArray = $instance->getRenderedJs();
     if (!empty($jsArray)) {
         foreach ($jsArray as &$js) {
             $container = unserialize($js);
             if (!$this->isDuplicateScript($container)) {
                 $view->headScript()->append($container);
             }
         }
     }
 }
Пример #11
0
 /**
  * Test Clone
  *
  * @return void
  *
  * @covers \Rcm\Entity\PluginWrapper
  */
 public function testClone()
 {
     $instances = [0 => ['pluginWrapperId' => 43, 'layoutContainer' => 'layoutOne', 'renderOrder' => 0, 'height' => 32, 'width' => 100, 'divFloat' => 'right', 'instance' => ['pluginInstanceId' => 44, 'plugin' => 'MockPlugin', 'siteWide' => false, 'displayName' => null, 'instanceConfig' => ['var1' => 1, 'var2' => 2], 'md5' => 'firstMd5']], 1 => ['pluginWrapperId' => 45, 'layoutContainer' => 'layoutTwo', 'renderOrder' => 1, 'height' => 33, 'width' => 101, 'divFloat' => 'none', 'instance' => ['pluginInstanceId' => 46, 'plugin' => 'MockPlugin2', 'siteWide' => true, 'displayName' => 'TestSiteWide', 'instanceConfig' => ['var3' => 3, 'var4' => 4], 'md5' => 'secondMd5']]];
     foreach ($instances as $instance) {
         $plugin = new PluginInstance();
         $plugin->setInstanceId($instance['instance']['pluginInstanceId']);
         $plugin->setPlugin($instance['instance']['plugin']);
         if ($instance['instance']['siteWide']) {
             $plugin->setSiteWide();
         }
         $plugin->setDisplayName($instance['instance']['displayName']);
         $plugin->setInstanceConfig($instance['instance']['instanceConfig']);
         $plugin->setMd5($instance['instance']['md5']);
         $wrapper = new PluginWrapper();
         $wrapper->setPluginWrapperId($instance['pluginWrapperId']);
         $wrapper->setLayoutContainer($instance['layoutContainer']);
         $wrapper->setRenderOrderNumber($instance['renderOrder']);
         $wrapper->setHeight($instance['height']);
         $wrapper->setWidth($instance['width']);
         $wrapper->setDivFloat($instance['divFloat']);
         $wrapper->setInstance($plugin);
         $clonedWrapper = clone $wrapper;
         $this->assertNotEquals($wrapper->getPluginWrapperId(), $clonedWrapper->getPluginWrapperId());
         $this->assertNull($clonedWrapper->getPluginWrapperId());
         $this->assertEquals($wrapper->getLayoutContainer(), $clonedWrapper->getLayoutContainer());
         $this->assertEquals($wrapper->getRenderOrderNumber(), $clonedWrapper->getRenderOrderNumber());
         $this->assertEquals($wrapper->getHeight(), $clonedWrapper->getHeight());
         $this->assertEquals($wrapper->getWidth(), $clonedWrapper->getWidth());
         $this->assertEquals($wrapper->getDivFloat(), $clonedWrapper->getDivFloat());
         $preInstance = $wrapper->getInstance();
         $clonedInstance = $clonedWrapper->getInstance();
         if (!$instance['instance']['siteWide']) {
             $this->assertNotEquals($preInstance->getInstanceId(), $clonedInstance->getInstanceId());
             $this->assertNull($clonedInstance->getInstanceId());
         } else {
             $this->assertEquals($preInstance->getInstanceId(), $clonedInstance->getInstanceId());
         }
         $this->assertEquals($preInstance->getPlugin(), $clonedInstance->getPlugin());
         $this->assertEquals($preInstance->isSiteWide(), $clonedInstance->isSiteWide());
         $this->assertEquals($preInstance->getDisplayName(), $clonedInstance->getDisplayName());
         $this->assertEquals($preInstance->getInstanceConfig(), $clonedInstance->getInstanceConfig());
         $this->assertEquals($preInstance->getMd5(), $clonedInstance->getMd5());
     }
     $wrapper = new PluginWrapper();
     $clone = clone $wrapper;
     $this->assertInstanceOf('Rcm\\Entity\\PluginWrapper', $clone);
 }
Пример #12
0
Файл: Site.php Проект: reliv/Rcm
 /**
  * Add a plugin to the site.
  *
  * @param PluginInstance $plugin Site wide plugin.
  *
  * @return null
  * @throws InvalidArgumentException
  */
 public function addSiteWidePlugin(PluginInstance $plugin)
 {
     if (!$plugin->isSiteWide()) {
         throw new InvalidArgumentException('Plugin Instance Must be set to Site Wide');
     }
     $displayName = $plugin->getDisplayName();
     if (empty($displayName)) {
         throw new InvalidArgumentException('Plugin Instance Must be set to Site Wide');
     }
     $this->sitePlugins->add($plugin);
 }
Пример #13
0
 /**
  * Set Previous Plugin Instance.  This is used to keep a record of changes.
  *
  * @param PluginInstance $instance Previous Plugin Instance
  *
  * @return void
  */
 public function setPreviousInstance(PluginInstance $instance)
 {
     $this->previousEntity = $instance->getInstanceId();
 }