Update feature branch with develop

This commit is contained in:
Julio Cesar Laura Avendaño
2022-06-29 14:12:47 +00:00
31 changed files with 2314 additions and 290 deletions

View File

@@ -38,6 +38,8 @@ $factory->define(OutputDocument::class, function(Faker $faker) {
'OUT_DOC_PDF_SECURITY_OPEN_PASSWORD' => '', 'OUT_DOC_PDF_SECURITY_OPEN_PASSWORD' => '',
'OUT_DOC_PDF_SECURITY_OWNER_PASSWORD' => '', 'OUT_DOC_PDF_SECURITY_OWNER_PASSWORD' => '',
'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '', 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '',
'OUT_DOC_OPEN_TYPE' => 1 'OUT_DOC_OPEN_TYPE' => 1,
'OUT_DOC_HEADER' => null,
'OUT_DOC_FOOTER' => null
]; ];
}); });

View File

@@ -89,6 +89,7 @@
ref="modal-comments" ref="modal-comments"
@postNotes="onPostNotes" @postNotes="onPostNotes"
></ModalComments> ></ModalComments>
<ModalClaimCase ref="modal-claim-case" @claimCatch="claimCatch"></ModalClaimCase>
</div> </div>
</template> </template>
<script> <script>
@@ -99,6 +100,7 @@ import TaskCell from "../../components/vuetable/TaskCell.vue";
import CurrentUserCell from "../../components/vuetable/CurrentUserCell.vue"; import CurrentUserCell from "../../components/vuetable/CurrentUserCell.vue";
import ModalComments from "../modal/ModalComments.vue"; import ModalComments from "../modal/ModalComments.vue";
import ThreadTitleCell from "../../components/vuetable/ThreadTitleCell.vue" import ThreadTitleCell from "../../components/vuetable/ThreadTitleCell.vue"
import ModalClaimCase from "../modal/ModalClaimCase.vue";
import api from "../../api/index"; import api from "../../api/index";
import utils from "../../utils/utils"; import utils from "../../utils/utils";
import defaultMixin from "./defaultMixins.js"; import defaultMixin from "./defaultMixins.js";
@@ -114,6 +116,7 @@ export default {
ModalNewRequest, ModalNewRequest,
TaskCell, TaskCell,
CurrentUserCell, CurrentUserCell,
ModalClaimCase,
ModalComments, ModalComments,
ThreadTitleCell, ThreadTitleCell,
}, },
@@ -159,6 +162,7 @@ export default {
tableData: [], tableData: [],
options: { options: {
filterable: false, filterable: false,
perPageValues: [],
headings: { headings: {
case_number: this.$i18n.t("ID_MYCASE_NUMBER"), case_number: this.$i18n.t("ID_MYCASE_NUMBER"),
process_category: this.$i18n.t("ID_CATEGORY_PROCESS"), process_category: this.$i18n.t("ID_CATEGORY_PROCESS"),
@@ -486,13 +490,31 @@ export default {
}); });
this.$emit("onUpdatePage", "case-detail"); this.$emit("onUpdatePage", "case-detail");
}, },
/**
* Method to validate if the case is unassigned
*/
onJumpCase(caseNumber) { onJumpCase(caseNumber) {
api.cases.pendingtask({APP_NUMBER:caseNumber}).then((response) => {
if (response.data && response.data[0] && response.data[0]['USR_ID'] == 0) {
this.claimCase(response.data[0]);
} else {
this.jump(caseNumber);
}
}).catch((e)=>{
this.jump(caseNumber);
});
},
/**
* Method to jump case based in APP_NUMBER
*/
jump (caseNumber) {
let self = this;
const params = { const params = {
APP_NUMBER: caseNumber, APP_NUMBER: caseNumber,
ACTION: "jump", ACTION: "jump",
ACTION_FROM_LIST: "search", ACTION_FROM_LIST: "search",
}; };
let self = this;
api.cases api.cases
.jump(params) .jump(params)
.then(function(response) { .then(function(response) {
@@ -611,6 +633,26 @@ export default {
this.$refs['vueTable'].setOrder(false); this.$refs['vueTable'].setOrder(false);
} }
}, },
/**
* Claim case
*
* @param {object} item
*/
claimCase(item) {
let that = this;
api.cases.open(_.extend({ ACTION: "unassigned" }, item)).then(() => {
api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => {
that.$refs["modal-claim-case"].data = item;
that.$refs["modal-claim-case"].show();
});
});
},
/**
* Claim catch error handler message
*/
claimCatch(message) {
this.showAlert(message, "danger");
}
}, },
}; };
</script> </script>

View File

@@ -337,6 +337,7 @@ export default {
icon: "fas fa-check-circle", icon: "fas fa-check-circle",
options: { options: {
filterable: false, filterable: false,
perPageValues: [],
texts: { texts: {
count: this.$i18n.t("ID_SHOWING_FROM_RECORDS_COUNT"), count: this.$i18n.t("ID_SHOWING_FROM_RECORDS_COUNT"),
first: this.$i18n.t("ID_FIRST"), first: this.$i18n.t("ID_FIRST"),
@@ -1279,9 +1280,6 @@ export default {
padding-left: 50px; padding-left: 50px;
padding-right: 50px; padding-right: 50px;
} }
.VueTables__limit {
display: none;
}
.v-card-text-dark { .v-card-text-dark {
color: #343944; color: #343944;

View File

@@ -310,6 +310,7 @@ export default {
icon:"fas fa-edit", icon:"fas fa-edit",
options: { options: {
filterable: false, filterable: false,
perPageValues: [],
headings: { headings: {
detail: this.$i18n.t("ID_DETAIL_CASE"), detail: this.$i18n.t("ID_DETAIL_CASE"),
case_number: this.$i18n.t("ID_MYCASE_NUMBER"), case_number: this.$i18n.t("ID_MYCASE_NUMBER"),

View File

@@ -341,6 +341,7 @@ export default {
icon:"fas fa-check-circle", icon:"fas fa-check-circle",
options: { options: {
filterable: false, filterable: false,
perPageValues: [],
headings: { headings: {
detail: this.$i18n.t("ID_DETAIL_CASE"), detail: this.$i18n.t("ID_DETAIL_CASE"),
case_number: this.$i18n.t("ID_MYCASE_NUMBER"), case_number: this.$i18n.t("ID_MYCASE_NUMBER"),
@@ -861,10 +862,6 @@ export default {
padding-left: 50px; padding-left: 50px;
padding-right: 50px; padding-right: 50px;
} }
.VueTables__limit {
display: none;
}
.v-card-text-dark { .v-card-text-dark {
color: #343944; color: #343944;
display: inline-block; display: inline-block;

View File

@@ -161,6 +161,7 @@ export default {
tableData: [], tableData: [],
options: { options: {
filterable: false, filterable: false,
perPageValues: [],
headings: { headings: {
case_number: this.$i18n.t("ID_MYCASE_NUMBER"), case_number: this.$i18n.t("ID_MYCASE_NUMBER"),
process_category: this.$i18n.t("ID_CATEGORY_PROCESS"), process_category: this.$i18n.t("ID_CATEGORY_PROCESS"),

View File

@@ -341,6 +341,7 @@ export default {
icon:"far fa-pause-circle", icon:"far fa-pause-circle",
options: { options: {
filterable: false, filterable: false,
perPageValues: [],
headings: { headings: {
detail: this.$i18n.t("ID_DETAIL_CASE"), detail: this.$i18n.t("ID_DETAIL_CASE"),
case_number: this.$i18n.t("ID_MYCASE_NUMBER"), case_number: this.$i18n.t("ID_MYCASE_NUMBER"),

View File

@@ -333,6 +333,7 @@ export default {
icon:"fas fa-users", icon:"fas fa-users",
options: { options: {
filterable: false, filterable: false,
perPageValues: [],
headings: { headings: {
detail: this.$i18n.t("ID_DETAIL_CASE"), detail: this.$i18n.t("ID_DETAIL_CASE"),
case_number: this.$i18n.t("ID_MYCASE_NUMBER"), case_number: this.$i18n.t("ID_MYCASE_NUMBER"),

View File

@@ -369,6 +369,8 @@ class ProcessesTest extends TestCase
'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '', 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '',
'OUT_DOC_OPEN_TYPE' => 1, 'OUT_DOC_OPEN_TYPE' => 1,
'__OUT_DOC_ID_UPDATE__' => false, '__OUT_DOC_ID_UPDATE__' => false,
'OUT_DOC_FOOTER' => null,
'OUT_DOC_HEADER' => null
], ],
[ [
'OUT_DOC_UID' => G::generateUniqueID(), 'OUT_DOC_UID' => G::generateUniqueID(),
@@ -398,6 +400,8 @@ class ProcessesTest extends TestCase
'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '', 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => '',
'OUT_DOC_OPEN_TYPE' => 1, 'OUT_DOC_OPEN_TYPE' => 1,
'__OUT_DOC_ID_UPDATE__' => false, '__OUT_DOC_ID_UPDATE__' => false,
'OUT_DOC_FOOTER' => null,
'OUT_DOC_HEADER' => null
] ]
]; ];
$this->sortArrayByColumn($expected, 'OUT_DOC_UID'); $this->sortArrayByColumn($expected, 'OUT_DOC_UID');

View File

@@ -288,9 +288,10 @@ class EmailServerTest extends TestCase
public function it_should_test_the_send_test_mail_method() public function it_should_test_the_send_test_mail_method()
{ {
$string = ini_get("sendmail_path"); $string = ini_get("sendmail_path");
if (!is_executable($string)) { //in current versions this value has extra parameters and must be cleaned
$this->markTestIncomplete($string . " not found"); $result = explode(" ", $string);
} $path = $result[0];
if (is_executable($path)) {
// The data that will be sent to the method // The data that will be sent to the method
$data = [ $data = [
"FROM_EMAIL" => "admin@processmaker.com", "FROM_EMAIL" => "admin@processmaker.com",
@@ -316,6 +317,7 @@ class EmailServerTest extends TestCase
// Assert the message of the result // Assert the message of the result
$this->assertEquals('**ID_MAIL_TEST_SUCCESS**', $result['msg']); $this->assertEquals('**ID_MAIL_TEST_SUCCESS**', $result['msg']);
} }
}
/** /**
* It tests the sendTestMail method with a failed result * It tests the sendTestMail method with a failed result

View File

@@ -13,6 +13,7 @@ use ProcessMaker\GmailOAuth\GmailOAuth;
use ProcessMaker\Model\User; use ProcessMaker\Model\User;
use RBAC; use RBAC;
use Tests\TestCase; use Tests\TestCase;
use BadMethodCallException;
class GmailOAuthTest extends TestCase class GmailOAuthTest extends TestCase
{ {
@@ -251,7 +252,6 @@ class GmailOAuthTest extends TestCase
*/ */
public function it_should_send_an_email_test_with_PHPMailerOAuth() public function it_should_send_an_email_test_with_PHPMailerOAuth()
{ {
$this->markTestIncomplete('Please solve the error related to Exception');
$faker = $this->faker; $faker = $this->faker;
$gmailOauth = new GmailOAuth(); $gmailOauth = new GmailOAuth();
@@ -276,8 +276,11 @@ class GmailOAuthTest extends TestCase
$gmailOauth->setSenderEmail($faker->email); $gmailOauth->setSenderEmail($faker->email);
$gmailOauth->setMailTo($faker->email); $gmailOauth->setMailTo($faker->email);
$gmailOauth->setSendTestMail(1); $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();
} }
/** /**

View File

@@ -0,0 +1,317 @@
<?php
namespace ProcessMaker\PDF;
use Faker\Factory;
use Tests\TestCase;
/**
* @covers ProcessMaker\PDF\BasicStruct
* @test
*/
class BasicStructTest extends TestCase
{
/**
* Mock for trait test.
* @var object
*/
private $mock;
/**
* Object faker.
* @var object
*/
private $faker;
/**
* setUp method.
*/
public function setUp()
{
parent::setUp();
$this->faker = Factory::create();
$this->mock = $this->getMockForTrait('ProcessMaker\PDF\BasicStruct');
}
/**
* tearDown method.
*/
public function tearDown()
{
parent::tearDown();
}
/**
* This test the getLogo method.
* @covers ProcessMaker\PDF\BasicStruct::getLogo()
* @test
*/
public function it_should_test_the_method_getLogo()
{
$this->assertTrue(is_string($this->mock->getLogo()));
}
/**
* This test the getLogoWidth method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoWidth()
* @test
*/
public function it_should_test_the_method_getLogoWidth()
{
$this->assertTrue(is_float($this->mock->getLogoWidth()));
}
/**
* This test the getLogoPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoPositionX()
* @test
*/
public function it_should_test_the_method_getLogoPositionX()
{
$this->assertTrue(is_float($this->mock->getLogoPositionX()));
}
/**
* This test the getLogoPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoPositionY()
* @test
*/
public function it_should_test_the_method_getLogoPositionY()
{
$this->assertTrue(is_float($this->mock->getLogoPositionY()));
}
/**
* This test the getTitle method.
* @covers ProcessMaker\PDF\BasicStruct::getTitle()
* @test
*/
public function it_should_test_the_method_getTitle()
{
$this->assertTrue(is_string($this->mock->getTitle()));
}
/**
* This test the getTitleFontSize method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontSize()
* @test
*/
public function it_should_test_the_method_getTitleFontSize()
{
$this->assertTrue(is_float($this->mock->getTitleFontSize()));
}
/**
* This test the getTitleFontPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontPositionX()
* @test
*/
public function it_should_test_the_method_getTitleFontPositionX()
{
$this->assertTrue(is_float($this->mock->getTitleFontPositionX()));
}
/**
* This test the getTitleFontPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontPositionY()
* @test
*/
public function it_should_test_the_method_getTitleFontPositionY()
{
$this->assertTrue(is_float($this->mock->getTitleFontPositionY()));
}
/**
* This test the getPageNumber method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumber()
* @test
*/
public function it_should_test_the_method_getPageNumber()
{
$this->assertTrue(is_bool($this->mock->getPageNumber()));
}
/**
* This test the getPageNumberTitle method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberTitle()
* @test
*/
public function it_should_test_the_method_getPageNumberTitle()
{
$this->assertTrue(is_string($this->mock->getPageNumberTitle()));
}
/**
* This test the getPageNumberTotal method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberTotal()
* @test
*/
public function it_should_test_the_method_getPageNumberTotal()
{
$this->assertTrue(is_bool($this->mock->getPageNumberTotal()));
}
/**
* This test the getPageNumberPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberPositionX()
* @test
*/
public function it_should_test_the_method_getPageNumberPositionX()
{
$this->assertTrue(is_float($this->mock->getPageNumberPositionX()));
}
/**
* This test the getPageNumberPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberPositionY()
* @test
*/
public function it_should_test_the_method_getPageNumberPositionY()
{
$this->assertTrue(is_float($this->mock->getPageNumberPositionY()));
}
/**
* This test the setTitle method.
* @covers ProcessMaker\PDF\BasicStruct::setTitle()
* @test
*/
public function it_should_test_the_method_setTitle()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setTitle($this->faker->title));
}
/**
* This test the setTitleFontSize method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontSize()
* @test
*/
public function it_should_test_the_method_setTitleFontSize()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setTitleFontSize($this->faker->randomFloat()));
}
/**
* This test the setTitleFontPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontPositionX()
* @test
*/
public function it_should_test_the_method_setTitleFontPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setTitleFontPositionX($this->faker->randomFloat()));
}
/**
* This test the setTitleFontPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontPositionY()
* @test
*/
public function it_should_test_the_method_setTitleFontPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setTitleFontPositionY($this->faker->randomFloat()));
}
/**
* This test the setLogo method.
* @covers ProcessMaker\PDF\BasicStruct::setLogo()
* @test
*/
public function it_should_test_the_method_setLogo()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setLogo($this->faker->word));
}
/**
* This test the setLogoWidth method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoWidth()
* @test
*/
public function it_should_test_the_method_setLogoWidth()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setLogoWidth($this->faker->randomFloat()));
}
/**
* This test the setLogoPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoPositionX()
* @test
*/
public function it_should_test_the_method_setLogoPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setLogoPositionX($this->faker->randomFloat()));
}
/**
* This test the setLogoPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoPositionY()
* @test
*/
public function it_should_test_the_method_setLogoPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setLogoPositionY($this->faker->randomFloat()));
}
/**
* This test the setPageNumber method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumber()
* @test
*/
public function it_should_test_the_method_setPageNumber()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setPageNumber($this->faker->boolean));
}
/**
* This test the setPageNumberTitle method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberTitle()
* @test
*/
public function it_should_test_the_method_setPageNumberTitle()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setPageNumberTitle($this->faker->title));
}
/**
* This test the setPageNumberTotal method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberTotal()
* @test
*/
public function it_should_test_the_method_setPageNumberTotal()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setPageNumberTotal($this->faker->boolean));
}
/**
* This test the setPageNumberPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberPositionX()
* @test
*/
public function it_should_test_the_method_setPageNumberPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setPageNumberPositionX($this->faker->randomFloat()));
}
/**
* This test the setPageNumberPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberPositionY()
* @test
*/
public function it_should_test_the_method_setPageNumberPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->mock->setPageNumberPositionY($this->faker->randomFloat()));
}
}

View File

@@ -0,0 +1,317 @@
<?php
namespace ProcessMaker\PDF;
use Faker\Factory;
use Tests\TestCase;
/**
* @covers ProcessMaker\PDF\FooterStruct
* @test
*/
class FooterStructTest extends TestCase
{
/**
* FooterStruct object.
* @var FooterStruct
*/
protected $object;
/**
* Object faker.
* @var object
*/
private $faker;
/**
* setUp method.
*/
public function setUp()
{
parent::setUp();
$this->faker = Factory::create();
$this->object = new FooterStruct();
}
/**
* tearDown method.
*/
public function tearDown()
{
parent::tearDown();
}
/**
* This test the getLogo method.
* @covers ProcessMaker\PDF\BasicStruct::getLogo()
* @test
*/
public function it_should_test_the_method_getLogo()
{
$this->assertTrue(is_string($this->object->getLogo()));
}
/**
* This test the getLogoWidth method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoWidth()
* @test
*/
public function it_should_test_the_method_getLogoWidth()
{
$this->assertTrue(is_float($this->object->getLogoWidth()));
}
/**
* This test the getLogoPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoPositionX()
* @test
*/
public function it_should_test_the_method_getLogoPositionX()
{
$this->assertTrue(is_float($this->object->getLogoPositionX()));
}
/**
* This test the getLogoPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoPositionY()
* @test
*/
public function it_should_test_the_method_getLogoPositionY()
{
$this->assertTrue(is_float($this->object->getLogoPositionY()));
}
/**
* This test the getTitle method.
* @covers ProcessMaker\PDF\BasicStruct::getTitle()
* @test
*/
public function it_should_test_the_method_getTitle()
{
$this->assertTrue(is_string($this->object->getTitle()));
}
/**
* This test the getTitleFontSize method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontSize()
* @test
*/
public function it_should_test_the_method_getTitleFontSize()
{
$this->assertTrue(is_float($this->object->getTitleFontSize()));
}
/**
* This test the getTitleFontPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontPositionX()
* @test
*/
public function it_should_test_the_method_getTitleFontPositionX()
{
$this->assertTrue(is_float($this->object->getTitleFontPositionX()));
}
/**
* This test the getTitleFontPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontPositionY()
* @test
*/
public function it_should_test_the_method_getTitleFontPositionY()
{
$this->assertTrue(is_float($this->object->getTitleFontPositionY()));
}
/**
* This test the getPageNumber method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumber()
* @test
*/
public function it_should_test_the_method_getPageNumber()
{
$this->assertTrue(is_bool($this->object->getPageNumber()));
}
/**
* This test the getPageNumberTitle method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberTitle()
* @test
*/
public function it_should_test_the_method_getPageNumberTitle()
{
$this->assertTrue(is_string($this->object->getPageNumberTitle()));
}
/**
* This test the getPageNumberTotal method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberTotal()
* @test
*/
public function it_should_test_the_method_getPageNumberTotal()
{
$this->assertTrue(is_bool($this->object->getPageNumberTotal()));
}
/**
* This test the getPageNumberPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberPositionX()
* @test
*/
public function it_should_test_the_method_getPageNumberPositionX()
{
$this->assertTrue(is_float($this->object->getPageNumberPositionX()));
}
/**
* This test the getPageNumberPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberPositionY()
* @test
*/
public function it_should_test_the_method_getPageNumberPositionY()
{
$this->assertTrue(is_float($this->object->getPageNumberPositionY()));
}
/**
* This test the setTitle method.
* @covers ProcessMaker\PDF\BasicStruct::setTitle()
* @test
*/
public function it_should_test_the_method_setTitle()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitle($this->faker->title));
}
/**
* This test the setTitleFontSize method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontSize()
* @test
*/
public function it_should_test_the_method_setTitleFontSize()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitleFontSize($this->faker->randomFloat()));
}
/**
* This test the setTitleFontPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontPositionX()
* @test
*/
public function it_should_test_the_method_setTitleFontPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitleFontPositionX($this->faker->randomFloat()));
}
/**
* This test the setTitleFontPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontPositionY()
* @test
*/
public function it_should_test_the_method_setTitleFontPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitleFontPositionY($this->faker->randomFloat()));
}
/**
* This test the setLogo method.
* @covers ProcessMaker\PDF\BasicStruct::setLogo()
* @test
*/
public function it_should_test_the_method_setLogo()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogo($this->faker->word));
}
/**
* This test the setLogoWidth method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoWidth()
* @test
*/
public function it_should_test_the_method_setLogoWidth()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogoWidth($this->faker->randomFloat()));
}
/**
* This test the setLogoPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoPositionX()
* @test
*/
public function it_should_test_the_method_setLogoPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogoPositionX($this->faker->randomFloat()));
}
/**
* This test the setLogoPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoPositionY()
* @test
*/
public function it_should_test_the_method_setLogoPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogoPositionY($this->faker->randomFloat()));
}
/**
* This test the setPageNumber method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumber()
* @test
*/
public function it_should_test_the_method_setPageNumber()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumber($this->faker->boolean));
}
/**
* This test the setPageNumberTitle method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberTitle()
* @test
*/
public function it_should_test_the_method_setPageNumberTitle()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberTitle($this->faker->title));
}
/**
* This test the setPageNumberTotal method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberTotal()
* @test
*/
public function it_should_test_the_method_setPageNumberTotal()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberTotal($this->faker->boolean));
}
/**
* This test the setPageNumberPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberPositionX()
* @test
*/
public function it_should_test_the_method_setPageNumberPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberPositionX($this->faker->randomFloat()));
}
/**
* This test the setPageNumberPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberPositionY()
* @test
*/
public function it_should_test_the_method_setPageNumberPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberPositionY($this->faker->randomFloat()));
}
}

View File

@@ -0,0 +1,311 @@
<?php
namespace ProcessMaker\PDF;
use Faker\Factory;
use Tests\TestCase;
/**
* @covers ProcessMaker\PDF\HeaderStruct
* @test
*/
class HeaderStructTest extends TestCase
{
/**
* HeaderStruct object.
* @var HeaderStruct
*/
protected $object;
/**
* setUp method.
*/
public function setUp()
{
parent::setUp();
$this->faker = Factory::create();
$this->object = new HeaderStruct();
}
/**
* tearDown method.
*/
public function tearDown()
{
parent::tearDown();
}
/**
* This test the getLogo method.
* @covers ProcessMaker\PDF\BasicStruct::getLogo()
* @test
*/
public function it_should_test_the_method_getLogo()
{
$this->assertTrue(is_string($this->object->getLogo()));
}
/**
* This test the getLogoWidth method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoWidth()
* @test
*/
public function it_should_test_the_method_getLogoWidth()
{
$this->assertTrue(is_float($this->object->getLogoWidth()));
}
/**
* This test the getLogoPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoPositionX()
* @test
*/
public function it_should_test_the_method_getLogoPositionX()
{
$this->assertTrue(is_float($this->object->getLogoPositionX()));
}
/**
* This test the getLogoPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getLogoPositionY()
* @test
*/
public function it_should_test_the_method_getLogoPositionY()
{
$this->assertTrue(is_float($this->object->getLogoPositionY()));
}
/**
* This test the getTitle method.
* @covers ProcessMaker\PDF\BasicStruct::getTitle()
* @test
*/
public function it_should_test_the_method_getTitle()
{
$this->assertTrue(is_string($this->object->getTitle()));
}
/**
* This test the getTitleFontSize method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontSize()
* @test
*/
public function it_should_test_the_method_getTitleFontSize()
{
$this->assertTrue(is_float($this->object->getTitleFontSize()));
}
/**
* This test the getTitleFontPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontPositionX()
* @test
*/
public function it_should_test_the_method_getTitleFontPositionX()
{
$this->assertTrue(is_float($this->object->getTitleFontPositionX()));
}
/**
* This test the getTitleFontPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getTitleFontPositionY()
* @test
*/
public function it_should_test_the_method_getTitleFontPositionY()
{
$this->assertTrue(is_float($this->object->getTitleFontPositionY()));
}
/**
* This test the getPageNumber method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumber()
* @test
*/
public function it_should_test_the_method_getPageNumber()
{
$this->assertTrue(is_bool($this->object->getPageNumber()));
}
/**
* This test the getPageNumberTitle method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberTitle()
* @test
*/
public function it_should_test_the_method_getPageNumberTitle()
{
$this->assertTrue(is_string($this->object->getPageNumberTitle()));
}
/**
* This test the getPageNumberTotal method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberTotal()
* @test
*/
public function it_should_test_the_method_getPageNumberTotal()
{
$this->assertTrue(is_bool($this->object->getPageNumberTotal()));
}
/**
* This test the getPageNumberPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberPositionX()
* @test
*/
public function it_should_test_the_method_getPageNumberPositionX()
{
$this->assertTrue(is_float($this->object->getPageNumberPositionX()));
}
/**
* This test the getPageNumberPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::getPageNumberPositionY()
* @test
*/
public function it_should_test_the_method_getPageNumberPositionY()
{
$this->assertTrue(is_float($this->object->getPageNumberPositionY()));
}
/**
* This test the setTitle method.
* @covers ProcessMaker\PDF\BasicStruct::setTitle()
* @test
*/
public function it_should_test_the_method_setTitle()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitle($this->faker->title));
}
/**
* This test the setTitleFontSize method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontSize()
* @test
*/
public function it_should_test_the_method_setTitleFontSize()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitleFontSize($this->faker->randomFloat()));
}
/**
* This test the setTitleFontPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontPositionX()
* @test
*/
public function it_should_test_the_method_setTitleFontPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitleFontPositionX($this->faker->randomFloat()));
}
/**
* This test the setTitleFontPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setTitleFontPositionY()
* @test
*/
public function it_should_test_the_method_setTitleFontPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setTitleFontPositionY($this->faker->randomFloat()));
}
/**
* This test the setLogo method.
* @covers ProcessMaker\PDF\BasicStruct::setLogo()
* @test
*/
public function it_should_test_the_method_setLogo()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogo($this->faker->word));
}
/**
* This test the setLogoWidth method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoWidth()
* @test
*/
public function it_should_test_the_method_setLogoWidth()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogoWidth($this->faker->randomFloat()));
}
/**
* This test the setLogoPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoPositionX()
* @test
*/
public function it_should_test_the_method_setLogoPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogoPositionX($this->faker->randomFloat()));
}
/**
* This test the setLogoPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setLogoPositionY()
* @test
*/
public function it_should_test_the_method_setLogoPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setLogoPositionY($this->faker->randomFloat()));
}
/**
* This test the setPageNumber method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumber()
* @test
*/
public function it_should_test_the_method_setPageNumber()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumber($this->faker->boolean));
}
/**
* This test the setPageNumberTitle method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberTitle()
* @test
*/
public function it_should_test_the_method_setPageNumberTitle()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberTitle($this->faker->title));
}
/**
* This test the setPageNumberTotal method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberTotal()
* @test
*/
public function it_should_test_the_method_setPageNumberTotal()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberTotal($this->faker->boolean));
}
/**
* This test the setPageNumberPositionX method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberPositionX()
* @test
*/
public function it_should_test_the_method_setPageNumberPositionX()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberPositionX($this->faker->randomFloat()));
}
/**
* This test the setPageNumberPositionY method.
* @covers ProcessMaker\PDF\BasicStruct::setPageNumberPositionY()
* @test
*/
public function it_should_test_the_method_setPageNumberPositionY()
{
$this->faker->numberBetween(400, 500);
$this->assertEmpty($this->object->setPageNumberPositionY($this->faker->randomFloat()));
}
}

View File

@@ -0,0 +1,173 @@
<?php
namespace ProcessMaker\PDF;
use stdClass;
use Tests\TestCase;
/**
* @covers ProcessMaker\PDF\TCPDFHeaderFooter
* @test
*/
class TCPDFHeaderFooterTest extends TestCase
{
/**
* TCPDFHeaderFooter object.
* @var TCPDFHeaderFooter
*/
protected $object;
/**
* setUp method.
*/
protected function setUp()
{
parent::setUp();
$this->object = new TCPDFHeaderFooter('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$this->object->SetCreator(PDF_CREATOR);
$this->object->SetAuthor('admin');
$this->object->SetTitle('test');
$this->object->SetSubject('test.pdf');
$this->object->SetCompression(true);
$this->setHeaderData();
$this->setFooterData();
}
/**
* tearDown method.
*/
protected function tearDown()
{
parent::tearDown();
}
/**
* Setting data for header configuration.
*/
private function setHeaderData()
{
$header = new stdClass();
$header->logo = PATH_TRUNK . "/vendor/tecnickcom/tcpdf/examples/images/logo_example.jpg";
$header->logoWidth = 10;
$header->logoPositionX = 50;
$header->logoPositionY = 0;
$header->title = "Test1 Test1";
$header->titleFontSize = 60;
$header->titleFontPositionX = 10;
$header->titleFontPositionY = 0;
$header->pageNumber = true;
$header->pageNumberTitle = "Pages";
$header->pageNumberTotal = true;
$header->pageNumberPositionX = 10;
$header->pageNumberPositionY = 0;
$struct = $this->object->getHeaderStruct();
$struct->setLogo($header->logo);
$struct->setLogoWidth($header->logoWidth);
$struct->setLogoPositionX($header->logoPositionX);
$struct->setLogoPositionY($header->logoPositionY);
$struct->setTitle($header->title);
$struct->setTitleFontSize($header->titleFontSize);
$struct->setTitleFontPositionX($header->titleFontPositionX);
$struct->setTitleFontPositionY($header->titleFontPositionY);
$struct->setPageNumber($header->pageNumber);
$struct->setPageNumberTitle($header->pageNumberTitle);
$struct->setPageNumberTotal($header->pageNumberTotal);
$struct->setPageNumberPositionX($header->pageNumberPositionX);
$struct->setPageNumberPositionY($header->pageNumberPositionY);
}
/**
* Setting data for footer configuration.
*/
private function setFooterData()
{
$footer = new stdClass();
$footer->logo = PATH_TRUNK . "/vendor/tecnickcom/tcpdf/examples/images/logo_example.jpg";
$footer->logoWidth = 15;
$footer->logoPositionX = 10;
$footer->logoPositionY = 0;
$footer->title = "Hola mundo como estas";
$footer->titleFontSize = 20;
$footer->titleFontPositionX = 0;
$footer->titleFontPositionY = 5;
$footer->pageNumber = true;
$footer->pageNumberTitle = "Pages";
$footer->pageNumberTotal = true;
$footer->pageNumberPositionX = 40;
$footer->pageNumberPositionY = 5;
$struct = $this->object->getFooterStruct();
$struct->setLogo($footer->logo);
$struct->setLogoWidth($footer->logoWidth);
$struct->setLogoPositionX($footer->logoPositionX);
$struct->setLogoPositionY($footer->logoPositionY);
$struct->setTitle($footer->title);
$struct->setTitleFontSize($footer->titleFontSize);
$struct->setTitleFontPositionX($footer->titleFontPositionX);
$struct->setTitleFontPositionY($footer->titleFontPositionY);
$struct->setPageNumber($footer->pageNumber);
$struct->setPageNumberTitle($footer->pageNumberTitle);
$struct->setPageNumberTotal($footer->pageNumberTotal);
$struct->setPageNumberPositionX($footer->pageNumberPositionX);
$struct->setPageNumberPositionY($footer->pageNumberPositionY);
}
/**
* This test the getHeaderStruct() method.
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::getHeaderStruct()
* @test
*/
public function it_should_test_the_getHeaderStruct()
{
$result = $this->object->getHeaderStruct();
$this->assertNotNull($result);
$this->assertEquals(HeaderStruct::class, get_class($result));
}
/**
* This test the getFooterStruct() method.
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::getFooterStruct()
* @test
*/
public function it_should_test_the_getFooterStruct()
{
$result = $this->object->getFooterStruct();
$this->assertNotNull($result);
$this->assertEquals(FooterStruct::class, get_class($result));
}
/**
* This test the Header() method override.
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::Header()
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::buildHeaderLogo()
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::buildHeaderTitle()
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::buildHeaderPageNumber()
* @test
*/
public function it_should_test_the_Header()
{
$this->object->AddPage();
$result = $this->object->Header();
$this->assertEmpty($result);
}
/**
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::Footer()
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::buildFooterLogo()
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::buildFooterTitle()
* @covers ProcessMaker\PDF\TCPDFHeaderFooter::buildFooterPageNumber()
* @test
*/
public function it_should_test_the_Footer()
{
$this->object->AddPage();
$result = $this->object->Footer();
$this->assertEmpty($result);
}
}

View File

@@ -7,6 +7,7 @@ use ProcessMaker\BusinessModel\Process as BmProcess;
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
use ProcessMaker\ChangeLog\ChangeLog; use ProcessMaker\ChangeLog\ChangeLog;
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
use ProcessMaker\BusinessModel\TaskSchedulerBM;
use ProcessMaker\BusinessModel\WebEntry; use ProcessMaker\BusinessModel\WebEntry;
use ProcessMaker\Core\Installer; use ProcessMaker\Core\Installer;
use ProcessMaker\Core\ProcessesManager; use ProcessMaker\Core\ProcessesManager;
@@ -1130,6 +1131,7 @@ class WorkspaceTools
$this->upgradeSchema($systemSchemaRbac, false, true); // Perform upgrade to RBAC $this->upgradeSchema($systemSchemaRbac, false, true); // Perform upgrade to RBAC
$this->upgradeData(); $this->upgradeData();
$this->checkRbacPermissions(); //check or add new permissions $this->checkRbacPermissions(); //check or add new permissions
$this->checkSchedulerTable();
$this->checkSequenceNumber(); $this->checkSequenceNumber();
$this->migrateIteeToDummytask($this->name); $this->migrateIteeToDummytask($this->name);
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
@@ -3362,7 +3364,7 @@ class WorkspaceTools
*/ */
public function checkRbacPermissions() public function checkRbacPermissions()
{ {
CLI::logging("-> Remove the permissions depreacated in RBAC \n"); CLI::logging("-> Remove the permissions deprecated in RBAC \n");
$this->removePermission(); $this->removePermission();
CLI::logging("-> Verifying roles permissions in RBAC \n"); CLI::logging("-> Verifying roles permissions in RBAC \n");
//Update table RBAC permissions //Update table RBAC permissions
@@ -3378,6 +3380,17 @@ class WorkspaceTools
} }
} }
/**
* Check SCHEDULER table integrity.
* @return void
*/
public function checkSchedulerTable(): void
{
CLI::logging("-> Check SCHEDULER table integrity.\n");
TaskSchedulerBM::checkDataIntegrity();
CLI::logging(" SCHEDULER table integrity was checked.\n");
}
/** /**
* Add sequence numbers * Add sequence numbers
*/ */

View File

@@ -3,6 +3,7 @@
use Illuminate\Filesystem\Filesystem; use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use ProcessMaker\PDF\TCPDFHeaderFooter;
class OutputDocument extends BaseOutputDocument class OutputDocument extends BaseOutputDocument
{ {
@@ -877,7 +878,7 @@ class OutputDocument extends BaseOutputDocument
$content = str_replace("margin-left", "text-indent", $content); $content = str_replace("margin-left", "text-indent", $content);
// Instance the TCPDF library // Instance the TCPDF library
$pdf = new TCPDF($orientation, PDF_UNIT, $media, true, 'UTF-8', false); $pdf = new TCPDFHeaderFooter($orientation, PDF_UNIT, strtoupper($media), true, 'UTF-8', false);
// Set document information // Set document information
$pdf->SetCreator(PDF_CREATOR); $pdf->SetCreator(PDF_CREATOR);
@@ -894,8 +895,15 @@ class OutputDocument extends BaseOutputDocument
$margins["bottom"] = ($margins["bottom"] >= 0) ? $margins["bottom"] : PDF_MARGIN_BOTTOM; $margins["bottom"] = ($margins["bottom"] >= 0) ? $margins["bottom"] : PDF_MARGIN_BOTTOM;
// Set margins configuration // Set margins configuration
$pdf->setPrintHeader(false); $headerOptions = $this->setHeaderOptions($pdf, $fields);
$pdf->setPrintFooter(false); $footerOptions = $this->setFooterOptions($pdf, $fields);
$pdf->setPrintHeader($headerOptions);
$pdf->setPrintFooter($footerOptions);
// Important: footer position depends on header enable
if ($footerOptions === true) {
$pdf->setPrintHeader(true);
}
$pdf->SetLeftMargin($margins['left']); $pdf->SetLeftMargin($margins['left']);
$pdf->SetTopMargin($margins['top']); $pdf->SetTopMargin($margins['top']);
$pdf->SetRightMargin($margins['right']); $pdf->SetRightMargin($margins['right']);
@@ -1153,4 +1161,76 @@ class OutputDocument extends BaseOutputDocument
// Save the CSS file // Save the CSS file
file_put_contents(K_PATH_FONTS . 'fonts.css', $css); file_put_contents(K_PATH_FONTS . 'fonts.css', $css);
} }
/**
* Set and build if header options exist.
* @param TCPDFHeaderFooter $pdf
* @param array $fields
* @return bool
*/
private function setHeaderOptions(TCPDFHeaderFooter $pdf, array $fields): bool
{
if (empty($this->out_doc_header)) {
return false;
}
$header = json_decode($this->out_doc_header);
if ($header->enableHeader === false) {
return false;
}
$struct = $pdf->getHeaderStruct();
$struct->setLogo(G::replaceDataField($header->logo ?? '', $fields));
$struct->setLogoWidth($header->logoWidth ?? 0);
$struct->setLogoPositionX($header->logoPositionX ?? 0);
$struct->setLogoPositionY($header->logoPositionY ?? 0);
$struct->setTitle(G::replaceDataField($header->title ?? '', $fields));
$struct->setTitleFontSize($header->titleFontSize ?? 0);
$struct->setTitleFontPositionX($header->titleFontPositionX ?? 0);
$struct->setTitleFontPositionY($header->titleFontPositionY ?? 0);
$struct->setPageNumber($header->pageNumber ?? false);
$struct->setPageNumberTitle(G::replaceDataField($header->pageNumberTitle ?? '', $fields));
$struct->setPageNumberTotal($header->pageNumberTotal ?? false);
$struct->setPageNumberPositionX($header->pageNumberPositionX ?? 0);
$struct->setPageNumberPositionY($header->pageNumberPositionY ?? 0);
return true;
}
/**
* Set and build if footer options exist.
* @param TCPDFHeaderFooter $pdf
* @param array $fields
* @return bool
*/
private function setFooterOptions(TCPDFHeaderFooter $pdf, array $fields): bool
{
if (empty($this->out_doc_footer)) {
return false;
}
$footer = json_decode($this->out_doc_footer);
if ($footer->enableFooter === false) {
return false;
}
$struct = $pdf->getFooterStruct();
$struct->setLogo(G::replaceDataField($footer->logo ?? '', $fields));
$struct->setLogoWidth($footer->logoWidth ?? 0);
$struct->setLogoPositionX($footer->logoPositionX ?? 0);
$struct->setLogoPositionY($footer->logoPositionY ?? 0);
$struct->setTitle(G::replaceDataField($footer->title ?? '', $fields));
$struct->setTitleFontSize($footer->titleFontSize ?? 0);
$struct->setTitleFontPositionX($footer->titleFontPositionX ?? 0);
$struct->setTitleFontPositionY($footer->titleFontPositionY ?? 0);
$struct->setPageNumber($footer->pageNumber ?? false);
$struct->setPageNumberTitle(G::replaceDataField($footer->pageNumberTitle ?? '', $fields));
$struct->setPageNumberTotal($footer->pageNumberTotal ?? false);
$struct->setPageNumberPositionX($footer->pageNumberPositionX ?? 0);
$struct->setPageNumberPositionY($footer->pageNumberPositionY ?? 0);
return true;
}
} }

View File

@@ -117,6 +117,10 @@ class OutputDocumentMapBuilder
$tMap->addColumn('OUT_DOC_OPEN_TYPE', 'OutDocOpenType', 'int', CreoleTypes::INTEGER, false, null); $tMap->addColumn('OUT_DOC_OPEN_TYPE', 'OutDocOpenType', 'int', CreoleTypes::INTEGER, false, null);
$tMap->addColumn('OUT_DOC_HEADER', 'OutDocHeader', 'string', CreoleTypes::LONGVARCHAR, false, null);
$tMap->addColumn('OUT_DOC_FOOTER', 'OutDocFooter', 'string', CreoleTypes::LONGVARCHAR, false, null);
$tMap->addValidator('OUT_DOC_UID', 'maxLength', 'propel.validator.MaxLengthValidator', '32', 'Output Document UID can be no larger than 32 in size'); $tMap->addValidator('OUT_DOC_UID', 'maxLength', 'propel.validator.MaxLengthValidator', '32', 'Output Document UID can be no larger than 32 in size');
$tMap->addValidator('OUT_DOC_UID', 'required', 'propel.validator.RequiredValidator', '', 'Output Document UID is required.'); $tMap->addValidator('OUT_DOC_UID', 'required', 'propel.validator.RequiredValidator', '', 'Output Document UID is required.');

View File

@@ -183,6 +183,18 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
*/ */
protected $out_doc_open_type = 1; protected $out_doc_open_type = 1;
/**
* The value for the out_doc_header field.
* @var string
*/
protected $out_doc_header;
/**
* The value for the out_doc_footer field.
* @var string
*/
protected $out_doc_footer;
/** /**
* Flag to prevent endless save loop, if this object is referenced * Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction. * by another object which falls in this transaction.
@@ -483,6 +495,28 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
return $this->out_doc_open_type; return $this->out_doc_open_type;
} }
/**
* Get the [out_doc_header] column value.
*
* @return string
*/
public function getOutDocHeader()
{
return $this->out_doc_header;
}
/**
* Get the [out_doc_footer] column value.
*
* @return string
*/
public function getOutDocFooter()
{
return $this->out_doc_footer;
}
/** /**
* Set the value of [out_doc_uid] column. * Set the value of [out_doc_uid] column.
* *
@@ -1055,6 +1089,50 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
} // setOutDocOpenType() } // setOutDocOpenType()
/**
* Set the value of [out_doc_header] column.
*
* @param string $v new value
* @return void
*/
public function setOutDocHeader($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->out_doc_header !== $v) {
$this->out_doc_header = $v;
$this->modifiedColumns[] = OutputDocumentPeer::OUT_DOC_HEADER;
}
} // setOutDocHeader()
/**
* Set the value of [out_doc_footer] column.
*
* @param string $v new value
* @return void
*/
public function setOutDocFooter($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->out_doc_footer !== $v) {
$this->out_doc_footer = $v;
$this->modifiedColumns[] = OutputDocumentPeer::OUT_DOC_FOOTER;
}
} // setOutDocFooter()
/** /**
* Hydrates (populates) the object variables with values from the database resultset. * Hydrates (populates) the object variables with values from the database resultset.
* *
@@ -1124,12 +1202,16 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
$this->out_doc_open_type = $rs->getInt($startcol + 25); $this->out_doc_open_type = $rs->getInt($startcol + 25);
$this->out_doc_header = $rs->getString($startcol + 26);
$this->out_doc_footer = $rs->getString($startcol + 27);
$this->resetModified(); $this->resetModified();
$this->setNew(false); $this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer. // FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 26; // 26 = OutputDocumentPeer::NUM_COLUMNS - OutputDocumentPeer::NUM_LAZY_LOAD_COLUMNS). return $startcol + 28; // 28 = OutputDocumentPeer::NUM_COLUMNS - OutputDocumentPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) { } catch (Exception $e) {
throw new PropelException("Error populating OutputDocument object", $e); throw new PropelException("Error populating OutputDocument object", $e);
@@ -1411,6 +1493,12 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
case 25: case 25:
return $this->getOutDocOpenType(); return $this->getOutDocOpenType();
break; break;
case 26:
return $this->getOutDocHeader();
break;
case 27:
return $this->getOutDocFooter();
break;
default: default:
return null; return null;
break; break;
@@ -1457,6 +1545,8 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
$keys[23] => $this->getOutDocPdfSecurityOwnerPassword(), $keys[23] => $this->getOutDocPdfSecurityOwnerPassword(),
$keys[24] => $this->getOutDocPdfSecurityPermissions(), $keys[24] => $this->getOutDocPdfSecurityPermissions(),
$keys[25] => $this->getOutDocOpenType(), $keys[25] => $this->getOutDocOpenType(),
$keys[26] => $this->getOutDocHeader(),
$keys[27] => $this->getOutDocFooter(),
); );
return $result; return $result;
} }
@@ -1566,6 +1656,12 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
case 25: case 25:
$this->setOutDocOpenType($value); $this->setOutDocOpenType($value);
break; break;
case 26:
$this->setOutDocHeader($value);
break;
case 27:
$this->setOutDocFooter($value);
break;
} // switch() } // switch()
} }
@@ -1693,6 +1789,14 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
$this->setOutDocOpenType($arr[$keys[25]]); $this->setOutDocOpenType($arr[$keys[25]]);
} }
if (array_key_exists($keys[26], $arr)) {
$this->setOutDocHeader($arr[$keys[26]]);
}
if (array_key_exists($keys[27], $arr)) {
$this->setOutDocFooter($arr[$keys[27]]);
}
} }
/** /**
@@ -1808,6 +1912,14 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
$criteria->add(OutputDocumentPeer::OUT_DOC_OPEN_TYPE, $this->out_doc_open_type); $criteria->add(OutputDocumentPeer::OUT_DOC_OPEN_TYPE, $this->out_doc_open_type);
} }
if ($this->isColumnModified(OutputDocumentPeer::OUT_DOC_HEADER)) {
$criteria->add(OutputDocumentPeer::OUT_DOC_HEADER, $this->out_doc_header);
}
if ($this->isColumnModified(OutputDocumentPeer::OUT_DOC_FOOTER)) {
$criteria->add(OutputDocumentPeer::OUT_DOC_FOOTER, $this->out_doc_footer);
}
return $criteria; return $criteria;
} }
@@ -1912,6 +2024,10 @@ abstract class BaseOutputDocument extends BaseObject implements Persistent
$copyObj->setOutDocOpenType($this->out_doc_open_type); $copyObj->setOutDocOpenType($this->out_doc_open_type);
$copyObj->setOutDocHeader($this->out_doc_header);
$copyObj->setOutDocFooter($this->out_doc_footer);
$copyObj->setNew(true); $copyObj->setNew(true);

View File

@@ -25,7 +25,7 @@ abstract class BaseOutputDocumentPeer
const CLASS_DEFAULT = 'classes.model.OutputDocument'; const CLASS_DEFAULT = 'classes.model.OutputDocument';
/** The total number of columns. */ /** The total number of columns. */
const NUM_COLUMNS = 26; const NUM_COLUMNS = 28;
/** The number of lazy-loaded columns. */ /** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0; const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -109,6 +109,12 @@ abstract class BaseOutputDocumentPeer
/** the column name for the OUT_DOC_OPEN_TYPE field */ /** the column name for the OUT_DOC_OPEN_TYPE field */
const OUT_DOC_OPEN_TYPE = 'OUTPUT_DOCUMENT.OUT_DOC_OPEN_TYPE'; const OUT_DOC_OPEN_TYPE = 'OUTPUT_DOCUMENT.OUT_DOC_OPEN_TYPE';
/** the column name for the OUT_DOC_HEADER field */
const OUT_DOC_HEADER = 'OUTPUT_DOCUMENT.OUT_DOC_HEADER';
/** the column name for the OUT_DOC_FOOTER field */
const OUT_DOC_FOOTER = 'OUTPUT_DOCUMENT.OUT_DOC_FOOTER';
/** The PHP to DB Name Mapping */ /** The PHP to DB Name Mapping */
private static $phpNameMap = null; private static $phpNameMap = null;
@@ -120,10 +126,10 @@ abstract class BaseOutputDocumentPeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/ */
private static $fieldNames = array ( private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('OutDocUid', 'OutDocId', 'OutDocTitle', 'OutDocDescription', 'OutDocFilename', 'OutDocTemplate', 'ProUid', 'OutDocReportGenerator', 'OutDocLandscape', 'OutDocMedia', 'OutDocLeftMargin', 'OutDocRightMargin', 'OutDocTopMargin', 'OutDocBottomMargin', 'OutDocGenerate', 'OutDocType', 'OutDocCurrentRevision', 'OutDocFieldMapping', 'OutDocVersioning', 'OutDocDestinationPath', 'OutDocTags', 'OutDocPdfSecurityEnabled', 'OutDocPdfSecurityOpenPassword', 'OutDocPdfSecurityOwnerPassword', 'OutDocPdfSecurityPermissions', 'OutDocOpenType', ), BasePeer::TYPE_PHPNAME => array ('OutDocUid', 'OutDocId', 'OutDocTitle', 'OutDocDescription', 'OutDocFilename', 'OutDocTemplate', 'ProUid', 'OutDocReportGenerator', 'OutDocLandscape', 'OutDocMedia', 'OutDocLeftMargin', 'OutDocRightMargin', 'OutDocTopMargin', 'OutDocBottomMargin', 'OutDocGenerate', 'OutDocType', 'OutDocCurrentRevision', 'OutDocFieldMapping', 'OutDocVersioning', 'OutDocDestinationPath', 'OutDocTags', 'OutDocPdfSecurityEnabled', 'OutDocPdfSecurityOpenPassword', 'OutDocPdfSecurityOwnerPassword', 'OutDocPdfSecurityPermissions', 'OutDocOpenType', 'OutDocHeader', 'OutDocFooter', ),
BasePeer::TYPE_COLNAME => array (OutputDocumentPeer::OUT_DOC_UID, OutputDocumentPeer::OUT_DOC_ID, OutputDocumentPeer::OUT_DOC_TITLE, OutputDocumentPeer::OUT_DOC_DESCRIPTION, OutputDocumentPeer::OUT_DOC_FILENAME, OutputDocumentPeer::OUT_DOC_TEMPLATE, OutputDocumentPeer::PRO_UID, OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR, OutputDocumentPeer::OUT_DOC_LANDSCAPE, OutputDocumentPeer::OUT_DOC_MEDIA, OutputDocumentPeer::OUT_DOC_LEFT_MARGIN, OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN, OutputDocumentPeer::OUT_DOC_TOP_MARGIN, OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN, OutputDocumentPeer::OUT_DOC_GENERATE, OutputDocumentPeer::OUT_DOC_TYPE, OutputDocumentPeer::OUT_DOC_CURRENT_REVISION, OutputDocumentPeer::OUT_DOC_FIELD_MAPPING, OutputDocumentPeer::OUT_DOC_VERSIONING, OutputDocumentPeer::OUT_DOC_DESTINATION_PATH, OutputDocumentPeer::OUT_DOC_TAGS, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS, OutputDocumentPeer::OUT_DOC_OPEN_TYPE, ), BasePeer::TYPE_COLNAME => array (OutputDocumentPeer::OUT_DOC_UID, OutputDocumentPeer::OUT_DOC_ID, OutputDocumentPeer::OUT_DOC_TITLE, OutputDocumentPeer::OUT_DOC_DESCRIPTION, OutputDocumentPeer::OUT_DOC_FILENAME, OutputDocumentPeer::OUT_DOC_TEMPLATE, OutputDocumentPeer::PRO_UID, OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR, OutputDocumentPeer::OUT_DOC_LANDSCAPE, OutputDocumentPeer::OUT_DOC_MEDIA, OutputDocumentPeer::OUT_DOC_LEFT_MARGIN, OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN, OutputDocumentPeer::OUT_DOC_TOP_MARGIN, OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN, OutputDocumentPeer::OUT_DOC_GENERATE, OutputDocumentPeer::OUT_DOC_TYPE, OutputDocumentPeer::OUT_DOC_CURRENT_REVISION, OutputDocumentPeer::OUT_DOC_FIELD_MAPPING, OutputDocumentPeer::OUT_DOC_VERSIONING, OutputDocumentPeer::OUT_DOC_DESTINATION_PATH, OutputDocumentPeer::OUT_DOC_TAGS, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS, OutputDocumentPeer::OUT_DOC_OPEN_TYPE, OutputDocumentPeer::OUT_DOC_HEADER, OutputDocumentPeer::OUT_DOC_FOOTER, ),
BasePeer::TYPE_FIELDNAME => array ('OUT_DOC_UID', 'OUT_DOC_ID', 'OUT_DOC_TITLE', 'OUT_DOC_DESCRIPTION', 'OUT_DOC_FILENAME', 'OUT_DOC_TEMPLATE', 'PRO_UID', 'OUT_DOC_REPORT_GENERATOR', 'OUT_DOC_LANDSCAPE', 'OUT_DOC_MEDIA', 'OUT_DOC_LEFT_MARGIN', 'OUT_DOC_RIGHT_MARGIN', 'OUT_DOC_TOP_MARGIN', 'OUT_DOC_BOTTOM_MARGIN', 'OUT_DOC_GENERATE', 'OUT_DOC_TYPE', 'OUT_DOC_CURRENT_REVISION', 'OUT_DOC_FIELD_MAPPING', 'OUT_DOC_VERSIONING', 'OUT_DOC_DESTINATION_PATH', 'OUT_DOC_TAGS', 'OUT_DOC_PDF_SECURITY_ENABLED', 'OUT_DOC_PDF_SECURITY_OPEN_PASSWORD', 'OUT_DOC_PDF_SECURITY_OWNER_PASSWORD', 'OUT_DOC_PDF_SECURITY_PERMISSIONS', 'OUT_DOC_OPEN_TYPE', ), BasePeer::TYPE_FIELDNAME => array ('OUT_DOC_UID', 'OUT_DOC_ID', 'OUT_DOC_TITLE', 'OUT_DOC_DESCRIPTION', 'OUT_DOC_FILENAME', 'OUT_DOC_TEMPLATE', 'PRO_UID', 'OUT_DOC_REPORT_GENERATOR', 'OUT_DOC_LANDSCAPE', 'OUT_DOC_MEDIA', 'OUT_DOC_LEFT_MARGIN', 'OUT_DOC_RIGHT_MARGIN', 'OUT_DOC_TOP_MARGIN', 'OUT_DOC_BOTTOM_MARGIN', 'OUT_DOC_GENERATE', 'OUT_DOC_TYPE', 'OUT_DOC_CURRENT_REVISION', 'OUT_DOC_FIELD_MAPPING', 'OUT_DOC_VERSIONING', 'OUT_DOC_DESTINATION_PATH', 'OUT_DOC_TAGS', 'OUT_DOC_PDF_SECURITY_ENABLED', 'OUT_DOC_PDF_SECURITY_OPEN_PASSWORD', 'OUT_DOC_PDF_SECURITY_OWNER_PASSWORD', 'OUT_DOC_PDF_SECURITY_PERMISSIONS', 'OUT_DOC_OPEN_TYPE', 'OUT_DOC_HEADER', 'OUT_DOC_FOOTER', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, )
); );
/** /**
@@ -133,10 +139,10 @@ abstract class BaseOutputDocumentPeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/ */
private static $fieldKeys = array ( private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('OutDocUid' => 0, 'OutDocId' => 1, 'OutDocTitle' => 2, 'OutDocDescription' => 3, 'OutDocFilename' => 4, 'OutDocTemplate' => 5, 'ProUid' => 6, 'OutDocReportGenerator' => 7, 'OutDocLandscape' => 8, 'OutDocMedia' => 9, 'OutDocLeftMargin' => 10, 'OutDocRightMargin' => 11, 'OutDocTopMargin' => 12, 'OutDocBottomMargin' => 13, 'OutDocGenerate' => 14, 'OutDocType' => 15, 'OutDocCurrentRevision' => 16, 'OutDocFieldMapping' => 17, 'OutDocVersioning' => 18, 'OutDocDestinationPath' => 19, 'OutDocTags' => 20, 'OutDocPdfSecurityEnabled' => 21, 'OutDocPdfSecurityOpenPassword' => 22, 'OutDocPdfSecurityOwnerPassword' => 23, 'OutDocPdfSecurityPermissions' => 24, 'OutDocOpenType' => 25, ), BasePeer::TYPE_PHPNAME => array ('OutDocUid' => 0, 'OutDocId' => 1, 'OutDocTitle' => 2, 'OutDocDescription' => 3, 'OutDocFilename' => 4, 'OutDocTemplate' => 5, 'ProUid' => 6, 'OutDocReportGenerator' => 7, 'OutDocLandscape' => 8, 'OutDocMedia' => 9, 'OutDocLeftMargin' => 10, 'OutDocRightMargin' => 11, 'OutDocTopMargin' => 12, 'OutDocBottomMargin' => 13, 'OutDocGenerate' => 14, 'OutDocType' => 15, 'OutDocCurrentRevision' => 16, 'OutDocFieldMapping' => 17, 'OutDocVersioning' => 18, 'OutDocDestinationPath' => 19, 'OutDocTags' => 20, 'OutDocPdfSecurityEnabled' => 21, 'OutDocPdfSecurityOpenPassword' => 22, 'OutDocPdfSecurityOwnerPassword' => 23, 'OutDocPdfSecurityPermissions' => 24, 'OutDocOpenType' => 25, 'OutDocHeader' => 26, 'OutDocFooter' => 27, ),
BasePeer::TYPE_COLNAME => array (OutputDocumentPeer::OUT_DOC_UID => 0, OutputDocumentPeer::OUT_DOC_ID => 1, OutputDocumentPeer::OUT_DOC_TITLE => 2, OutputDocumentPeer::OUT_DOC_DESCRIPTION => 3, OutputDocumentPeer::OUT_DOC_FILENAME => 4, OutputDocumentPeer::OUT_DOC_TEMPLATE => 5, OutputDocumentPeer::PRO_UID => 6, OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR => 7, OutputDocumentPeer::OUT_DOC_LANDSCAPE => 8, OutputDocumentPeer::OUT_DOC_MEDIA => 9, OutputDocumentPeer::OUT_DOC_LEFT_MARGIN => 10, OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN => 11, OutputDocumentPeer::OUT_DOC_TOP_MARGIN => 12, OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN => 13, OutputDocumentPeer::OUT_DOC_GENERATE => 14, OutputDocumentPeer::OUT_DOC_TYPE => 15, OutputDocumentPeer::OUT_DOC_CURRENT_REVISION => 16, OutputDocumentPeer::OUT_DOC_FIELD_MAPPING => 17, OutputDocumentPeer::OUT_DOC_VERSIONING => 18, OutputDocumentPeer::OUT_DOC_DESTINATION_PATH => 19, OutputDocumentPeer::OUT_DOC_TAGS => 20, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED => 21, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD => 22, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD => 23, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS => 24, OutputDocumentPeer::OUT_DOC_OPEN_TYPE => 25, ), BasePeer::TYPE_COLNAME => array (OutputDocumentPeer::OUT_DOC_UID => 0, OutputDocumentPeer::OUT_DOC_ID => 1, OutputDocumentPeer::OUT_DOC_TITLE => 2, OutputDocumentPeer::OUT_DOC_DESCRIPTION => 3, OutputDocumentPeer::OUT_DOC_FILENAME => 4, OutputDocumentPeer::OUT_DOC_TEMPLATE => 5, OutputDocumentPeer::PRO_UID => 6, OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR => 7, OutputDocumentPeer::OUT_DOC_LANDSCAPE => 8, OutputDocumentPeer::OUT_DOC_MEDIA => 9, OutputDocumentPeer::OUT_DOC_LEFT_MARGIN => 10, OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN => 11, OutputDocumentPeer::OUT_DOC_TOP_MARGIN => 12, OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN => 13, OutputDocumentPeer::OUT_DOC_GENERATE => 14, OutputDocumentPeer::OUT_DOC_TYPE => 15, OutputDocumentPeer::OUT_DOC_CURRENT_REVISION => 16, OutputDocumentPeer::OUT_DOC_FIELD_MAPPING => 17, OutputDocumentPeer::OUT_DOC_VERSIONING => 18, OutputDocumentPeer::OUT_DOC_DESTINATION_PATH => 19, OutputDocumentPeer::OUT_DOC_TAGS => 20, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED => 21, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD => 22, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD => 23, OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS => 24, OutputDocumentPeer::OUT_DOC_OPEN_TYPE => 25, OutputDocumentPeer::OUT_DOC_HEADER => 26, OutputDocumentPeer::OUT_DOC_FOOTER => 27, ),
BasePeer::TYPE_FIELDNAME => array ('OUT_DOC_UID' => 0, 'OUT_DOC_ID' => 1, 'OUT_DOC_TITLE' => 2, 'OUT_DOC_DESCRIPTION' => 3, 'OUT_DOC_FILENAME' => 4, 'OUT_DOC_TEMPLATE' => 5, 'PRO_UID' => 6, 'OUT_DOC_REPORT_GENERATOR' => 7, 'OUT_DOC_LANDSCAPE' => 8, 'OUT_DOC_MEDIA' => 9, 'OUT_DOC_LEFT_MARGIN' => 10, 'OUT_DOC_RIGHT_MARGIN' => 11, 'OUT_DOC_TOP_MARGIN' => 12, 'OUT_DOC_BOTTOM_MARGIN' => 13, 'OUT_DOC_GENERATE' => 14, 'OUT_DOC_TYPE' => 15, 'OUT_DOC_CURRENT_REVISION' => 16, 'OUT_DOC_FIELD_MAPPING' => 17, 'OUT_DOC_VERSIONING' => 18, 'OUT_DOC_DESTINATION_PATH' => 19, 'OUT_DOC_TAGS' => 20, 'OUT_DOC_PDF_SECURITY_ENABLED' => 21, 'OUT_DOC_PDF_SECURITY_OPEN_PASSWORD' => 22, 'OUT_DOC_PDF_SECURITY_OWNER_PASSWORD' => 23, 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => 24, 'OUT_DOC_OPEN_TYPE' => 25, ), BasePeer::TYPE_FIELDNAME => array ('OUT_DOC_UID' => 0, 'OUT_DOC_ID' => 1, 'OUT_DOC_TITLE' => 2, 'OUT_DOC_DESCRIPTION' => 3, 'OUT_DOC_FILENAME' => 4, 'OUT_DOC_TEMPLATE' => 5, 'PRO_UID' => 6, 'OUT_DOC_REPORT_GENERATOR' => 7, 'OUT_DOC_LANDSCAPE' => 8, 'OUT_DOC_MEDIA' => 9, 'OUT_DOC_LEFT_MARGIN' => 10, 'OUT_DOC_RIGHT_MARGIN' => 11, 'OUT_DOC_TOP_MARGIN' => 12, 'OUT_DOC_BOTTOM_MARGIN' => 13, 'OUT_DOC_GENERATE' => 14, 'OUT_DOC_TYPE' => 15, 'OUT_DOC_CURRENT_REVISION' => 16, 'OUT_DOC_FIELD_MAPPING' => 17, 'OUT_DOC_VERSIONING' => 18, 'OUT_DOC_DESTINATION_PATH' => 19, 'OUT_DOC_TAGS' => 20, 'OUT_DOC_PDF_SECURITY_ENABLED' => 21, 'OUT_DOC_PDF_SECURITY_OPEN_PASSWORD' => 22, 'OUT_DOC_PDF_SECURITY_OWNER_PASSWORD' => 23, 'OUT_DOC_PDF_SECURITY_PERMISSIONS' => 24, 'OUT_DOC_OPEN_TYPE' => 25, 'OUT_DOC_HEADER' => 26, 'OUT_DOC_FOOTER' => 27, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, )
); );
/** /**
@@ -289,6 +295,10 @@ abstract class BaseOutputDocumentPeer
$criteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_OPEN_TYPE); $criteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_OPEN_TYPE);
$criteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_HEADER);
$criteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_FOOTER);
} }
const COUNT = 'COUNT(OUTPUT_DOCUMENT.OUT_DOC_UID)'; const COUNT = 'COUNT(OUTPUT_DOCUMENT.OUT_DOC_UID)';

View File

@@ -1002,6 +1002,8 @@
<column name="OUT_DOC_PDF_SECURITY_OWNER_PASSWORD" type="VARCHAR" size="32" required="false" default=""/> <column name="OUT_DOC_PDF_SECURITY_OWNER_PASSWORD" type="VARCHAR" size="32" required="false" default=""/>
<column name="OUT_DOC_PDF_SECURITY_PERMISSIONS" type="VARCHAR" size="150" required="false" default=""/> <column name="OUT_DOC_PDF_SECURITY_PERMISSIONS" type="VARCHAR" size="150" required="false" default=""/>
<column name="OUT_DOC_OPEN_TYPE" type="INTEGER" default="1"/> <column name="OUT_DOC_OPEN_TYPE" type="INTEGER" default="1"/>
<column name="OUT_DOC_HEADER" type="LONGVARCHAR" required="false"/>
<column name="OUT_DOC_FOOTER" type="LONGVARCHAR" required="false"/>
<unique name="INDEX_OUT_DOC_ID"> <unique name="INDEX_OUT_DOC_ID">
<unique-column name="OUT_DOC_ID"/> <unique-column name="OUT_DOC_ID"/>
</unique> </unique>

View File

@@ -477,6 +477,8 @@ CREATE TABLE `OUTPUT_DOCUMENT`
`OUT_DOC_PDF_SECURITY_OWNER_PASSWORD` VARCHAR(32) default '', `OUT_DOC_PDF_SECURITY_OWNER_PASSWORD` VARCHAR(32) default '',
`OUT_DOC_PDF_SECURITY_PERMISSIONS` VARCHAR(150) default '', `OUT_DOC_PDF_SECURITY_PERMISSIONS` VARCHAR(150) default '',
`OUT_DOC_OPEN_TYPE` INTEGER default 1, `OUT_DOC_OPEN_TYPE` INTEGER default 1,
`OUT_DOC_HEADER` MEDIUMTEXT,
`OUT_DOC_FOOTER` MEDIUMTEXT,
PRIMARY KEY (`OUT_DOC_UID`), PRIMARY KEY (`OUT_DOC_UID`),
UNIQUE KEY `INDEX_OUT_DOC_ID` (`OUT_DOC_ID`) UNIQUE KEY `INDEX_OUT_DOC_ID` (`OUT_DOC_ID`)
)ENGINE=InnoDB DEFAULT CHARSET='utf8'; )ENGINE=InnoDB DEFAULT CHARSET='utf8';

View File

@@ -1,87 +1,57 @@
<?php <?php
namespace ProcessMaker\BusinessModel; namespace ProcessMaker\BusinessModel;
use \G; use Exception;
use G;
use ProcessMaker\Model\OutputDocument as ModelOutputDocument;
class OutputDocument class OutputDocument
{ {
/** /**
* Return output documents of a project * Return output documents of a project.
* @param string $sProcessUID * @param string $proUid
* @return array * @return array
*
* @access public * @access public
*/ */
public function getOutputDocuments($sProcessUID = '') public function getOutputDocuments($proUid = '')
{ {
try { try {
$sDelimiter = \DBAdapter::getStringDelimiter(); $result = [];
$oCriteria = new \Criteria('workflow'); $outputDocuments = ModelOutputDocument::select()
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID); ->where('PRO_UID', '=', $proUid)
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); ->get();
$oCriteria->addSelectColumn(\OutputDocumentPeer::PRO_UID); foreach ($outputDocuments as $value) {
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR); if (!empty($value->OUT_DOC_TITLE)) {
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LANDSCAPE); $result[] = [
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_MEDIA); 'out_doc_uid' => $value->OUT_DOC_UID,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LEFT_MARGIN); 'out_doc_title' => $value->OUT_DOC_TITLE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN); 'out_doc_description' => $value->OUT_DOC_DESCRIPTION,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TOP_MARGIN); 'out_doc_filename' => $value->OUT_DOC_FILENAME,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN); 'out_doc_template' => $value->OUT_DOC_TEMPLATE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_GENERATE); 'out_doc_report_generator' => $value->OUT_DOC_REPORT_GENERATOR,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); 'out_doc_landscape' => $value->OUT_DOC_LANDSCAPE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_CURRENT_REVISION); 'out_doc_media' => $value->OUT_DOC_MEDIA,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FIELD_MAPPING); 'out_doc_left_margin' => $value->OUT_DOC_LEFT_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_VERSIONING); 'out_doc_right_margin' => $value->OUT_DOC_RIGHT_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESTINATION_PATH); 'out_doc_top_margin' => $value->OUT_DOC_TOP_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TAGS); 'out_doc_bottom_margin' => $value->OUT_DOC_BOTTOM_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED); 'out_doc_generate' => $value->OUT_DOC_GENERATE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD); 'out_doc_type' => $value->OUT_DOC_TYPE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD); 'out_doc_current_revision' => $value->OUT_DOC_CURRENT_REVISION,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS); 'out_doc_field_mapping' => $value->OUT_DOC_FIELD_MAPPING,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_OPEN_TYPE); 'out_doc_versioning' => $value->OUT_DOC_VERSIONING,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TITLE); 'out_doc_destination_path' => $value->OUT_DOC_DESTINATION_PATH,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESCRIPTION); 'out_doc_tags' => $value->OUT_DOC_TAGS,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FILENAME); 'out_doc_pdf_security_enabled' => $value->OUT_DOC_PDF_SECURITY_ENABLED,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TEMPLATE); 'out_doc_pdf_security_permissions' => $value->OUT_DOC_PDF_SECURITY_PERMISSIONS,
$oCriteria->add(\OutputDocumentPeer::PRO_UID, $sProcessUID); 'out_doc_open_type' => $value->OUT_DOC_OPEN_TYPE,
$oDataset = \OutputDocumentPeer::doSelectRS($oCriteria); 'out_doc_header' => json_decode($value->OUT_DOC_HEADER),
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); 'out_doc_footer' => json_decode($value->OUT_DOC_FOOTER)
$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"]);
} }
$oDataset->next();
} }
return $outputDocArray; return $result;
} catch (Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
@@ -89,83 +59,51 @@ class OutputDocument
/** /**
* Return a single output document of a project * Return a single output document of a project
* @param string $sProcessUID * @param string $proUid
* @param string $sOutputDocumentUID * @param string $outDocUid
* @return array * @return array
* *
* @access public * @access public
*/ */
public function getOutputDocument($sProcessUID = '', $sOutputDocumentUID = '') public function getOutputDocument($proUid = '', $outDocUid = '')
{ {
try { try {
$sDelimiter = \DBAdapter::getStringDelimiter(); $result = [];
$oCriteria = new \Criteria('workflow'); $outputDocuments = ModelOutputDocument::select()
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID); ->where('PRO_UID', '=', $proUid)
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); ->where('OUT_DOC_UID', '=', $outDocUid)
$oCriteria->addSelectColumn(\OutputDocumentPeer::PRO_UID); ->get();
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_REPORT_GENERATOR); foreach ($outputDocuments as $value) {
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LANDSCAPE); if (!empty($value->OUT_DOC_TITLE)) {
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_MEDIA); $result = [
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_LEFT_MARGIN); 'out_doc_uid' => $value->OUT_DOC_UID,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_RIGHT_MARGIN); 'out_doc_title' => $value->OUT_DOC_TITLE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TOP_MARGIN); 'out_doc_description' => $value->OUT_DOC_DESCRIPTION,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_BOTTOM_MARGIN); 'out_doc_filename' => $value->OUT_DOC_FILENAME,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_GENERATE); 'out_doc_template' => $value->OUT_DOC_TEMPLATE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TYPE); 'out_doc_report_generator' => $value->OUT_DOC_REPORT_GENERATOR,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_CURRENT_REVISION); 'out_doc_landscape' => $value->OUT_DOC_LANDSCAPE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FIELD_MAPPING); 'out_doc_media' => $value->OUT_DOC_MEDIA,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_VERSIONING); 'out_doc_left_margin' => $value->OUT_DOC_LEFT_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESTINATION_PATH); 'out_doc_right_margin' => $value->OUT_DOC_RIGHT_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TAGS); 'out_doc_top_margin' => $value->OUT_DOC_TOP_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_ENABLED); 'out_doc_bottom_margin' => $value->OUT_DOC_BOTTOM_MARGIN,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OPEN_PASSWORD); 'out_doc_generate' => $value->OUT_DOC_GENERATE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_OWNER_PASSWORD); 'out_doc_type' => $value->OUT_DOC_TYPE,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS); 'out_doc_current_revision' => $value->OUT_DOC_CURRENT_REVISION,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_OPEN_TYPE); 'out_doc_field_mapping' => $value->OUT_DOC_FIELD_MAPPING,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TITLE); 'out_doc_versioning' => $value->OUT_DOC_VERSIONING,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_DESCRIPTION); 'out_doc_destination_path' => $value->OUT_DOC_DESTINATION_PATH,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_FILENAME); 'out_doc_tags' => $value->OUT_DOC_TAGS,
$oCriteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_TEMPLATE); 'out_doc_pdf_security_enabled' => $value->OUT_DOC_PDF_SECURITY_ENABLED,
$oCriteria->add(\OutputDocumentPeer::OUT_DOC_UID, $sOutputDocumentUID); 'out_doc_pdf_security_permissions' => $value->OUT_DOC_PDF_SECURITY_PERMISSIONS,
$oCriteria->add(\OutputDocumentPeer::PRO_UID, $sProcessUID); 'out_doc_open_type' => $value->OUT_DOC_OPEN_TYPE,
$oDataset = \OutputDocumentPeer::doSelectRS($oCriteria); 'out_doc_header' => json_decode($value->OUT_DOC_HEADER),
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); 'out_doc_footer' => json_decode($value->OUT_DOC_FOOTER)
$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"]);
} }
$oDataset->next();
} }
return $outputDocArray; return $result;
} catch (Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
@@ -181,6 +119,19 @@ class OutputDocument
*/ */
public function addOutputDocument($sProcessUID, $outputDocumentData) 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 = $outputDocumentData['out_doc_pdf_security_permissions'];
$pemission = explode("|", $pemission); $pemission = explode("|", $pemission);
foreach ($pemission as $row) { foreach ($pemission as $row) {
@@ -222,6 +173,9 @@ class OutputDocument
} }
$outDocUid = $oOutputDocument->create($outputDocumentData); $outDocUid = $oOutputDocument->create($outputDocumentData);
$outputDocumentData = array_change_key_case($outputDocumentData, CASE_LOWER); $outputDocumentData = array_change_key_case($outputDocumentData, CASE_LOWER);
$outputDocumentData['out_doc_header'] = json_decode($outputDocumentData['out_doc_header']);
$outputDocumentData['out_doc_footer'] = json_decode($outputDocumentData['out_doc_footer']);
$this->updateOutputDocument($sProcessUID, $outputDocumentData, 1, $outDocUid); $this->updateOutputDocument($sProcessUID, $outputDocumentData, 1, $outDocUid);
//Return //Return
unset($outputDocumentData["PRO_UID"]); unset($outputDocumentData["PRO_UID"]);
@@ -244,6 +198,19 @@ class OutputDocument
*/ */
public function updateOutputDocument($sProcessUID, $outputDocumentData, $sFlag, $sOutputDocumentUID = '') 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); $oConnection = \Propel::getConnection(\OutputDocumentPeer::DATABASE_NAME);
$pemission = $outputDocumentData['out_doc_pdf_security_permissions']; $pemission = $outputDocumentData['out_doc_pdf_security_permissions'];
$pemission = explode("|", $pemission); $pemission = explode("|", $pemission);

View File

@@ -2,6 +2,8 @@
namespace ProcessMaker\BusinessModel; namespace ProcessMaker\BusinessModel;
use Bootstrap;
use Illuminate\Support\Facades\Log;
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use ProcessMaker\Model\TaskScheduler; use ProcessMaker\Model\TaskScheduler;
@@ -223,6 +225,7 @@ class TaskSchedulerBM
] ]
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
]; ];
/** /**
* Return the records in Schedule Table by category * Return the records in Schedule Table by category
*/ */
@@ -244,6 +247,7 @@ class TaskSchedulerBM
return $tasks; return $tasks;
} }
} }
/** /**
* Save the record Schedule in Schedule Table * Save the record Schedule in Schedule Table
*/ */
@@ -264,26 +268,31 @@ class TaskSchedulerBM
$task->save(); $task->save();
return $task; return $task;
} }
/** /**
* Initial data for Schedule Table, with default values * Initial data for Schedule Table, with default values
*/ */
public static function generateInitialData() public static function generateInitialData()
{ {
$arraySystemConfiguration = System::getSystemConfiguration('', '', config("system.workspace"));
$toSave = [];
$win = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
foreach (TaskSchedulerBM::$services as $service) { foreach (TaskSchedulerBM::$services as $service) {
self::registerScheduledTask($service);
}
}
/**
* Register scheduled task.
* @param array $service
* @return TaskScheduler
*/
private static function registerScheduledTask(array $service)
{
$task = new TaskScheduler; $task = new TaskScheduler;
$task->title = $service["title"]; $task->title = $service["title"];
$task->category = $service["category"]; $task->category = $service["category"];
$task->description = $service["description"]; $task->description = $service["description"];
$task->startingTime = $service["startingTime"]; $task->startingTime = $service["startingTime"];
$task->endingTime = $service["endingTime"]; $task->endingTime = $service["endingTime"];
if ($win) { $task->body = self::buildBody($service);
$task->body = 'php "' . PATH_TRUNK . $service["filew"] . '" ' . $service["service"] . ' +w' . config("system.workspace") . ' +force +async';
} else {
$task->body = 'su -s /bin/sh -c "php ' . PATH_TRUNK . $service["file"] . " " . $service["service"] . ' +w' . config("system.workspace") . ' +force +async"';
}
$task->expression = $service["expression"]; $task->expression = $service["expression"];
$task->type = "shell"; $task->type = "shell";
$task->system = 1; $task->system = 1;
@@ -300,6 +309,68 @@ class TaskSchedulerBM
"timezone" => $task->timezone "timezone" => $task->timezone
]); ]);
$task->save(); $task->save();
return $task;
}
/**
* Build body parameter.
* @param array $service
* @return string
*/
private static function buildBody(array $service): string
{
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
return 'php "' . PATH_TRUNK . $service["filew"] . '" ' . $service["service"] . ' +w' . config("system.workspace") . ' +force +async';
} else {
return 'su -s /bin/sh -c "php ' . PATH_TRUNK . $service["file"] . " " . $service["service"] . ' +w' . config("system.workspace") . ' +force +async"';
} }
} }
/**
* Check data integrity.
* @return array
*/
public static function checkDataIntegrity(): array
{
$beforeChanges = TaskScheduler::select()->get();
//remove missing register
$titleCondition = [];
$descriptionCondition = [];
foreach (self::$services as $service) {
$titleCondition[] = $service['title'];
$descriptionCondition[] = $service['description'];
}
TaskScheduler::whereNotIn('title', $titleCondition)
->whereNotIn('description', $descriptionCondition)
->delete();
//update register or create new register
foreach (self::$services as $service) {
$scheduler = TaskScheduler::select()
->where('title', '=', $service['title'])
->where('description', '=', $service['description'])
->get()
->first();
if (is_null($scheduler)) {
self::registerScheduledTask($service);
} else {
$scheduler->body = self::buildBody($service);
$scheduler->type = 'shell';
$scheduler->category = $service['category'];
$scheduler->system = 1;
$scheduler->update();
}
}
//log changes
$afterChanges = TaskScheduler::select()->get();
$result = [
'beforeChanges' => $beforeChanges,
'afterChanges' => $afterChanges
];
$message = 'Check SCHEDULER table integrity';
Log::channel(':taskSchedulerCheckDataIntegrity')->info($message, Bootstrap::context($result));
return $result;
}
} }

View File

@@ -0,0 +1,336 @@
<?php
namespace ProcessMaker\PDF;
/**
* Struct for header and footer configuration.
*/
trait BasicStruct
{
/**
* Path to image file.
* @var string
*/
private $logo = '';
/**
* Width to image file, the height is calculated automatically proportional
* to the original dimensions.
* @var float
*/
private $logoWidth = 0;
/**
* Position of the image with respect to the ordinate X since left margin.
* @var float
*/
private $logoPositionX = 0;
/**
* Position of the image with respect to the ordinate Y since top margin.
* @var float
*/
private $logoPositionY = 0;
/**
* Title of the page.
* @var string
*/
private $title = '';
/**
* Font size of the title.
* @var float
*/
private $titleFontSize = 0;
/**
* Position of the title with respect to the ordinate X since left margin.
* @var float
*/
private $titleFontPositionX = 0;
/**
* Position of the title with respect to the ordinate Y since top margin.
* @var float
*/
private $titleFontPositionY = 0;
/**
* Indicates if the page number is displayed.
* @var bool
*/
private $pageNumber = false;
/**
* Alternative text to indicate the numbered page.
* @var string
*/
private $pageNumberTitle = '';
/**
* Indicates if the pages total is displayed.
* @var bool
*/
private $pageNumberTotal = false;
/**
* Position of the page number with respect to the ordinate X since left margin.
* @var float
*/
private $pageNumberPositionX = 0;
/**
* Position of the page number with respect to the ordinate Y since bottom margin.
* @var float
*/
private $pageNumberPositionY = 0;
/**
* Get logo property.
* @return string
*/
public function getLogo(): string
{
return $this->logo;
}
/**
* Get logoWidth property.
* @return float
*/
public function getLogoWidth(): float
{
return $this->logoWidth;
}
/**
* Get logoPositionX property.
* @return float
*/
public function getLogoPositionX(): float
{
return $this->logoPositionX;
}
/**
* Get logoPositionY property.
* @return float
*/
public function getLogoPositionY(): float
{
return $this->logoPositionY;
}
/**
* Get title property.
* @return string
*/
public function getTitle(): string
{
return $this->title;
}
/**
* Get titleFontSize property.
* @return float
*/
public function getTitleFontSize(): float
{
return $this->titleFontSize;
}
/**
* Get titleFontPositionX property.
* @return float
*/
public function getTitleFontPositionX(): float
{
return $this->titleFontPositionX;
}
/**
* Get titleFontPositionY property.
* @return float
*/
public function getTitleFontPositionY(): float
{
return $this->titleFontPositionY;
}
/**
* Get pageNumber property.
* @return bool
*/
public function getPageNumber(): bool
{
return $this->pageNumber;
}
/**
* Get pageNumberTitle property.
* @return string
*/
public function getPageNumberTitle(): string
{
return $this->pageNumberTitle;
}
/**
* Get pageNumberTotal property.
* @return bool
*/
public function getPageNumberTotal(): bool
{
return $this->pageNumberTotal;
}
/**
* Get pageNumberPositionX property.
* @return float
*/
public function getPageNumberPositionX(): float
{
return $this->pageNumberPositionX;
}
/**
* Get pageNumberPositionY property.
* @return float
*/
public function getPageNumberPositionY(): float
{
return $this->pageNumberPositionY;
}
/**
* Set property title.
* @param string $title
* @return void
*/
public function setTitle(string $title): void
{
$this->title = $title;
}
/**
* Set property titleFontSize.
* @param float $titleFontSize
* @return void
*/
public function setTitleFontSize(float $titleFontSize): void
{
$this->titleFontSize = $titleFontSize;
}
/**
* Set property titleFontPositionX.
* @param float $titleFontPositionX
* @return void
*/
public function setTitleFontPositionX(float $titleFontPositionX): void
{
$this->titleFontPositionX = $titleFontPositionX;
}
/**
* Set property titleFontPositionY.
* @param float $titleFontPositionY
* @return void
*/
public function setTitleFontPositionY(float $titleFontPositionY): void
{
$this->titleFontPositionY = $titleFontPositionY;
}
/**
* Set property logo.
* @param string $logo
* @return void
*/
public function setLogo(string $logo): void
{
$this->logo = $logo;
}
/**
* Set property logoWidth.
* @param float $logoWidth
* @return void
*/
public function setLogoWidth(float $logoWidth): void
{
$this->logoWidth = $logoWidth;
}
/**
* Set property logoPositionX.
* @param float $logoPositionX
* @return void
*/
public function setLogoPositionX(float $logoPositionX): void
{
$this->logoPositionX = $logoPositionX;
}
/**
* Set property logoPositionY.
* @param float $logoPositionY
* @return void
*/
public function setLogoPositionY(float $logoPositionY): void
{
$this->logoPositionY = $logoPositionY;
}
/**
* Set property pageNumber.
* @param bool $pageNumber
* @return void
*/
public function setPageNumber(bool $pageNumber): void
{
$this->pageNumber = $pageNumber;
}
/**
* Set property pageNumberTitle.
* @param string $pageNumberTitle
* @return void
*/
public function setPageNumberTitle(string $pageNumberTitle): void
{
$this->pageNumberTitle = $pageNumberTitle;
}
/**
* Set property pageNumberTotal.
* @param bool $pageNumberTotal
* @return void
*/
public function setPageNumberTotal(bool $pageNumberTotal): void
{
$this->pageNumberTotal = $pageNumberTotal;
}
/**
* Set property pageNumberPositionX.
* @param float $pageNumberPositionX
* @return void
*/
public function setPageNumberPositionX(float $pageNumberPositionX): void
{
$this->pageNumberPositionX = $pageNumberPositionX;
}
/**
* Set property pageNumberPositionY.
* @param float $pageNumberPositionY
* @return void
*/
public function setPageNumberPositionY(float $pageNumberPositionY): void
{
$this->pageNumberPositionY = $pageNumberPositionY;
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace ProcessMaker\PDF;
class FooterStruct
{
/**
* Using basic struct for footer properties.
*/
use BasicStruct;
}

View File

@@ -0,0 +1,11 @@
<?php
namespace ProcessMaker\PDF;
class HeaderStruct
{
/**
* Using basic struct for header properties.
*/
use BasicStruct;
}

View File

@@ -0,0 +1,243 @@
<?php
namespace ProcessMaker\PDF;
use TCPDF;
class TCPDFHeaderFooter extends TCPDF
{
/**
* Property for configure header element.
* @var HeaderStruct
*/
private $headerStruct;
/**
* Property for configure footer element.
* @var FooterStruct
*/
private $footerStruct;
/**
* Save the original margins configured in the page.
* @var array
*/
private $originalMargins;
/**
* Constructor of the class.
* @param string $orientation
* @param string $unit
* @param string $format
* @param bool $unicode
* @param string $encoding
* @param bool $diskcache
* @param bool $pdfa
*/
public function __construct($orientation = 'P', $unit = 'mm', $format = 'A4', $unicode = true, $encoding = 'UTF-8', $diskcache = false, $pdfa = false)
{
parent::__construct($orientation, $unit, $format, $unicode, $encoding, $diskcache, $pdfa);
$this->headerStruct = new HeaderStruct();
$this->footerStruct = new FooterStruct();
}
/**
* Destructor of the class.
*/
public function __destruct()
{
parent::__destruct();
}
/**
* Gets an object that contains the properties of the header.
* @return HeaderStruct
*/
public function getHeaderStruct(): HeaderStruct
{
return $this->headerStruct;
}
/**
* Gets an object that contains the properties of the footer.
* @return FooterStruct
*/
public function getFooterStruct(): FooterStruct
{
return $this->footerStruct;
}
/**
* This method is used to render the page header.
* This method has been overwritten.
*/
public function Header()
{
$heights = [];
$struct = $this->getHeaderStruct();
if (empty($this->originalMargins)) {
$this->originalMargins = $this->getMargins();
}
$margins = $this->originalMargins;
$this->buildHeaderLogo($struct, $margins, $heights);
$this->buildHeaderTitle($struct, $margins, $heights);
$this->buildHeaderPageNumber($struct, $margins, $heights);
//page adjust
$newHeight = max($heights);
$this->SetTopMargin($newHeight);
}
/**
* Build header logo.
* @param HeaderStruct $struct
* @param array $margins
* @param array $heights
* @return void
*/
private function buildHeaderLogo(HeaderStruct $struct, array $margins, array &$heights): void
{
$path = $struct->getLogo();
if (!file_exists($path)) {
return;
}
$pathinfo = pathinfo($path);
$imageSize = getimagesize($path);
$extension = $pathinfo['extension'];
$x = $struct->getLogoPositionX() + $margins['left'];
$y = $struct->getLogoPositionY() + $margins['top'];
$width = $struct->getLogoWidth();
$this->Image($path, $x, $y, $width, 0, $extension, '', '', false, 300, '', false, false, 0, false, false, false);
$newImageHeight = ($width * $imageSize[1] / $imageSize[0]);
$heights[] = $margins['top'] + $newImageHeight;
}
/**
* Build header title.
* @param HeaderStruct $struct
* @param array $margins
* @param array $heights
* @return void
*/
private function buildHeaderTitle(HeaderStruct $struct, array $margins, array &$heights): void
{
$string = $struct->getTitle();
$x = $struct->getTitleFontPositionX() + $margins['left'];
$y = $struct->getTitleFontPositionY() + $margins['top'];
$fontSize = $struct->getTitleFontSize();
$this->SetXY($x, $y);
$this->SetFont('helvetica', 'B', $fontSize);
$this->MultiCell(0, 0, $string, 0, 'L', false, 1, '', '', true, 0, false, true, 0, 'T', false);
$heights[] = $margins['top'] + ($this->getCellHeight($fontSize, false)) / 2;
}
/**
* Build header page number.
* @param HeaderStruct $struct
* @param array $margins
* @param array $heights
* @return void
*/
private function buildHeaderPageNumber(HeaderStruct $struct, array $margins, array &$heights): void
{
if ($struct->getPageNumber() === true) {
$pageString = empty($struct->getPageNumberTitle()) ? 'Page ' : $struct->getPageNumberTitle() . ' ';
$pageNumberTotal = $struct->getPageNumberTotal() === true ? ' / ' . $this->getAliasNbPages() : '';
$string = $pageString . $this->getAliasNumPage() . $pageNumberTotal;
$x = $struct->getPageNumberPositionX() + $margins['left'];
$y = $struct->getPageNumberPositionY() + $margins['top'];
$fontSize = 8;
$this->SetXY($x, $y);
$this->SetFont('helvetica', 'I', $fontSize);
$this->Cell(0, 0, $string, 0, 0, '', false, '', 0, false, 'T', 'M');
$heights[] = $margins['top'] + ($this->getCellHeight($fontSize, false)) / 2;
}
}
/**
* This method is used to render the page footer.
* This method has been overwritten.
*/
public function Footer()
{
$struct = $this->getFooterStruct();
if (empty($this->originalMargins)) {
$this->originalMargins = $this->getMargins();
}
$margins = $this->originalMargins;
//page adjust
$bottom = $margins['bottom'] <= 0 ? 1 : $margins['bottom'];
$this->SetY(-1 * $bottom);
$currentY = $this->GetY();
$this->buildFooterLogo($margins, $currentY, $struct);
$this->buildFooterTitle($margins, $currentY, $struct);
$this->buildFooterPageNumber($margins, $currentY, $struct);
}
/**
* Build footer logo.
* @param array $margins
* @param float $currentY
* @param HeaderStruct $struct
* @return void
*/
private function buildFooterLogo(array $margins, float $currentY, FooterStruct $struct): void
{
$path = $struct->getLogo();
if (!file_exists($path)) {
return;
}
$pathinfo = pathinfo($path);
$extension = $pathinfo['extension'];
$x = $struct->getLogoPositionX() + $margins['left'];
$y = $struct->getLogoPositionY() + $currentY;
$width = $struct->getLogoWidth();
$this->Image($path, $x, $y, $width, 0, $extension, '', '', false, 300, '', false, false, 0, false, false, false);
}
/**
* Build footer title.
* @param array $margins
* @param float $currentY
* @param HeaderStruct $struct
* @return void
*/
private function buildFooterTitle(array $margins, float $currentY, FooterStruct $struct): void
{
$string = $struct->getTitle();
$x = $struct->getTitleFontPositionX() + $margins['left'];
$y = $struct->getTitleFontPositionY() + $currentY;
$fontSize = $struct->getTitleFontSize();
$this->SetXY($x, $y);
$this->SetFont('helvetica', 'B', $fontSize);
$this->MultiCell(0, 0, $string, 0, 'L', false, 1, '', '', true, 0, false, true, 0, 'T', false);
}
/**
* Build footer page number.
* @param array $margins
* @param float $currentY
* @param HeaderStruct $struct
* @return void
*/
private function buildFooterPageNumber(array $margins, float $currentY, FooterStruct $struct): void
{
if ($struct->getPageNumber() === true) {
$pageString = empty($struct->getPageNumberTitle()) ? 'Page ' : $struct->getPageNumberTitle() . ' ';
$pageNumberTotal = $struct->getPageNumberTotal() === true ? ' / ' . $this->getAliasNbPages() : '';
$string = $pageString . $this->getAliasNumPage() . $pageNumberTotal;
$x = $struct->getPageNumberPositionX() + $margins['left'];
$y = $struct->getPageNumberPositionY() + $currentY;
$fontSize = 8;
$this->SetXY($x, $y);
$this->SetFont('helvetica', 'I', $fontSize);
$this->Cell(0, 0, $string, 0, 0, '', false, '', 0, false, 'T', 'M');
}
}
}

View File

@@ -1,8 +1,12 @@
<?php <?php
namespace ProcessMaker\Services\Api; namespace ProcessMaker\Services\Api;
use \ProcessMaker\Services\Api; use G;
use \Luracast\Restler\RestException; use Exception;
use Luracast\Restler\RestException;
use ProcessMaker\BusinessModel\Group as BmGroup;
use ProcessMaker\BusinessModel\User;
use ProcessMaker\Services\Api;
/** /**
* Group Api Controller * Group Api Controller
@@ -19,14 +23,13 @@ class Group extends Api
public function __construct() public function __construct()
{ {
try { try {
$user = new \ProcessMaker\BusinessModel\User(); $user = new User();
$usrUid = $this->getUserId(); $usrUid = $this->getUserId();
// Review the permissions roles to access the API
if (!$user->checkPermission($usrUid, "PM_USERS")) { if (!$user->checkPermission($usrUid, "PM_USERS") && !$user->checkPermission($usrUid, "PM_FACTORY")) {
throw new \Exception(\G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION", array($usrUid))); throw new Exception(G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION", [$usrUid]));
} }
} catch (\Exception $e) { } catch (Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -37,19 +40,17 @@ class Group extends Api
public function index($filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null) public function index($filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$arrayFilterData = [
$arrayFilterData = array(
"filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)), "filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)),
"filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : "")) "filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : ""))
); ];
$response = $group->getGroups($arrayFilterData, null, null, $start, $limit); $response = $group->getGroups($arrayFilterData, null, null, $start, $limit);
return $response["data"]; return $response["data"];
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -61,14 +62,13 @@ class Group extends Api
public function doGet($grp_uid) public function doGet($grp_uid)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$response = $group->getGroup($grp_uid); $response = $group->getGroup($grp_uid);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -89,16 +89,14 @@ class Group extends Api
public function doPost($request_data) public function doPost($request_data)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$arrayData = $group->create($request_data); $arrayData = $group->create($request_data);
$response = $arrayData; $response = $arrayData;
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -118,12 +116,11 @@ class Group extends Api
public function doPut($grp_uid, $request_data) public function doPut($grp_uid, $request_data)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$arrayData = $group->update($grp_uid, $request_data); $arrayData = $group->update($grp_uid, $request_data);
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -137,12 +134,11 @@ class Group extends Api
public function doDelete($grp_uid) public function doDelete($grp_uid)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$group->delete($grp_uid); $group->delete($grp_uid);
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -154,14 +150,13 @@ class Group extends Api
public function doGetUsers($grp_uid, $filter = null, $start = null, $limit = null) public function doGetUsers($grp_uid, $filter = null, $start = null, $limit = null)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$response = $group->getUsers("USERS", $grp_uid, ["filter" => $filter], null, null, $start, $limit);
$response = $group->getUsers("USERS", $grp_uid, array("filter" => $filter), null, null, $start, $limit);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -173,14 +168,13 @@ class Group extends Api
public function doGetAvailableUsers($grp_uid, $filter = null, $start = null, $limit = null) public function doGetAvailableUsers($grp_uid, $filter = null, $start = null, $limit = null)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$response = $group->getUsers("AVAILABLE-USERS", $grp_uid, ["filter" => $filter], null, null, $start, $limit);
$response = $group->getUsers("AVAILABLE-USERS", $grp_uid, array("filter" => $filter), null, null, $start, $limit);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
@@ -192,14 +186,13 @@ class Group extends Api
public function doGetSupervisorUsers($grp_uid, $filter = null, $start = null, $limit = null) public function doGetSupervisorUsers($grp_uid, $filter = null, $start = null, $limit = null)
{ {
try { try {
$group = new \ProcessMaker\BusinessModel\Group(); $group = new BmGroup();
$group->setFormatFieldNameInUppercase(false); $group->setFormatFieldNameInUppercase(false);
$response = $group->getUsers("SUPERVISOR", $grp_uid, ["filter" => $filter], null, null, $start, $limit);
$response = $group->getUsers("SUPERVISOR", $grp_uid, array("filter" => $filter), null, null, $start, $limit);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
} }

View File

@@ -243,5 +243,15 @@ class OutputDocumentStructure
* @var int {@from body} {@choice 0,1} * @var int {@from body} {@choice 0,1}
*/ */
public $out_doc_open_type; public $out_doc_open_type;
/**
* @var array {@from body}
*/
public $out_doc_header;
/**
* @var array {@from body}
*/
public $out_doc_footer;
} }

View File

@@ -401,21 +401,6 @@ Ext.onReady(function () {
width: 50, width: 50,
align: 'right', align: 'right',
editor: sizeField editor: sizeField
}, {
xtype: 'booleancolumn',
header: _('ID_AUTO_INCREMENT'),
dataIndex: 'field_autoincrement',
align: 'center',
width: 100,
trueText: _('ID_YES'),
falseText: _('ID_NO'),
editor: {
xtype: 'checkbox',
id: 'field_incre',
disabled: true,
inputValue: 'always'
}
} }
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
, { , {