$u = new User(); $c->loadVersionObject($_REQUEST['cvID']); $c->cloneVersion(t('Copy of Version: %s', $c->getVersionID())); header("Location: " . REL_DIR_FILES_TOOLS_REQUIRED . "/versions.php?forcereload=1&cID=" . $cID); exit; break; case 'approve': if ($cp->canApprovePageVersions() && !$isCheckedOut) { $u = new User(); $pkr = new ApprovePagePageWorkflowRequest(); $pkr->setRequestedPage($c); $v = CollectionVersion::get($c, $_GET['cvID']); $pkr->setRequestedVersionID($v->getVersionID()); $pkr->setRequesterUserID($u->getUserID()); $u->unloadCollectionEdit($c); $response = $pkr->trigger(); if (!$response instanceof WorkflowProgressResponse) { header("Location: " . REL_DIR_FILES_TOOLS_REQUIRED . "/versions.php?forcereload=1&deferred=true&cID=" . $cID . "&cvID=" . $_GET['cvID']); exit; } else { // we only get this response if we have skipped workflows and jumped straight in to an approve() step. header("Location: " . REL_DIR_FILES_TOOLS_REQUIRED . "/versions.php?forcereload=1&cID=" . $cID . "&cvID=" . $_GET['cvID']); exit; } } break; } } $page = $_REQUEST[PAGING_STRING]; if (!$page) { $page = 1;
public function save() { session_write_close(); if ($this->isPost()) { if (intval($this->post('entryID')) > 0) { $entry = ComposerPage::getByID($this->post('entryID'), 'RECENT'); } if (!is_object($entry)) { $this->error->add(t('Invalid page.')); } else { $ct = CollectionType::getByID($entry->getCollectionTypeID()); } $valt = Loader::helper('validation/token'); $vtex = Loader::helper('validation/strings'); if (!$valt->validate('composer')) { $this->error->add($valt->getErrorMessage()); } if ($this->post("ccm-publish-draft")) { if (!$vtex->notempty($this->post('cName'))) { $this->error->add(t('You must provide a name for your page before you can publish it.')); } if ($entry->isComposerDraft()) { if ($ct->getCollectionTypeComposerPublishMethod() == 'CHOOSE' || $ct->getCollectionTypeComposerPublishMethod() == 'PAGE_TYPE') { $parent = Page::getByID($entry->getComposerDraftPublishParentID()); } else { if ($ct->getCollectionTypeComposerPublishMethod() == 'PARENT') { $parent = Page::getByID($ct->getCollectionTypeComposerPublishPageParentID()); } } if (!is_object($parent) || ($parent->isInTrash() || $parent->isError())) { $this->error->add(t('Invalid parent page.')); } else { $cp = new Permissions($parent); if (!$cp->canAddSubCollection($ct)) { $this->error->add(t('You do not have permissions to add this page type in that location.')); } } } } else { if ($this->post('ccm-submit-discard') && !$this->error->has()) { if ($entry->isComposerDraft()) { $entry->delete(); $this->redirect('/dashboard/composer/drafts', 'draft_discarded'); } else { // we just discard the most recent changes Events::fire('on_composer_delete_draft', $entry); $v = CollectionVersion::get($entry, 'RECENT'); $v->discard(); $this->redirect('?cID=' . $entry->getCollectionID()); } } } if (!$this->error->has()) { if ($this->post('cHandle')) { $handle = $this->post('cHandle'); } else { $handle = Loader::helper('text')->urlify($this->post('cName')); } $handle = str_replace('-', PAGE_PATH_SEPARATOR, $handle); $data = array(); $pk = PermissionKey::getByHandle('edit_page_properties'); $pk->setPermissionObject($entry); $asl = $pk->getMyAssignment(); if ($asl->allowEditName()) { $data['cName'] = $this->post('cName'); } if ($asl->allowEditDescription()) { $data['cDescription'] = $this->post('cDescription'); } if ($asl->allowEditPaths()) { $data['cHandle'] = $handle; } if ($asl->allowEditDateTime()) { $data['cDatePublic'] = Loader::helper('form/date_time')->translate('cDatePublic'); } $entry->getVersionToModify(); // this is a pain. we have to use composerpage::getbyid again because // getVersionToModify is hard-coded to return a page object $entry = ComposerPage::getByID($entry->getCollectionID(), 'RECENT'); $entry->update($data); $this->saveData($entry, $asl); $u = new User(); if ($this->post('ccm-publish-draft')) { Cache::disableCache(); Cache::disableLocalCache(); if ($entry->isComposerDraft()) { $entry->move($parent); } $v = CollectionVersion::get($entry, 'RECENT'); $pkr = new ApprovePagePageWorkflowRequest(); $pkr->setRequestedPage($entry); $pkr->setRequestedVersionID($v->getVersionID()); $pkr->setRequesterUserID($u->getUserID()); $pkr->trigger(); Events::fire('on_composer_publish', $entry); $entry->markComposerPageAsPublished(); $this->redirect('?cID=' . $entry->getCollectionID()); } else { if ($this->post('autosave')) { // this is done by javascript. we refresh silently and send a json success back Events::fire('on_composer_save_draft', $entry); $json = Loader::helper('json'); $obj = new stdClass(); $dh = Loader::helper('date'); $obj->error = false; $obj->time = $dh->formatTime('now', false); $obj->timestamp = date('m/d/Y g:i a'); print $json->encode($obj); exit; } else { $this->redirect('/dashboard/composer/write', 'edit', $entry->getCollectionID(), 'saved'); } } } else { if (is_object($entry)) { $this->edit($entry->getCollectionID()); } } } else { $this->redirect('/dashboard/composer'); } }