/** * Retrieve a specific version * @param version version of text to retrieve */ public function version($version) { Kohana::$log->add(Kohana::DEBUG, 'Executing Versioned_Sprig::version'); if ($version < 1) { $version = 1; } elseif ($version == 'head' or $version > $this->_original['version']) { $version = $this->_original['version']; } foreach ($this->_fields as $field => $object) { if ($object instanceof Sprig_Field_Versioned) { $revisions = $this->revisions; $revision = $revisions->current(); $text = $this->_original[$field]; while ($revision->version > $version) { $diff = $revision->diff; $text = Versioned::patch($text, $diff, TRUE); $revision = $revisions->next()->current(); } $this->{$field} = $text; $this->version = $version; } } }