2017-05-19 13:38:37 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use ProcessMaker\Importer\XmlImporter;
|
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Test case that could instance a workspace DB
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
class WorkflowTestCase extends TestCase
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create and install the database.
|
|
|
|
|
*/
|
|
|
|
|
protected function setupDB()
|
|
|
|
|
{
|
|
|
|
|
//Install Database
|
|
|
|
|
$pdo0 = new PDO("mysql:host=".DB_HOST, DB_USER, DB_PASS);
|
|
|
|
|
$pdo0->query('DROP DATABASE IF EXISTS '.DB_NAME);
|
|
|
|
|
$pdo0->query('CREATE DATABASE '.DB_NAME);
|
|
|
|
|
$pdo = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER,
|
|
|
|
|
DB_PASS);
|
|
|
|
|
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
|
|
|
|
|
$pdo->exec(file_get_contents(PATH_CORE.'data/mysql/schema.sql'));
|
|
|
|
|
$pdo->exec(file_get_contents(PATH_RBAC_CORE.'data/mysql/schema.sql'));
|
|
|
|
|
$pdo->exec(file_get_contents(PATH_CORE.'data/mysql/insert.sql'));
|
|
|
|
|
$pdo->exec(file_get_contents(PATH_RBAC_CORE.'data/mysql/insert.sql'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Drop the database.
|
|
|
|
|
*/
|
|
|
|
|
protected function dropDB()
|
|
|
|
|
{
|
|
|
|
|
//Install Database
|
|
|
|
|
$pdo0 = new PDO("mysql:host=".DB_HOST, DB_USER, DB_PASS);
|
|
|
|
|
$pdo0->query('DROP DATABASE IF EXISTS '.DB_NAME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Import a process to the database.
|
2017-06-02 13:07:52 -04:00
|
|
|
*
|
2017-05-19 13:38:37 -04:00
|
|
|
* @param type $filename ProcessMaker file to be imported
|
|
|
|
|
* @return string PRO_UID
|
|
|
|
|
*/
|
2017-06-02 09:59:33 -04:00
|
|
|
protected function import($filename, $regenerateUids = false)
|
2017-05-19 13:38:37 -04:00
|
|
|
{
|
|
|
|
|
$importer = new XmlImporter();
|
|
|
|
|
$importer->setSourceFile($filename);
|
|
|
|
|
return $importer->import(
|
2017-06-01 16:54:48 -04:00
|
|
|
$regenerateUids ? XmlImporter::IMPORT_OPTION_KEEP_WITHOUT_CHANGING_AND_CREATE_NEW : XmlImporter::IMPORT_OPTION_CREATE_NEW,
|
|
|
|
|
XmlImporter::GROUP_IMPORT_OPTION_CREATE_NEW, $regenerateUids
|
2017-05-19 13:38:37 -04:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Rebuild workflow's schema.sql
|
|
|
|
|
*/
|
|
|
|
|
protected function rebuildModel()
|
|
|
|
|
{
|
|
|
|
|
$pwd = getcwd();
|
|
|
|
|
chdir(PATH_CORE);
|
|
|
|
|
exec('../../gulliver/bin/gulliver propel-build-sql mysql');
|
|
|
|
|
exec('../../gulliver/bin/gulliver propel-build-model');
|
|
|
|
|
chdir($pwd);
|
|
|
|
|
}
|
2017-05-22 11:26:15 -04:00
|
|
|
|
2017-05-24 14:04:07 -04:00
|
|
|
/**
|
|
|
|
|
* Clean the shared folder to only have the sites.
|
|
|
|
|
*/
|
|
|
|
|
protected function cleanShared()
|
|
|
|
|
{
|
|
|
|
|
$this->rrmdir(PATH_DATA.'skins');
|
|
|
|
|
mkdir(PATH_DATA.'skins');
|
|
|
|
|
clearstatcache();
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-22 11:26:15 -04:00
|
|
|
/**
|
|
|
|
|
* Set the text of and specific translated message.
|
|
|
|
|
*
|
|
|
|
|
* @global array $translation
|
|
|
|
|
* @param type $msgId
|
|
|
|
|
* @param type $text
|
|
|
|
|
*/
|
|
|
|
|
protected function setTranslation($msgId, $text)
|
|
|
|
|
{
|
|
|
|
|
global $translation;
|
|
|
|
|
$translation[$msgId] = $text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Clear all the translated messages loaded.
|
2017-06-02 13:07:52 -04:00
|
|
|
*
|
2017-05-22 11:26:15 -04:00
|
|
|
* @global array $translation
|
|
|
|
|
*/
|
|
|
|
|
protected function clearTranslations()
|
|
|
|
|
{
|
|
|
|
|
global $translation;
|
|
|
|
|
foreach ($translation as $msgId => $text) {
|
|
|
|
|
unset($translation[$msgId]);
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-05-24 14:04:07 -04:00
|
|
|
|
|
|
|
|
private function rrmdir($dir)
|
|
|
|
|
{
|
|
|
|
|
if (!is_dir($dir)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
$files = array_diff(scandir($dir), array('.', '..'));
|
|
|
|
|
foreach ($files as $file) {
|
|
|
|
|
(is_dir("$dir/$file") && !is_link($dir)) ? $this->rrmdir("$dir/$file")
|
|
|
|
|
: unlink("$dir/$file");
|
|
|
|
|
}
|
|
|
|
|
return rmdir($dir);
|
|
|
|
|
}
|
2017-05-19 13:38:37 -04:00
|
|
|
}
|