/** testRemoveRevision */ public function testRemoveRevision() { Zend_Registry::set('modulesEnable', array()); Zend_Registry::set('notifier', new MIDAS_Notifier(false, null)); $itemsFile = $this->loadData('Item', 'default'); $usersFile = $this->loadData('User', 'default'); $item = $itemsFile[1]; // remove any revisions that may exist while ($this->Item->getLastRevision($itemsFile[1])) { $revision = $this->Item->getLastRevision($itemsFile[1]); $this->Item->removeRevision($item, $revision); } // add on 3 revisions $revision = new ItemRevisionDao(); $revision->setUserId($usersFile[0]->getKey()); $revision->setDate(date('Y-m-d H:i:s')); $revision->setChanges('r1'); $revision->setItemId(0); $revision->setRevision(1); $this->ItemRevision->save($revision); $this->Item->addRevision($itemsFile[1], $revision); $lastRev = $this->Item->getLastRevision($item); $this->assertEquals($revision->getKey(), $lastRev->getKey()); $this->assertEquals($revision->getChanges(), $lastRev->getChanges()); $revision = new ItemRevisionDao(); $revision->setUserId($usersFile[0]->getKey()); $revision->setDate(date('Y-m-d H:i:s')); $revision->setChanges('r2'); $revision->setItemId(0); $revision->setRevision(2); $this->ItemRevision->save($revision); $this->Item->addRevision($item, $revision); $lastRev = $this->Item->getLastRevision($item); $this->assertEquals($revision->getKey(), $lastRev->getKey()); $this->assertEquals($revision->getChanges(), $lastRev->getChanges()); $revision = new ItemRevisionDao(); $revision->setUserId($usersFile[0]->getKey()); $revision->setDate(date('Y-m-d H:i:s')); $revision->setChanges('r3'); $revision->setItemId(0); $revision->setRevision(3); $this->ItemRevision->save($revision); $this->Item->addRevision($item, $revision); $lastRev = $this->Item->getLastRevision($item); $this->assertEquals($revision->getKey(), $lastRev->getKey()); $this->assertEquals($revision->getChanges(), $lastRev->getChanges()); // we now have revision:changes 1:r1, 2:r2, 3:r3 // remove r3, check that last revision changes = r2 $this->Item->removeRevision($item, $lastRev); $lastRev = $this->Item->getLastRevision($item); $this->assertEquals($lastRev->getRevision(), '2'); $this->assertEquals($lastRev->getChanges(), 'r2'); // now we have 1:r1, 2:r2 // remove r1, check that last revision changes = r2 and revision = 1 $rev1 = $this->Item->getRevision($item, 1); $this->Item->removeRevision($item, $rev1); $lastRev = $this->Item->getLastRevision($item); $this->assertEquals($lastRev->getRevision(), '1'); $this->assertEquals($lastRev->getChanges(), 'r2'); // now we have 1:r2 // remove r2, check that there are no revisions $this->Item->removeRevision($item, $lastRev); $lastRev = $this->Item->getLastRevision($item); $this->assertFalse($lastRev); }
/** * Add a revision to an item. * * @param ItemDao $itemdao * @param ItemRevisionDao $revisiondao * @throws Zend_Exception */ public function addRevision($itemdao, $revisiondao) { if (!$itemdao instanceof ItemDao) { throw new Zend_Exception('First argument should be an item'); } if (!$revisiondao instanceof ItemRevisionDao) { throw new Zend_Exception('Second argument should be an item revision'); } /** @var ItemRevisionModel $ItemRevisionModel */ $ItemRevisionModel = MidasLoader::loadModel('ItemRevision'); // Should check the latest revision for this item $latestrevision = $ItemRevisionModel->getLatestRevision($itemdao); if (!$latestrevision) { // no revision yet we assigne the value 1 $revisiondao->setRevision(1); } else { $revisiondao->setRevision($latestrevision->getRevision() + 1); } $revisiondao->setItemId($itemdao->getItemId()); $ItemRevisionModel->save($revisiondao); $this->save($itemdao); // update date }