/** * Compare page versions * * @param void * @return null */ function compare_versions() { $this->skip_layout = $this->request->isAsyncCall(); if ($this->active_page->isNew()) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if // Load new version $new_version_string = $this->request->get('new'); if (empty($new_version_string) || $new_version_string == 'latest') { $new_version = $this->active_page; $new_version_string = 'latest'; } else { $new_version = PageVersions::findById(array('page_id' => $this->active_page->getId(), 'version' => $new_version_string)); } // if if (!instance_of($new_version, 'Page') && !instance_of($new_version, 'PageVersion')) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if // Load old version $old_version_string = $this->request->get('old'); if (empty($old_version_string)) { $old_version = PageVersions::findPrevious($this->active_page); if ($old_version) { $old_version_string = $old_version->getVersion(); } // if } elseif ($old_version_string == 'latest') { $old_version = $this->active_page; } else { $old_version = PageVersions::findById(array('page_id' => $this->active_page->getId(), 'version' => $old_version_string)); } // if if (!instance_of($old_version, 'Page') && !instance_of($old_version, 'PageVersion')) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if // Lets do the diff require_once ANGIE_PATH . '/classes/diff/init.php'; $name_diff = render_diff($old_version->getName(), $new_version->getName()); if (empty($name_diff)) { $name_diff = $old_version->getName(); } // if $body_diff = render_diff(html_to_text($old_version->getFormattedBody()), html_to_text($new_version->getFormattedBody())); if (empty($body_diff)) { $body_diff = html_to_text($old_version->getFormattedBody()); } // if // Display $this->smarty->assign(array('old_version_string' => $old_version_string, 'new_version_string' => $new_version_string, 'new_version' => $new_version, 'old_version' => $old_version, 'name_diff' => $name_diff, 'body_diff' => $body_diff)); js_assign('compare_pages_url', $this->active_page->getCompareVersionsUrl()); }