This commit is contained in:
Andrea Adamczyk
2019-05-27 16:00:45 -04:00
parent 4064c1bebf
commit c83988d5ac
4 changed files with 163 additions and 67 deletions

View File

@@ -70,6 +70,7 @@ workflow/engine/methods/setup/jasper.php
workflow/engine/methods/setup/webServices.php
workflow/engine/methods/setup/webServicesAjax.php
workflow/engine/methods/setup/webServicesList.php
workflow/engine/methods/users/data_usersList.php
workflow/engine/plugins/openFlash.php
workflow/engine/plugins/openFlash/chart-data.php
workflow/engine/plugins/openFlash/chart.php

View File

@@ -0,0 +1,137 @@
<?php
namespace Tests\unit\workflow\engine\bin\tasks;
use Tests\TestCase;
class CliWorkspacesTest extends TestCase
{
/**
* Test that the deprecated files are removed successfully
*
* @covers WorkspaceTools::removeDeprecatedFiles
* @test
*/
public function it_should_delete_the_deprecated_files()
{
include(PATH_TRUNK . PATH_SEP . 'workflow/engine/bin/tasks/cliWorkspaces.php');
if (!file_exists(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/data_usersList.php')) {
$filename = PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/data_usersList.php';
$handle = fopen($filename, 'w');
fclose($handle);
}
// This assert the data_usersList.php file do exists before being deleted
$this->assertTrue(file_exists(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/data_usersList.php'));
$path = PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/';
if (getmyuid() == fileowner($path)) {
if (substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/data_usersList.php'),
1, 2) == 'rw' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/'), 2, 1) == 'w' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/'), 3, 1) == 'x' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/'), 3, 1) == 'x' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/'), 3, 1) == 'x'
) {
remove_deprecated_files();
} else {
dd("Could not delete the file. Please, make sure the file have write permission for the direct parent directory and
execute permission for all parent directories.");
}
} else {
if (getmygid() == filegroup($path)) {
if (substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/data_usersList.php'),
4, 2) == 'rw' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/'), 5,
1) == 'w' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/'), 6, 1) == 'x' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/'), 6, 1) == 'x' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/'), 6, 1) == 'x'
) {
remove_deprecated_files();
} else {
dd("Could not delete the file. Please, make sure the file have write permission for the direct parent directory and
execute permission for all parent directories.");
}
} else {
if (substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/data_usersList.php'),
7, 2) == 'rw' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/'), 8,
1) == 'w' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/'), 9, 1) == 'x' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/engine/'), 9, 1) == 'x' &&
substr($this->getPermissions(PATH_TRUNK . PATH_SEP . 'workflow/'), 9, 1) == 'x'
) {
remove_deprecated_files();
} else {
dd("Could not delete the file. Please, make sure the file have write permission for the direct parent directory and
execute permission for all parent directories.");
}
}
}
// This assert the data_usersList.php does not exist anymore
$this->assertFalse(file_exists(PATH_TRUNK . PATH_SEP . 'workflow/engine/methods/users/data_usersList.php'));
}
/**
* Get the permissions of a file or directory
*
* @param string $path
* @return string
*/
public function getPermissions($path)
{
$per = fileperms($path);
switch ($per & 0xF000) {
case 0xC000: // socket
$permissions = 's';
break;
case 0xA000: // symbolic link
$permissions = 'l';
break;
case 0x8000: // regular
$permissions = '-';
break;
case 0x6000: // block special
$permissions = 'b';
break;
case 0x4000: // directory
$permissions = 'd';
break;
case 0x2000: // character special
$permissions = 'c';
break;
case 0x1000: // FIFO pipe
$permissions = 'p';
break;
default: // unknown
$permissions = 'u';
}
// Owner
$permissions .= (($per & 0x0100) ? 'r' : '-');
$permissions .= (($per & 0x0080) ? 'w' : '-');
$permissions .= (($per & 0x0040) ?
(($per & 0x0800) ? 's' : 'x') :
(($per & 0x0800) ? 'S' : '-'));
// Group
$permissions .= (($per & 0x0020) ? 'r' : '-');
$permissions .= (($per & 0x0010) ? 'w' : '-');
$permissions .= (($per & 0x0008) ?
(($per & 0x0400) ? 's' : 'x') :
(($per & 0x0400) ? 'S' : '-'));
// Others
$permissions .= (($per & 0x0004) ? 'r' : '-');
$permissions .= (($per & 0x0002) ? 'w' : '-');
$permissions .= (($per & 0x0001) ?
(($per & 0x0200) ? 't' : 'x') :
(($per & 0x0200) ? 'T' : '-'));
return $permissions;
}
}

View File

@@ -362,6 +362,16 @@ EOT
CLI::taskArg('workspace');
CLI::taskRun("run_sync_forms_with_info_from_input_documents");
/**
* Remove the deprecated files
*/
CLI::taskName('remove-unused-files');
CLI::taskDescription(<<<EOT
Remove the deprecated files.
EOT
);
CLI::taskRun("remove_deprecated_files");
/**
* Function run_info
*
@@ -1348,3 +1358,18 @@ function run_sync_forms_with_info_from_input_documents($args, $opts) {
}
}
}
/**
* Remove the deprecated files
*
* @return void
* @see workflow/engine/bin/tasks/cliWorkspaces.php CLI::taskRun()
* @link https://wiki.processmaker.com/3.3/processmaker_command
*/
function remove_deprecated_files()
{
//The constructor requires an argument, so we send an empty value in order to use the class.
$workspaceTools = new WorkspaceTools('');
$workspaceTools->removeDeprecatedFiles();
CLI::logging("<*> The deprecated files has been removed. \n");
}

View File

@@ -1,67 +0,0 @@
<?php
/**
* data_usersList.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* 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.
*/
isset( $_POST['textFilter'] ) ? $filter = $_POST['textFilter'] : $filter = '';
$sDelimiter = DBAdapter::getStringDelimiter();
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$sDataBase = 'database_' . strtolower( DB_ADAPTER );
if (G::LoadSystemExist( $sDataBase )) {
$oDataBase = new database();
$oCriteria->addAsColumn( 'USR_COMPLETENAME', $oDataBase->concatString( "USR_LASTNAME", "' '", "USR_FIRSTNAME" ) );
//$oCriteria->addAsColumn('USR_PHOTO', $oDataBase->concatString("'".PATH_IMAGES_ENVIRONMENT_USERS."'", "USR_UID","'.gif'"));
}
$oCriteria->addSelectColumn( UsersPeer::USR_USERNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_EMAIL );
$oCriteria->addSelectColumn( UsersPeer::USR_ROLE );
$oCriteria->addSelectColumn( UsersPeer::USR_DUE_DATE );
//$oCriteria->addAsColumn('USR_VIEW', $sDelimiter . G::LoadTranslation('ID_DETAIL') . $sDelimiter);
//$oCriteria->addAsColumn('USR_EDIT', $sDelimiter . G::LoadTranslation('ID_EDIT') . $sDelimiter);
//$oCriteria->addAsColumn('USR_DELETE', $sDelimiter . G::LoadTranslation('ID_DELETE') . $sDelimiter);
//$oCriteria->addAsColumn('USR_AUTH', $sDelimiter . G::LoadTranslation('ID_AUTHENTICATION') . $sDelimiter);
//$oCriteria->addAsColumn('USR_REASSIGN', $sDelimiter . G::LoadTranslation('ID_REASSIGN_CASES') . $sDelimiter);
$oCriteria->add( UsersPeer::USR_STATUS, array ('CLOSED'
), Criteria::NOT_IN );
if ($filter != '') {
$cc = $oCriteria->getNewCriterion( UsersPeer::USR_USERNAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_FIRSTNAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_LASTNAME, '%' . $filter . '%', Criteria::LIKE ) ) );
$oCriteria->add( $cc );
//echo $oCriteria->toString();
}
$rs = UsersPeer::DoSelectRS( $oCriteria, Propel::getDbConnection('workflow_ro') );
$rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$rows = Array ();
while ($rs->next()) {
$rows[] = $rs->getRow();
// if (!file_exists($aux['USR_PHOTO'])) $aux['USR_PHOTO'] = 'public_html/images/user.gif';
// $rows[] = $aux;
}
echo '{users: ' . G::json_encode( $rows ) . '}';