Craft\ImportService::finish PHP Method

finish() public method

Finish importing.
public finish ( array $settings, string $backup )
$settings array
$backup string
    public function finish($settings, $backup)
    {
        craft()->import_history->end($settings['history'], ImportModel::StatusFinished);
        if ($settings['email']) {
            // Gather results
            $results = array('success' => $settings['rows'], 'errors' => array());
            // Gather errors
            foreach ($this->log as $line => $result) {
                $results['errors'][$line] = $result;
            }
            // Recalculate successful results
            $results['success'] -= count($results['errors']);
            // Prepare the mail
            $email = new EmailModel();
            $emailSettings = craft()->email->getSettings();
            $email->toEmail = $emailSettings['emailAddress'];
            // Get current user
            $currentUser = craft()->users->getUserById($settings['user']);
            // Zip the backup
            $backup = $this->saveBackup($settings, $backup, $currentUser);
            // Set email content
            $email->subject = Craft::t('The import task is finished');
            $email->htmlBody = TemplateHelper::getRaw(craft()->templates->render('import/_email', array('results' => $results, 'backup' => $backup)));
            // Send it
            craft()->email->sendEmail($email);
        }
    }

Usage Example

 /**
  * @covers ::finish
  */
 public function testFinishShouldMailResults()
 {
     $historyId = 1;
     $settings = array('user' => 1, 'history' => $historyId, 'email' => true, 'rows' => 1);
     $mockImportHistoryService = $this->getMock('Craft\\Import_HistoryService');
     $mockImportHistoryService->expects($this->any())->method('end')->with($historyId, ImportModel::StatusFinished);
     $this->setComponent(craft(), 'import_history', $mockImportHistoryService);
     $mockEmailService = $this->getMock('Craft\\EmailService');
     $mockEmailService->expects($this->exactly(1))->method('sendEmail')->with($this->isInstanceOf('Craft\\EmailModel'));
     $this->setComponent(craft(), 'email', $mockEmailService);
     $mockTwigEnvironment = $this->getMockBuilder('Craft\\TwigEnvironment')->disableOriginalConstructor()->getMock();
     $mockTemplatesService = $this->getMock('Craft\\TemplatesService');
     $mockTemplatesService->expects($this->exactly(1))->method('render')->willReturn('renderedtemplate');
     $mockTemplatesService->expects($this->exactly(1))->method('getTwig')->willReturn($mockTwigEnvironment);
     $this->setComponent(craft(), 'templates', $mockTemplatesService);
     $mockUser = $this->getMockUser();
     $this->setMockUsersService($mockUser);
     $service = new ImportService();
     $service->log = array(1 => 'Error message');
     $service->finish($settings, false);
 }