diff --git a/database/factories/OutputDocumentFactory.php b/database/factories/OutputDocumentFactory.php index 65efb66ea..68ef77090 100644 --- a/database/factories/OutputDocumentFactory.php +++ b/database/factories/OutputDocumentFactory.php @@ -38,6 +38,8 @@ $factory->define(OutputDocument::class, function(Faker $faker) { 'OUT_DOC_PDF_SECURITY_OPEN_PASSWORD' => '', 'OUT_DOC_PDF_SECURITY_OWNER_PASSWORD' => '', 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '', - 'OUT_DOC_OPEN_TYPE' => 1 + 'OUT_DOC_OPEN_TYPE' => 1, + 'OUT_DOC_HEADER' => null, + 'OUT_DOC_FOOTER' => null ]; }); diff --git a/tests/unit/workflow/engine/classes/ProcessesTest.php b/tests/unit/workflow/engine/classes/ProcessesTest.php index e8fa446cc..513efa943 100644 --- a/tests/unit/workflow/engine/classes/ProcessesTest.php +++ b/tests/unit/workflow/engine/classes/ProcessesTest.php @@ -378,6 +378,8 @@ class ProcessesTest extends TestCase 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '', 'OUT_DOC_OPEN_TYPE' => 1, '__OUT_DOC_ID_UPDATE__' => false, + 'OUT_DOC_FOOTER' => null, + 'OUT_DOC_HEADER' => null ], [ 'OUT_DOC_UID' => G::generateUniqueID(), @@ -407,6 +409,8 @@ class ProcessesTest extends TestCase 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '', 'OUT_DOC_OPEN_TYPE' => 1, '__OUT_DOC_ID_UPDATE__' => false, + 'OUT_DOC_FOOTER' => null, + 'OUT_DOC_HEADER' => null ] ]; $this->sortArrayByColumn($expected, 'OUT_DOC_UID'); diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/EmailServerTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/EmailServerTest.php index 536211b6e..49f703875 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/EmailServerTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/EmailServerTest.php @@ -280,33 +280,35 @@ class EmailServerTest extends TestCase public function it_should_test_the_send_test_mail_method() { $string = ini_get("sendmail_path"); - if (!is_executable($string)) { - $this->markTestIncomplete($string . " not found"); + //in current versions this value has extra parameters and must be cleaned + $result = explode(" ", $string); + $path = $result[0]; + if (is_executable($path)) { + // The data that will be sent to the method + $data = [ + "FROM_EMAIL" => "admin@processmaker.com", + "FROM_NAME" => "Administrator", + "MESS_ENGINE" => "MAIL", + "MESS_SERVER" => "localhost", + "MESS_PORT" => 25, + "MESS_ACCOUNT" => "admin@processmaker.com", + "MESS_PASSWORD" => "", + "TO" => "admin@processmaker.com", + "MESS_RAUTH" => true + ]; + + // Create the EmailServer object + $emailServer = new EmailServer(); + // Call the sendTestMail method + $result = $emailServer->sendTestMail($data); + + // Assert the status is true + $this->assertTrue($result['status']); + // Assert the success is true + $this->assertTrue($result['success']); + // Assert the message of the result + $this->assertEquals('**ID_MAIL_TEST_SUCCESS**', $result['msg']); } - // The data that will be sent to the method - $data = [ - "FROM_EMAIL" => "admin@processmaker.com", - "FROM_NAME" => "Administrator", - "MESS_ENGINE" => "MAIL", - "MESS_SERVER" => "localhost", - "MESS_PORT" => 25, - "MESS_ACCOUNT" => "admin@processmaker.com", - "MESS_PASSWORD" => "", - "TO" => "admin@processmaker.com", - "MESS_RAUTH" => true - ]; - - // Create the EmailServer object - $emailServer = new EmailServer(); - // Call the sendTestMail method - $result = $emailServer->sendTestMail($data); - - // Assert the status is true - $this->assertTrue($result['status']); - // Assert the success is true - $this->assertTrue($result['success']); - // Assert the message of the result - $this->assertEquals('**ID_MAIL_TEST_SUCCESS**', $result['msg']); } /** diff --git a/tests/unit/workflow/engine/src/ProcessMaker/GmailOAuth/GmailOAuthTest.php b/tests/unit/workflow/engine/src/ProcessMaker/GmailOAuth/GmailOAuthTest.php index e7def48be..4abecedc7 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/GmailOAuth/GmailOAuthTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/GmailOAuth/GmailOAuthTest.php @@ -13,6 +13,7 @@ use ProcessMaker\GmailOAuth\GmailOAuth; use ProcessMaker\Model\User; use RBAC; use Tests\TestCase; +use BadMethodCallException; class GmailOAuthTest extends TestCase { @@ -248,7 +249,6 @@ class GmailOAuthTest extends TestCase */ public function it_should_send_an_email_test_with_PHPMailerOAuth() { - $this->markTestIncomplete('Please solve the error related to Exception'); $faker = $this->faker; $gmailOauth = new GmailOAuth(); @@ -273,8 +273,11 @@ class GmailOAuthTest extends TestCase $gmailOauth->setSenderEmail($faker->email); $gmailOauth->setMailTo($faker->email); $gmailOauth->setSendTestMail(1); - $result = $gmailOauth->sendTestMailWithPHPMailerOAuth(); - $this->assertTrue($result instanceof PHPMailerOAuth); + + //We cannot get a valid 'refresh token', therefore we wait for an exception + //when trying to send a email. + $this->expectException(BadMethodCallException::class); + $gmailOauth->sendTestMailWithPHPMailerOAuth(); } /** diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php index 83a404309..3e76040e8 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php @@ -1,87 +1,57 @@ addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::PRO_UID); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LANDSCAPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_MEDIA); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LEFT_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TOP_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_GENERATE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_CURRENT_REVISION); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FIELD_MAPPING); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_VERSIONING); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESTINATION_PATH); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TAGS); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_OPEN_TYPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TITLE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESCRIPTION); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FILENAME); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TEMPLATE); - $oCriteria->add(\OutputDocumentPeer::PRO_UID, $sProcessUID); - $oDataset = \OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $outputDocArray = array(); - while ($aRow = $oDataset->getRow()) { - if (($aRow['OUT_DOC_TITLE'] == null) || ($aRow['OUT_DOC_TITLE'] == "")) { - // There is no transaltion for this Document name, try to get/regenerate the label - $outputDocument = new \OutputDocument(); - $outputDocumentObj = $outputDocument->load($aRow['OUT_DOC_UID']); - $aRow['OUT_DOC_TITLE'] = $outputDocumentObj['OUT_DOC_TITLE']; - $aRow['OUT_DOC_DESCRIPTION'] = $outputDocumentObj['OUT_DOC_DESCRIPTION']; - } else { - $outputDocArray[] = array('out_doc_uid' => $aRow['OUT_DOC_UID'], - 'out_doc_title' => $aRow['OUT_DOC_TITLE'], - 'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'], - 'out_doc_filename' => $aRow['OUT_DOC_FILENAME'], - 'out_doc_template' => $aRow['OUT_DOC_TEMPLATE'], - 'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'], - 'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'], - 'out_doc_media' => $aRow['OUT_DOC_MEDIA'], - 'out_doc_left_margin' => $aRow['OUT_DOC_LEFT_MARGIN'], - 'out_doc_right_margin' => $aRow['OUT_DOC_RIGHT_MARGIN'], - 'out_doc_top_margin' => $aRow['OUT_DOC_TOP_MARGIN'], - 'out_doc_bottom_margin' => $aRow['OUT_DOC_BOTTOM_MARGIN'], - 'out_doc_generate' => $aRow['OUT_DOC_GENERATE'], - 'out_doc_type' => $aRow['OUT_DOC_TYPE'], - 'out_doc_current_revision' => $aRow['OUT_DOC_CURRENT_REVISION'], - 'out_doc_field_mapping' => $aRow['OUT_DOC_FIELD_MAPPING'], - 'out_doc_versioning' => $aRow['OUT_DOC_VERSIONING'], - 'out_doc_destination_path' => $aRow['OUT_DOC_DESTINATION_PATH'], - 'out_doc_tags' => $aRow['OUT_DOC_TAGS'], - 'out_doc_pdf_security_enabled' => $aRow['OUT_DOC_PDF_SECURITY_ENABLED'], - 'out_doc_pdf_security_permissions' => $aRow['OUT_DOC_PDF_SECURITY_PERMISSIONS'], - "out_doc_open_type" => $aRow["OUT_DOC_OPEN_TYPE"]); + $result = []; + $outputDocuments = ModelOutputDocument::select() + ->where('PRO_UID', '=', $proUid) + ->get(); + foreach ($outputDocuments as $value) { + if (!empty($value->OUT_DOC_TITLE)) { + $result[] = [ + 'out_doc_uid' => $value->OUT_DOC_UID, + 'out_doc_title' => $value->OUT_DOC_TITLE, + 'out_doc_description' => $value->OUT_DOC_DESCRIPTION, + 'out_doc_filename' => $value->OUT_DOC_FILENAME, + 'out_doc_template' => $value->OUT_DOC_TEMPLATE, + 'out_doc_report_generator' => $value->OUT_DOC_REPORT_GENERATOR, + 'out_doc_landscape' => $value->OUT_DOC_LANDSCAPE, + 'out_doc_media' => $value->OUT_DOC_MEDIA, + 'out_doc_left_margin' => $value->OUT_DOC_LEFT_MARGIN, + 'out_doc_right_margin' => $value->OUT_DOC_RIGHT_MARGIN, + 'out_doc_top_margin' => $value->OUT_DOC_TOP_MARGIN, + 'out_doc_bottom_margin' => $value->OUT_DOC_BOTTOM_MARGIN, + 'out_doc_generate' => $value->OUT_DOC_GENERATE, + 'out_doc_type' => $value->OUT_DOC_TYPE, + 'out_doc_current_revision' => $value->OUT_DOC_CURRENT_REVISION, + 'out_doc_field_mapping' => $value->OUT_DOC_FIELD_MAPPING, + 'out_doc_versioning' => $value->OUT_DOC_VERSIONING, + 'out_doc_destination_path' => $value->OUT_DOC_DESTINATION_PATH, + 'out_doc_tags' => $value->OUT_DOC_TAGS, + 'out_doc_pdf_security_enabled' => $value->OUT_DOC_PDF_SECURITY_ENABLED, + 'out_doc_pdf_security_permissions' => $value->OUT_DOC_PDF_SECURITY_PERMISSIONS, + 'out_doc_open_type' => $value->OUT_DOC_OPEN_TYPE, + 'out_doc_header' => json_decode($value->OUT_DOC_HEADER), + 'out_doc_footer' => json_decode($value->OUT_DOC_FOOTER) + ]; } - $oDataset->next(); } - return $outputDocArray; + return $result; } catch (Exception $e) { throw $e; } @@ -89,83 +59,51 @@ class OutputDocument /** * Return a single output document of a project - * @param string $sProcessUID - * @param string $sOutputDocumentUID + * @param string $proUid + * @param string $outDocUid * @return array * * @access public */ - public function getOutputDocument($sProcessUID = '', $sOutputDocumentUID = '') + public function getOutputDocument($proUid = '', $outDocUid = '') { try { - $sDelimiter = \DBAdapter::getStringDelimiter(); - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::PRO_UID); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LANDSCAPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_MEDIA); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LEFT_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TOP_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_GENERATE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_CURRENT_REVISION); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FIELD_MAPPING); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_VERSIONING); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESTINATION_PATH); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TAGS); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_OPEN_TYPE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TITLE); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESCRIPTION); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FILENAME); - $oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TEMPLATE); - $oCriteria->add(\OutputDocumentPeer::OUT_DOC_UID, $sOutputDocumentUID); - $oCriteria->add(\OutputDocumentPeer::PRO_UID, $sProcessUID); - $oDataset = \OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $outputDocArray = array(); - while ($aRow = $oDataset->getRow()) { - if (($aRow['OUT_DOC_TITLE'] == null) || ($aRow['OUT_DOC_TITLE'] == "")) { - // There is no transaltion for this Document name, try to get/regenerate the label - $outputDocument = new \OutputDocument(); - $outputDocumentObj = $outputDocument->load($aRow['OUT_DOC_UID']); - $aRow['OUT_DOC_TITLE'] = $outputDocumentObj['OUT_DOC_TITLE']; - $aRow['OUT_DOC_DESCRIPTION'] = $outputDocumentObj['OUT_DOC_DESCRIPTION']; - } else { - $outputDocArray = array('out_doc_uid' => $aRow['OUT_DOC_UID'], - 'out_doc_title' => $aRow['OUT_DOC_TITLE'], - 'out_doc_description' => $aRow['OUT_DOC_DESCRIPTION'], - 'out_doc_filename' => $aRow['OUT_DOC_FILENAME'], - 'out_doc_template' => $aRow['OUT_DOC_TEMPLATE'], - 'out_doc_report_generator' => $aRow['OUT_DOC_REPORT_GENERATOR'], - 'out_doc_landscape' => $aRow['OUT_DOC_LANDSCAPE'], - 'out_doc_media' => $aRow['OUT_DOC_MEDIA'], - 'out_doc_left_margin' => $aRow['OUT_DOC_LEFT_MARGIN'], - 'out_doc_right_margin' => $aRow['OUT_DOC_RIGHT_MARGIN'], - 'out_doc_top_margin' => $aRow['OUT_DOC_TOP_MARGIN'], - 'out_doc_bottom_margin' => $aRow['OUT_DOC_BOTTOM_MARGIN'], - 'out_doc_generate' => $aRow['OUT_DOC_GENERATE'], - 'out_doc_type' => $aRow['OUT_DOC_TYPE'], - 'out_doc_current_revision' => $aRow['OUT_DOC_CURRENT_REVISION'], - 'out_doc_field_mapping' => $aRow['OUT_DOC_FIELD_MAPPING'], - 'out_doc_versioning' => $aRow['OUT_DOC_VERSIONING'], - 'out_doc_destination_path' => $aRow['OUT_DOC_DESTINATION_PATH'], - 'out_doc_tags' => $aRow['OUT_DOC_TAGS'], - 'out_doc_pdf_security_enabled' => $aRow['OUT_DOC_PDF_SECURITY_ENABLED'], - 'out_doc_pdf_security_permissions' => $aRow['OUT_DOC_PDF_SECURITY_PERMISSIONS'], - "out_doc_open_type" => $aRow["OUT_DOC_OPEN_TYPE"]); + $result = []; + $outputDocuments = ModelOutputDocument::select() + ->where('PRO_UID', '=', $proUid) + ->where('OUT_DOC_UID', '=', $outDocUid) + ->get(); + foreach ($outputDocuments as $value) { + if (!empty($value->OUT_DOC_TITLE)) { + $result = [ + 'out_doc_uid' => $value->OUT_DOC_UID, + 'out_doc_title' => $value->OUT_DOC_TITLE, + 'out_doc_description' => $value->OUT_DOC_DESCRIPTION, + 'out_doc_filename' => $value->OUT_DOC_FILENAME, + 'out_doc_template' => $value->OUT_DOC_TEMPLATE, + 'out_doc_report_generator' => $value->OUT_DOC_REPORT_GENERATOR, + 'out_doc_landscape' => $value->OUT_DOC_LANDSCAPE, + 'out_doc_media' => $value->OUT_DOC_MEDIA, + 'out_doc_left_margin' => $value->OUT_DOC_LEFT_MARGIN, + 'out_doc_right_margin' => $value->OUT_DOC_RIGHT_MARGIN, + 'out_doc_top_margin' => $value->OUT_DOC_TOP_MARGIN, + 'out_doc_bottom_margin' => $value->OUT_DOC_BOTTOM_MARGIN, + 'out_doc_generate' => $value->OUT_DOC_GENERATE, + 'out_doc_type' => $value->OUT_DOC_TYPE, + 'out_doc_current_revision' => $value->OUT_DOC_CURRENT_REVISION, + 'out_doc_field_mapping' => $value->OUT_DOC_FIELD_MAPPING, + 'out_doc_versioning' => $value->OUT_DOC_VERSIONING, + 'out_doc_destination_path' => $value->OUT_DOC_DESTINATION_PATH, + 'out_doc_tags' => $value->OUT_DOC_TAGS, + 'out_doc_pdf_security_enabled' => $value->OUT_DOC_PDF_SECURITY_ENABLED, + 'out_doc_pdf_security_permissions' => $value->OUT_DOC_PDF_SECURITY_PERMISSIONS, + 'out_doc_open_type' => $value->OUT_DOC_OPEN_TYPE, + 'out_doc_header' => json_decode($value->OUT_DOC_HEADER), + 'out_doc_footer' => json_decode($value->OUT_DOC_FOOTER) + ]; } - $oDataset->next(); } - return $outputDocArray; + return $result; } catch (Exception $e) { throw $e; } @@ -181,6 +119,19 @@ class OutputDocument */ public function addOutputDocument($sProcessUID, $outputDocumentData) { + if (empty($outputDocumentData['out_doc_header'])) { + $outputDocumentData['out_doc_header'] = []; + } + if (isset($outputDocumentData['out_doc_header'])) { + $outputDocumentData['out_doc_header'] = json_encode($outputDocumentData['out_doc_header']); + } + if (empty($outputDocumentData['out_doc_footer'])) { + $outputDocumentData['out_doc_footer'] = []; + } + if (isset($outputDocumentData['out_doc_footer'])) { + $outputDocumentData['out_doc_footer'] = json_encode($outputDocumentData['out_doc_footer']); + } + $pemission = $outputDocumentData['out_doc_pdf_security_permissions']; $pemission = explode("|", $pemission); foreach ($pemission as $row) { @@ -244,6 +195,19 @@ class OutputDocument */ public function updateOutputDocument($sProcessUID, $outputDocumentData, $sFlag, $sOutputDocumentUID = '') { + if (empty($outputDocumentData['out_doc_header'])) { + $outputDocumentData['out_doc_header'] = []; + } + if (isset($outputDocumentData['out_doc_header'])) { + $outputDocumentData['out_doc_header'] = json_encode($outputDocumentData['out_doc_header']); + } + if (empty($outputDocumentData['out_doc_footer'])) { + $outputDocumentData['out_doc_footer'] = []; + } + if (isset($outputDocumentData['out_doc_footer'])) { + $outputDocumentData['out_doc_footer'] = json_encode($outputDocumentData['out_doc_footer']); + } + $oConnection = \Propel::getConnection(\OutputDocumentPeer::DATABASE_NAME); $pemission = $outputDocumentData['out_doc_pdf_security_permissions']; $pemission = explode("|", $pemission);