示例#1
0
 /** 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);
 }
示例#2
0
 /**
  * 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
 }