function sourceRecords($params) { $res = WorkflowThreeStepRequest::get_by_author('WorkflowPublicationRequest', Member::currentUser(), array('AwaitingApproval', 'Approved')); // Add WFRequestedWhen column $doSet = new DataObjectSet(); if ($res) { foreach ($res as $result) { if ($wf = $result->openWorkflowRequest()) { $result->WFRequestedWhen = $wf->Created; $doSet->push($result); } } } return $doSet; }
function sourceRecords($params) { // Set stage, otherwise, we won't get any results $currentStage = Versioned::current_stage(); Versioned::reading_stage(Versioned::get_live_stage()); $res = WorkflowThreeStepRequest::get_by_author('WorkflowDeletionRequest', Member::currentUser(), array('AwaitingApproval', 'Approved')); // Reset stage back to what it was Versioned::reading_stage($currentStage); // Add WFRequestedWhen column $doSet = new DataObjectSet(); if ($res) { foreach ($res as $result) { if ($wf = $result->openWorkflowRequest()) { $result->WFRequestedWhen = $wf->Created; $doSet->push($result); } } } return $doSet; }
function testWorkflowPublicationApprovalTransition() { WorkflowRequest::$enable_all_alerts = true; $page = $this->objFromFixture('SiteTree', 'custompublisherpage'); $custompublisher = $this->objFromFixture('Member', 'custompublisher'); $customapprover = $this->objFromFixture('Member', 'customapprover'); $customauthor = $this->objFromFixture('Member', 'customauthor'); // nothing -> awaiting approval $customauthor->logIn(); $request = $page->openOrNewWorkflowRequest('WorkflowPublicationRequest'); $request->request("ARGGGGG!"); $this->assertNotNull($request); $this->assertEquals($request->AuthorID, $customauthor->ID, "Logged-in member is set as the author of the request"); $this->assertEquals($request->Status, 'AwaitingApproval', "Request is set to AwaitingApproval after requestPublication() is called"); // awaiting approval -> approved $customapprover->logIn(); $request->approve('Looks good'); $this->assertEquals($request->Status, 'Approved', "Request is set to Approved after page is approved"); $this->assertEquals($request->ApproverID, $customapprover->ID, "Currently logged-in user is set as the Approver for this request"); // place comment $customauthor->logIn(); $request->comment("YARRRRRR!"); // approved -> completed $custompublisher->logIn(); $request->publish('Avast, ye scoundrels!', $custompublisher, false); $this->assertEquals($request->Status, 'Completed', "Request is set to Completed after page is published"); $this->assertEquals($request->PublisherID, $custompublisher->ID, "Currently logged-in user is set as the Publisher for this request"); // Test save and publish $this->objFromFixture('Member', 'admin')->logIn(); $this->assertTrue(is_string($page->openOrNewWorkflowRequest('WorkflowPublicationRequest')->saveAndPublish("S&P"))); // Test the get_by_* functions. These are cursory tests, covering functionality // but none of the multitude of edge cases $this->assertContains($page->ID, WorkflowThreeStepRequest::get_by_author('WorkflowPublicationRequest', $customauthor)->column('ID')); $this->assertContains($page->ID, WorkflowThreeStepRequest::get_by_approver('WorkflowPublicationRequest', $customapprover)->column('ID')); $this->assertContains($page->ID, WorkflowThreeStepRequest::get_by_publisher('WorkflowPublicationRequest', $custompublisher)->column('ID')); }