Solving conflict in workflow/engine/content/languages/translation.en
This commit is contained in:
18
database/factories/LicenseManagerFactory.php
Normal file
18
database/factories/LicenseManagerFactory.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Faker\Generator as Faker;
|
||||||
|
|
||||||
|
$factory->define(\ProcessMaker\Model\LicenseManager::class, function(Faker $faker) {
|
||||||
|
return [
|
||||||
|
"LICENSE_UID" => $faker->regexify("/[a-zA-Z]{32}/"),
|
||||||
|
"LICENSE_USER" => $faker->name,
|
||||||
|
"LICENSE_START" => 0,
|
||||||
|
"LICENSE_END" => 0,
|
||||||
|
"LICENSE_SPAN" => 0,
|
||||||
|
"LICENSE_STATUS" => 'ACTIVE',
|
||||||
|
"LICENSE_DATA" => '',
|
||||||
|
"LICENSE_PATH" => '',
|
||||||
|
"LICENSE_WORKSPACE" => '',
|
||||||
|
"LICENSE_TYPE" => 'ONPREMISE'
|
||||||
|
];
|
||||||
|
});
|
||||||
17
database/factories/OauthClientsFactory.php
Normal file
17
database/factories/OauthClientsFactory.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Faker\Generator as Faker;
|
||||||
|
|
||||||
|
$factory->define(\ProcessMaker\Model\OauthClients::class, function(Faker $faker) {
|
||||||
|
return [
|
||||||
|
"CLIENT_ID" => $faker->word,
|
||||||
|
"CLIENT_SECRET" => $faker->regexify("/[a-zA-Z]{6}/"),
|
||||||
|
"CLIENT_NAME" => $faker->regexify("/[a-zA-Z]{6}/"),
|
||||||
|
"CLIENT_DESCRIPTION" => $faker->text,
|
||||||
|
"CLIENT_WEBSITE" => $faker->url,
|
||||||
|
"REDIRECT_URI" => $faker->url,
|
||||||
|
"USR_UID" => function() {
|
||||||
|
return factory(\ProcessMaker\Model\User::class)->create()->USR_UID;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
});
|
||||||
@@ -27,8 +27,13 @@ if (isset($_GET["url"]) && $_GET["url"] != "") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($sysSys != "" && $sysLang != "" && $sysSkin != "") {
|
if ($sysSys != "" && $sysLang != "" && $sysSkin != "") {
|
||||||
$urlLogin = $http . "://" . $host . "/sys" . $sysSys . "/" . $sysLang . "/" . $sysSkin . "/login/login";
|
if (count($url) > 4) {
|
||||||
$urlHome = $http . "://" . $host . "/sys" . $sysSys . "/" . $sysLang . "/" . $sysSkin . "/cases/main";
|
$urlLogin = $http . "://" . $host . "/sys" . $sysSys . "/" . $sysLang . "/" . $sysSkin . "/login/login" . "?url=" . implode("/", $url);
|
||||||
|
$urlHome = $http . "://" . $host . "/sys" . $sysSys . "/" . $sysLang . "/" . $sysSkin . "/cases/main" . "?url=" . implode("/", $url);
|
||||||
|
} else {
|
||||||
|
$urlLogin = $http . "://" . $host . "/sys" . $sysSys . "/" . $sysLang . "/" . $sysSkin . "/login/login";
|
||||||
|
$urlHome = $http . "://" . $host . "/sys" . $sysSys . "/" . $sysLang . "/" . $sysSkin . "/cases/main";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
121
tests/MockPhpStream.php
Normal file
121
tests/MockPhpStream.php
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests;
|
||||||
|
|
||||||
|
class MockPhpStream
|
||||||
|
{
|
||||||
|
protected $index = 0;
|
||||||
|
protected $length = null;
|
||||||
|
protected $data = '';
|
||||||
|
public $context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor of the class.
|
||||||
|
*/
|
||||||
|
function __construct()
|
||||||
|
{
|
||||||
|
if (file_exists($this->buffer_filename())) {
|
||||||
|
$this->data = file_get_contents($this->buffer_filename());
|
||||||
|
} else {
|
||||||
|
$this->data = '';
|
||||||
|
}
|
||||||
|
$this->index = 0;
|
||||||
|
$this->length = strlen($this->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override buffer filename.
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function buffer_filename()
|
||||||
|
{
|
||||||
|
return sys_get_temp_dir() . '/php_input';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override stream open.
|
||||||
|
* @param string $path
|
||||||
|
* @param string $mode
|
||||||
|
* @param string $options
|
||||||
|
* @param string $opened_path
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function stream_open($path, $mode, $options, &$opened_path)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override stream close.
|
||||||
|
*/
|
||||||
|
public function stream_close()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override stream stat.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function stream_stat()
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override stream flush.
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function stream_flush()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override stream read.
|
||||||
|
* @param integer $count
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
public function stream_read($count)
|
||||||
|
{
|
||||||
|
if (is_null($this->length) === true) {
|
||||||
|
$this->length = strlen($this->data);
|
||||||
|
}
|
||||||
|
$length = min($count, $this->length - $this->index);
|
||||||
|
$data = substr($this->data, $this->index);
|
||||||
|
$this->index = $this->index + $length;
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override stream eof.
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function stream_eof()
|
||||||
|
{
|
||||||
|
return ($this->index >= $this->length ? true : false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override stream write.
|
||||||
|
* @param string $data
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function stream_write($data)
|
||||||
|
{
|
||||||
|
return file_put_contents($this->buffer_filename(), $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override unlink method.
|
||||||
|
*/
|
||||||
|
public function unlink()
|
||||||
|
{
|
||||||
|
if (file_exists($this->buffer_filename())) {
|
||||||
|
unlink($this->buffer_filename());
|
||||||
|
}
|
||||||
|
$this->data = '';
|
||||||
|
$this->index = 0;
|
||||||
|
$this->length = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -364,6 +364,46 @@ class EmailServerTest extends TestCase
|
|||||||
$emailServer->sendTestMail($data);
|
$emailServer->sendTestMail($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It test the delete method
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\BusinessModel\EmailServer::delete()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_delete_method()
|
||||||
|
{
|
||||||
|
$email = factory(EmailServerModel::class)->create();
|
||||||
|
|
||||||
|
$emailServer = new EmailServer();
|
||||||
|
$res = $emailServer->delete($email['MESS_UID']);
|
||||||
|
|
||||||
|
$this->assertNull($res);
|
||||||
|
|
||||||
|
$this->expectExceptionMessage("**ID_EMAIL_SERVER_DOES_NOT_EXIST**");
|
||||||
|
$emailServer->getEmailServer($email['MESS_UID']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It test the delete method with an IMAP email server
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\BusinessModel\EmailServer::delete()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_delete_method_with_imap()
|
||||||
|
{
|
||||||
|
$email = factory(EmailServerModel::class)->create([
|
||||||
|
'MESS_ENGINE' => 'IMAP'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$emailServer = new EmailServer();
|
||||||
|
$res = $emailServer->delete($email['MESS_UID']);
|
||||||
|
|
||||||
|
$this->assertNull($res);
|
||||||
|
|
||||||
|
$this->expectExceptionMessage("**ID_EMAIL_SERVER_DOES_NOT_EXIST**");
|
||||||
|
$emailServer->getEmailServer($email['MESS_UID']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call the tearDown method
|
* Call the tearDown method
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
|
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
|
||||||
|
|
||||||
|
use EmailServer;
|
||||||
use ProcessMaker\Model\Application;
|
use ProcessMaker\Model\Application;
|
||||||
use ProcessMaker\Model\AbeConfiguration;
|
use ProcessMaker\Model\AbeConfiguration;
|
||||||
use ProcessMaker\Model\AbeRequest;
|
use ProcessMaker\Model\AbeRequest;
|
||||||
@@ -105,4 +106,82 @@ class AbeConfigurationTest extends TestCase
|
|||||||
//Asserts the result has one record
|
//Asserts the result has one record
|
||||||
$this->assertEmpty($res);
|
$this->assertEmpty($res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It should test the updateReceiverUidToEmpty method
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\AbeConfiguration::updateReceiverUidToEmpty()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_update_abe_configuration_receiver_uid_method()
|
||||||
|
{
|
||||||
|
$emailServer = factory(EmailServerModel::class)->create();
|
||||||
|
|
||||||
|
$abeConfigurationFactory = factory(AbeConfiguration::class)->create([
|
||||||
|
'ABE_EMAIL_SERVER_UID' => $emailServer['MESS_UID']
|
||||||
|
]);
|
||||||
|
|
||||||
|
$abeConfiguration = new AbeConfiguration();
|
||||||
|
$abeConfiguration->updateReceiverUidToEmpty($emailServer['MESS_UID']);
|
||||||
|
|
||||||
|
$query = AbeConfiguration::query()->select();
|
||||||
|
$query->where('ABE_UID', $abeConfigurationFactory['ABE_UID']);
|
||||||
|
$updatedAbe = $query->get()->values()->toArray();
|
||||||
|
|
||||||
|
$this->assertEquals($updatedAbe[0]['ABE_EMAIL_SERVER_RECEIVER_UID'], '');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It should test the updateEmailServerUidToDefaultOrEmpty method when there is not a default server
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\AbeConfiguration::updateEmailServerUidToDefaultOrEmpty()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_update_abe_configuration_email_server_uid_method_when_there_is_not_a_default_server()
|
||||||
|
{
|
||||||
|
EmailServerModel::query()->delete();
|
||||||
|
$emailServer = factory(EmailServerModel::class)->create();
|
||||||
|
|
||||||
|
$abeConfigurationFactory = factory(AbeConfiguration::class)->create([
|
||||||
|
'ABE_EMAIL_SERVER_UID' => $emailServer['MESS_UID']
|
||||||
|
]);
|
||||||
|
|
||||||
|
$abeConfiguration = new AbeConfiguration();
|
||||||
|
$abeConfiguration->updateEmailServerUidToDefaultOrEmpty($emailServer['MESS_UID']);
|
||||||
|
|
||||||
|
$query = AbeConfiguration::query()->select();
|
||||||
|
$query->where('ABE_UID', $abeConfigurationFactory['ABE_UID']);
|
||||||
|
$updatedAbe = $query->get()->values()->toArray();
|
||||||
|
|
||||||
|
$this->assertEquals($updatedAbe[0]['ABE_EMAIL_SERVER_UID'], '');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It should test the updateEmailServerUidToDefaultOrEmpty method when there is a default server
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\AbeConfiguration::updateEmailServerUidToDefaultOrEmpty()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_update_abe_configuration_email_server_uid_method_when_there_is_a_default_server()
|
||||||
|
{
|
||||||
|
EmailServerModel::query()->delete();
|
||||||
|
$emailServer = factory(EmailServerModel::class)->create();
|
||||||
|
|
||||||
|
$defaultServer = factory(EmailServerModel::class)->create([
|
||||||
|
'MESS_DEFAULT' => 1
|
||||||
|
]);
|
||||||
|
|
||||||
|
$abeConfigurationFactory = factory(AbeConfiguration::class)->create([
|
||||||
|
'ABE_EMAIL_SERVER_UID' => $emailServer['MESS_UID']
|
||||||
|
]);
|
||||||
|
|
||||||
|
$abeConfiguration = new AbeConfiguration();
|
||||||
|
$abeConfiguration->updateEmailServerUidToDefaultOrEmpty($emailServer['MESS_UID']);
|
||||||
|
|
||||||
|
$query = AbeConfiguration::query()->select();
|
||||||
|
$query->where('ABE_UID', $abeConfigurationFactory['ABE_UID']);
|
||||||
|
$updatedAbe = $query->get()->values()->toArray();
|
||||||
|
|
||||||
|
$this->assertEquals($updatedAbe[0]['ABE_EMAIL_SERVER_UID'], $defaultServer['MESS_UID']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
|
||||||
|
|
||||||
|
use ProcessMaker\Model\EmailEvent;
|
||||||
|
use ProcessMaker\Model\EmailServerModel;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class EmailEventTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Call the setUp parent method
|
||||||
|
*/
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp(); // TODO: Change the autogenerated stub
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It tests the updateServerAndFromToDefaultOrEmpty method
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\EmailEvent::updateServerAndFromToDefaultOrEmpty()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_update_event_method()
|
||||||
|
{
|
||||||
|
EmailServerModel::query()->delete();
|
||||||
|
$emailServer = factory(EmailServerModel::class)->create();
|
||||||
|
$emailEventFactory = factory(EmailEvent::class)->create([
|
||||||
|
'EMAIL_SERVER_UID' => $emailServer['MESS_UID']
|
||||||
|
]);
|
||||||
|
|
||||||
|
$emailEvent = new EmailEvent();
|
||||||
|
$emailEvent->updateServerAndFromToDefaultOrEmpty($emailServer['MESS_UID']);
|
||||||
|
|
||||||
|
$query = EmailEvent::query()->select();
|
||||||
|
$query->where('EMAIL_EVENT_UID', $emailEventFactory['EMAIL_EVENT_UID']);
|
||||||
|
$updatedEmailEvent = $query->get()->values()->toArray();
|
||||||
|
|
||||||
|
$this->assertEquals($updatedEmailEvent[0]['EMAIL_SERVER_UID'], '');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It tests the updateServerAndFromToDefaultOrEmpty method with a default email server
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\EmailEvent::updateServerAndFromToDefaultOrEmpty()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_update_event_method_with_a_default_email_server()
|
||||||
|
{
|
||||||
|
EmailServerModel::query()->delete();
|
||||||
|
$emailServer = factory(EmailServerModel::class)->create();
|
||||||
|
$emailServerDefault = factory(EmailServerModel::class)->create([
|
||||||
|
'MESS_DEFAULT' => 1
|
||||||
|
]);
|
||||||
|
$emailEventFactory = factory(EmailEvent::class)->create([
|
||||||
|
'EMAIL_SERVER_UID' => $emailServer['MESS_UID']
|
||||||
|
]);
|
||||||
|
|
||||||
|
$emailEvent = new EmailEvent();
|
||||||
|
$emailEvent->updateServerAndFromToDefaultOrEmpty($emailServer['MESS_UID']);
|
||||||
|
|
||||||
|
$query = EmailEvent::query()->select();
|
||||||
|
$query->where('EMAIL_EVENT_UID', $emailEventFactory['EMAIL_EVENT_UID']);
|
||||||
|
$updatedEmailEvent = $query->get()->values()->toArray();
|
||||||
|
|
||||||
|
$this->assertEquals($updatedEmailEvent[0]['EMAIL_SERVER_UID'], $emailServerDefault['MESS_UID']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call the tearDown parent method
|
||||||
|
*/
|
||||||
|
public function tearDown()
|
||||||
|
{
|
||||||
|
parent::tearDown(); // TODO: Change the autogenerated stub
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -86,4 +86,38 @@ class EmailServerModelTest extends TestCase
|
|||||||
//Assert the result es not empty
|
//Assert the result es not empty
|
||||||
$this->assertNotEmpty($res);
|
$this->assertNotEmpty($res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It tests the isImap method when there is an IMAP server
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\EmailServerModel::isImap()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_is_imap_method_when_there_is_an_imap_server()
|
||||||
|
{
|
||||||
|
EmailServerModel::query()->delete();
|
||||||
|
$emailServer = factory(EmailServerModel::class)->create([
|
||||||
|
'MESS_ENGINE' => 'IMAP'
|
||||||
|
]);
|
||||||
|
$emailServerModel = new EmailServerModel();
|
||||||
|
$r = $emailServerModel->isImap($emailServer['MESS_UID']);
|
||||||
|
|
||||||
|
$this->assertTrue($r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It tests the isImap method when there is not an IMAP server
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\EmailServerModel::isImap()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_the_is_imap_method_when_there_is_not_an_imap_server()
|
||||||
|
{
|
||||||
|
EmailServerModel::query()->delete();
|
||||||
|
$emailServer = factory(EmailServerModel::class)->create();
|
||||||
|
$emailServerModel = new EmailServerModel();
|
||||||
|
$r = $emailServerModel->isImap($emailServer['MESS_UID']);
|
||||||
|
|
||||||
|
$this->assertFalse($r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,512 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\unit\workflow\engine\src\ProcessMaker\Services\OAuth2;
|
||||||
|
|
||||||
|
use \OAuth2\Response as OAuth2Response;
|
||||||
|
use ProcessMaker\Model\LicenseManager;
|
||||||
|
use ProcessMaker\Model\OauthClients;
|
||||||
|
use ProcessMaker\Model\User;
|
||||||
|
use ProcessMaker\Services\OAuth2\Server;
|
||||||
|
use Tests\MockPhpStream;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class ServerTest extends TestCase
|
||||||
|
{
|
||||||
|
private $server;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup method.
|
||||||
|
*/
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->server = $_SERVER;
|
||||||
|
$_SERVER['CONTENT_TYPE'] = 'application/json';
|
||||||
|
$_SERVER['REQUEST_METHOD'] = 'POST';
|
||||||
|
$this->createTestLicense();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Teardown method.
|
||||||
|
*/
|
||||||
|
public function tearDown()
|
||||||
|
{
|
||||||
|
parent::tearDown();
|
||||||
|
$_SERVER = $this->server;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the "postToken()" method with valid credentials.
|
||||||
|
* @test
|
||||||
|
* @covers \ProcessMaker\Services\OAuth2\Server::postToken()
|
||||||
|
*/
|
||||||
|
public function it_should_test_post_token_with_valid_credentials()
|
||||||
|
{
|
||||||
|
$user = User::where('USR_ID', '=', 1)->get()->first();
|
||||||
|
$oauthClients = factory(OauthClients::class)->create([
|
||||||
|
"USR_UID" => $user->USR_UID
|
||||||
|
]);
|
||||||
|
|
||||||
|
$data = '{
|
||||||
|
"grant_type":"password",
|
||||||
|
"scope":"*",
|
||||||
|
"client_id":"' . $oauthClients->CLIENT_ID . '",
|
||||||
|
"client_secret":"' . $oauthClients->CLIENT_SECRET . '",
|
||||||
|
"username":"' . $user->USR_USERNAME . '",
|
||||||
|
"password":"admin"
|
||||||
|
}';
|
||||||
|
stream_wrapper_unregister("php");
|
||||||
|
stream_wrapper_register("php", "Tests\MockPhpStream");
|
||||||
|
file_put_contents('php://input', $data);
|
||||||
|
|
||||||
|
list($host, $port) = strpos(DB_HOST, ':') !== false ? explode(':', DB_HOST) : [DB_HOST, ''];
|
||||||
|
$port = empty($port) ? '' : ";port=$port";
|
||||||
|
|
||||||
|
Server::setDatabaseSource(DB_USER, DB_PASS, DB_ADAPTER . ":host=$host;dbname=" . DB_NAME . $port);
|
||||||
|
|
||||||
|
$server = new Server();
|
||||||
|
$server->postToken();
|
||||||
|
stream_wrapper_restore("php");
|
||||||
|
$response = ob_get_contents();
|
||||||
|
ob_clean();
|
||||||
|
$response = json_decode($response, true);
|
||||||
|
$this->assertNotEmpty($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the method "postToken()" with the return parameter of the object "OAuth2\Response".
|
||||||
|
* @test
|
||||||
|
* @covers \ProcessMaker\Services\OAuth2\Server::postToken()
|
||||||
|
*/
|
||||||
|
public function it_should_test_post_token_with_return_handle_token()
|
||||||
|
{
|
||||||
|
$user = User::where('USR_ID', '=', 1)->get()->first();
|
||||||
|
$oauthClients = factory(OauthClients::class)->create([
|
||||||
|
"USR_UID" => $user->USR_UID
|
||||||
|
]);
|
||||||
|
|
||||||
|
$data = '{
|
||||||
|
"grant_type":"password",
|
||||||
|
"scope":"*",
|
||||||
|
"client_id":"' . $oauthClients->CLIENT_ID . '",
|
||||||
|
"client_secret":"' . $oauthClients->CLIENT_SECRET . '",
|
||||||
|
"username":"' . $user->USR_USERNAME . '",
|
||||||
|
"password":"admin"
|
||||||
|
}';
|
||||||
|
stream_wrapper_unregister("php");
|
||||||
|
stream_wrapper_register("php", "Tests\MockPhpStream");
|
||||||
|
file_put_contents('php://input', $data);
|
||||||
|
|
||||||
|
list($host, $port) = strpos(DB_HOST, ':') !== false ? explode(':', DB_HOST) : [DB_HOST, ''];
|
||||||
|
$port = empty($port) ? '' : ";port=$port";
|
||||||
|
|
||||||
|
Server::setDatabaseSource(DB_USER, DB_PASS, DB_ADAPTER . ":host=$host;dbname=" . DB_NAME . $port);
|
||||||
|
|
||||||
|
$server = new Server();
|
||||||
|
$result = $server->postToken(null, true);
|
||||||
|
stream_wrapper_restore("php");
|
||||||
|
|
||||||
|
$this->assertTrue($result instanceof OAuth2Response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the method "postToken()" with empty clientId.
|
||||||
|
* @test
|
||||||
|
* @covers \ProcessMaker\Services\OAuth2\Server::postToken()
|
||||||
|
*/
|
||||||
|
public function it_should_test_post_token_with_empty_client_id()
|
||||||
|
{
|
||||||
|
$user = User::where('USR_ID', '=', 1)->get()->first();
|
||||||
|
$oauthClients = factory(OauthClients::class)->create([
|
||||||
|
"USR_UID" => $user->USR_UID
|
||||||
|
]);
|
||||||
|
|
||||||
|
$data = '{
|
||||||
|
"grant_type":"password",
|
||||||
|
"scope":"*",
|
||||||
|
"client_id":"",
|
||||||
|
"client_secret":"",
|
||||||
|
"username":"' . $user->USR_USERNAME . '",
|
||||||
|
"password":"admin"
|
||||||
|
}';
|
||||||
|
stream_wrapper_unregister("php");
|
||||||
|
stream_wrapper_register("php", "Tests\MockPhpStream");
|
||||||
|
file_put_contents('php://input', $data);
|
||||||
|
|
||||||
|
list($host, $port) = strpos(DB_HOST, ':') !== false ? explode(':', DB_HOST) : [DB_HOST, ''];
|
||||||
|
$port = empty($port) ? '' : ";port=$port";
|
||||||
|
|
||||||
|
Server::setDatabaseSource(DB_USER, DB_PASS, DB_ADAPTER . ":host=$host;dbname=" . DB_NAME . $port);
|
||||||
|
|
||||||
|
$server = new Server();
|
||||||
|
$server->postToken();
|
||||||
|
stream_wrapper_restore("php");
|
||||||
|
$response = ob_get_contents();
|
||||||
|
ob_clean();
|
||||||
|
$response = json_decode($response, true);
|
||||||
|
$this->assertArrayHasKey("error", $response);
|
||||||
|
$this->assertArrayHasKey("error_description", $response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the method "postToken()" for the x-pm-local-client.
|
||||||
|
* @test
|
||||||
|
* @covers \ProcessMaker\Services\OAuth2\Server::postToken()
|
||||||
|
*/
|
||||||
|
public function it_should_test_post_token_for_pm_client_id()
|
||||||
|
{
|
||||||
|
$user = User::where('USR_ID', '=', 1)->get()->first();
|
||||||
|
$oauthClients = OauthClients::where('CLIENT_ID', '=', 'x-pm-local-client')->get()->first();
|
||||||
|
|
||||||
|
$data = '{
|
||||||
|
"grant_type":"password",
|
||||||
|
"scope":"*",
|
||||||
|
"client_id":"' . $oauthClients->CLIENT_ID . '",
|
||||||
|
"client_secret":"' . $oauthClients->CLIENT_SECRET . '",
|
||||||
|
"username":"' . $user->USR_USERNAME . '",
|
||||||
|
"password":"admin"
|
||||||
|
}';
|
||||||
|
stream_wrapper_unregister("php");
|
||||||
|
stream_wrapper_register("php", "Tests\MockPhpStream");
|
||||||
|
file_put_contents('php://input', $data);
|
||||||
|
|
||||||
|
list($host, $port) = strpos(DB_HOST, ':') !== false ? explode(':', DB_HOST) : [DB_HOST, ''];
|
||||||
|
$port = empty($port) ? '' : ";port=$port";
|
||||||
|
|
||||||
|
Server::setDatabaseSource(DB_USER, DB_PASS, DB_ADAPTER . ":host=$host;dbname=" . DB_NAME . $port);
|
||||||
|
Server::setPmClientId('x-pm-local-client');
|
||||||
|
$server = new Server();
|
||||||
|
$server->postToken();
|
||||||
|
stream_wrapper_restore("php");
|
||||||
|
$response = ob_get_contents();
|
||||||
|
ob_clean();
|
||||||
|
$response = json_decode($response, true);
|
||||||
|
$this->assertNotEmpty($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create test license
|
||||||
|
*/
|
||||||
|
private function createTestLicense()
|
||||||
|
{
|
||||||
|
if (!is_dir(PATH_DB)) {
|
||||||
|
mkdir(PATH_DB);
|
||||||
|
}
|
||||||
|
if (!is_dir(PATH_WORKSPACE)) {
|
||||||
|
mkdir(PATH_WORKSPACE);
|
||||||
|
}
|
||||||
|
$info = $this->getLicenseInfo();
|
||||||
|
$filename = PATH_WORKSPACE . $info['name'];
|
||||||
|
$data = $info['content'];
|
||||||
|
file_put_contents($filename, $data);
|
||||||
|
|
||||||
|
LicenseManager::truncate();
|
||||||
|
factory(LicenseManager::class)->create([
|
||||||
|
"LICENSE_DATA" => $data,
|
||||||
|
"LICENSE_PATH" => $filename,
|
||||||
|
"LICENSE_WORKSPACE" => env('MAIN_SYS_SYS')
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get test license information.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function getLicenseInfo()
|
||||||
|
{
|
||||||
|
$content = "-------------------------------BEGIN LICENSE KEY--------------------------------
|
||||||
|
H5DcVc5NGsrakl0SXVSYjN1M2NJTEliR2VBbkdOcWI1aXRwR3FBZFlwMGRxMTNkbmgybDVLM3o1V1plS
|
||||||
|
2QzZW9KamlvZXpabGkwMW41NmdXT0ZsY1Y1bFpUT2pYbVF2N21CZVlCcHc4ZDRxcGg3Z09PQmRYaXdhV
|
||||||
|
ytDb0lXSFk2YmRmWHFFV2FCN2xxUlVwcnVmWXBGMjBtZWV3R3BzajIrTmxwaHFjTGVUb28rY3A1eWpkO
|
||||||
|
FZ3Z3RLbGJvS2NZM2QzaDd0amNxcCtoWDJBd3JlQWVYTnZnNW0raG9tUmtZdVpzSGFvbTU5MGhOTENrb
|
||||||
|
2VVaG1PUDVHNmtpNmQxaWFXUWxacUZjbWU1NFpxR1pwUzR0SGg0ZnBsOGk2TENuS1I0dmNtSWs0dUFtV
|
||||||
|
TJReVd5Y2ZaOVRvY084czZPUW42WEV3S2wydDdlaVpwVGdqNnVTa1c5MXlLR2JwSDk1b01HSGZJaUd6c
|
||||||
|
UNGaXBHWVpvRzZmbitCWkh6V3Q5dVhucU95cDJtTXBwTi9oMjFZdkxpWG1wYU9ocWJRZ0xTc3diS1VsN
|
||||||
|
UdMYVgrNWdhQ3RXWHAvekgrcmZYNW11bzZKbzcyYW5JWEt2WWlZb0lDUWNIZVJtNlY1b0tTUmhvWi9oW
|
||||||
|
kNGakttY2xZMm1wNGlKcThPZXZaNjJtWE8xazVOM2JhZUltbnRWZXBqd1lZdXVwY0JtZ2JwK2VIaDhWN
|
||||||
|
lNydkllRWo0bVlwcVI0cTZTWWRudll0NTJXakdOOHZhdGxyc3luaFgyUVpvbWNsNXFXdmJpSnQ1ZWVsO
|
||||||
|
UNRaDRuV2pZK2ZzNnlqZEsydmoyaUZxb2RjanBCVXI2M2Jsc1BEeExMSXU2UlpxN0s2dTcyM28yYVU0S
|
||||||
|
StyaTVGdm1kaThyTWVUcUxPMnVxT2JWYlcwY1hsK2RXYUJ1bjUzZkh4WHBLdThoNFNQaVppbW9YK3VsW
|
||||||
|
mlCV0xURWZuZCtlN3k5cTJTdXpLZUVkcEJtdmJDeXFyYm41b3FyazN1QTQ0RjFmK3B6YUlDb2I4ZWd3d
|
||||||
|
G0xc2IybnJvNjZvNVBacWN5V3hMbkN1WVdJbVhPSGlMdUNpWUpYdE1iQW9idDdrclpzcG9tNmoydHVjT
|
||||||
|
kt1aFp1ajZiT3J2R2FPcllCN2Y3bUJlMitEeHRhRHBMbXB1SnpCVlpTM2lXaHg3SjEyZVlGanNjRzZvd
|
||||||
|
VBPNFplMXVibXpyTEs2bk9EZnBybW92cmVjZ3ExK3JYU3BpWjkva1ZYYjE0bTZ1b1M4bWI3S29kMXFvS
|
||||||
|
nFSaTQrNG5YNWxjM2U5dFkzQ3NKYXl2Tks1eHNpK3RxQ1ZpYkNQYW0vQm5ISmxjRlhxcm5xNHNzR3BxY
|
||||||
|
nV6dUxwa2NNcVFvbTZvZkhWNWdYT2p4cEd3cHB1NjFhZXVzTGVtZHF5ZHJZcWRqcm1RZFh1QlpyYTBzd
|
||||||
|
Wlxd2JLK3VPMlp1YkRjckZpSzE0ZUlaS2JkZlhkN2NXOTV0SitndXIzWm5jYkR2MmVldG1wcWg0aTdnb
|
||||||
|
3lDVjdLKzVLZmZ4Y0N3Vks2M2dZWmxiOEdjYzJOd1ZkKzVxNjYyd2FXeW1hbXRzTFdwMDdmZG5LU3dab
|
||||||
|
0d3aTJTTmljSnRaNitkWm91MXRhYkc0YWJjek5LbXE3ZTJxYTltZ2JDcXBHeVR0NU4yc29GbXFOaXRsN
|
||||||
|
khUdmNhbDM5T3hyWjZtdkpmSWVHM1VncFpua3NlT2RwdUhVcHE1dzZtMnQ2MlppTHJndmR6SXVMK1c1b
|
||||||
|
kNDMHFWdWdKaDdWWG1JelpXR2xvbWxvNUtRaDR1VmxYcWx0YTk0ZHBhWm1JeWtWWlN2aVdSdHM5NnRnS
|
||||||
|
GQ4dEk2aVpLMTc1THkwdXJPOXVwZVpscEt1b0pKMWxMaTBlSHQrbWE2cHRPQ1B1S2JRenBldnQ1eW5tc
|
||||||
|
083VktheG4yT1N4NDUybW9kU3JzaXl1b3ExdTVxb3BjN0Q0YzY0dEplVmliQ1BaVy9CbkhKc2NGWHR0Y
|
||||||
|
W1xdUxpcnI2cUlwN3FxbDlDMzI1ZW9aSCt2Z1lWdXpJaUNaM0NiMXFtMHE0YXV0ZHFndWN2Y3dJcS9xc
|
||||||
|
XlzdHF1MTVMaWt1YTNGbU4rNXVxbnByRmlLMTRlTWJ0NmtkWGVFV2NDUXdidVYzN0hibHFEQnhMVFZ3W
|
||||||
|
Fd4eGJ5NnZIYURubjZQcU1pMGk0bUhWT2F6cXNxa21hUFZwcVdHbE8yMHJyaTJ0NHludXF4b2dxdHZtS
|
||||||
|
khjYldkMmZtaTZ0cGJJdkxOM2wrM0VwcWU2cG9URDM2TFl2T0c4dGNSbWdiQitmb0xqcldpTGZudTE1N
|
||||||
|
DZ6czk2bG01UGd0czJZamFXc2dJTnl3R1dNa0ZUYnRheWV1TDNBWjU2MmFtcUZpTHVDaFg1dlpzbmFtT
|
||||||
|
25IeXJ5ZTNMS295WmVZa2E1amJwOXRxM0p5dkg2RmRJQnBzYnV6dHA3UndzNTRvcU90c3BxMnBjK3p3Y
|
||||||
|
VpZdE14K2QzbDh0STZpWnExNzJzS292N0NyamEycnM5VG1XWk90azNhdGdyZCtxR3R3Y2RxeHVLT3N6c
|
||||||
|
m1udUpxeWozZVJtNlY1bVd6S2pvVjJuVytUcUxteW02dTF0cU9weTQrUTQ1T0lnbTNtaUgrUFZKWER4c
|
||||||
|
XFuZ3FMaFkzS3lmb1I2Z2JwK2QzdDhWOEs1M1p5a3NMZUl3SmFndXJlN1ZYSDIxbjU0ZVh0am9McDN1S
|
||||||
|
2ZBbUlxMWlvdUltSnVadGNhV3BJMnNtWnlDdDM2b2FXdC9wWWQ1bEtXY2ZjRzljWDViajNpbTJyekduW
|
||||||
|
nJEeWJQWGIydWlqMzUvZzhlQ2EzNTd6cm5leU1YQVZLNnZnWVpwYnNuTGUyTnhsTFJ5Ym9PL3huNTZnV
|
||||||
|
2F0dkt1Wmc1SGNiV2gwZm1oM2dXT0pmbjlqWnFtVGRIWjNjWEdFb1dTamlaMkRkb1owZG5kMWRuZWhwR
|
||||||
|
m1UdDVONXRHbXlwZVNlV0lyaGg0aGpwWXk2cjdpYnZLTElxWVc2YXFDa2tZaU9aOUcyazZSM2lMdUNoW
|
||||||
|
Gh2WnREV3c5N0l6c0NGeHAxcGtLVnVmNU43VlpxWTdhU3BzclRIcmJXMVpvRzZmR2VXa0l1R2lKRmt2Y
|
||||||
|
kRGbTNtdnZWT0N2YVNVWnJlenNNcmFtTmpMajQ2NWtIaUFhYmkvdDlXVmNzdCtrWCtjcmFtbDY2Nm90T
|
||||||
|
0Z2a3FhbG0zV0FiS215bDdxM3BkQ255WkxMdVhhQTFvZGhjbzl2ZW5pRmZXSjBqNXFHczNtSWdHeW5mN
|
||||||
|
EdGWWxhSjFYdHFjRlh3cHFtOHJjS3lhSUszZ0g1OFY2ZS80YWVxdEtsb2dzUnRpb0NKVmFqZXo2bW51c
|
||||||
|
WFneU9xazJIdW94b0NHZm1ocGY3bUJvYVZ4ZXFqSXZPaXpzNlhibUtPem8yK1NwcVdhZldoc2NzQmxpc
|
||||||
|
EJVMjdyT2xMeDJqNm1kZld1c2o0YUNhcmkzckxMRjNMYmV6SG1JbTYxL2VKQ2xib1NjWTZXWHArT3Zub
|
||||||
|
XQvdDM1MmdyZUFlSFZ2ZzhuZWxhaWx0cSszeFp6SXZNSlZjZUtkZElHNmUzcU9rNlRvdTltOHViNnB1R
|
||||||
|
2wvdVlHaHBuRjZsTXUwM2F5M3QrU2FvYlRnYlhsdTNxUjBkNFJac0oyNnQ2YlFwOG1TeTdsMmdOYUhZW
|
||||||
|
EtQYjNwNGhYMWlkSSthaHJONWlJQnNwMytCaFdKV2lkVjdaR2R0bkxhbnJhWEhxYVdycGJxc1pIRFVrS
|
||||||
|
nBzYjJSMmRuaUdZSW1FZkdSdm1aUjNnSHR5ZTRTaFZxN01wNG1BZUxlNnFMaTd1cEt1cXBKOWsyZmJ2Y
|
||||||
|
Vd0NDVxWXU5TnZrckRVcEhTQnEzRitZby9ScGFWOG4xTyt5YjJwaFlpamM0aC9nbXFFZUdWMGlaMkZxb
|
||||||
|
21IZldLamZuZUZZbVIra25GalptT3FjV2Q2ZElOMWVtbC91WUYyYjRQRXlxQ2FaSCs1Z1lKcWszREVwc
|
||||||
|
HZycGFXNXJLV1Z2ZDZaemNqYnVHaVJ0NEI3Zm1pMTJkYWllbi9NZjYxNGZtYk1ySnZCbTYrNHB0RE9ZN
|
||||||
|
XF6cExKTHI4V2cwR2l5a3NXMXU2clFzcDZ0ZDRpN2dvVjViMmE5MHNqZHk4QzlwdHk5dFhkdHA0aVRlM
|
||||||
|
VZqVmJXMGNYMStkYmkvdDZsb2dyVnZtWkNMbVpxanVMdTV0cVo3aWNKdFo2dWRacmlzcmFhMTVKblN2Y
|
||||||
|
zdIcTNoL3VZRjFmNEdTcFdlSmVZWjJySFIwZDVkcVo0bWhmWkZqbTR4K3VZUnVoMDNMdTZUZXNkU2ZlW
|
||||||
|
S9IZjVxSFVuKyt4Ynk5eHExWGY4eW5ocXlUZWIrWDM3T295SmVUd3R1eG1GaHU3WHRuZzJaMWY3bUJkW
|
||||||
|
GlCWkpuUXpkZWZwS09vcGJTMWFIdUp3bTFtczRWbWdicDdkbzZUcE9YQzBMaG9rYWlBZDMrNWdhbXRXY
|
||||||
|
nl6MExQbXRxV282bHR4dUtoOWtxYWxvSDFvdkpqQmxNTzlWS2FzbjJHU3g0NTJsb2RTck1xdnU2dkdzY
|
||||||
|
Vc0d3R6RDdYdVN0bXlqaWJxUGEyNXcwcmFWb3B6dHFaeTdabzYzZ0hoM2dHbVNwOUM1enFhb3I2V3hyT
|
||||||
|
U5UZTRuQ2JXZXFuV2FwdWFhaXlOYVQxN3JodUdpUnQ0QjRmWUJwb3FOb2pYR0tkNmQzZDJTb2FuQ0Nub
|
||||||
|
2VIWTQybHRvQjdhSWROeXNhV3pMektrTHUxeUtxRmlLTnpob2FDYW9aNFpubUdub2VuaVlwdFk2U0llb
|
||||||
|
1ZzWkg2RWZLWndhYlJqcXIybHg3bTVhWCs1Z1h0dmc3ZmZsSjZ1cGFpenRsV1V5N2h0YUxURWZuZCtlN
|
||||||
|
3pIcTJpdGU5VElyN3BtZ2JwK2VYbXFsV2VJZElsMXFuZDBkS2RwWm4rZWZZZGptNXB6ZG5wbmZWdUZob
|
||||||
|
U9iZUpaa2VZL0hmNWVIVXFlMnVxMXFqN3R2ZFpDbmQrL012TDkwMU1Hc3VYNlZ2TW0ybEoyWW5IeXFnM
|
||||||
|
2lOWnJTd3A3RnBmYWliaWFKdFY1ZTNxN2wrbGJyQnRKZFd4Y1N5cmJ5aXFMbVJoOWpONGJ5MHZiZG1sS
|
||||||
|
1cwcU5mWXBMMnl6V2UxdW41MXFITllzOVBBdXFYVTJyZXZ1YVZ2WnNpUVk2VnFrbE9TeDQ1NW5XK2tzc
|
||||||
|
1d5YW9QSGdtMStlOU82MjgzTXY1Zm1jSUxJYkdXQW5HT2xtNS9mb3FxdW83ZWx1cXhtZ2JwOFpwcVFpM
|
||||||
|
lZsYzNsemVJTmdpWUZ2WkdlemxuU0FkM0ZqaitSdXFwT1B5YXZJdDYrMnNtaUM0NjF1a21hZnJ2Szd1Y
|
||||||
|
mJjVzNIQ3FINkpiWTNjcUxLdm1NQ1F0TXFyMjYySGJNcU9oSCtGYjJ1c2ozNTZnbmFzcEx2SDJjVGJ2Y
|
||||||
|
mE2bHFod2dzaHNaSWlFWTI2cGJhOTdXYm0ydktlcmFYK3FnWEp3MUpDaWJWZW1zNzIxdmFLNnNzSlZjZ
|
||||||
|
UtkZElHNmUzZU9rNmJVemRiQnJYaC9xb0YwZ2JxcXBHcVNac3k2M0xxbnR1Q3BxcmpkdThwVnB0Tjlkb
|
||||||
|
1dxaDJTUGVLTGdxdEdheXJ5NXQ0V0lvM09HZ0lKcXBMcWtwNzdneU9lNndyS2trM0NDeUd4bGY1eGpsc
|
||||||
|
WlZMjdXY3FLaTB1S3RwZjdtQmMyNmJlSnRqWm5keGQzbCtZNHh1Z0dSd3JKTitkbmRqZk1lclphU1RqO
|
||||||
|
GkydXFXNnJLT3FxT1RZV1pPM2szYXpnV1oycDJwcmZKOS9oR09laW5SM2hHcDlaWVdHVkthN24yZVJkc
|
||||||
|
2U1eE1HbHJIZUl1NEtOZ2xlbHo4Nis1cnE1dVplVmljUytiR2VKdzN0a2JXMzF0SEY5Zm5XcnU3Q29hS
|
||||||
|
UsxYjVTSW8xVmxjblIyZDRGamlYNS9ZMmFwazNSMmQzRnhoS0ZrbzRtZGczYUhkSFozZW1pQzQ2MXJrb
|
||||||
|
WJIcHVlc1puL3FjMmVJcUcvS3A5M0x0NnV4b0xCdnRzbWF6YmZHbzd2SGRvRFdoMlJ6ZDd1eHE3OXFjT
|
||||||
|
GVUbjRXMGU2ckJwTlRDckx5YmwyNm1vcWFlbGVtaXFhMjNkWCs1Z1hWM2dXU1p4c25NcFo2eXVLKzJ2M
|
||||||
|
VdVd1lsa2FxcWRab3FvdEttMjRKWGx2WTNLcjhxc1pyQ3h0cm5mNlp5OFpMeXQyN200cmVXZ1ZyYmdyc
|
||||||
|
2ViMU0yMlpxdWxzVXZFeHFiVXRjNnJ2TGgwdWRKdG82SEV4R2k3eUxxV3VMN1V2dDE1d0x1WTRzQzB0c
|
||||||
|
WFkdmRCaG41K2UzMkdIdTdPMnFibTZaSXV0cUo3RXY4NmhtTHRrcDdXMVU2N0J0S1ZXdnNtcXI2cXFwc
|
||||||
|
0xVclpQQzI3ZXZ1YVc2dHJhNWRaS3VxcEo0azJmdXdMU3BtWFNwaWFhSGVablF5N2U3dkp6QVRaREpiS
|
||||||
|
ng2bjFQSnVjQ3F4TUNWbUxtdXZLMTJnNmgraXFhUG5JdUhmbWVnZm5xQ1pHaHVrbkZ0Wm1PMGNXZHJmO
|
||||||
|
ForZllGbXZLeTBxTXJGMTFWd3RYNTlnWE41d3NiRHFLamVoWCs1Z1hKempwT20yTVhTdExtN283ckF0S
|
||||||
|
3RwcStaeGlINTdaN1c2Zm5XcGMxaXozY1RGbjlyTHA2VzNtNEpOa01sc200S0hVNUxIam5xZGI2Q3J2c
|
||||||
|
kN0YW8rc2IzU1U0SSt6azNteG9lcThzOFNUbU1HRWZKeHdZN1cwY1g5K2RiYW51NjIwcm1Sd3haQ1pic
|
||||||
|
Wg4ZFhtQmM2Yk9zTUtXcU9MVHVLKzJyN1IyckoydGlhakdnSTkrYUxlNXFMUFo1cCs5dG51QTdZRjFkN
|
||||||
|
0ZiaHNIZHNMeW0zdGVrc2ErcGJVMlF5V3ljZVo5VHVzYTVwdGV5ajUyMndhMXFqN3R2ZFpLbmQ2eUppS
|
||||||
|
UpmbzRGMGgyWlVmcEo3WTJadHFuRlpoTGVOZFhlQlpydTNwcGJWdThpWGxyYXBhSUxFYllxSGlWVm9xW
|
||||||
|
lI1YzNkMGJvYWxWS09KcDROMmtIUjJhWCs1Z2FhdFdjdTR1cm52dW1aLzZuTnZpWkN1elpUVTFxU290c
|
||||||
|
Hh2WnRLL2JKK0R4bXVJaTQ3QTFvZGtjM2UwdmJHNGFuQzNrNkNIdEh1SGZXS2pmbmVGWW1SK2tuRmpab
|
||||||
|
U9xY1dkNWRJTjBkbmQwZG5kelpaR0duRlZ3dFg1NmdYT2h1cnUwVlhIc25YZDZnV08wdWQrWXVNYk92T
|
||||||
|
EtjdHJXMGlLK3QxdGlwdmJMTml1ZW9yYkRLbnFqRjA3L0tWYWJkZlhxRVdidVV1TUZVcHJ1ZlpJdU9kc
|
||||||
|
mpJdTVSK3dxNnh0SnE2cExHZDFydmd2c215b09lVHRMYWJvS0hIczZtYnBlMWpjcngraEhXQWFhaXJ1c
|
||||||
|
VdueXNiZG5LU3dab0c2aTJTSmdvbFZpdUhNdDJhdHRxKzM1WjNpeDg2L3I4cTlacXl5cDZuYzJLcDR1T
|
||||||
|
UdxbXEyd3FlK2ltTGphdHN1c2k5NnlacjJjdTQ5MXc1UFV0TmhSdmNiRHNvT3htWis3c3JxdHdyeFZxY
|
||||||
|
2JPdnVaNXlyS2s2Yk81eUZLandJS2tvcVNaNDZpc3U2WEhyYlcxdDNScGZhaWJpcU5WcWJ1MHEybU1wc
|
||||||
|
E9HaVZXYzNzUzR1N21tdEhhc3A2MktuNDFveUtteXJLVzVyTS9YbU15cGU0RHRnWFY5c1Z0b2Y1K0NoR
|
||||||
|
09lbDNWNmFtZDlaWVdHYkp0NGgyektqb3QvaGNPVnE4aTJ0N1oyZzZoK2tLZDN3TUxQd2FmbHMybVFwV
|
||||||
|
zUvbEh0VnFKam1wcGk4cWJLNHY3ZXBhSUsxYjVHUWkxVnd0WDUzZVl0VnZiM0dvYUxveEtpbHRLVjJkc
|
||||||
|
XluclltbmRXaVJ0NEI4Zm1pMzR0eWF2V2FVcWJSM2Y3ZXhjbkJ4MHJ6T29kZlpwS3E5V1lpVWo0WnQzb
|
||||||
|
0tiYTNuR3Ribk11NWRia0xHQ2VJKzdiM1dNcDNmdHpybkFsZVczdDhtYm83elZZMjZmYmFwOHFvTjlqV
|
||||||
|
2EydktheXNMV2R4c2lMYnFoOGRYbUJjNFBMdmJLWXFlelFwYkdzczJGMnJLZXRpcDZOYUxtMnE2aTRxN
|
||||||
|
mJVMUt1OVpwUzR0SGg5ZnBsclpvQ2plb2RtbUp4M1pucG5oMXVGa0dLYmFxQ2trWVdGZjRYQ29KMjJ3Y
|
||||||
|
TJudUttcHFYdW95TFNLa0lkVXBYNTRpbDlrZ1k5eloxWmpxbnRuZVg2RGRHaUN0NEI5ZkZmVXlzcW5xc
|
||||||
|
lZtZ2JxTGJKTndzS21YNHMrbHFMT21ZNC91bmEyT3FMU0FoM3VBd3JlQWU2cVZuczJ0dldlMXVuNTNxW
|
||||||
|
E5ZZjU1OWgyT2Jtbk4yZW1kOVc0V0dZcHQ0bFdHSGhJUjFrMzFnYW9WOWVYNTJnNmgramFkMzZMckVzb
|
||||||
|
FN1d1lHSFkyNXcxYWFmbTVidXFxMnVqY0MwdGJtNGk3K3lwTlBLaTI2b2ZIaUFhYitjdkxseGJxbXpsW
|
||||||
|
FdBYWJTbXdOYVg1OExqdUkvRHRMVzV1SXUvNE9LcHpHYVV1TFI0ZFg2Wm5adkMwYi9BbzkvVHNyUnNjc
|
||||||
|
0JsaG8xc2paalhvTVREeUs3U3UxQ0d0cnVwcjdtNlYzL01wNG0wZTh2R290aHdnc2hzYklpRXA1aVhwK
|
||||||
|
yt6bkx4bWpyZUFlSGFBYWJTYXpidktwcHFocUtlN3RsV1V3WWxrYjdPRmRuWjRkMjZFcFdHamtJMkRkc
|
||||||
|
EIwZG9GMGRtbXI1bkdQZm51NzM3bTNyZWFuV0lyaGg0NXRqYkNzdnI2c3Y1QjNrYVdsZVpkcmVjYTVzY
|
||||||
|
2l1bzU2MHdjRzR1V3B3dDVPZGo1eDdrc0JzcElDQmQ1YWp4ZEN0b3BlWDJhNmJmbWFPdDRCM2ZtaHBmY
|
||||||
|
WliaTZOVnBiU3RxYXh6YnIySWYyNnBzNXgrYUt1d3VNTGRvOVM5NEhXQnYzNTJncmVBZmFxVnFibTR3c
|
||||||
|
lBoYVgrb3NXbHh3cWgraW0yTjNiaW92WnEvbE1YS205cTIyRk9Tdlk1MW5zQnFjbzl2dUwyMnRKNjN3Z
|
||||||
|
ExIbkpUS2gyT21pR21scEtPeHg3U21vNVRscHFscFpvNjNnSGgxZ0dtbHA4YTMzWmlVcHFXNnJITnV6S
|
||||||
|
WlBYkhDYmxYUjNmVzV4aUo1a3FubWRnNENHZElCM2RHaUM0NjFvaVg1N3V1cXJwYmpjbUpxdzRySjVid
|
||||||
|
DZrZEgrRVdYOWJob3hmbTN5U1lZNTBoSFdkZldCemhYMXFnOGVDYTM1NzRNbmJ6Y3pBVks3QmdZNXNWc
|
||||||
|
S9Zb3B5aWxOeXRuR3QvMEsyQWZYK25nWE5zbTlIY2JXbDhacTI4dXBkN2ljSnRhYXVkWm5aM2NYR0VvV
|
||||||
|
1NqaVoyRGRvWjBkbmQwZG5lZ28yZUlkSWwxcW5oMGRLZHJXSXJoaDR0dGpkaWtzNjlaaUo2UGlHU2xhd
|
||||||
|
GlXdXNuR3FyakFsYXVscnJ1N3k3ZW5xS0hPeU9KN2tzQnNwNGhwdzV1WHVZUjhwbkJsckh0WnZLbTJ1Y
|
||||||
|
mlzbWJtc3RJWEN5ZHlxcExTb2pxakVtM3VKd20xbnFwMW1xcXkwcE1iYXBPZkMzTUZva2JlQWVIWjJnW
|
||||||
|
kswVjhXenk2cWF1cW1uN0t1YmI5Mjl5NXphMkdPNnVWZkFuOFRJbDR1OTJKYkpkTVNtMXNDbnFNZXh1M
|
||||||
|
mk5dGxXVXk5eTQzOHpLbXBQZXM3bURVb2kyeDJHZ3BaZmZzNlZwcGIrcnRibXR1cSt2VmJTZXFtQm5Zc
|
||||||
|
TI1WjhhbXZySnZwNldaMXJpMXVhWmh5Tm1aazhuT3hybk5zN2lydDNScHErWnhqSDU3dWZPM3FXYXlyS
|
||||||
|
ENIcUcrOW1NemV1TGl2cW05bXlKQmpuWUtIbzd6QXVhYldzbytkdHNHdGFvKzdiM1dTcDNlc2lZaUNYN
|
||||||
|
k9CZElkbVZINlNlMk5tYmFweFdZUzNqWHVBYWJxcnViV2UwTVNMYnFoOGU0QnBsNXpSd3NTbG01dWV0N
|
||||||
|
EI0YzN0MjQ1bmZ2czdHcTdXNHY3ZXBhSUxqcldlU1pudUE3WUYxZHJGYm1yN2x1OE9pek02aXM2NXNiM
|
||||||
|
mJJa0dLbGFvZHN5bzZKZjRXOW9xSzRzbXFEdUlKbGY4eW5qclI3dTd5cDRicTJ0cGFuY0oycWJXWnU3W
|
||||||
|
HR0ZzJiRnBicXdzcTFwZlptYmhxU21iM04zZ0duRXFMdkJzcVdmNmRldHRiVzBZNC9hYnFPVTRJMS9rR
|
||||||
|
2EydktheXNPUGJuTXBtbExpMGVIZCttWW1vdnRHeXlxYll5NjZydkZkdlpzaVFZNXlDaDVUSnViVzV5S
|
||||||
|
3lVbXNteWFvUEhnbVo5azQrSHFvcU1lbUttZTNtSlVtUituSEZqY0dPcVkzSzhmb1IxZ0dtNXRxdWpxY
|
||||||
|
2ExelpTcHAyYUJ1b3Rra29oeFpXYXFtSEYyZW01emlKRmtvNU9kZzRDR2RHaUN0NEI5cXBXcXpLWE51d
|
||||||
|
TFwZjdleGNuQnh6OE80bk5mTHBiS3ZXWWlvdnBCcHBxbWZZbzZPejdpZGdXcGJ2TUt4ckhhRHFINk1uN
|
||||||
|
CtjaVlkOVlxTitkNFZpWkg2U2NXTm1ZNnB4WjNsMGczUjJkM1IyZUhKbGtZYUxicWg4ZUlCcHY1VEdzM
|
||||||
|
0Z1cWJPVmVJQnB0S2EzNEtMWG5jN0hwN2lsdWF5SHRiWGUySnJNcmNpem5JSzNmcXR6V0wzWHNNSlZwd
|
||||||
|
DE5ZUg1eGI1NjZ1YUhackttU3k3VzJwdGF5YzZqRHU2MnJ5TEdrc251b3lMU0tpSWRVMTdPNnVLU2R2d
|
||||||
|
GFxb3FSVnRiUnhlM1dHZm1pTXNxZXBycHJVZHQyYm1tS250Ylczbk1ERHdaU3E0dEt5WnJhblliV1JwO
|
||||||
|
Wk4M01HcWRxaW51NldvcU9QWVY3dXp4N1BmcXJpdDVxZFd1Tnh0eHFYUHo3Vm12cVp0ajc3TW04K3RoY
|
||||||
|
VcvdVhTcHhNR1JtN2JBcldqR3JhYTV2dURKN1huQXUxTGxzNmk1VXBXOHhtR3FxSnp1cGxlNHRMaTJwN
|
||||||
|
3V0dGJXMVk0R3EwWnlvWXFxcnFNV295N1BDVTUvc2c3bTVyS1ZoeTlxbzIzblJ0THEzcHFlNnFXYXEzT
|
||||||
|
2lxektuTHVKcTdzMlRncHFiQjNjTzhVOS9TcUdhcnA3Mlh2cm1UMzdIVW4zZkV1YmZKdktLbXRydXJyW
|
||||||
|
UpxY0xlVG9ZK2N6ZEM5bDVXSnVvOXFibkRJcHBTcXFPeW1xbXQveG41M2VYNW91YWVoeHJmY21KU21wY
|
||||||
|
nFzYzI3TWlJQnNjSnVWZEhkOGJuR0hubWFuZVoyRGdJWjBnSGQwYUlManJXNlNacytxN0xxdHMrVmJjY
|
||||||
|
0tvaEpGVnNkTzd1citwc2syUXlXeWNlcDlUeWJuQXFzVEFsWmpKeHJpdGRvT29mb21uZDV5VXlvZGpwW
|
||||||
|
WhwdWFHcnZNNndsSnFTNTZWc2EzL0dmbmFCWm1pQ3RXK1drSXVqcDZ1bnEybU1sNU4raXFad3NwMW1xc
|
||||||
|
mE0cjhEZ2xkZk1qNDZ2a0hTQnVuNThnWkxsbU15dHg2eWNncWgrcDNTcGlaK0FrVlhlMzZXNXJhbTJtO
|
||||||
|
G0vb2RtN2gyekFqb1NBMW9kcGMzZTl2YXJBc2Fpc3Z0OTN0Y3lSZm1XdGNKZkhvWmV6MWJTZ2w1N2ZzM
|
||||||
|
WRyZjhaK2QzaCthS3EwbXNMS3pwS1pvN2lyYVl5bWszK0liVmlyazNWN2RIRjBnYU5vazRtZGpYYUdmb
|
||||||
|
lozWm9HNnFxUm9rbWJPdGQ2b3VLblduWmZEMDIrU3BxV2JmSUJzYVgxY2lvTmlubldYWlhlRWhIK1RmV
|
||||||
|
3BwaFcrRHU0NStiMmJNNGJidXpzcHZiZWFJZ0k5VWxjVERxcCtYbGVhbVdZVEJ2SDUrZ3FXQWVIbHYzT
|
||||||
|
W1qWjI5a3E3dXd0VldVd1lsbWFMT0ZkSFozY1hHRW9XU2ppWjJEZG9aMGRuZDBkbmVnbzJlSWRJbDFxM
|
||||||
|
2QwZGF4YmNjS29nWkZWMmN1d3EyeHl3R1dHaVd5TnVOSjR4c083c2NpUm9xTExzbXFEeDRKcGZudmJ2d
|
||||||
|
DNFZVlpbHJYOTZqMVNrdTZtd29wMmYzNFdwc3JxNFpvRzZmbmQ0ZkZmRnU5eVdwNnUwdXJEQW9YdUp3b
|
||||||
|
TFucXB0K2FKdXBxc2VSZXRpNjRjaTR1MlM5c0xDeVo5SGZvOGU3ZWJucFo3ZTQ1cXViYjgrNXcxUFUyT
|
||||||
|
E83dm1OdG1zcktvdUM4aFpMRnVIU20xOEdSbkwyeXJHaTR0NWk1eHRMRDdzeDN0SmZoczdtMnBwbXlnc
|
||||||
|
XFoVnF6cHRxbHB0TVd6cWF5M3VheTFWY3JFaVhxa3NhdXlySEYzeTdmRm1HU2JucmVBZTN0anlPcWsyS
|
||||||
|
HVveG9DT2ZtaXRxYWU3NWVXY3kyYVV1TFI0ZG42WnE1dTcwNjdLbU1yT3BMcXZXWWllajRkcnBXcVhZW
|
||||||
|
WlLZ1hXVWVtQnVkWDE0Z29SNGIzU0pqNUR0azQ2SFZPbXp1Y2libzd5RWZLWndhclJqZmJLOHg3bTRyR
|
||||||
|
2FCdW54bWs1Q0xwWnF1cWFlNnRwTE54NytZV0xUV2ZuYUJZMk9QNUc2a2k2ZDFxc1c3dExPenA2dlA0S
|
||||||
|
nVOWnBTNHRIZCtacGwwcVltamgzbWozZE9tcTJ4eXNXV0ZrYVdsZ1o5VHU4UExzOCs4a1ozSWI0T3hqb
|
||||||
|
mh3dDVPamo1ekx1TUdiNGJWcGtKWnVmcDIwYldkbXRHT3F2cWJHcDdpd3RMcXdzYVBVZUtTY2IzSi91W
|
||||||
|
UdLYlh1K3hKV2k0dGFzcTdsamZNZXJaYWFUajZPNHhhZXJ1cmV6cU52WXFYaG1sTGkwZUhWK21aeW90T
|
||||||
|
S9CdkpMUHk3ZXJiSExBWllhUGJJMTZsV0tOZ1lSMmtIMWxXWVY5Z25pRWdtVjBlNmpJdElxSWgxVG92c
|
||||||
|
XUycHBtdHhxS25tMVcxdEhGNmZZMW1lSGQxZkhSeVpvNkdubE5sY241MmQ0dGppWENLcG5Ddm5XYTV1N
|
||||||
|
ksxeWVSV3JzeW5qSUI0cGJ5b3JiS28wdCtjZW4vV3JyU0FmNld4YW0ySjZjQ1JaNldNcXJ1em0yOW15S
|
||||||
|
kJsbllLSFlZZUVoSFdUZldCcGhYMTRlSVI0WlhTSm5ZV3FpWWQ5WXFOK2VJVmlaWUNFZktad1o3UmpwY
|
||||||
|
XF4dUdhQnVuNTlnV1NsenAzV2xKNnVab0c2aTJlVGNMMmNtZVNGZjdtQmVIdDI0YUc2eHM2OHNuaC91W
|
||||||
|
UYxZDRHUzE1ekxwOHV1NnJ1dHMrVmJjY0tvZnBGVm1JeCt1WVJyaDAzSno2TFFhcUNra1l5T1o4bXlrY
|
||||||
|
TNLdjYyN2RvT29mb3FmajV6THZMbVgxTUdzdEphVndzZGpicWx0cTNweGEzYURkWHQwZFhoMGNtaUJoN
|
||||||
|
XB0YUhKK2RuZHpic3lJaG0xWTc4aTJ1YkN3cjNhc3A2MlFwM1dNdjd5NnZMYXJhYXZtY1lsMmsyZnNyT
|
||||||
|
ENwMkt5YnJ1TEd4NWlOcGJhQWVuRnZUWkRKYkp4Nm4xTzd3OHV6ejd5Um5iUzZySDEyZzZoK2lhZDNuS
|
||||||
|
lRLaDJldGNMZkhtNWV6aEh5WGNHTzF0SEdDZm5Xb3RiNnlzcmFqbWRSNHBKeHZjbis1Z1lkdGU4Q3dwN
|
||||||
|
S9ueW1hQnEzdHhqK1J1cEl5bmRibkxwcm1xdHErMzVOeW14cmQ3Z09PQmRIL3FjMitKa0wzTWxkZlR0c
|
||||||
|
TZ2cVc5bXlKQmpub0tIZ2NuRHQ2cld3SjJhd0xLNmFIYURxSDZLbm8rY3ZNbXlrK2V6cHJtVHFMT0VmS
|
||||||
|
1p3WkxON1dYdDBoSGx6ZUhaemQzVlZrb2VqWm1WOGRIWnBqS2FUZjRCdFdPN1RxS2U3cHFDNDBxalllN
|
||||||
|
mpHZ0lkOWdHbDJkbmlsb0dpS2NZbDRtbmgxZnFwcGNIK2ViNUttcGFCOWFMMnJycC9LeVZTbXU1OXFrW
|
||||||
|
GExdThTMm5KcTN1YTFxajhXZWZvcWRrTnVUaUlSczdzR0JpV3hXdGRlcWwxaHU3WHRxZTM1MWRIWjNkS
|
||||||
|
FozY21XUmhwbGpaWEowZG5lQlk0bCtmMk5tcVpOMGQzZHhjWW1UYithVG9ZMW94S1d6ckdhQnVxcWtiW
|
||||||
|
kpteWJLOXRySzM1cVdmczgvQnZKZXV0bVdCdlhHQlpYZkVtODZ6aDJ6S2pvZDRuVzkxcDdhdnRLM0hhS
|
||||||
|
m1wZWErMjdyeS9iWVRpdzd1K29KdHV5S2FVcXFqc3BtVnJmOForZDNoK2FLdW5xTVRJMHFPcHE3TzBhW
|
||||||
|
XltazRHQmJWaTgwcks1dHEycXVOS28yTDJObHFmSnFibG5rSys2NUpOOXZhWE51dXlzY21heXJIQ0RxR
|
||||||
|
y9Mck52UFpZRzljWVZsZDd5WHpMemFvN3pIZG9EV2gyRnJqMis2cmNDdGxyZSt6TG5iemJ4dmJlYUllS
|
||||||
|
TVzVm9DU2NtaGpZNjl1YUhsa2czU0FkM1NBZDNKWG5NbWphbTlrdXF1NXhKekl2SEZ1cWJPYWZtaU5xc
|
||||||
|
m5JNXFiWWU2akdnSWQyZ0dtMnE3UFYxS3E5bzgyKzZxeG1mK3B6Wm9tUWI1S21wWnQxZ0d5YnZLTER3c
|
||||||
|
UhNck1TZXU0bDJnTmFIWUhOM2I0TzdqbjF2WnNuZnZ0MitlWWlXclg5OGhXSnZ3Wng2YlZpWDZiaWx0Y
|
||||||
|
k8wcUxscGY2K0JlWERVa0o5dFY3U2x1ckMvbW51SnMyMW10TlorZDNwN1k4Zm1sdWE4Mzd5MnlxMjF0Y
|
||||||
|
mRvZ3RtdFo1TzNrMzYwYWJTNTJhV2Z3dGF5eVZXbTNYMTNmWEZ2ZThmRmxkQzcySjY0djdtM2cyOXJyS
|
||||||
|
TkrZVlKMnE2ZXB1dUc2MmIyNHdaZVZpYnFQWTIySWhITmpaMmluY1d4MmRZTmtkbmQrZG5kOFpaRjRwS
|
||||||
|
1p2YzNXQWFjYWp2YS9EbUpYZHhMaXJhWHkwanFKdHJYdWZnM2VMY1haOGNYZDNrS05ua25TSmY2cDNab
|
||||||
|
i9xYzJ5SmtNRExsTi9mdG1pRnFvZGtqM2lUNGFuT25iaTJ3S3FGaUsyaWozNTVnN1dDWm51VDZNaTBqW
|
||||||
|
kZ2bWVpM3EzZHRwNGlWYzIxWVk2cHhaM2wwZzNSMmQzUjJkM0psa1lhWlkyVnlkSFozZ1dPSmYzOWpac
|
||||||
|
ktGZjdtQmRYdDIzNVhndm8rT3VaQjJkb0Ztczd6YzU2RElzTDZLNTZpdHNNcWVxTVhUdjhwVnB0MTllb
|
||||||
|
1JadTVTNHdWU211NTlqaVk1Mmt0aTVwS0xGdWExb21iV1dyY1dOcU4vTHpiS2s1bkNDeUd4bGY1eGpsN
|
||||||
|
XVtM2JPZ3ViaThzN1JwZjdtQmMyK0RnNHR1cUh4NGdHbkZyTW16Y1c2cHM1dCthSzJtb3NqbXB0ak1qN
|
||||||
|
DY1a0hWNGdXYTRyTnpZbU11cHVLbmJ1Nmxtc3F4d2dLZUhlV1dibTNoemVteDZYWTEyWXB1Q2xXR1JoS
|
||||||
|
VJubnNCcWNJOXZ2cTNHdTU2eng0K1E3Wk9PaDFTNXQ3L0pwNmF6aEh5bWNHU3NlMW03cWIrcHA3cXBwY
|
||||||
|
nU3cGNaNHBLWnZjbjVvYVl5bWszK0JiVmpkMHJ1MHM3Q2l1TkNoMTQ2UGpybVFkSUJwWm9HNnFxaHhlc
|
||||||
|
lRMcnQyc1puL2JjMmFLNFllUWJZM09zcjI0bzd5TXVjbFVwckdmWXBMSGpudWRiNktheWJhMnIzYURtW
|
||||||
|
DZKcU1pMGlvcUhWT2JEcWNpVnByZlN0Wnlsb2UxamNySitnMys1Z1gyQWFiS3F3OExTcHAybnRtaUN4R
|
||||||
|
zJLZ1lsVmh1dlNwNnU2dEs2MTNKbmxlWStPdVpCMWQ0Rm1xYm5WMUt1OW83Mm03cXhtZitwelo0aW9iN
|
||||||
|
Gxqbko5d2RuOWtmMk4xaG1LbGVKVnJoNFIyZ05hSFlXcVBiNzI0dUttcHFialJ0dTYrZVlpbHJYK0FqM
|
||||||
|
VJtZnBOMllHWm9wM052YVhTRGZuWjNmblozWkhEVWtKOXRWN1c0cDd2R3BudUp3bTF2czRXbHZLaXFyY
|
||||||
|
lhUb05oN3FOQ3ZrSFY0Z3FXQWVLZXRzc3QralgrY3JybXQyMXR4d3FpQWlXMk5tbk4yZW1kOVc0V0dZc
|
||||||
|
HQ0bFdHSGhJUjFrMzFnYVlWOWVIaUVlV1YwaWFWM3RjeVJnV3lWdktqQ2wxYUoxWHRrYUcyY3JxYXJyY
|
||||||
|
itwakxDcHNxdTFWNXpKbzJkdlpMS3ZxcnhWbE1HSlpHbXpoWkcxcWFxdHVaRjYzTDdadDdsNGY3bUJkW
|
||||||
|
GVCa3RlY3k2ZkxydXE3cmJQbFczSENxSDZSVlppTWZybUVhNGROeWMraTBHcWdwSkdNam1mSnNwR3R5c
|
||||||
|
it0dTNhRHFINktuNCtjeTd5NWw5VEJyTFNXbGNMSFkyNnBiYXQ2Y1d0MmczVjdkSFI3ZEhSdGdZYVpiV
|
||||||
|
1Z5Zm5aM2MyN01pSVp0V08vSXRybXdzSzkycktldGtLZDFqTCs4dXJ5MnEybXI1bkdKZHBObjdLeXdxZ
|
||||||
|
GlzbTY3aXhzZVlqYVcyZ0hweGIwMlF5V3ljZXA5VHU4UExzOCs4a1oyMHVxeDlkb09vZm9tbmQ1eVV5b
|
||||||
|
2RuclhDM3g1dVhzNFI4bDNCanRiUnhnbjUxcUxXK3NySzJvNW5VZUtTY2IzUi91WUdIYlh2QXNLZWY1O
|
||||||
|
HBtZ2F0N2NZL2ticVNNcDNXNXk2YTVxcmF2dCtUY3BzYTNlNERqZ1hSLzZuTnZpWkM5ekpYWDA3YXVyN
|
||||||
|
mx2WnNpUVk1NkNoNEhKdzdlcTFzQ2Rtc0N5dW1oMmc2aCtpcDZQbkx6SnNwUG5zNmE1azZpemhIeW1jR
|
||||||
|
1N6ZTFsN2RJUjVjM2Q1YzNsNlZaR0dvMk5sZkhSMmFZeW1rMytBYlZqdTA2aW51NmFndU5LbzJIdW94b
|
||||||
|
0NIZllCcGRuWjRwYUJualhHTGZacDNkSDZuYVhCL25tK1NwcVdnZldpOXE2NmZ5c2xVcHJ1ZmFwRjJ0Y
|
||||||
|
nZFdHB5YXQ3bXRhby9Gbm42S29KRGJrNGlFYk83QmdZbHNWclhYcXBkWWJ1MTdhbnQrZFhSMmQzUjJkM
|
||||||
|
0psa1lhWlkyVnlkSFozZ1dPSmZuOWpacW1UZEhkM2NYS0VrMi9tazZHTmFNU2xzNnhtZ2JxcXBHbVNac
|
||||||
|
1dwMjdlRnFPMmFwTExUc1hsdTNxUjNnR3lsdG83QWVHM2VncFpqa1hiQXFjUzljWjNMcnJhcnVheFhmO
|
||||||
|
HluaHF1VGViR1g1ckc1dnFLb3Q5R3ZWWEdtdEhKbmYzNTFtSzZ3dDJhM3Jxckl2OWRUckt1d3NtZkVyT
|
||||||
|
WV4dDZXbDU4eStxMmVSczhQVW1lYk11clN4dTdabXZxMjZyNURVcFhpUW5ZYktaN08ybDNxWnc5ZkR2R
|
||||||
|
k92MDdXcnJhdThuYzUycGRDNjI1YkpkTHEwMVcybHJMcS9hS25KdkoycHgrRyszYnJMdHFIaGZHbVFwV
|
||||||
|
zZDbkdPbnI2UGZZM0s4Zm90K2FLMnBwN3UzcDhiSmkyNm9mSFY0Z1hPbHZycTBsS25ld3FpbnU2WmpqK
|
||||||
|
1J1cEpLbmRYaUdkWHQwZEh4MG9heFhpWGVUZUxHQmRIU1pkS21KcFlkNXFkRGN0cSs1cFc5bXlKQnBwV
|
||||||
|
3FybXMvSXliZkliMnVzajM1NmduYTZtckMrenNqZnVNdkdvdGh3Z3Noc1pJaUVZMjZwYmF0emNXdW93c
|
||||||
|
nUwczdPbnE2R2l4WXVMYnFoOGRJQnBjMjdNaUlSdFdPblZyYW1zWTN5NHEyU3V6S2VNZ0hpb3RiNnlzc
|
||||||
|
mJSMTZwNmY4Si9xb0szZnExeldNSFB3Y0NoMG94K3FvUm5pSjZQaDJXbGF0aW11Y2UzdDh5OXBLTEV1N
|
||||||
|
3RxajdGdmRKVGdqN09UZWIybjFicXd5SnFad0lSOHBuQmtyWHRabWJiQ3A2dTZ0N09vclpyVGRvdHVxS
|
||||||
|
HgxZDRGemxzdXpzS2ViMk1lbHVxeGpmTWVyWmF5VGo0VjJoM2x6ZDNwemVLbVRhSXQrakh5MGQzUm1zc
|
||||||
|
Xh3Z0orSGVhamJ6cVM2cjVheGpNbTdWS2E3bjJLUWpuWjNrMzVsWm9XRGRYbU5hR1ozazZDTXRJbUhiM
|
||||||
|
jNtaUgyUFZLZkN3N1dvcVZXMXRIR0NmbldsdktpdHNxaWtvY1o0cExDZWZIVjZnckp0aW9XSnJxbXpsM
|
||||||
|
zVvcnJhcXVKTnY1cE9naFlCNGRIWjNkSFozb0tObmlIU0pkYXAzZEhTbmFXWi9ubjJIWTV1YWRIWjZaN
|
||||||
|
FJOa01sc240S0huN2pCdVdlZXdHcHFob2RxcThPc21wZTh6c1BvdnNsdmJlYUllNDlVb3JmRnJGVnhwc
|
||||||
|
lJ5YVlObWxyT3FyR1NacXFPano3dmJWWEMxZm5kNGkxVzlzOEtXcU9MVHVLKzJyMk9QNUc2a2s0K0FhS
|
||||||
|
kczZ0h0K2FMdnA0NXg2Zjh4L3NvRm1xdHlhcXNUZ3NzcFZwdDE5ZDN4eGI1MjZ3cGZNdThxUXU3WElxb
|
||||||
|
1dJbzNPR2hvSnFobmhtZVlhZGlxZUxqMjFpbzRoM2hXeGtmb1I4cG5CcXRHT3RycmJHcmJXMVpvRzZmR
|
||||||
|
3liZUsrY3JiYTV1S3h6YnN5SWdHVndtOVdwc3F5aXRMblFxT3pKMG5XQnlYNTJnV1pvZ3VPdGFJcCtlN
|
||||||
|
m5wdnJLdzVwcWFydHV4akZXbTNYMTJoRmx2WnNpUVo2VnExYVBBdDdsbm5yRnFhWkRBZ29HT2FwbXowT
|
||||||
|
nZCNmJxN3dGU3V0NEdHYmFlSW1IdFZxSlR1cXFXd1pvNm9nSGQvdVlGemFKdDQzS2lYdGFlNHNNR253c
|
||||||
|
jI5cGxpMHpINTJnclI3amF0VzQ4N1B2Ni9Kckt1NVpvRzZxcVJxa21hcHQrbXFxYmZxcHBlNjA3OTNWY
|
||||||
|
WJkZlhkN2NXK094N3VUMzYzRWxiakl1V2Vld0dwcWpvZHFlb1I1YW5HSm9vS3NrWGQ5WXExK2Q0OWlaS
|
||||||
|
ENkdEcxblpMUmpyTG1vdExpcnBxaW51NmRYbk1talpHNThabmgzZ21pR2ZvUmdhTEdEZEhhQmNYR09vV
|
||||||
|
1NWbE9DTmZKQm11YnVsdXJ6amxYTExmcEovbktpNnBlQ2xsN0hhc25sdTZOTjlkMzl5cm1XR2pXem11N
|
||||||
|
Tlsa1hhN3VzeXhVblRJaDN0NmptcGxkSW1kaGFxSmgzMWlvMzUzaFdKa2ZwSnhZMlpqcW5GbmVYU0VkS
|
||||||
|
FozZFdpQ3RXK1ZrSXVobHErcGFJTEViWkdJY1pTcjNjeTRrcmFvWTQva2JxZVRqOEd2dWE5b2dyZUFmN
|
||||||
|
nFWbU0yb3dybkd0cXRtc3F4d2dKK0hlWmZRM2FhNHM2ZkJsTVRFVkthN24yS0lobzVudGJLWG9zakJyY
|
||||||
|
nJIYUpxNnZ0L09tcnE3dXB2aGJxaTRwcDI5MEdHY3BGUGJZYU80cTRGa21xK3BacWlscWNyRjE2WlZxN
|
||||||
|
0ptcUxXZ3dyeTRwcXJyeExpdnRxOWh4OWFvNThMYnVybDJzN2E3cmJXMTQ1T1l5cWw1dDkrdXJiZnJuc
|
||||||
|
WkwMG0zQW9ZdmVxNnRxbzd5U2czaHQzb0taYTNuSXpiWEliMnVzajRXQ2FycXRscmpPMzdydGU1TEFiS
|
||||||
|
1NBZ1hla21ickhvcWFia3Q2aXE2NW1qcmVBZUgyQWFYUmxrb3VXWTJodmRucG5nV09UZm45dFpxbUZmN
|
||||||
|
21CZUh0MjU1bmx6TmJDdEhoL3VZRjdnR20yM0svTXVjdXFuSUszZnFocmNISGdzc09Zek4yb3BiNnd2W
|
||||||
|
kIza2FXbGVKOVRlWS9IZjVSL2FsdTV2TCsyd0xlV3FMamF1YTk3a3NCc280aHBkMjJuaUpkN1ZhYWw0N
|
||||||
|
lNjYTMrM2ZuYUN0NENBZkZmRnhlQ2hvYkdscXJwemJzS0lmMjZwczVsK2FMbWl0YjNmbTVXVTBZMTJrY
|
||||||
|
mVBZUhlQWFlUG9tY3VueTY3cXU2Mno1YXhZaXRlSGgyN2VwSHlBYktmQ2pjRy9wZE90MTFPU3g0NTJsb
|
||||||
|
2RTaWNlOHE2M0h1NktseE5MSG1udVN3R3lrZjRGM2xhYXp3N1dZbFpmYnRaeHJmOForZDRCK2FIbHlac
|
||||||
|
GFEbVdaaWRIaG1kNEZ0aVg2SlkyYWJucmVBZUhKN2R1YWsxN3JodUtXNnBicXNab0c2cXFSd2ttYUxkY
|
||||||
|
XQ4Y1hTcVptaURqbjJIYlp1YWZYWjZXWWllajR4c2pidlprc3ZKeDJlZXdHcHlqMitwdnJXeG9hVzcyY
|
||||||
|
nFjbE5TMmJLU0VnclpzWllXY3ZLWndaN1JqbnI2dHQyYUJ1bjU1ZVh4WGtZYVpZMlZ5ZEhaM2dXT0pmb
|
||||||
|
jlqWnFtVGRIWjNjWEdFb1dTamlwMkRkb3BtZ2JwK2VvR1M0WmpGcVh1QTdZRjFlTEZibDdMaXRzYWgzc
|
||||||
|
Xk4aTdlWXRwZDNrYVdsZko5VHhiMjNzSVdJbzNPR2dZSnF0YXVwcmNqYnlMelNuTHFUM0xwcGtLVnVmN
|
||||||
|
U43VlpxWTdhU3BzclRIcmJXMVpvRzZmR2lZa0l0NG82T21zcXpFVTgyMnRGTjMzTmV0dGJXMFlaYnFWT
|
||||||
|
GpHenJ5eWRxcXJxTGk3dWRXaFdaTzNrM20wYWJpOTU1NVlpdUdIajIyTjBLaW52cXkva01oNGJkNkNsb
|
||||||
|
U9SZHNhcXo3S1JyTHFzcktuSXJWZC96S2VHczVONWYyS2tnM1NGWldHQWxtRmpabTJxY1hGNWRIVi91W
|
||||||
|
UY3Z0dtNG10UEowcUtqWkgrNWdZaHRlNVM0cTZydTFhbG9nclI3aGFOdWxjdlN2NnUzdDZ1bXVMKzMxW
|
||||||
|
lZ5eTM2SmY1eHBmN2V4YW1pSmtMSEdxdG5Xc3FldWxycVBpbmh0M29LVmEzbDJqN2lkZ21wYnhiK3hxN
|
||||||
|
2xxY0tpVG5aRHRrNUNIVk5lOXZzT2VvNi9HdEZWeG5MUnpib1MzalhxQWFiYW51NnVqeUhpa2wyOXlmN
|
||||||
|
21CZ21hVGNNS29tT3pHdHErM3RhckQzNmVWbE5hTmRwRzNnSUIrYUxmbDFhUEJ0OEdxN0dsL3Q3RnFhW
|
||||||
|
W1RbmNtaXpzKzJ1YmVZdUpESGRsU211NTlpaUk1MnFOV3lrYTI2ckt5cHlLMVhmOHluaHJPVGVYOWlwS
|
||||||
|
U4waFdWaGdKWmhZMlp0cW5GeGVYUjFmN21CZFhlQlpLclJ1c3FubXFHb3A3dTJWWlRCaVdSdnM0VjJkb
|
||||||
|
mgyYm9Ta1lhV05qWU4ya0hSMmdYUjJhYXZtY1k1K2U3anVxTGk1Nmx0eHdxaUdrVlhNNEtTdnRwaXZsN
|
||||||
|
3A0YmVqRjRsT1N4NDUzbVlkU2ZLcWduSmVoalllanJMS24wS0tha3BIRGs1bWxkNGlqbzQxVmNhYTBkS
|
||||||
|
EZyczdtcWFJSzNnSGg3YjRPWnZvYUprWkdMbWJDR3JZK2hoNVc5cEppTGFYeTBqcUprclh1ZGhuV0pkW
|
||||||
|
FY1ZEhkK2txNnFrbldRZjV5S21aZkxpSU9Vd0t5Y2dhL0poNGVlZkc5bXlKQmptNEtIWVl5RGhIYVNmM
|
||||||
|
kJxakcrRHU0NTViWDU3c0tyTnJhYWFkOFd0bnFTRWY2R3lnblo3VmJXMGNZRitkYnUxdWErc3M3R3NnN
|
||||||
|
UhjYlcxOFpvdVVrbnlscmFPQ1dMVFdmbmQ4ZTJPZTRKemhtYkRDc3NXM3AzV250YlNTcnFxU2RveC9uS
|
||||||
|
XFabDh1SWc1VEFyS3A0dmNDSW1KMldqbTZwbjRHNWFxQ2trWTJPWjlMRGxhdk12N0c4dVdwd3Q1T2hqN
|
||||||
|
XlwbzQ2QWxZbTZqMlZraUlTRm1LeVk1ckNudHFuQnVHYWRxYmk2cTZUUGRwWlRlYWU2WnB1MmxNWndpc
|
||||||
|
Vp3cXBOK2FJMktrNmZGazhHYXVwaG9rYmVBZ0g1b2p1WFVxYnl0dXJQYmFYKzNzWEp3Y2JxT3FvZkt1S
|
||||||
|
VNUajFtSW5vK0diSTFxb0tTUmhZcC9oWkYvaHBhV2xxZXJsNGVQckwyV3ZaNTVpS1d0aG9GM3FhUEF6Y
|
||||||
|
WVmcGFxY2ZLcURkWVIrYUpPTms1Q1dsTGFwcm9XSVpIKzVnWUZ0ZTNDS3BuQ3FtMzVvbXBhUnBNQ0d4N
|
||||||
|
2pBcDRlb21LV0xoWnFNa3E2cWtuV0pmNXgzZDNPcWFtV0JubjZPVmFiZGZYZUFjVzkrcXFhQ3VwcTVrS
|
||||||
|
nlpbUtTbmpvUitkNGk3Z29WNGIyYUpvb1NxaW9aL1lxU0ZhWkNsYm9LY1k0ZVBnNzlqY3J4K2czNW9hW
|
||||||
|
Cs1Z1hObm0zaTdlSWFYaVptYnNIZWFvcFJWY2V5ZGRYK0JZM09Fb211Z2lhQ0FlWWRrZDN4K2VuNnFwb
|
||||||
|
XA2Zjh4L3NZRm1vOGVCaHE2OW9IbHUzcVI0Z0d5RHRwbkt6bFNtdTU5aWlZNTJwTE9WZ0ppcmtwcWJuW
|
||||||
|
mVEWnBUZ2o3Q1RlWUpncDN4N2lsUnZ5OVY3Wm5CVnhvcDZhMyswZm4yQnY3bUJkRytEbjYxVmNLdCtlS
|
||||||
|
HVFWlpDSndtMXBzNFdYbUoxamZNZXJacWVUajcrdnVhbTB1cWwwdCtMaW1yMjN6TExic3FtMnBaeWx2S
|
||||||
|
kNJeW0ya3BHV2RtWW1ZZnFXWGRiQnFvS1NSaDQ1bjA3cGpXNURBZ255T2FvbWRxYkozdGN5UmZXeVZjS
|
||||||
|
UxJYkdpSWhJZDhnbmljZktxRGQ0UithTE90cWF5d3FNYTFvS2lYcW5lcWo2UmxoTENtcEpmSXo3S2dkM
|
||||||
|
itsdGVWV3JzeW5pWUI0bDR1WmpZZVRrcTZxa25hU2Y1eDhpblN1Ym1PSHNwR2JaNWllYzNwN2gzcDVyc
|
||||||
|
W1Gc25XblphNldtbWVld0dwcWhvZHFsSjJWZnBpNHdxaS9xNnB2YmVhSWQ0OVVWb25mdmc9PQ==
|
||||||
|
--------------------------------END LICENSE KEY---------------------------------";
|
||||||
|
return [
|
||||||
|
"name" => "license_7ubh3dHS2+bWqaOlnZ0.dat",
|
||||||
|
"content" => $content
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\unit\workflow\src\ProcessMaker\Util\Helpers;
|
||||||
|
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class GetMysqlVersionTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Test get the mysql version
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_get_mysql_version()
|
||||||
|
{
|
||||||
|
$this->assertNotEmpty(getMysqlVersion());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1741,7 +1741,8 @@ class PmDynaform
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
foreach ($result as $row) {
|
foreach ($result as $row) {
|
||||||
$json = G::json_decode($row->DYN_CONTENT);
|
$dynaform = new PmDynaform(["CURRENT_DYNAFORM" => $row->DYN_UID]);
|
||||||
|
$json = G::json_decode($dynaform->record["DYN_CONTENT"]);
|
||||||
if ($this->jsoni($json, $variable)) {
|
if ($this->jsoni($json, $variable)) {
|
||||||
return $row->DYN_UID;
|
return $row->DYN_UID;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -7100,8 +7100,8 @@ msgstr "Delete data..."
|
|||||||
# TRANSLATION
|
# TRANSLATION
|
||||||
# LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE
|
# LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE
|
||||||
#: LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE
|
#: LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE
|
||||||
msgid "[LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE] Do you want to delete the Email Server?"
|
msgid "[LABEL/ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE] Are you sure you want to delete this Email Server? the components that were using it will now use the default email server."
|
||||||
msgstr "Do you want to delete the Email Server?"
|
msgstr "Are you sure you want to delete this Email Server? the components that were using it will now use the default email server."
|
||||||
|
|
||||||
# TRANSLATION
|
# TRANSLATION
|
||||||
# LABEL/ID_EMAIL_SERVER_DOES_NOT_EXIST
|
# LABEL/ID_EMAIL_SERVER_DOES_NOT_EXIST
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ include PATH_LANGUAGECONT . "translation." . SYS_LANG;
|
|||||||
|
|
||||||
class InstallerModule extends Controller
|
class InstallerModule extends Controller
|
||||||
{
|
{
|
||||||
|
const MYSQL_VERSION_MAXIMUM_SUPPORTED = "5.7";
|
||||||
const PHP_VERSION_MINIMUM_SUPPORTED = "7.1";
|
const PHP_VERSION_MINIMUM_SUPPORTED = "7.1";
|
||||||
const PHP_VERSION_NOT_SUPPORTED = "7.4";
|
const PHP_VERSION_NOT_SUPPORTED = "7.4";
|
||||||
public $path_config;
|
public $path_config;
|
||||||
|
|||||||
@@ -58003,7 +58003,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
|||||||
( 'LABEL','ID_EMAIL_SERVER_CONFIRM_DELETE','en','Do you want to delete the Email Server?','2014-12-24') ,
|
( 'LABEL','ID_EMAIL_SERVER_CONFIRM_DELETE','en','Do you want to delete the Email Server?','2014-12-24') ,
|
||||||
( 'LABEL','ID_EMAIL_SERVER_DEFAULT','en','Default','2014-12-24') ,
|
( 'LABEL','ID_EMAIL_SERVER_DEFAULT','en','Default','2014-12-24') ,
|
||||||
( 'LABEL','ID_EMAIL_SERVER_DELETE_DATA','en','Delete data...','2014-12-24') ,
|
( 'LABEL','ID_EMAIL_SERVER_DELETE_DATA','en','Delete data...','2014-12-24') ,
|
||||||
( 'LABEL','ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE','en','Do you want to delete the Email Server?','2015-01-15') ,
|
( 'LABEL','ID_EMAIL_SERVER_DELETE_WARNING_MESSAGE','en','Are you sure you want to delete this Email Server? the components that were using it will now use the default email server.','2015-01-15') ,
|
||||||
( 'LABEL','ID_EMAIL_SERVER_DOES_NOT_EXIST','en','The email server with {0}: {1} does not exist.','2014-12-24') ,
|
( 'LABEL','ID_EMAIL_SERVER_DOES_NOT_EXIST','en','The email server with {0}: {1} does not exist.','2014-12-24') ,
|
||||||
( 'LABEL','ID_EMAIL_SERVER_EDIT','en','Edit Email Server','2014-12-24') ,
|
( 'LABEL','ID_EMAIL_SERVER_EDIT','en','Edit Email Server','2014-12-24') ,
|
||||||
( 'LABEL','ID_EMAIL_SERVER_FROM_MAIL_EMPTY','en','The email has not been sent because configuration email in the Email Server Settings (admin/settings/email) is empty. Please fill this information.','2016-03-13') ,
|
( 'LABEL','ID_EMAIL_SERVER_FROM_MAIL_EMPTY','en','The email has not been sent because configuration email in the Email Server Settings (admin/settings/email) is empty. Please fill this information.','2016-03-13') ,
|
||||||
|
|||||||
@@ -1,25 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* cases_CatchExecute.php
|
* cases_CatchExecute.php
|
||||||
*
|
* This page is executed when we claim the case
|
||||||
* ProcessMaker Open Source Edition
|
*
|
||||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
* @link https://wiki.processmaker.com/3.2/Cases/Cases#Unassigned
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
|
||||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
|
||||||
*/
|
*/
|
||||||
if (!isset($_SESSION['USER_LOGGED'])) {
|
if (!isset($_SESSION['USER_LOGGED'])) {
|
||||||
$responseObject = new stdclass();
|
$responseObject = new stdclass();
|
||||||
@@ -50,23 +34,23 @@ if (isset($_POST['form']['BTN_CANCEL'])) {
|
|||||||
|
|
||||||
/* Includes */
|
/* Includes */
|
||||||
|
|
||||||
$oCase = new Cases();
|
$case = new Cases();
|
||||||
$sAppUid = $_SESSION['APPLICATION'];
|
$appUid = $_SESSION['APPLICATION'];
|
||||||
$iDelIndex = $_SESSION['INDEX'];
|
$delIndex = $_SESSION['INDEX'];
|
||||||
|
|
||||||
$oAppDelegation = new AppDelegation();
|
$appDelegation = new AppDelegation();
|
||||||
$aDelegation = $oAppDelegation->load($sAppUid, $iDelIndex);
|
$delegation = $appDelegation->load($appUid, $delIndex);
|
||||||
|
|
||||||
//if there are no user in the delegation row, this case is still in selfservice
|
// if there are no user in the delegation row, this case is still in selfservice
|
||||||
if ($aDelegation['USR_UID'] == "") {
|
if (empty($delegation['USR_UID'])) {
|
||||||
$oCase->setCatchUser($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED']);
|
$case->setCatchUser($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED']);
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
$licensedFeatures = PMLicensedFeatures::getSingleton();
|
$licensedFeatures = PMLicensedFeatures::getSingleton();
|
||||||
if ($licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) {
|
if ($licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) {
|
||||||
$pmGoogle = new PmGoogleApi();
|
$pmGoogle = new PmGoogleApi();
|
||||||
if ($pmGoogle->getServiceGmailStatus()) {
|
if ($pmGoogle->getServiceGmailStatus()) {
|
||||||
$labGmail = new labelsGmail();
|
$labGmail = new labelsGmail();
|
||||||
$labGmail->addRelabelingToQueue($sAppUid, $iDelIndex, -1, true);
|
$labGmail->addRelabelingToQueue($appUid, $delIndex, -1, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +60,7 @@ if ($aDelegation['USR_UID'] == "") {
|
|||||||
//add users email next task
|
//add users email next task
|
||||||
$user = new Users();
|
$user = new Users();
|
||||||
$userInfo = $user->load($_SESSION['USER_LOGGED']);
|
$userInfo = $user->load($_SESSION['USER_LOGGED']);
|
||||||
$drive->addUsersDocumentDrive($sAppUid, array($userInfo['USR_EMAIL']));
|
$drive->addUsersDocumentDrive($appUid, [$userInfo['USR_EMAIL']]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
@@ -97,11 +81,11 @@ unset($_SESSION['TASK']);
|
|||||||
die('<script type="text/javascript">
|
die('<script type="text/javascript">
|
||||||
if (' . $validation . ') {
|
if (' . $validation . ') {
|
||||||
if (window.parent.frames.length != 0) {
|
if (window.parent.frames.length != 0) {
|
||||||
parent.location = "open?APP_UID=' . $_SESSION['APPLICATION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] . '&action=unassigned";
|
parent.location = "open?APP_UID=' . $_SESSION['APPLICATION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] . '&action=jump";
|
||||||
} else {
|
} else {
|
||||||
window.location = "../cases/cases_Open?APP_UID=' . $_SESSION['APPLICATION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] . '&action=unassigned";
|
window.location = "../cases/cases_Open?APP_UID=' . $_SESSION['APPLICATION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] . '&action=jump";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
window.location = "../cases/cases_Open?APP_UID=' . $_SESSION['APPLICATION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] . '&action=unassigned";
|
window.location = "../cases/cases_Open?APP_UID=' . $_SESSION['APPLICATION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] . '&action=jump";
|
||||||
}
|
}
|
||||||
</script>');
|
</script>');
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ if (empty($_GET['v'])) {
|
|||||||
//Send the parameter a = Case UID
|
//Send the parameter a = Case UID
|
||||||
if ($RBAC->userCanAccess('PM_FOLDERS_ALL') != 1 && defined('DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION') && DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION == 0) {
|
if ($RBAC->userCanAccess('PM_FOLDERS_ALL') != 1 && defined('DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION') && DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION == 0) {
|
||||||
if (!$oAppDocument->canDownloadInput($_SESSION['USER_LOGGED'], $_GET['a'], $docVersion)) {
|
if (!$oAppDocument->canDownloadInput($_SESSION['USER_LOGGED'], $_GET['a'], $docVersion)) {
|
||||||
G::header('Location: /errors/error403.php');
|
G::header('Location: /errors/error403.php?url=' . urlencode($_SERVER['REQUEST_URI']));
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,20 +53,21 @@ if ($RBAC->userCanAccess('PM_FOLDERS_ALL') != 1 && defined('DISABLE_DOWNLOAD_DOC
|
|||||||
$sAppDocUid
|
$sAppDocUid
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
G::header('Location: /errors/error403.php');
|
G::header('Location: /errors/error403.php?url=' . urlencode($_SERVER['REQUEST_URI']));
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$docFileName = fixContentDispositionFilename($oAppDocument->getAppDocFilename());
|
$docFileName = fixContentDispositionFilename($oAppDocument->getAppDocFilename());
|
||||||
$info = pathinfo($docFileName);
|
$info = pathinfo($docFileName);
|
||||||
|
|
||||||
if (!isset($_GET['ext'])) {
|
if (!isset($_GET['ext'])) {
|
||||||
$ext = $info['extension'];
|
$ext = (!empty($info['extension'])) ? $info['extension']: 'pdf';
|
||||||
} else {
|
} else {
|
||||||
if ($_GET['ext'] != '') {
|
if ($_GET['ext'] != '') {
|
||||||
$ext = $_GET['ext'];
|
$ext = $_GET['ext'];
|
||||||
} else {
|
} else {
|
||||||
$ext = $info['extension'];
|
$ext = (!empty($info['extension'])) ? $info['extension']: 'pdf';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$ver = (isset($_GET['v']) && $_GET['v'] != '') ? '_' . $_GET['v'] : '';
|
$ver = (isset($_GET['v']) && $_GET['v'] != '') ? '_' . $_GET['v'] : '';
|
||||||
|
|||||||
@@ -39,20 +39,40 @@ $aFields = array();
|
|||||||
|
|
||||||
//Validated redirect url
|
//Validated redirect url
|
||||||
$aFields['URL'] = '';
|
$aFields['URL'] = '';
|
||||||
if (!empty($_GET['u'])) {
|
if (!empty($_GET['u']) || !empty($_GET['url'])) {
|
||||||
//clean url with protocols
|
//clean url with protocols
|
||||||
$flagUrl = true;
|
$flagUrl = true;
|
||||||
//Most used protocols
|
//Most used protocols
|
||||||
$protocols = ['https://', 'http://', 'ftp://', 'sftp://','smb://', 'file:', 'mailto:'];
|
$protocols = ['https://', 'http://', 'ftp://', 'sftp://','smb://', 'file:', 'mailto:'];
|
||||||
foreach ($protocols as $protocol) {
|
foreach ($protocols as $protocol) {
|
||||||
if (strpos($_GET['u'], $protocol) !== false) {
|
if (!empty($_GET['u'])) {
|
||||||
$_GET['u'] = '';
|
if (strpos($_GET['u'], $protocol) !== false) {
|
||||||
$flagUrl = false;
|
$_GET['u'] = '';
|
||||||
break;
|
$flagUrl = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($_GET['url'])) {
|
||||||
|
if (strpos($_GET['url'], $protocol) !== false) {
|
||||||
|
$_GET['url'] = '';
|
||||||
|
$flagUrl = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($flagUrl) {
|
if ($flagUrl) {
|
||||||
$aFields['URL'] = htmlspecialchars(addslashes(stripslashes(strip_tags(trim(urldecode($_GET['u']))))));
|
if (!empty($_GET['u'])) {
|
||||||
|
$aFields['URL'] = htmlspecialchars(addslashes(stripslashes(strip_tags(trim(urldecode($_GET['u']))))));
|
||||||
|
} elseif (!empty($_GET['url'])) {
|
||||||
|
$aFields['URL'] = htmlspecialchars(addslashes(stripslashes(strip_tags(trim(urldecode($_GET['url']))))));
|
||||||
|
}
|
||||||
|
//The following validations are only for the links to an output document
|
||||||
|
if(!empty($_GET['v']) && (strpos($aFields['URL'], '/cases/cases_ShowOutputDocument') != false)) {
|
||||||
|
$aFields['URL'] .= "&v=" . $_GET['v'];
|
||||||
|
}
|
||||||
|
if(!empty($_GET['ext']) && (strpos($aFields['URL'], '/cases/cases_ShowOutputDocument') != false)) {
|
||||||
|
$aFields['URL'] .= "&ext=" . $_GET['ext'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,107 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Processmaker\Core\System;
|
||||||
|
|
||||||
$filter = new InputFilter();
|
$filter = new InputFilter();
|
||||||
$_POST = $filter->xssFilterHard($_POST);
|
$_POST = $filter->xssFilterHard($_POST);
|
||||||
$_GET = $filter->xssFilterHard($_GET);
|
$_GET = $filter->xssFilterHard($_GET);
|
||||||
$request = isset($_POST['request']) ? $_POST['request'] : (isset($_GET['request']) ? $_GET['request'] : null);
|
$request = isset($_POST['request']) ? $_POST['request'] : (isset($_GET['request']) ? $_GET['request'] : null);
|
||||||
|
|
||||||
function testConnection($type, $server, $user, $passwd, $port = 'none', $dbName = "")
|
|
||||||
{
|
|
||||||
if (($port == 'none') || ($port == '') || ($port == 0)) {
|
|
||||||
//setting defaults ports
|
|
||||||
switch ($type) {
|
|
||||||
case 'mysql':
|
|
||||||
$port = 3306;
|
|
||||||
break;
|
|
||||||
case 'pgsql':
|
|
||||||
$port = 5432;
|
|
||||||
break;
|
|
||||||
case 'mssql':
|
|
||||||
$port = 1433;
|
|
||||||
break;
|
|
||||||
case 'oracle':
|
|
||||||
$port = 1521;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$Server = new Net($server);
|
|
||||||
$filter = new InputFilter();
|
|
||||||
|
|
||||||
if ($Server->getErrno() == 0) {
|
|
||||||
$Server->scannPort($port);
|
|
||||||
if ($Server->getErrno() == 0) {
|
|
||||||
$Server->loginDbServer($user, $passwd);
|
|
||||||
$Server->setDataBase($dbName, $port);
|
|
||||||
if ($Server->errno == 0) {
|
|
||||||
$response = $Server->tryConnectServer($type);
|
|
||||||
if ($response->status == 'SUCCESS') {
|
|
||||||
if ($Server->errno == 0) {
|
|
||||||
$message = "";
|
|
||||||
$response = $Server->tryConnectServer($type);
|
|
||||||
$server = $filter->validateInput($server);
|
|
||||||
$user = $filter->validateInput($user);
|
|
||||||
$passwd = $filter->validateInput($passwd);
|
|
||||||
$connDatabase = mysqli_connect($server, $user, $passwd);
|
|
||||||
$dbNameTest = "PROCESSMAKERTESTDC";
|
|
||||||
$dbNameTest = $filter->validateInput($dbNameTest, 'nosql');
|
|
||||||
$query = "CREATE DATABASE %s";
|
|
||||||
$query = $filter->preventSqlInjection($query, array($dbNameTest), $connDatabase);
|
|
||||||
$db = mysqli_query($connDatabase, $query);
|
|
||||||
$success = false;
|
|
||||||
if (!$db) {
|
|
||||||
$message = mysqli_error($connDatabase);
|
|
||||||
} else {
|
|
||||||
$usrTest = "wfrbtest";
|
|
||||||
$chkG = "GRANT ALL PRIVILEGES ON `%s`.* TO %s@'%%' IDENTIFIED BY 'sample' WITH GRANT OPTION";
|
|
||||||
$chkG = $filter->preventSqlInjection($chkG, array($dbNameTest, $usrTest), $connDatabase);
|
|
||||||
$ch = mysqli_query($connDatabase, $chkG);
|
|
||||||
if (!$ch) {
|
|
||||||
$message = mysqli_error($connDatabase);
|
|
||||||
} else {
|
|
||||||
$sqlCreateUser = "CREATE USER '%s'@'%%' IDENTIFIED BY '%s'";
|
|
||||||
$user = $filter->validateInput($user, 'nosql');
|
|
||||||
$sqlCreateUser = $filter->preventSqlInjection($sqlCreateUser, array($user . "_usertest", "sample"), $connDatabase);
|
|
||||||
$result = mysqli_query($connDatabase, $sqlCreateUser);
|
|
||||||
if (!$result) {
|
|
||||||
$message = mysqli_error($connDatabase);
|
|
||||||
} else {
|
|
||||||
$success = true;
|
|
||||||
$message = G::LoadTranslation('ID_SUCCESSFUL_CONNECTION');
|
|
||||||
}
|
|
||||||
$sqlDropUser = "DROP USER '%s'@'%%'";
|
|
||||||
$user = $filter->validateInput($user, 'nosql');
|
|
||||||
$sqlDropUser = $filter->preventSqlInjection($sqlDropUser, array($user . "_usertest"), $connDatabase);
|
|
||||||
mysqli_query($connDatabase, $sqlDropUser);
|
|
||||||
|
|
||||||
$sqlDropUser = "DROP USER %s@'%%'";
|
|
||||||
$usrTest = $filter->validateInput($usrTest, 'nosql');
|
|
||||||
$sqlDropUser = $filter->preventSqlInjection($sqlDropUser, array($usrTest), $connDatabase);
|
|
||||||
mysqli_query($connDatabase, $sqlDropUser);
|
|
||||||
}
|
|
||||||
$sqlDropDb = "DROP DATABASE %s";
|
|
||||||
$dbNameTest = $filter->validateInput($dbNameTest, 'nosql');
|
|
||||||
$sqlDropDb = $filter->preventSqlInjection($sqlDropDb, array($dbNameTest), $connDatabase);
|
|
||||||
mysqli_query($connDatabase, $sqlDropDb);
|
|
||||||
}
|
|
||||||
return array($success, ($message != "") ? $message : $Server->error);
|
|
||||||
} else {
|
|
||||||
return array(false, $Server->error);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return array(false, $Server->error);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return array(false, $Server->error);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return array(false, $Server->error);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return array(false, $Server->error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($request) {
|
switch ($request) {
|
||||||
//check if the APP_CACHE VIEW table and their triggers are installed
|
//check if the APP_CACHE VIEW table and their triggers are installed
|
||||||
case 'info':
|
case 'info':
|
||||||
@@ -271,46 +176,25 @@ switch ($request) {
|
|||||||
break;
|
break;
|
||||||
case 'recreate-root':
|
case 'recreate-root':
|
||||||
$user = $_POST['user'];
|
$user = $_POST['user'];
|
||||||
$passwd = $_POST['password'];
|
$pass = $_POST['password'];
|
||||||
$server = $_POST['host'];
|
$server = $_POST['host'];
|
||||||
$code = $_POST['codeCaptcha'];
|
$code = $_POST['codeCaptcha'];
|
||||||
$aServer = explode(':', $server);
|
$server = explode(':', $server);
|
||||||
$serverName = $aServer[0];
|
$serverName = $server[0];
|
||||||
$port = (count($aServer) > 1) ? $aServer[1] : "none";
|
$port = (count($server) > 1) ? $server[1] : '';
|
||||||
|
|
||||||
if ($code !== $_SESSION['securimage_code_disp']['default']) {
|
if ($code !== $_SESSION['securimage_code_disp']['default']) {
|
||||||
echo G::loadTranslation('ID_CAPTCHA_CODE_INCORRECT');
|
echo G::loadTranslation('ID_CAPTCHA_CODE_INCORRECT');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
list($success, $message) = System::checkPermissionsDbUser(DB_ADAPTER, $serverName, $port, $user, $pass);
|
||||||
list($sucess, $msgErr) = testConnection(DB_ADAPTER, $serverName, $user, $passwd, $port);
|
if ($success) {
|
||||||
|
$id = 'ID_MESSAGE_ROOT_CHANGE_FAILURE';
|
||||||
if ($sucess) {
|
if (System::regenerateCredentiaslPathInstalled($server, $user, $pass)) {
|
||||||
$sh = G::encryptOld(filemtime(PATH_GULLIVER . "/class.g.php"));
|
$id = 'ID_MESSAGE_ROOT_CHANGE_SUCESS';
|
||||||
$h = G::encrypt($_POST['host'] . $sh . $_POST['user'] . $sh . $_POST['password'] . $sh . (1), $sh);
|
|
||||||
$insertStatements = "define ( 'HASH_INSTALLATION','{$h}' ); \ndefine ( 'SYSTEM_HASH', '{$sh}' ); \n";
|
|
||||||
$lines = [];
|
|
||||||
$content = '';
|
|
||||||
$filename = PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths_installed.php';
|
|
||||||
$lines = file($filename);
|
|
||||||
|
|
||||||
$count = 1;
|
|
||||||
foreach ($lines as $line_num => $line) {
|
|
||||||
$pos = strpos($line, "define");
|
|
||||||
if ($pos !== false && $count < 3) {
|
|
||||||
$content = $content . $line;
|
|
||||||
$count++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$content = "<?php \n" . $content . "\n" . $insertStatements . "\n";
|
$message = G::loadTranslation($id);
|
||||||
if (file_put_contents($filename, $content) != false) {
|
|
||||||
echo G::loadTranslation('ID_MESSAGE_ROOT_CHANGE_SUCESS');
|
|
||||||
} else {
|
|
||||||
echo G::loadTranslation('ID_MESSAGE_ROOT_CHANGE_FAILURE');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo $msgErr;
|
|
||||||
}
|
}
|
||||||
|
echo $message;
|
||||||
break;
|
break;
|
||||||
case 'captcha':
|
case 'captcha':
|
||||||
require_once PATH_TRUNK . 'vendor/dapphp/securimage/securimage.php';
|
require_once PATH_TRUNK . 'vendor/dapphp/securimage/securimage.php';
|
||||||
|
|||||||
@@ -1,37 +1,37 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* Rebuilding the cases list cache and changing the MySQL credentials
|
||||||
|
*
|
||||||
|
* @see processWorkspace()
|
||||||
|
*
|
||||||
|
* @link https://wiki.processmaker.com/3.2/Clearing_the_Case_List_Cache
|
||||||
|
*/
|
||||||
|
|
||||||
|
use ProcessMaker\Core\Installer;
|
||||||
|
|
||||||
global $RBAC;
|
global $RBAC;
|
||||||
$RBAC->requirePermissions('PM_SETUP');
|
$RBAC->requirePermissions('PM_SETUP');
|
||||||
// header('Pragma: no-cache');
|
// Define the content of the case list cache builder
|
||||||
// header('Cache-Control: no-store, no-cache, must-revalidate');
|
$headPublisher = headPublisher::getSingleton();
|
||||||
|
$headPublisher->addExtJsScript('setup/appCacheViewConf', false); //adding a javascript file .js
|
||||||
|
$headPublisher->addContent('setup/appCacheViewConf'); //adding a html file .html.
|
||||||
|
|
||||||
|
// Get some configurations
|
||||||
|
$conf = new Configurations();
|
||||||
|
$conf->loadConfig($x, 'APP_CACHE_VIEW_ENGINE', '', '', '', '');
|
||||||
|
$lang = isset($conf->aConfig['LANG']) ? $conf->aConfig['LANG'] : 'en';
|
||||||
|
|
||||||
$oHeadPublisher = headPublisher::getSingleton();
|
// Assign the language configured
|
||||||
//$oHeadPublisher->setExtSkin( 'xtheme-blue');
|
$headPublisher->assign('currentLang', $lang);
|
||||||
|
|
||||||
|
// Get the mysql version
|
||||||
$oHeadPublisher->addExtJsScript('setup/appCacheViewConf', false); //adding a javascript file .js
|
$mysqlVersion = getMysqlVersion();
|
||||||
$oHeadPublisher->addContent('setup/appCacheViewConf'); //adding a html file .html.
|
$maxMysqlVersion = InstallerModule::MYSQL_VERSION_MAXIMUM_SUPPORTED;
|
||||||
|
if (version_compare($mysqlVersion, $maxMysqlVersion, '<')) {
|
||||||
$oConf = new Configurations();
|
$userNameMaxLength = 16;
|
||||||
$oConf->loadConfig($x, 'APP_CACHE_VIEW_ENGINE', '', '', '', '');
|
|
||||||
|
|
||||||
//first check about APP_CACHE_VIEW is enabled or not,
|
|
||||||
if (isset($oConf->aConfig['LANG']) && isset($oConf->aConfig['STATUS']) && $oConf->aConfig['STATUS'] == 'active') {
|
|
||||||
$appCacheViewEnabled = true;
|
|
||||||
} else {
|
} else {
|
||||||
$appCacheViewEnabled = false;
|
$userNameMaxLength = 32;
|
||||||
}
|
}
|
||||||
$lang = isset($oConf->aConfig['LANG']) ? $oConf->aConfig['LANG'] : 'en';
|
$headPublisher->assign('userNameMaxLength', $userNameMaxLength);
|
||||||
|
|
||||||
//$oHeadPublisher->assign('appCacheViewEnabled', $appCacheViewEnabled);
|
G::RenderPage('publish', 'extJs');
|
||||||
|
|
||||||
|
|
||||||
$labels = G::getTranslations(array('ID_PROCESSING','ID_CACHE_LANGUAGE','ID_CACHE_HOST','ID_CACHE_USER','ID_CACHE_PASSWORD','ID_CACHE_TITLE_INFO','ID_CACHE_SUBTITLE_REBUILD','ID_CACHE_BTN_BUILD','ID_CACHE_BUILDING','ID_CACHE_SUBTITLE_SETUP_DB','ID_CACHE_BTN_SETUP_PASSWRD','ID_CACHE_SUBTITLE_SETUP_SESSION','ID_CACHE_BTN_SETUP_SESSION'
|
|
||||||
));
|
|
||||||
// $oHeadPublisher->assign('TRANSLATIONS', $labels);
|
|
||||||
// $TRANSLATIONS->ID_PROCESSING = G::LoadTranslation('ID_PROCESSING');
|
|
||||||
// $oHeadPublisher->assign( 'TRANSLATIONS', $TRANSLATIONS); //translations
|
|
||||||
$oHeadPublisher->assign('currentLang', $lang); //current language
|
|
||||||
|
|
||||||
|
|
||||||
G::RenderPage('publish', 'extJs');
|
|
||||||
@@ -7,6 +7,9 @@ use Exception;
|
|||||||
use G;
|
use G;
|
||||||
use Illuminate\Support\Facades\Crypt;
|
use Illuminate\Support\Facades\Crypt;
|
||||||
use ProcessMaker\Core\System;
|
use ProcessMaker\Core\System;
|
||||||
|
use ProcessMaker\Model\AbeConfiguration;
|
||||||
|
use ProcessMaker\Model\EmailEvent;
|
||||||
|
use ProcessMaker\Model\EmailServerModel;
|
||||||
use SpoolRun;
|
use SpoolRun;
|
||||||
use TemplatePower;
|
use TemplatePower;
|
||||||
use WsBase;
|
use WsBase;
|
||||||
@@ -1071,6 +1074,11 @@ class EmailServer
|
|||||||
public function delete($emailServerUid)
|
public function delete($emailServerUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$emailServerModel = new EmailServerModel();
|
||||||
|
//Verify if the email server is IMAP
|
||||||
|
$isImap = $emailServerModel->isImap($emailServerUid);
|
||||||
|
$abeConfiguration = new AbeConfiguration();
|
||||||
|
|
||||||
//Verify data
|
//Verify data
|
||||||
$this->throwExceptionIfNotExistsEmailServer($emailServerUid, $this->arrayFieldNameForException["emailServerUid"]);
|
$this->throwExceptionIfNotExistsEmailServer($emailServerUid, $this->arrayFieldNameForException["emailServerUid"]);
|
||||||
$this->throwExceptionIfIsDefault($emailServerUid, $this->arrayFieldNameForException["emailServerUid"]);
|
$this->throwExceptionIfIsDefault($emailServerUid, $this->arrayFieldNameForException["emailServerUid"]);
|
||||||
@@ -1078,6 +1086,18 @@ class EmailServer
|
|||||||
$criteria->add(\EmailServerPeer::MESS_UID, $emailServerUid, \Criteria::EQUAL);
|
$criteria->add(\EmailServerPeer::MESS_UID, $emailServerUid, \Criteria::EQUAL);
|
||||||
\EmailServerPeer::doDelete($criteria);
|
\EmailServerPeer::doDelete($criteria);
|
||||||
|
|
||||||
|
//If the email server protocol is IMAP, then the field Receiver account of the Email Response option in Actions by Email will be empty.
|
||||||
|
if ($isImap) {
|
||||||
|
$abeConfiguration->updateReceiverUidToEmpty($emailServerUid);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update the ABE_CONFIGURATION email server
|
||||||
|
$abeConfiguration->updateEmailServerUidToDefaultOrEmpty($emailServerUid);
|
||||||
|
|
||||||
|
//Update the events that use this server
|
||||||
|
$emailEvent = new EmailEvent();
|
||||||
|
$emailEvent->updateServerAndFromToDefaultOrEmpty($emailServerUid);
|
||||||
|
|
||||||
//Logging the delete action
|
//Logging the delete action
|
||||||
$this->getDefaultContextLog();
|
$this->getDefaultContextLog();
|
||||||
$info = array(
|
$info = array(
|
||||||
|
|||||||
@@ -97,4 +97,41 @@ class AbeConfiguration extends model
|
|||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Receiver Uid when the email server is deleted
|
||||||
|
*
|
||||||
|
* @param string $emailServerUid
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function updateReceiverUidToEmpty($emailServerUid)
|
||||||
|
{
|
||||||
|
$query = AbeConfiguration::query();
|
||||||
|
|
||||||
|
$query->where('ABE_EMAIL_SERVER_RECEIVER_UID', '=', $emailServerUid);
|
||||||
|
|
||||||
|
$query->update(['ABE_EMAIL_SERVER_RECEIVER_UID' => '']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Email Server Uid when the email server is deleted
|
||||||
|
*
|
||||||
|
* @param string $emailServerUid
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function updateEmailServerUidToDefaultOrEmpty($emailServerUid)
|
||||||
|
{
|
||||||
|
$emailServerModel = new EmailServerModel();
|
||||||
|
$emailServerDefault = $emailServerModel->getEmailServerDefault();
|
||||||
|
|
||||||
|
$query = AbeConfiguration::query();
|
||||||
|
|
||||||
|
$query->where('ABE_EMAIL_SERVER_UID', '=', $emailServerUid);
|
||||||
|
|
||||||
|
if (!empty($emailServerDefault)) {
|
||||||
|
$query->update(['ABE_EMAIL_SERVER_UID' => $emailServerDefault['MESS_UID']]);
|
||||||
|
} else {
|
||||||
|
$query->update(['ABE_EMAIL_SERVER_UID' => '']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,31 @@
|
|||||||
namespace ProcessMaker\Model;
|
namespace ProcessMaker\Model;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\DB;
|
use ProcessMaker\Model\EmailServerModel;
|
||||||
|
|
||||||
class EmailEvent extends Model
|
class EmailEvent extends Model
|
||||||
{
|
{
|
||||||
protected $table = 'EMAIL_EVENT';
|
protected $table = 'EMAIL_EVENT';
|
||||||
public $timestamps = false;
|
public $timestamps = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the email event when the email server is deleted
|
||||||
|
*
|
||||||
|
* @param $emailServerUid
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function updateServerAndFromToDefaultOrEmpty($emailServerUid)
|
||||||
|
{
|
||||||
|
$emailServerModel = new EmailServerModel();
|
||||||
|
$emailServerDefault = $emailServerModel->getEmailServerDefault();
|
||||||
|
$query = EmailEvent::query();
|
||||||
|
|
||||||
|
$query->where('EMAIL_SERVER_UID', '=', $emailServerUid);
|
||||||
|
|
||||||
|
if (!empty($emailServerDefault)) {
|
||||||
|
$query->update(['EMAIL_SERVER_UID' => $emailServerDefault['MESS_UID'], 'EMAIL_EVENT_FROM' => $emailServerDefault['MESS_ACCOUNT']]);
|
||||||
|
} else {
|
||||||
|
$query->update(['EMAIL_SERVER_UID' => '', 'EMAIL_EVENT_FROM' => '']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,4 +103,22 @@ class EmailServerModel extends Model
|
|||||||
|
|
||||||
return $firstElement;
|
return $firstElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the email server is IMAP
|
||||||
|
*
|
||||||
|
* @param string $emailServerUid
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function isImap($emailServerUid)
|
||||||
|
{
|
||||||
|
$query = EmailServerModel::query()->select(['EMAIL_SERVER.MESS_UID']);
|
||||||
|
$query->where('EMAIL_SERVER.MESS_UID', '=', $emailServerUid);
|
||||||
|
$query->where('MESS_ENGINE', '=', 'IMAP');
|
||||||
|
$res = $query->get()->values()->toArray();
|
||||||
|
if (!empty($res)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
workflow/engine/src/ProcessMaker/Model/LicenseManager.php
Normal file
14
workflow/engine/src/ProcessMaker/Model/LicenseManager.php
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ProcessMaker\Model;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class LicenseManager extends Model
|
||||||
|
{
|
||||||
|
protected $table = "LICENSE_MANAGER";
|
||||||
|
protected $primaryKey = "LICENSE_UID";
|
||||||
|
public $incrementing = false;
|
||||||
|
public $timestamps = false;
|
||||||
|
|
||||||
|
}
|
||||||
14
workflow/engine/src/ProcessMaker/Model/OauthClients.php
Normal file
14
workflow/engine/src/ProcessMaker/Model/OauthClients.php
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ProcessMaker\Model;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class OauthClients extends Model
|
||||||
|
{
|
||||||
|
protected $table = "OAUTH_CLIENTS";
|
||||||
|
protected $primaryKey = "CLIENT_ID";
|
||||||
|
public $incrementing = false;
|
||||||
|
public $timestamps = false;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,10 +4,13 @@ namespace ProcessMaker\Services\OAuth2;
|
|||||||
use Luracast\Restler\iAuthenticate;
|
use Luracast\Restler\iAuthenticate;
|
||||||
use Luracast\Restler\RestException;
|
use Luracast\Restler\RestException;
|
||||||
use OAuth2\Request;
|
use OAuth2\Request;
|
||||||
|
use OAuth2\Response;
|
||||||
|
use PmoauthUserAccessTokens;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
use ProcessMaker\ChangeLog\ChangeLog;
|
use ProcessMaker\ChangeLog\ChangeLog;
|
||||||
/*----------------------------------********---------------------------------*/
|
/*----------------------------------********---------------------------------*/
|
||||||
use ProcessMaker\Core\System;
|
use ProcessMaker\Core\System;
|
||||||
|
use ProcessMaker\Policies\ControlUnderUpdating;
|
||||||
|
|
||||||
class Server implements iAuthenticate
|
class Server implements iAuthenticate
|
||||||
{
|
{
|
||||||
@@ -271,30 +274,41 @@ class Server implements iAuthenticate
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stage 3: Client directly calls this api to exchange access token
|
* Stage 3: Client directly calls this api to exchange access token
|
||||||
*
|
* It can then use this access token to make calls to protected api.
|
||||||
* It can then use this access token to make calls to protected api
|
|
||||||
*
|
|
||||||
* @format JsonFormat,UploadFormat
|
* @format JsonFormat,UploadFormat
|
||||||
|
* @param object $request
|
||||||
|
* @param boolean $returnResponse
|
||||||
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function postToken($request = null, $returnResponse = false)
|
public function postToken($request = null, $returnResponse = false)
|
||||||
{
|
{
|
||||||
\ProcessMaker\Policies\ControlUnderUpdating::verifyUnderUpgrading();
|
ControlUnderUpdating::verifyUnderUpgrading();
|
||||||
|
|
||||||
// Handle a request for an OAuth2.0 Access Token and send the response to the client
|
// Handle a request for an OAuth2.0 Access Token and send the response to the client
|
||||||
if ($request == null) {
|
if ($request == null) {
|
||||||
$request = \OAuth2\Request::createFromGlobals();
|
$request = Request::createFromGlobals();
|
||||||
|
}
|
||||||
|
|
||||||
|
$grantTypeIdentifier = $request->request('grant_type');
|
||||||
|
if ($grantTypeIdentifier === 'password') {
|
||||||
|
$clientId = $request->request('client_id');
|
||||||
|
$clientSecret = $request->request('client_secret');
|
||||||
|
if (empty($clientId) || empty($clientSecret)) {
|
||||||
|
$message = "Invalid REST API credentials, please send a valid client_id and client_secret.";
|
||||||
|
$res = new Response();
|
||||||
|
$res->setError(400, 'invalid_client', $message);
|
||||||
|
$res->send();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->server->handleTokenRequest($request); //Set/Get token //PmPdo->setAccessToken()
|
$response = $this->server->handleTokenRequest($request); //Set/Get token //PmPdo->setAccessToken()
|
||||||
|
|
||||||
$token = $response->getParameters();
|
$token = $response->getParameters();
|
||||||
|
|
||||||
if (array_key_exists('access_token', $token)
|
if (array_key_exists('access_token', $token) && array_key_exists('refresh_token', $token)) {
|
||||||
&& array_key_exists('refresh_token', $token)
|
|
||||||
) {
|
|
||||||
if ($request == null) {
|
if ($request == null) {
|
||||||
session_start();
|
session_start();
|
||||||
}
|
}
|
||||||
@@ -302,16 +316,12 @@ class Server implements iAuthenticate
|
|||||||
|
|
||||||
// verify if the client is our local PM Designer client
|
// verify if the client is our local PM Designer client
|
||||||
if ($data['client_id'] == self::getPmClientId()) {
|
if ($data['client_id'] == self::getPmClientId()) {
|
||||||
//error_log('do stuff - is a request from local pm client');
|
$userToken = new PmoauthUserAccessTokens();
|
||||||
//require_once "classes/model/PmoauthUserAccessTokens.php";
|
|
||||||
|
|
||||||
$userToken = new \PmoauthUserAccessTokens();
|
|
||||||
$userToken->setAccessToken($token['access_token']);
|
$userToken->setAccessToken($token['access_token']);
|
||||||
$userToken->setRefreshToken($token['refresh_token']);
|
$userToken->setRefreshToken($token['refresh_token']);
|
||||||
$userToken->setUserId($data['user_id']);
|
$userToken->setUserId($data['user_id']);
|
||||||
$userToken->setSessionId(session_id());
|
$userToken->setSessionId(session_id());
|
||||||
$userToken->setSessionName(session_name());
|
$userToken->setSessionName(session_name());
|
||||||
|
|
||||||
$userToken->save();
|
$userToken->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -320,8 +330,7 @@ class Server implements iAuthenticate
|
|||||||
return $response;
|
return $response;
|
||||||
} else {
|
} else {
|
||||||
$response->send();
|
$response->send();
|
||||||
|
return;
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Session\TokenMismatchException;
|
use Illuminate\Session\TokenMismatchException;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use ProcessMaker\Model\User;
|
use ProcessMaker\Model\User;
|
||||||
|
|
||||||
@@ -586,3 +588,16 @@ function toSqlWithBindings(Illuminate\Database\Eloquent\Builder $queryObject) {
|
|||||||
// Return query
|
// Return query
|
||||||
return $query;
|
return $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the version of the mysql
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function getMysqlVersion()
|
||||||
|
{
|
||||||
|
$results = DB::select(DB::raw("select version()"));
|
||||||
|
$mysqlVersion = $results[0]->{'version()'};
|
||||||
|
|
||||||
|
return $mysqlVersion;
|
||||||
|
}
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ Ext.onReady(function() {
|
|||||||
fieldLabel: _('ID_CACHE_USER'), // 'User',
|
fieldLabel: _('ID_CACHE_USER'), // 'User',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
name: 'user',
|
name: 'user',
|
||||||
|
autoCreate: {tag: 'input', type: 'text', size: userNameMaxLength, autocomplete: 'off', maxlength: userNameMaxLength},
|
||||||
allowBlank: false
|
allowBlank: false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user