This commit is contained in:
Roly Rudy Gutierrez Pinto
2017-08-09 14:49:21 -04:00
parent 254a9bf7b1
commit 810eeb0c2d
5 changed files with 409 additions and 103 deletions

View File

@@ -329,6 +329,22 @@ CLI::taskOpt("lang", "", "lLANG", "lang=LANG");
CLI::taskArg('workspace');
CLI::taskRun("cliListIds");
/**
*
*/
CLI::taskName('regenerate-pmtable-classes');
CLI::taskDescription(<<<EOT
Regenerate the class with incorrect reference
This method recursively finds all PHP files that reference the path PATH_DATA
incorrectly, which is caused by importing processes where the data directory
of ProcessMaker has different routes. Modified files are backed up with the
extension '.backup' in the same directory.
EOT
);
CLI::taskArg('workspace');
CLI::taskRun("regenerate_pmtable_classes");
/**
* Function run_info
* access public
@@ -1081,3 +1097,31 @@ function run_migrate_indexing_acv($args, $opts) {
$stop = microtime(true);
CLI::logging("<*> Migrating and populating indexing for avoiding the use of table APP_CACHE_VIEW process took " . ($stop - $start) . " seconds.\n");
}
/**
* This method recursively finds all PHP files that reference the path PATH_DATA
* incorrectly, which is caused by importing processes where the data directory
* of ProcessMaker has different routes. Modified files are backed up with the
* extension '.backup' in the same directory.
*
* @param array $args
* @param array $opts
* @throws Exception
* @return void
*/
function regenerate_pmtable_classes($args, $opts)
{
if (sizeof($args) > 0) {
$start = microtime(true);
CLI::logging("> Updating generated class files for PM Tables...\n");
Bootstrap::setConstantsRelatedWs($args[0]);
$workspaceTools = new workspaceTools($args[0]);
$workspaceTools->fixReferencePathFiles(PATH_DATA_SITE . "classes", PATH_DATA);
$stop = microtime(true);
CLI::logging("<*> Updating generated class files for PM Tables took " . ($stop - $start) . " seconds.\n");
} else {
throw new Exception("No workspace specified for updating generated class files.");
}
}

View File

@@ -17,7 +17,7 @@ class ConsolidatedCases
$RepTabUid = $data['rep_uid'];
$TableName = $data['table_name'];
$Title = $data['title'];
if($this->isUpdateFields($data) && $Status) {
if ($this->isUpdateFields($data) && $Status) {
return true;
}
if ($this->existTable && $Status) {
@@ -26,14 +26,14 @@ class ConsolidatedCases
if ($RepTabUid != '') {
$this->deleteRepTab($RepTabUid, $Status, $TasUid, $TableName);
if(!$Status){
if (!$Status) {
return true;
}
$RepTabUid = '';
}
$_POST['form']['PRO_UID'] = $ProUid;
$_POST['form']['REP_TAB_UID'] = $RepTabUid;
$_POST['form']['REP_TAB_UID'] = $RepTabUid;
$_POST['form']['REP_TAB_NAME'] = $TableName;
$_POST['form']['REP_TAB_TYPE'] = "NORMAL";
$_POST['form']['REP_TAB_GRID'] = '';
@@ -43,7 +43,7 @@ class ConsolidatedCases
$_POST['form']['REP_TAB_TITLE'] = $Title;
$_POST['form']['FIELDS'] = array();
$sOldTableName = $_POST['form']['REP_TAB_NAME'];
$sOldTableName = $_POST['form']['REP_TAB_NAME'];
$sOldConnection = $_POST['form']['REP_TAB_CONNECTION'];
$_POST['form']['REP_TAB_UID'] = $this->createReportTable($_POST['form']);
@@ -174,7 +174,7 @@ class ConsolidatedCases
if ($this->existTableName) {
$diff = array_diff($data, $this->rowRepTab);
}
if ($this->existCaseConsolidate){
if ($this->existCaseConsolidate) {
$diff = array_diff($diff, $this->rowCaseConsCore);
}
return count($diff) <= 0;
@@ -213,9 +213,23 @@ class ConsolidatedCases
return $oReportTable->getRepTabUid();
}
public function createReportVariables($RepTabUid, $ProUid, $formFields)
public function createReportVariables($repTabUid, $proUid, $formFields)
{
list($fieldsClass, $fields) = $this->buildReportVariables($formFields, function ($repVarName, $repVarType) use ($repTabUid, $proUid) {
$reportVar = new ReportVar();
$reportVar->create(array(
'REP_TAB_UID' => $repTabUid,
'PRO_UID' => $proUid,
'REP_VAR_NAME' => $repVarName,
'REP_VAR_TYPE' => $repVarType)
);
});
return array($fieldsClass, $fields);
}
public function buildReportVariables($formFields, $callbackFunction = null)
{
$oReportVar = new ReportVar();
$fieldsClass = array();
$fields = array();
$i = 1;
@@ -224,7 +238,7 @@ class ConsolidatedCases
$fieldsClass[$i]['FLD_KEY'] = 'on';
$fieldsClass[$i]['FLD_AUTO_INCREMENT'] = 'off';
$fieldsClass[$i]['FLD_DESCRIPTION'] = '';
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR';
$fieldsClass[$i]['FLD_SIZE'] = 32;
$i++;
$fieldsClass[$i]['FLD_NAME'] = 'APP_NUMBER';
@@ -232,26 +246,26 @@ class ConsolidatedCases
$fieldsClass[$i]['FLD_KEY'] = 'on';
$fieldsClass[$i]['FLD_AUTO_INCREMENT'] = 'off';
$fieldsClass[$i]['FLD_DESCRIPTION'] = '';
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR';
$fieldsClass[$i]['FLD_SIZE'] = 255;
foreach ($formFields as $sField) {
$aField = explode('-', $sField);
if ($aField[1] == 'title' || $aField[1] == 'submit') {
foreach ($formFields as $field) {
$fieldProperty = explode('-', $field);
if ($fieldProperty[1] == 'title' || $fieldProperty[1] == 'submit') {
continue;
}
$i++;
$fieldsClass[$i]['FLD_NAME'] = $aField[0];
$fieldsClass[$i]['FLD_NAME'] = $fieldProperty[0];
$fieldsClass[$i]['FLD_NULL'] = 'off';
$fieldsClass[$i]['FLD_KEY'] = 'off';
$fieldsClass[$i]['FLD_AUTO_INCREMENT'] = 'off';
$fieldsClass[$i]['FLD_DESCRIPTION'] = '';
switch ($aField[1]) {
switch ($fieldProperty[1]) {
case 'currency':
case 'percentage':
$sType = 'number';
$fieldsClass[$i]['FLD_TYPE'] = 'FLOAT' ;
$type = 'number';
$fieldsClass[$i]['FLD_TYPE'] = 'FLOAT';
$fieldsClass[$i]['FLD_SIZE'] = 255;
break;
case 'text':
@@ -262,34 +276,32 @@ class ConsolidatedCases
case 'radiogroup':
case 'hidden':
case "link":
$sType = 'char';
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
$type = 'char';
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR';
$fieldsClass[$i]['FLD_SIZE'] = 255;
break;
case 'textarea':
$sType = 'text';
$fieldsClass[$i]['FLD_TYPE'] = 'TEXT' ;
$type = 'text';
$fieldsClass[$i]['FLD_TYPE'] = 'TEXT';
$fieldsClass[$i]['FLD_SIZE'] = '';
break;
case 'date':
$sType = 'date';
$fieldsClass[$i]['FLD_TYPE'] = 'DATE' ;
$type = 'date';
$fieldsClass[$i]['FLD_TYPE'] = 'DATE';
$fieldsClass[$i]['FLD_SIZE'] = '';
break;
default:
$sType = 'char';
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
$type = 'char';
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR';
$fieldsClass[$i]['FLD_SIZE'] = 255;
break;
}
$oReportVar->create(array(
'REP_TAB_UID' => $RepTabUid,
'PRO_UID' => $ProUid,
'REP_VAR_NAME' => $aField[0],
'REP_VAR_TYPE' => $sType)
);
$fields[] = array('sFieldName' => $aField[0], 'sType' => $sType);
if (!empty($callbackFunction) && is_callable($callbackFunction)) {
$callbackFunction($fieldProperty[0], $type);
}
$fields[] = array('sFieldName' => $fieldProperty[0], 'sType' => $type);
}
return array($fieldsClass, $fields);
}

View File

@@ -1,15 +1,14 @@
<?php
/**
* Utility functions to manage a workspace.
*
* @author Alexandre Rosenfeld
*/
use ProcessMaker\Util\FixReferencePath;
/**
* class workspaceTools
* class workspaceTools.
*
* Utility functions to manage a workspace.
*
* @package workflow.engine.classes
* @author Alexandre Rosenfeld
*/
class workspaceTools
{
@@ -706,7 +705,7 @@ class workspaceTools
$res = $appCache->fillAppCacheView($lang);
}
//set status in config table
$confParams = Array('LANG' => $lang, 'STATUS' => 'active');
$confParams = array('LANG' => $lang, 'STATUS' => 'active');
$oConf->aConfig = $confParams;
$oConf->saveConfig('APP_CACHE_VIEW_ENGINE', '', '', '');
@@ -862,7 +861,7 @@ class workspaceTools
p11835::isApplicable();
$systemSchema = PmSystem::getSystemSchema($this->dbAdapter);
$systemSchemaRbac = PmSystem::getSystemSchemaRbac($this->dbAdapter);// get the Rbac Schema
$this->registerSystemTables(array_merge($systemSchema,$systemSchemaRbac));
$this->registerSystemTables(array_merge($systemSchema, $systemSchemaRbac));
$this->upgradeSchema($systemSchema);
$this->upgradeSchema($systemSchemaRbac, false, true, $onedb); // perform Upgrade to Rbac
$this->upgradeData();
@@ -983,7 +982,7 @@ class workspaceTools
$oDataBase = $this->getDatabase($rbac);
if (!$onedb) {
if($rbac){
if ($rbac) {
$rename = PmSystem::verifyRbacSchema($workspaceSchema);
if (count($rename) > 0) {
foreach ($rename as $tableName) {
@@ -1136,7 +1135,6 @@ class workspaceTools
$Fields['WORKSPACE_NAME'] = $this->name;
if (isset($this->dbHost)) {
$dbNetView = new NET($this->dbHost);
$dbNetView->loginDbServer($this->dbUser, $this->dbPass);
try {
@@ -1205,7 +1203,7 @@ class workspaceTools
if ($fields['DB_NAME'] == $fields['DB_RBAC_NAME']) {
$info = array('Workspace Name' => $fields['WORKSPACE_NAME'], 'Workflow Database' => sprintf("%s://%s:%s@%s/%s", $fields['DB_ADAPTER'], $fields['DB_USER'], $fields['DB_PASS'], $fields['DB_HOST'], $fields['DB_NAME']), 'MySql Version' => $fields['DATABASE']);
} else {
$info = array('Workspace Name' => $fields['WORKSPACE_NAME'],
$info = array('Workspace Name' => $fields['WORKSPACE_NAME'],
//'Available Databases' => $fields['AVAILABLE_DB'],
'Workflow Database' => sprintf("%s://%s:%s@%s/%s", $fields['DB_ADAPTER'], $fields['DB_USER'], $fields['DB_PASS'], $fields['DB_HOST'], $fields['DB_NAME']), 'RBAC Database' => sprintf("%s://%s:%s@%s/%s", $fields['DB_ADAPTER'], $fields['DB_RBAC_USER'], $fields['DB_RBAC_PASS'], $fields['DB_RBAC_HOST'], $fields['DB_RBAC_NAME']), 'Report Database' => sprintf("%s://%s:%s@%s/%s", $fields['DB_ADAPTER'], $fields['DB_REPORT_USER'], $fields['DB_REPORT_PASS'], $fields['DB_REPORT_HOST'], $fields['DB_REPORT_NAME']), 'MySql Version' => $fields['DATABASE']
);
@@ -1247,7 +1245,7 @@ class workspaceTools
if ($onedb) {
$databases = array("rb", "rp");
} else if ($dbInfo['DB_NAME'] == $dbInfo['DB_RBAC_NAME']) {
} elseif ($dbInfo['DB_NAME'] == $dbInfo['DB_RBAC_NAME']) {
$databases = array("wf");
} else {
$databases = array("wf", "rp", "rb");
@@ -1290,9 +1288,8 @@ class workspaceTools
* @param string $filename the backup filename
* @param bool $compress wheter to compress or not
*/
static public function createBackup($filename, $compress = true)
public static function createBackup($filename, $compress = true)
{
if (!file_exists(dirname($filename))) {
mkdir(dirname($filename));
}
@@ -1383,7 +1380,7 @@ class workspaceTools
}
$users = mysql_num_rows($result);
if ($users === 0) {
CLI::logging("Creating user $username for $hostname\n");
CLI::logging("Creating user $username for $hostname\n");
$result = mysql_query("CREATE USER '$username'@'$hostname' IDENTIFIED BY '$password'");
if ($result === false) {
throw new Exception("Unable to create user $username: " . mysql_error());
@@ -1436,10 +1433,10 @@ class workspaceTools
if (!$flag && !is_null($flagFunction)) {
//Replace TYPE by ENGINE
if( $versionBackupEngine == 1) {
if ($versionBackupEngine == 1) {
$script = preg_replace($arrayRegExpEngineSearch, $arrayRegExpEngineReplace, file_get_contents($filename));
file_put_contents($filename, $script."\nCOMMIT;");
}else{
} else {
$arrayRegExpEngineSearch = array("/\)\s*TYPE\s*=\s*(InnoDB)/i", "/\)\s*TYPE\s*=\s*(MyISAM)/i");
$arrayRegExpEngineReplace = array(") ENGINE=\\1 DEFAULT CHARSET=utf8", ") ENGINE=\\1");
$script = preg_replace($arrayRegExpEngineSearch, $arrayRegExpEngineReplace, file_get_contents($filename));
@@ -1475,7 +1472,7 @@ class workspaceTools
//Replace TYPE by ENGINE
$script = preg_replace($arrayRegExpEngineSearch, $arrayRegExpEngineReplace, file_get_contents($filename));
if( $versionBackupEngine == 1) {
if ($versionBackupEngine == 1) {
$script = $script."\nCOMMIT;";
}
@@ -1540,14 +1537,13 @@ class workspaceTools
return true;
}
static public function restoreLegacy($directory)
public static function restoreLegacy($directory)
{
throw new Exception("Use gulliver to restore backups from old versions");
}
static public function getBackupInfo($filename)
public static function getBackupInfo($filename)
{
$backup = new Archive_Tar($filename);
//Get a temporary directory in the upgrade directory
$tempDirectory = PATH_DATA . "upgrade/" . basename(tempnam(__FILE__, ''));
@@ -1575,7 +1571,7 @@ class workspaceTools
G::rm_dir($tempDirectory);
}
static public function dirPerms($filename, $owner, $group, $perms)
public static function dirPerms($filename, $owner, $group, $perms)
{
$chown = @chown($filename, $owner);
$chgrp = @chgrp($filename, $group);
@@ -1611,9 +1607,8 @@ class workspaceTools
* @param string $lang for define the language
* @param string $port of database if is empty take 3306
*/
static public function restore($filename, $srcWorkspace, $dstWorkspace = null, $overwrite = true, $lang = 'en', $port = '')
public static function restore($filename, $srcWorkspace, $dstWorkspace = null, $overwrite = true, $lang = 'en', $port = '')
{
$backup = new Archive_Tar($filename);
//Get a temporary directory in the upgrade directory
$tempDirectory = PATH_DATA . "upgrade/" . basename(tempnam(__FILE__, ''));
@@ -1725,7 +1720,7 @@ class workspaceTools
} else {
CLI::logging(CLI::error("Could not get the shared folder permissions, not changing workspace permissions") . "\n");
}
list ($dbHost, $dbUser, $dbPass) = @explode(SYSTEM_HASH, G::decrypt(HASH_INSTALLATION, SYSTEM_HASH));
list($dbHost, $dbUser, $dbPass) = @explode(SYSTEM_HASH, G::decrypt(HASH_INSTALLATION, SYSTEM_HASH));
if ($port != '') {
$dbHost = $dbHost . $port; //127.0.0.1:3306
}
@@ -1758,7 +1753,7 @@ class workspaceTools
foreach ($metadata->databases as $db) {
if ($dbName != $newDBNames[$db->name]) {
$dbName = $dbUser = $newDBNames[$db->name];
if(isset($newDBNames['DB_USER'])){
if (isset($newDBNames['DB_USER'])) {
$dbUser = $newDBNames['DB_USER'];
}
if (mysql_select_db($dbName, $link)) {
@@ -1848,6 +1843,12 @@ class workspaceTools
$stop = microtime(true);
CLI::logging("<*> Migrating an populating indexing for APP_CACHE_VIEW process took " . ($stop - $start) . " seconds.\n");
$start = microtime(true);
CLI::logging("> Updating generated class files for PM Tables...\n");
self::fixReferencePathFiles(PATH_DATA_SITE . "classes", PATH_DATA);
$stop = microtime(true);
CLI::logging("<*> Updating generated class files for PM Tables took " . ($stop - $start) . " seconds.\n");
mysql_close($link);
}
@@ -1924,7 +1925,8 @@ class workspaceTools
}
}
public function checkMafeRequirements ($workspace,$lang) {
public function checkMafeRequirements($workspace, $lang)
{
$this->initPropel(true);
$pmRestClient = OauthClientsPeer::retrieveByPK('x-pm-local-client');
if (empty($pmRestClient)) {
@@ -1941,7 +1943,7 @@ class workspaceTools
$envFile = PATH_CONFIG . 'env.ini';
$skin ='neoclassic';
if (file_exists($envFile) ) {
if (file_exists($envFile)) {
$sysConf = PmSystem::getSystemConfiguration($envFile);
$lang = $sysConf['default_lang'];
$skin = $sysConf['default_skin'];
@@ -1969,9 +1971,9 @@ class workspaceTools
}
}
public function changeHashPassword ($workspace, $response)
public function changeHashPassword($workspace, $response)
{
$this->initPropel( true );
$this->initPropel(true);
$licensedFeatures = & PMLicensedFeatures::getSingleton();
/*----------------------------------********---------------------------------*/
if ($licensedFeatures->verifyfeature('95OY24wcXpEMzIyRmlNSnF0STNFSHJzMG9wYTJKekpLNmY2ZmRCeGtuZk5oUDloaUNhUGVjTDJBPT0=')) {
@@ -1983,9 +1985,9 @@ class workspaceTools
return true;
}
public function verifyFilesOldEnterprise ($workspace)
public function verifyFilesOldEnterprise($workspace)
{
$this->initPropel( true );
$this->initPropel(true);
$pathBackup = PATH_DATA . 'backups';
if (!file_exists($pathBackup)) {
G::mk_dir($pathBackup, 0777);
@@ -2030,7 +2032,7 @@ class workspaceTools
CLI::logging(CLI::error("Could not get shared folder permissions, workspace permissions couldn't be changed") . "\n");
}
CLI::logging(" Removing $pathFileEnterprise...\n");
copy($pathFileEnterprise , $pathNewFile. PATH_SEP . 'enterprise.php');
copy($pathFileEnterprise, $pathNewFile. PATH_SEP . 'enterprise.php');
G::rm_dir($pathFileEnterprise);
if (file_exists($pathFileEnterprise)) {
CLI::logging(CLI::info(" Remove manually $pathFileEnterprise...\n"));
@@ -2223,7 +2225,8 @@ class workspaceTools
CLI::logging("> Completed table LIST_CANCELED\n");
}
public function regenerateListCompleted($lang = 'en'){
public function regenerateListCompleted($lang = 'en')
{
$this->initPropel(true);
$query = 'INSERT INTO '.$this->dbName.'.LIST_COMPLETED
(APP_UID,
@@ -2285,7 +2288,8 @@ class workspaceTools
CLI::logging("> Completed table LIST_COMPLETED\n");
}
public function regenerateListMyInbox(){
public function regenerateListMyInbox()
{
$this->initPropel(true);
$query = 'INSERT INTO '.$this->dbName.'.LIST_MY_INBOX
(APP_UID,
@@ -2354,7 +2358,8 @@ class workspaceTools
CLI::logging("> Completed table LIST_MY_INBOX\n");
}
public function regenerateListInbox(){
public function regenerateListInbox()
{
$this->initPropel(true);
$query = 'INSERT INTO '.$this->dbName.'.LIST_INBOX
(APP_UID,
@@ -2411,7 +2416,8 @@ class workspaceTools
CLI::logging("> Completed table LIST_INBOX\n");
}
public function regenerateListParticipatedHistory(){
public function regenerateListParticipatedHistory()
{
$this->initPropel(true);
$query = 'INSERT INTO '.$this->dbName.'.LIST_PARTICIPATED_HISTORY
(APP_UID,
@@ -2585,7 +2591,8 @@ class workspaceTools
* For the labels we use the tables user, process, task and application
* @return void
*/
public function regenerateListPaused(){
public function regenerateListPaused()
{
$this->initPropel(true);
$query = 'INSERT INTO '.$this->dbName.'.LIST_PAUSED
(
@@ -2668,7 +2675,8 @@ class workspaceTools
}
/*----------------------------------********---------------------------------*/
public function regenerateListUnassigned(){
public function regenerateListUnassigned()
{
$this->initPropel(true);
$truncate = 'TRUNCATE '.$this->dbName.'.LIST_UNASSIGNED';
//This executeQuery is very fast than Propel
@@ -2727,12 +2735,13 @@ class workspaceTools
*
* return boolean value
*/
public function listFirstExecution ($action, $list='all'){
public function listFirstExecution($action, $list='all')
{
$this->initPropel(true);
switch ($action) {
case 'insert':
$conf = new Configuration();
if($list==='all'){
if ($list==='all') {
if (!($conf->exists('MIGRATED_LIST', 'list', 'list', 'list', 'list'))) {
$data["CFG_UID"] ='MIGRATED_LIST';
$data["OBJ_UID"] ='list';
@@ -2743,7 +2752,7 @@ class workspaceTools
$conf->create($data);
}
}
if($list==='unassigned'){
if ($list==='unassigned') {
if (!($conf->exists('MIGRATED_LIST_UNASSIGNED', 'list', 'list', 'list', 'list'))) {
$data["CFG_UID"] ='MIGRATED_LIST_UNASSIGNED';
$data["OBJ_UID"] ='list';
@@ -2759,19 +2768,19 @@ class workspaceTools
case 'check':
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(ConfigurationPeer::CFG_UID);
if($list==='all'){
if ($list==='all') {
$criteria->add(ConfigurationPeer::CFG_UID, "MIGRATED_LIST", CRITERIA::EQUAL);
}
if($list==='unassigned'){
if ($list==='unassigned') {
$criteria->add(ConfigurationPeer::CFG_UID, "MIGRATED_LIST_UNASSIGNED", CRITERIA::EQUAL);
}
$rsCriteria = AppCacheViewPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$aRows = array ();
$aRows = array();
while ($rsCriteria->next()) {
$aRows[] = $rsCriteria->getRow();
}
if(empty($aRows)){
if (empty($aRows)) {
return false; //If is false continue with the migrated
} else {
return true; //Stop
@@ -2836,7 +2845,8 @@ class workspaceTools
*
* return void
*/
public static function registerSystemTables($aSquema){
public static function registerSystemTables($aSquema)
{
//Register all tables
$sListTables = '';
foreach ($aSquema as $key => $value) {
@@ -2844,16 +2854,17 @@ class workspaceTools
}
$sysTablesIniFile= PATH_CONFIG . 'system-tables.ini';
$contents = file_put_contents( $sysTablesIniFile, sprintf( "%s '%s'\n", "tables = ", $sListTables ) );
$contents = file_put_contents($sysTablesIniFile, sprintf("%s '%s'\n", "tables = ", $sListTables));
if ($contents === null) {
throw (new Exception( G::LoadTranslation('ID_FILE_NOT_WRITEABLE', SYS_LANG, array($sysTablesIniFile) ) ));
throw (new Exception(G::LoadTranslation('ID_FILE_NOT_WRITEABLE', SYS_LANG, array($sysTablesIniFile))));
}
}
/**
*return void
*/
public function checkRbacPermissions(){
public function checkRbacPermissions()
{
CLI::logging("-> Verifying roles permissions in RBAC \n");
//Update table RBAC permissions
@@ -3126,7 +3137,6 @@ class workspaceTools
PATH_DATA."/post-missing-inbox-".$this->name.".txt",
"[".$item['APP_UID']."] has not been found"
);
}
CLI::logging("> Number of missing inbox cases for workspace " . CLI::info($this->name) . ": " . CLI::info($counter) . "\n");
@@ -3273,7 +3283,7 @@ class workspaceTools
public function verifyListData($type)
{
switch($type) {
switch ($type) {
case 'LIST_CANCELLED':
$response = $this->verifyMissingCancelled();
break;
@@ -3322,7 +3332,7 @@ class workspaceTools
$this->initPropel(true);
$conf = new Configuration();
$blackList = array();
if($bExist = $conf->exists('MIGRATED_CONTENT', 'content')){
if ($bExist = $conf->exists('MIGRATED_CONTENT', 'content')) {
$oConfig = $conf->load('MIGRATED_CONTENT', 'content');
$blackList = $oConfig['CFG_VALUE'] == 'true' ? array('Groupwf', 'Process', 'Department', 'Task', 'InputDocument', 'Application') : unserialize($oConfig['CFG_VALUE']);
}
@@ -3371,14 +3381,14 @@ class workspaceTools
$oTable = new $className();
$that = array($oTable, $methods['exists']);
$params = array($row[$fieldUidName]);
if (isset($row['CON_PARENT']) && $row['CON_PARENT'] != ''){
if (isset($row['CON_PARENT']) && $row['CON_PARENT'] != '') {
array_push($params, $row['CON_PARENT']);
$fieldName = isset($fields['alias']) && isset($fields['alias']['CON_PARENT']) ? $fields['alias']['CON_PARENT'] : 'CON_PARENT';
$row[$fieldName] = $row['CON_PARENT'];
}
unset($row['CON_PARENT']);
if (call_user_func_array($that, $params)){
if (isset($methods['update'])){
if (call_user_func_array($that, $params)) {
if (isset($methods['update'])) {
$fn = $methods['update'];
$fn($row);
} else {
@@ -3505,7 +3515,8 @@ class workspaceTools
CLI::logging("|--> Clean data in table " . OauthRefreshTokensPeer::TABLE_NAME . " rows ".$refreshToken."\n");
}
public function migrateIteeToDummytask($workspaceName){
public function migrateIteeToDummytask($workspaceName)
{
$this->initPropel(true);
$arraySystemConfiguration = PmSystem::getSystemConfiguration('', '', $workspaceName);
$conf = new Configurations();
@@ -3528,8 +3539,8 @@ class workspaceTools
//Search All process
$oCriteria = new Criteria("workflow");
$oCriteria->addSelectColumn( ProcessPeer::PRO_UID );
$oCriteria->addSelectColumn( ProcessPeer::PRO_ITEE );
$oCriteria->addSelectColumn(ProcessPeer::PRO_UID);
$oCriteria->addSelectColumn(ProcessPeer::PRO_ITEE);
$oCriteria->add(ProcessPeer::PRO_ITEE, '0', Criteria::EQUAL);
$rsCriteria = ProcessPeer::doSelectRS($oCriteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
@@ -3539,7 +3550,7 @@ class workspaceTools
$row = $rsCriteria->getRow();
$prj_uid = $row['PRO_UID'];
$bpmnProcess = new Process();
if($bpmnProcess->isBpmnProcess($prj_uid)){
if ($bpmnProcess->isBpmnProcess($prj_uid)) {
$project = new \ProcessMaker\Project\Adapter\BpmnWorkflow();
$diagram = $project->getStruct($prj_uid);
$res = $project->updateFromStruct($prj_uid, $diagram);
@@ -3565,9 +3576,10 @@ class workspaceTools
$conf->saveConfig('SKIN_CRON', '');
}
public function upgradeAuditLog($workspace){
public function upgradeAuditLog($workspace)
{
$conf = new Configurations();
if (!$conf->exists('AUDIT_LOG','log')) {
if (!$conf->exists('AUDIT_LOG', 'log')) {
CLI::logging("> Updating Auditlog Config \n");
$oServerConf = &serverConf::getSingleton();
$sAudit = $oServerConf->getAuditLogProperty('AL_OPTION', $workspace);
@@ -3576,7 +3588,8 @@ class workspaceTools
}
}
public function migrateSelfServiceRecordsRun($workspace) {
public function migrateSelfServiceRecordsRun($workspace)
{
// Initializing
$this->initPropel(true);
@@ -3594,7 +3607,7 @@ class workspaceTools
$row = $rsCriteria->getRow();
$temp = @unserialize($row['GRP_UID']);
if (is_array($temp)) {
foreach($temp as $groupUid) {
foreach ($temp as $groupUid) {
if ($groupUid != '') {
$appAssignSelfServiceValueGroup = new AppAssignSelfServiceValueGroup();
$appAssignSelfServiceValueGroup->setId($row['ID']);
@@ -3622,7 +3635,8 @@ class workspaceTools
CLI::logging(" Migrating Self-Service by Value Cases Done \n");
}
public function migratePopulateIndexingACV($workspace) {
public function migratePopulateIndexingACV($workspace)
{
// Migrating and populating new indexes
CLI::logging("-> Migrating an populating indexing for avoiding the use of table APP_CACHE_VIEW Start \n");
@@ -3749,7 +3763,7 @@ class workspaceTools
CLI::logging("-> Populating PRO_ID, USR_ID at LIST_* \n");
$con->begin();
$stmt = $con->createStatement();
foreach(workspaceTools::$populateIdsQueries as $query) {
foreach (workspaceTools::$populateIdsQueries as $query) {
$stmt->executeQuery($query);
}
$con->commit();
@@ -3758,14 +3772,14 @@ class workspaceTools
}
/**
* It populates the WEB_ENTRY table for the classic processes, this procedure
* is done to verify the execution of php files generated when the WebEntry
* It populates the WEB_ENTRY table for the classic processes, this procedure
* is done to verify the execution of php files generated when the WebEntry
* is configured.
* @param type $workSpace
*/
public function updatingWebEntryClassicModel($workSpace, $force = false)
{
//We obtain from the configuration the list of proUids obtained so that
//We obtain from the configuration the list of proUids obtained so that
//we do not go through again.
$cfgUid = 'UPDATING_ROWS_WEB_ENTRY';
$objUid = 'blackList';
@@ -3777,7 +3791,7 @@ class workspaceTools
$blackList = unserialize($oConfig['CFG_VALUE']);
}
//The following query returns all the classic processes that do not have
//The following query returns all the classic processes that do not have
//a record in the WEB_ENTRY table.
$oCriteria = new Criteria("workflow");
$oCriteria->addSelectColumn(ProcessPeer::PRO_UID);
@@ -3818,7 +3832,7 @@ class workspaceTools
$row1 = $stepRs->getRow();
$content = file_get_contents($path . "/" . $fileName);
if (strpos($content, $proUid . "/" . $row1["STEP_UID_OBJ"]) !== false) {
//The default user admin is set. This task is
//The default user admin is set. This task is
//carried out by the system administrator.
$userUid = "00000000000000000000000000000001";
//save data in table WEB_ENTRY
@@ -3840,7 +3854,7 @@ class workspaceTools
}
}
//The list of proUids obtained is saved in the configuration so that it
//The list of proUids obtained is saved in the configuration so that it
//does not go through again.
$data = [
"CFG_UID" => $cfgUid,
@@ -3867,4 +3881,24 @@ class workspaceTools
$this->initPropel(true);
$this->upgradeTriggersOfTables($flagRecreate, $lang);
}
/**
* This method finds all recursively PHP files that have the path PATH_DATA,
* poorly referenced, this is caused by the import of processes where the data
* directory of ProcessMaker has different routes. Modified files are backed
* up with the extension '.backup' in the same directory.
*
* @return void
*/
public function fixReferencePathFiles($pathClasses, $pathData)
{
try {
$this->initPropel(true);
$fixReferencePath = new FixReferencePath();
$fixReferencePath->runProcess($pathClasses, $pathData);
CLI::logging($fixReferencePath->getResumeDebug());
} catch (Exception $e) {
CLI::logging(CLI::error("Error:" . "Error updating generated class files for PM Tables, proceed to regenerate manually: " . $e));
}
}
}

View File

@@ -0,0 +1,172 @@
<?php
namespace ProcessMaker\Util;
/**
* This class regenerates the 'Propel' classes that are necessary for the
* administration of a 'Report Table', this is caused by the import of processes
* where the data directory of ProcessMaker has different routes.
*/
class FixReferencePath
{
private $modeDebug = false;
private $resumeDebug = "";
/**
* Get property modeDebug.
*
* @return boolean
*/
public function getModeDebug()
{
return $this->modeDebug;
}
/**
* Set property modeDebug.
*
* @param boolean $modeDebug
*/
public function setModeDebug($modeDebug)
{
$this->modeDebug = $modeDebug;
}
/**
* Get property resumeDebug.
*
* @return string
*/
public function getResumeDebug()
{
return $this->resumeDebug;
}
/**
* Set property resumeDebug.
*
* @param string $resumeDebug
*/
public function setResumeDebug($resumeDebug)
{
$this->resumeDebug = $resumeDebug;
}
/**
* Find all PHP type files recursively.
* The '$pathData' argument is the path to be replaced with the path found
* as incorrect.
*
* @param string $directory
* @param string $pathData
* @return void
*/
public function runProcess($directory, $pathData)
{
try {
//This variable is not defined and does not involve its value in this
//task, it is removed at the end of the method.
$_SERVER["REQUEST_URI"] = "";
if (!defined("SYS_SKIN")) {
$conf = new \Configurations();
define("SYS_SKIN", $conf->getConfiguration('SKIN_CRON', ''));
}
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ReportTablePeer::REP_TAB_UID);
$criteria->addSelectColumn(\CaseConsolidatedCorePeer::TAS_UID);
$criteria->addSelectColumn(\ReportTablePeer::REP_TAB_NAME);
$criteria->addJoin(\ReportTablePeer::REP_TAB_UID, \CaseConsolidatedCorePeer::REP_TAB_UID, \Criteria::JOIN);
$criteria->add(\CaseConsolidatedCorePeer::CON_STATUS, "ACTIVE", \Criteria::EQUAL);
$doSelect = \ReportTablePeer::doSelectRS($criteria);
$doSelect->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($doSelect->next()) {
$row = $doSelect->getRow();
$fields = $this->getReportTableFields($row["REP_TAB_UID"]);
$this->regeneratePropelClasses($row["REP_TAB_NAME"], $fields, $row["TAS_UID"]);
$this->outVerboseln("* Regenerate classes for table: " . $row["REP_TAB_NAME"]);
}
unset($_SERVER["REQUEST_URI"]);
} catch (Exception $e) {
CLI::logging(CLI::error("Error:" . "Error in updating consolidated files, proceed to regenerate manually: " . $e));
}
}
/**
* Gets the fields of the 'Report Table'.
*
* @param string $repTabUid
* @return array
*/
public function getReportTableFields($repTabUid)
{
$fields = array();
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ReportVarPeer::REP_VAR_NAME);
$criteria->addSelectColumn(\ReportVarPeer::REP_VAR_TYPE);
$criteria->add(\ReportVarPeer::REP_TAB_UID, $repTabUid, \Criteria::EQUAL);
$doSelect = \ReportVarPeer::doSelectRS($criteria);
$doSelect->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($doSelect->next()) {
$row = $doSelect->getRow();
$fields[] = $row['REP_VAR_NAME'] . '-' . $row['REP_VAR_TYPE'];
}
return $fields;
}
/**
* Regenerate 'Propel' classes for 'Report Tables'. The name of the 'Report Table',
* the fields and the related task are required.
*
* @param string $repTabName
* @param array $fields
* @param string $guid
* @return void
*/
public function regeneratePropelClasses($repTabName, $fields, $guid)
{
$consolidatedCases = new \ConsolidatedCases();
list($outFieldsClass, $outFields) = $consolidatedCases->buildReportVariables($fields);
$className = $repTabName;
$sourcePath = PATH_DB . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP;
@unlink($sourcePath . $className . '.php');
@unlink($sourcePath . $className . 'Peer.php');
@unlink($sourcePath . PATH_SEP . 'map' . PATH_SEP . $className . 'MapBuilder.php');
@unlink($sourcePath . PATH_SEP . 'om' . PATH_SEP . 'Base' . $className . '.php');
@unlink($sourcePath . PATH_SEP . 'om' . PATH_SEP . 'Base' . $className . 'Peer.php');
$additionalTables = new \AdditionalTables();
$additionalTables->createPropelClasses($repTabName, $className, $outFieldsClass, $guid);
}
/**
* Display the output found, the message is not displayed if the value of the
* 'modeVerbose' property is false.
*
* @param string $message
* @return void
*/
private function outVerbose($message)
{
$this->resumeDebug = $this->resumeDebug . $message;
if ($this->modeDebug === true) {
echo $message;
}
}
/**
* Shows on the screen the output found with line break.
*
* @param string $message
* @return void
*/
private function outVerboseln($message)
{
$this->outVerbose($message . "\n");
}
}

View File

@@ -2130,3 +2130,47 @@ Ext.onReady(function() {
}
});
var te = new Ext.tree.TreeEditor(
treepanelmain,
new Ext.form.TextField({
allowBlank: false,
blankText: 'A text is required'//,
// validator: function (value) {
// console.log('validator');
// },
// listeners: {
// change: function (f, neval, olval) {
// console.log('change');
// //f.setValue(Ext.util.Format.htmlEncode(neval));
// },
// valid: function (f, neval, olval) {
// console.log('valid');
// }
// },
// renderer:myrender
}), {
// editDelay: 100,
// revertInvalid: false,
listeners:{
complete:function(){
console.log("okokoko111");
},
destroy:function(){
console.log("my removido124314234");
}
},
renderer:myrender
});
var myrender = function(value){
return "<div>"+value+"5345345345</div>";
};
Ext.override(Ext.form.field.Base, {
setValue: function(val) {
console.log("holal");
val = Ext.util.Format.htmlDecode(val);
return this.callParent([val]);
}
});