Пример #1
0
 /**
  * Overload Sprig::update() to save revision change
  * @param bump  whether to bump the version number
  */
 public function update($bump = TRUE)
 {
     Kohana::$log->add(Kohana::DEBUG, 'Executing Versioned_Sprig::update');
     $updated = FALSE;
     foreach ($this->_fields as $field => $object) {
         if ($object instanceof Sprig_Field_Tracked and $this->changed($field)) {
             $this->comment = UTF8::ucwords($object->label) . ' changed from "' . $this->_original[$field] . '" to "' . $this->_changed[$field] . '".';
         }
         if ($object instanceof Sprig_Field_Versioned and $this->changed($field) and $bump) {
             $diff = '';
             if ($this->version != 0) {
                 $diff = Versioned::diff($this->_original[$field], $this->_changed[$field]);
                 $diff = Versioned::clean_array($diff);
                 $diff = serialize($diff);
             }
             $this->version++;
             $revision = Sprig::factory($this->_model . '_revision');
             $revision->values(array('entry' => $this->id, 'version' => $this->version, 'editor' => $this->editor, 'diff' => $diff));
             $revision->comments = $this->comments;
             $revision->create();
             $updated = TRUE;
             $this->comments = array();
         }
     }
     if (!$updated and count($this->comments) > 0) {
         $revision = Sprig::factory($this->_model . '_revision');
         $revision->entry = $this->id;
         $revision->version = $this->version;
         $revision->load();
         $revision->comments = array_merge($revision->comments, $this->comments);
         $revision->update();
     }
     return parent::update();
 }
Пример #2
0
 /**
  * Populate table with versions
  */
 private function populate($id)
 {
     $text1 = "This is my string";
     $text2 = "This is my first string";
     // inserted "first"
     $text3 = "This is our first string";
     // changed "my" to "our"
     $text4 = "This is our first";
     // dropped "string"
     $diff2 = serialize(Versioned::clean_array(Versioned::diff($text1, $text2)));
     $diff3 = serialize(Versioned::clean_array(Versioned::diff($text2, $text3)));
     $diff4 = serialize(Versioned::clean_array(Versioned::diff($text3, $text4)));
     try {
         DB::insert('entry_revisions', array('entry_id', 'version', 'diff'))->values(array($id, 1, ''))->execute();
         DB::insert('entry_revisions', array('entry_id', 'version', 'diff'))->values(array($id, 2, $diff2))->execute();
         DB::insert('entry_revisions', array('entry_id', 'version', 'diff'))->values(array($id, 3, $diff3))->execute();
         DB::insert('entry_revisions', array('entry_id', 'version', 'diff'))->values(array($id, 4, $diff4))->execute();
         DB::insert('entries', array('id', 'version', 'text'))->values(array($id, 4, $text4))->execute();
     } catch (Database_Exception $e) {
         echo $e->getMessage();
     }
 }