Merged colosa/processmaker into master

This commit is contained in:
Quenta Ronald
2015-06-26 13:48:50 -04:00
56 changed files with 17143 additions and 5171 deletions

View File

@@ -0,0 +1,167 @@
<?php
try {
//Set variables
$osIsLinux = strtoupper(substr(PHP_OS, 0, 3)) != "WIN";
//Defines constants
define("PATH_SEP", ($osIsLinux)? "/" : "\\");
$arrayPathToCron = array();
$flagPathToCron = false;
if (!$flagPathToCron) {
//Path to CRON by __FILE__
$arrayAux = explode(PATH_SEP, str_replace("engine" . PATH_SEP . "bin", "", dirname(__FILE__)));
array_pop($arrayAux);
if (count($arrayAux) > 0 && $arrayAux[count($arrayAux) - 1] == "workflow") {
$arrayPathToCron = $arrayAux;
$flagPathToCron = true;
}
}
if (!$flagPathToCron) {
throw new Exception("Error: Unable to execute the LDAP Advanced CRON, the path is incorrect");
}
$pathHome = implode(PATH_SEP, $arrayPathToCron) . PATH_SEP;
array_pop($arrayPathToCron);
$pathTrunk = implode(PATH_SEP, $arrayPathToCron) . PATH_SEP;
array_pop($arrayPathToCron);
$pathOutTrunk = implode(PATH_SEP, $arrayPathToCron) . PATH_SEP;
define("PATH_HOME", $pathHome);
define("PATH_TRUNK", $pathTrunk);
define("PATH_OUTTRUNK", $pathOutTrunk);
//Check deprecated files
$fileBinDeprecated = PATH_HOME . "engine" . PATH_SEP . "bin" . PATH_SEP . "plugins" . PATH_SEP . "ldapadvanced.php";
if (file_exists($fileBinDeprecated)) {
@unlink($fileBinDeprecated);
if (file_exists($fileBinDeprecated)) {
throw new Exception("Error: LDAP Advanced CRON requires that the \"$fileBinDeprecated\" file has been deleted.");
}
}
//Include files
require_once(PATH_HOME . "engine" . PATH_SEP . "config" . PATH_SEP . "paths.php");
G::LoadClass("system");
$config = System::getSystemConfiguration();
ini_set("date.timezone", $config["time_zone"]);
//CRON command options
$arrayCommandOption = array(
"force" => "+force",
"debug" => "+debug"
);
//CRON status
$flagIsRunning = false;
$lastExecution = "";
$processcTimeProcess = 0;
$processcTimeStart = 0;
$force = in_array($arrayCommandOption["force"], $argv);
$debug = in_array($arrayCommandOption["debug"], $argv);
if (!$force && file_exists(PATH_DATA . "ldapcron")) {
//Windows flag
//Get data of CRON file
$arrayCron = unserialize(trim(file_get_contents(PATH_DATA . "ldapcron")));
$flagIsRunning = (boolean)($arrayCron["flagIsRunning"]);
$lastExecution = $arrayCron["lastExecution"];
$processcTimeProcess = (isset($arrayCron["processcTimeProcess"]))? (int)($arrayCron["processcTimeProcess"]) : 10; //Minutes
$processcTimeStart = (isset($arrayCron["processcTimeStart"]))? $arrayCron["processcTimeStart"] : 0;
}
if (!$force && $osIsLinux) {
//Linux flag
//Check if CRON it's running
exec("ps -fea | grep ldapcron.php | grep -v grep", $arrayOutput);
//This validation is when the CRON is called from a symlink
$count = 0;
foreach ($arrayOutput as $value) {
if (preg_match("/^.*ldapcron\.php.*$/", $value)) {
$count++;
}
}
if ($count > 1) {
$flagIsRunning = true;
}
}
if ($force || !$flagIsRunning) {
//Start CRON
$arrayCron = array("flagIsRunning" => "1", "lastExecution" => date("Y-m-d H:i:s"));
file_put_contents(PATH_DATA . "ldapcron", serialize($arrayCron));
try {
$ldapCronSinglePath = PATH_HOME . "engine" . PATH_SEP . "bin" . PATH_SEP . "ldapcron_single.php";
$workspace = "";
for ($i = 1; $i <= count($argv) - 1; $i++) {
if (preg_match("/^\+w(.+)$/", $argv[$i], $arrayMatch)) {
$workspace = $arrayMatch[1];
break;
}
}
$countw = 0;
if ($workspace == "") {
$d = dir(PATH_DB);
while (($entry = $d->read()) !== false) {
if ($entry != "" && $entry != "." && $entry != "..") {
if (is_dir(PATH_DB . $entry)) {
if (file_exists(PATH_DB . $entry . PATH_SEP . "db.php")) {
$countw++;
passthru("php -f \"$ldapCronSinglePath\" " . (($debug)? 1 : 0) . " $entry \"" . base64_encode(PATH_HOME) . "\" \"" . base64_encode(PATH_TRUNK) . "\" \"" . base64_encode(PATH_OUTTRUNK) . "\"");
}
}
}
}
} else {
if (!is_dir(PATH_DB . $workspace) || !file_exists(PATH_DB . $workspace . PATH_SEP . "db.php")) {
throw new Exception("Error: The workspace \"$workspace\" does not exist");
}
$countw++;
passthru("php -f \"$ldapCronSinglePath\" " . (($debug)? 1 : 0) . " $workspace \"" . base64_encode(PATH_HOME) . "\" \"" . base64_encode(PATH_TRUNK) . "\" \"" . base64_encode(PATH_OUTTRUNK) . "\"");
}
eprintln("Finished $countw workspaces processed");
} catch (Exception $e) {
throw $e;
}
//End CRON
$arrayCron = array("flagIsRunning" => "0", "lastExecution" => date("Y-m-d H:i:s"));
file_put_contents(PATH_DATA . "ldapcron", serialize($arrayCron));
} else {
eprintln("The LDAP Advanced CRON is running, please wait for it to finish\nStarted in $lastExecution");
eprintln("If do you want force the execution use the option \"" . $arrayCommandOption["force"] . "\", example: php -f ldapcron.php +wworkflow " . $arrayCommandOption["force"] ,"green");
}
echo "Done!\n";
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}

View File

@@ -0,0 +1,489 @@
<?php
register_shutdown_function(
create_function(
"",
"
if (class_exists(\"Propel\")) {
Propel::close();
}
"
)
);
ini_set("memory_limit", "512M");
try {
//Verify data
if (count($argv) != 6) {
throw new Exception("Error: Invalid number of arguments");
}
for ($i = 3; $i <= count($argv) - 1; $i++) {
$argv[$i] = base64_decode($argv[$i]);
if (!is_dir($argv[$i])) {
throw new Exception("Error: The path \"" . $argv[$i] . "\" is invalid");
}
}
//Set variables
$osIsLinux = strtoupper(substr(PHP_OS, 0, 3)) != "WIN";
$pathHome = $argv[3];
$pathTrunk = $argv[4];
$pathOutTrunk = $argv[5];
//Defines constants
define("PATH_SEP", ($osIsLinux)? "/" : "\\");
define("PATH_HOME", $pathHome);
define("PATH_TRUNK", $pathTrunk);
define("PATH_OUTTRUNK", $pathOutTrunk);
define("PATH_CLASSES", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP);
define("SYS_LANG", "en");
require_once(PATH_HOME . "engine" . PATH_SEP . "config" . PATH_SEP . "paths.php");
if (file_exists(PATH_TRUNK . "framework" . PATH_SEP . "src" . PATH_SEP . "Maveriks" . PATH_SEP . "Util" . PATH_SEP . "ClassLoader.php")) {
require_once(PATH_TRUNK . "framework" . PATH_SEP . "src" . PATH_SEP . "Maveriks" . PATH_SEP . "Util" . PATH_SEP . "ClassLoader.php");
}
G::LoadThirdParty("pear/json", "class.json");
G::LoadThirdParty("smarty/libs", "Smarty.class");
G::LoadSystem("error");
G::LoadSystem("dbconnection");
G::LoadSystem("dbsession");
G::LoadSystem("dbrecordset");
G::LoadSystem("dbtable");
G::LoadSystem("rbac" );
G::LoadSystem("publisher");
G::LoadSystem("templatePower");
G::LoadSystem("xmlDocument");
G::LoadSystem("xmlform");
G::LoadSystem("xmlformExtension");
G::LoadSystem("form");
G::LoadSystem("menu");
G::LoadSystem("xmlMenu");
G::LoadSystem("dvEditor");
G::LoadSystem("table");
G::LoadSystem("pagedTable");
G::LoadClass("system");
require_once("propel/Propel.php");
require_once("creole/Creole.php");
$config = System::getSystemConfiguration();
$e_all = (defined("E_DEPRECATED"))? E_ALL & ~E_DEPRECATED : E_ALL;
$e_all = (defined("E_STRICT"))? $e_all & ~E_STRICT : $e_all;
$e_all = ($config["debug"])? $e_all : $e_all & ~E_NOTICE;
//Do not change any of these settings directly, use env.ini instead
ini_set("display_errors", $config["debug"]);
ini_set("error_reporting", $e_all);
ini_set("short_open_tag", "On");
ini_set("default_charset", "UTF-8");
//ini_set("memory_limit", $config["memory_limit"]);
ini_set("soap.wsdl_cache_enabled", $config["wsdl_cache"]);
ini_set("date.timezone", $config["time_zone"]);
define("DEBUG_SQL_LOG", $config["debug_sql"]);
define("DEBUG_TIME_LOG", $config["debug_time"]);
define("DEBUG_CALENDAR_LOG", $config["debug_calendar"]);
define("MEMCACHED_ENABLED", $config["memcached"]);
define("MEMCACHED_SERVER", $config["memcached_server"]);
define("TIME_ZONE", $config["time_zone"]);
require_once(PATH_GULLIVER . PATH_SEP . "class.bootstrap.php");
//define("PATH_GULLIVER_HOME", PATH_TRUNK . "gulliver" . PATH_SEP);
spl_autoload_register(array("Bootstrap", "autoloadClass"));
//DATABASE propel classes used in "Cases" Options
if (file_exists(PATH_CLASSES . "class.licensedFeatures.php")) {
Bootstrap::registerClass("PMLicensedFeatures", PATH_CLASSES . "class.licensedFeatures.php");
}
Bootstrap::registerClass("serverConf", PATH_CLASSES . "class.serverConfiguration.php");
Bootstrap::registerClass("Entity_Base", PATH_HOME . "engine/classes/entities/Base.php");
Bootstrap::registerClass("BaseContent", PATH_HOME . "engine/classes/model/om/BaseContent.php");
Bootstrap::registerClass("Content", PATH_HOME . "engine/classes/model/Content.php");
Bootstrap::registerClass("BaseContentPeer", PATH_HOME . "engine/classes/model/om/BaseContentPeer.php");
Bootstrap::registerClass("ContentPeer", PATH_HOME . "engine/classes/model/ContentPeer.php");
//Bootstrap::registerClass("BaseApplication", PATH_HOME . "engine/classes/model/om/BaseApplication.php");
//Bootstrap::registerClass("ApplicationPeer", PATH_HOME . "engine/classes/model/ApplicationPeer.php");
//Bootstrap::registerClass("Application", PATH_HOME . "engine/classes/model/Application.php");
//
//Bootstrap::registerClass("BaseAppDelegation", PATH_HOME . "engine/classes/model/om/BaseAppDelegation.php");
//Bootstrap::registerClass("BaseHoliday", PATH_HOME . "engine/classes/model/om/BaseHoliday.php");
//Bootstrap::registerClass("BaseHolidayPeer", PATH_HOME . "engine/classes/model/om/BaseHolidayPeer.php");
//Bootstrap::registerClass("BaseTask", PATH_HOME . "engine/classes/model/om/BaseTask.php");
//Bootstrap::registerClass("BaseTaskPeer", PATH_HOME . "engine/classes/model/om/BaseTaskPeer.php");
//Bootstrap::registerClass("HolidayPeer", PATH_HOME . "engine/classes/model/HolidayPeer.php");
//Bootstrap::registerClass("Holiday", PATH_HOME . "engine/classes/model/Holiday.php");
//Bootstrap::registerClass("Task", PATH_HOME . "engine/classes/model/Task.php");
//Bootstrap::registerClass("TaskPeer", PATH_HOME . "engine/classes/model/TaskPeer.php");
//Bootstrap::registerClass("dates", PATH_HOME . "engine/classes/class.dates.php");
//Bootstrap::registerClass("calendar", PATH_HOME . "engine/classes/class.calendar.php");
//Bootstrap::registerClass("AppDelegation", PATH_HOME . "engine/classes/model/AppDelegation.php");
//Bootstrap::registerClass("BaseAppDelegationPeer", PATH_HOME . "engine/classes/model/om/BaseAppDelegationPeer.php");
//Bootstrap::registerClass("AppDelegationPeer", PATH_HOME . "engine/classes/model/AppDelegationPeer.php");
//Bootstrap::registerClass("BaseAppDelay", PATH_HOME . "engine/classes/model/om/BaseAppDelay.php");
//Bootstrap::registerClass("AppDelayPeer", PATH_HOME . "engine/classes/model/AppDelayPeer.php");
//Bootstrap::registerClass("AppDelay", PATH_HOME . "engine/classes/model/AppDelay.php");
//Bootstrap::registerClass("BaseAdditionalTables", PATH_HOME . "engine/classes/model/om/BaseAdditionalTables.php");
//Bootstrap::registerClass("AdditionalTables", PATH_HOME . "engine/classes/model/AdditionalTables.php");
//Bootstrap::registerClass("BaseAppCacheView", PATH_HOME . "engine/classes/model/om/BaseAppCacheView.php");
//Bootstrap::registerClass("AppCacheView", PATH_HOME . "engine/classes/model/AppCacheView.php");
//Bootstrap::registerClass("BaseAppCacheViewPeer", PATH_HOME . "engine/classes/model/om/BaseAppCacheViewPeer.php");
//Bootstrap::registerClass("AppCacheViewPeer", PATH_HOME . "engine/classes/model/AppCacheViewPeer.php");
//
//Bootstrap::registerClass("BaseAppTimeoutActionExecuted", PATH_HOME . "engine/classes/model/om/BaseAppTimeoutActionExecuted.php");
//Bootstrap::registerClass("AppTimeoutActionExecuted", PATH_HOME . "engine/classes/model/AppTimeoutActionExecuted.php");
//Bootstrap::registerClass("BaseAppTimeoutActionExecutedPeer", PATH_HOME . "engine/classes/model/om/BaseAppTimeoutActionExecutedPeer.php");
//Bootstrap::registerClass("AppTimeoutActionExecutedPeer", PATH_HOME . "engine/classes/model/AppTimeoutActionExecutedPeer.php");
//
//Bootstrap::registerClass("BaseInputDocument", PATH_HOME . "engine/classes/model/om/BaseInputDocument.php");
//Bootstrap::registerClass("InputDocument", PATH_HOME . "engine/classes/model/InputDocument.php");
//Bootstrap::registerClass("BaseAppDocument", PATH_HOME . "engine/classes/model/om/BaseAppDocument.php");
//Bootstrap::registerClass("AppDocument", PATH_HOME . "engine/classes/model/AppDocument.php");
//Bootstrap::registerClass("AppDocumentPeer", PATH_HOME . "engine/classes/model/AppDocumentPeer.php");
//
//Bootstrap::registerClass("BaseAppEvent", PATH_HOME . "engine/classes/model/om/BaseAppEvent.php");
//Bootstrap::registerClass("AppEvent", PATH_HOME . "engine/classes/model/AppEvent.php");
//Bootstrap::registerClass("AppEventPeer", PATH_HOME . "engine/classes/model/AppEventPeer.php");
//
//Bootstrap::registerClass("BaseAppHistory", PATH_HOME . "engine/classes/model/om/BaseAppHistory.php");
//Bootstrap::registerClass("AppHistory", PATH_HOME . "engine/classes/model/AppHistory.php");
//Bootstrap::registerClass("AppHistoryPeer", PATH_HOME . "engine/classes/model/AppHistoryPeer.php");
//
//Bootstrap::registerClass("BaseAppFolder", PATH_HOME . "engine/classes/model/om/BaseAppFolder.php");
//Bootstrap::registerClass("AppFolder", PATH_HOME . "engine/classes/model/AppFolder.php");
//Bootstrap::registerClass("AppFolderPeer", PATH_HOME . "engine/classes/model/AppFolderPeer.php");
//
//Bootstrap::registerClass("BaseAppMessage", PATH_HOME . "engine/classes/model/om/BaseAppMessage.php");
//Bootstrap::registerClass("AppMessage", PATH_HOME . "engine/classes/model/AppMessage.php");
//
//Bootstrap::registerClass("BaseAppMessagePeer", PATH_HOME . "engine/classes/model/om/BaseAppMessagePeer.php");
//Bootstrap::registerClass("AppMessagePeer", PATH_HOME . "engine/classes/model/AppMessagePeer.php");
//
//Bootstrap::registerClass("BaseAppNotesPeer", PATH_HOME . "engine/classes/model/om/BaseAppNotesPeer.php");
//Bootstrap::registerClass("AppNotesPeer", PATH_HOME . "engine/classes/model/AppNotesPeer.php");
//
//Bootstrap::registerClass("BaseAppNotes", PATH_HOME . "engine/classes/model/om/BaseAppNotes.php");
//Bootstrap::registerClass("AppNotes", PATH_HOME . "engine/classes/model/AppNotes.php");
//
//Bootstrap::registerClass("BaseAppOwner", PATH_HOME . "engine/classes/model/om/BaseAppOwner.php");
//Bootstrap::registerClass("AppOwner", PATH_HOME . "engine/classes/model/AppOwner.php");
//Bootstrap::registerClass("AppOwnerPeer", PATH_HOME . "engine/classes/model/AppOwnerPeer.php");
//
//Bootstrap::registerClass("BaseAppSolrQueue", PATH_HOME . "engine/classes/model/om/BaseAppSolrQueue.php");
//Bootstrap::registerClass("Entity_AppSolrQueue", PATH_HOME . "engine/classes/entities/AppSolrQueue.php");
//Bootstrap::registerClass("AppSolrQueue", PATH_HOME . "engine/classes/model/AppSolrQueue.php");
//Bootstrap::registerClass("AppSolrQueuePeer", PATH_HOME . "engine/classes/model/AppSolrQueuePeer.php");
//
//Bootstrap::registerClass("BaseAppThread", PATH_HOME . "engine/classes/model/om/BaseAppThread.php");
//Bootstrap::registerClass("AppThread", PATH_HOME . "engine/classes/model/AppThread.php");
//Bootstrap::registerClass("AppThreadPeer", PATH_HOME . "engine/classes/model/AppThreadPeer.php");
//
//Bootstrap::registerClass("BaseCaseScheduler", PATH_HOME . "engine/classes/model/om/BaseCaseScheduler.php");
//Bootstrap::registerClass("CaseScheduler", PATH_HOME . "engine/classes/model/CaseScheduler.php");
//
//Bootstrap::registerClass("BaseCaseSchedulerPeer",PATH_HOME . "engine/classes/model/om/BaseCaseSchedulerPeer.php");
//Bootstrap::registerClass("CaseSchedulerPeer", PATH_HOME . "engine/classes/model/CaseSchedulerPeer.php");
//
//Bootstrap::registerClass("BaseCaseTracker", PATH_HOME . "engine/classes/model/om/BaseCaseTracker.php");
//Bootstrap::registerClass("CaseTracker", PATH_HOME . "engine/classes/model/CaseTracker.php");
//
//Bootstrap::registerClass("BaseCaseTrackerPeer", PATH_HOME . "engine/classes/model/om/BaseCaseTrackerPeer.php");
//Bootstrap::registerClass("CaseTrackerPeer", PATH_HOME . "engine/classes/model/CaseTrackerPeer.php");
//
//Bootstrap::registerClass("BaseCaseTrackerObject",PATH_HOME . "engine/classes/model/om/BaseCaseTrackerObject.php");
//Bootstrap::registerClass("CaseTrackerObject", PATH_HOME . "engine/classes/model/CaseTrackerObject.php");
//
//Bootstrap::registerClass("BaseCaseTrackerObjectPeer",PATH_HOME . "engine/classes/model/om/BaseCaseTrackerObjectPeer.php");
//Bootstrap::registerClass("CaseTrackerObjectPeer", PATH_HOME . "engine/classes/model/CaseTrackerObjectPeer.php");
Bootstrap::registerClass("BaseDbSource", PATH_HOME . "engine/classes/model/om/BaseDbSource.php");
Bootstrap::registerClass("DbSource", PATH_HOME . "engine/classes/model/DbSource.php");
//Bootstrap::registerClass("XMLDB", PATH_HOME . "engine/classes/class.xmlDb.php");
//Bootstrap::registerClass("dynaFormHandler", PATH_GULLIVER . "class.dynaformhandler.php");
//Bootstrap::registerClass("DynaFormField", PATH_HOME . "engine/classes/class.dynaFormField.php");
//Bootstrap::registerClass("BaseDynaform", PATH_HOME . "engine/classes/model/om/BaseDynaform.php");
//Bootstrap::registerClass("Dynaform", PATH_HOME . "engine/classes/model/Dynaform.php");
//Bootstrap::registerClass("DynaformPeer", PATH_HOME . "engine/classes/model/DynaformPeer.php");
//
//Bootstrap::registerClass("BaseEvent", PATH_HOME . "engine/classes/model/om/BaseEvent.php");
//Bootstrap::registerClass("Event", PATH_HOME . "engine/classes/model/Event.php");
//
//Bootstrap::registerClass("BaseEventPeer", PATH_HOME . "engine/classes/model/om/BaseEventPeer.php");
//Bootstrap::registerClass("EventPeer", PATH_HOME . "engine/classes/model/EventPeer.php");
//
//Bootstrap::registerClass("BaseFields", PATH_HOME . "engine/classes/model/om/BaseFields.php");
//Bootstrap::registerClass("Fields", PATH_HOME . "engine/classes/model/Fields.php");
//
//Bootstrap::registerClass("BaseGateway", PATH_HOME . "engine/classes/model/om/BaseGateway.php");
//Bootstrap::registerClass("Gateway", PATH_HOME . "engine/classes/model/Gateway.php");
Bootstrap::registerClass("BaseGroupUser", PATH_HOME . "engine/classes/model/om/BaseGroupUser.php");
Bootstrap::registerClass("Groupwf", PATH_HOME . "engine/classes/model/Groupwf.php");
Bootstrap::registerClass("GroupUser", PATH_HOME . "engine/classes/model/GroupUser.php");
Bootstrap::registerClass("BaseGroupUserPeer", PATH_HOME . "engine/classes/model/om/BaseGroupUserPeer.php");
Bootstrap::registerClass("GroupUserPeer", PATH_HOME . "engine/classes/model/GroupUserPeer.php");
Bootstrap::registerClass("BaseGroupwfPeer", PATH_HOME . "engine/classes/model/om/BaseGroupwfPeer.php");
Bootstrap::registerClass("GroupwfPeer", PATH_HOME . "engine/classes/model/GroupwfPeer.php");
//Bootstrap::registerClass("BaseInputDocumentPeer", PATH_HOME . "engine/classes/model/om/BaseInputDocumentPeer.php");
//Bootstrap::registerClass("InputDocumentPeer", PATH_HOME . "engine/classes/model/InputDocumentPeer.php");
Bootstrap::registerClass("BaseIsoCountry", PATH_HOME . "engine/classes/model/om/BaseIsoCountry.php");
Bootstrap::registerClass("IsoCountry", PATH_HOME . "engine/classes/model/IsoCountry.php");
Bootstrap::registerClass("BaseTranslation", PATH_HOME . "engine/classes/model/om/BaseTranslation.php");
Bootstrap::registerClass("Translation", PATH_HOME . "engine/classes/model/Translation.php");
//Bootstrap::registerClass("BaseLogCasesScheduler", PATH_HOME . "engine/classes/model/om/BaseLogCasesScheduler.php");
//Bootstrap::registerClass("LogCasesScheduler", PATH_HOME . "engine/classes/model/LogCasesScheduler.php");
//
//Bootstrap::registerClass("BaseObjectPermission",PATH_HOME . "engine/classes/model/om/BaseObjectPermission.php");
//Bootstrap::registerClass("ObjectPermission", PATH_HOME . "engine/classes/model/ObjectPermission.php");
//Bootstrap::registerClass("ObjectPermissionPeer",PATH_HOME . "engine/classes/model/ObjectPermissionPeer.php");
//
//Bootstrap::registerClass("BaseOutputDocument", PATH_HOME . "engine/classes/model/om/BaseOutputDocument.php");
//Bootstrap::registerClass("OutputDocument", PATH_HOME . "engine/classes/model/OutputDocument.php");
//Bootstrap::registerClass("OutputDocumentPeer", PATH_HOME . "engine/classes/model/OutputDocumentPeer.php");
//
//Bootstrap::registerClass("BaseProcess", PATH_HOME . "engine/classes/model/om/BaseProcess.php");
//Bootstrap::registerClass("BaseProcessCategory", PATH_HOME . "engine/classes/model/om/BaseProcessCategory.php");
//Bootstrap::registerClass("ProcessCategory", PATH_HOME . "engine/classes/model/ProcessCategory.php");
//Bootstrap::registerClass("ProcessCategoryPeer", PATH_HOME . "engine/classes/model/ProcessCategoryPeer.php");
//Bootstrap::registerClass("ProcessPeer", PATH_HOME . "engine/classes/model/ProcessPeer.php");
//Bootstrap::registerClass("Process", PATH_HOME . "engine/classes/model/Process.php");
//
//Bootstrap::registerClass("BaseProcessUser", PATH_HOME . "engine/classes/model/om/BaseProcessUser.php");
//Bootstrap::registerClass("ProcessUser", PATH_HOME . "engine/classes/model/ProcessUser.php");
//
//Bootstrap::registerClass("BaseProcessUserPeer", PATH_HOME . "engine/classes/model/om/BaseProcessUserPeer.php");
//Bootstrap::registerClass("ProcessUserPeer", PATH_HOME . "engine/classes/model/ProcessUserPeer.php");
//
//Bootstrap::registerClass("BaseReportTable", PATH_HOME . "engine/classes/model/om/BaseReportTable.php");
//Bootstrap::registerClass("ReportTable", PATH_HOME . "engine/classes/model/ReportTable.php");
//Bootstrap::registerClass("ReportTablePeer", PATH_HOME . "engine/classes/model/ReportTablePeer.php");
//
//Bootstrap::registerClass("BaseReportVar", PATH_HOME . "engine/classes/model/om/BaseReportVar.php");
//Bootstrap::registerClass("ReportVar", PATH_HOME . "engine/classes/model/ReportVar.php");
//
//Bootstrap::registerClass("BaseReportVarPeer", PATH_HOME . "engine/classes/model/om/BaseReportVarPeer.php");
//Bootstrap::registerClass("ReportVarPeer", PATH_HOME . "engine/classes/model/ReportVarPeer.php");
//
//Bootstrap::registerClass("BaseRoute", PATH_HOME . "engine/classes/model/om/BaseRoute.php");
//Bootstrap::registerClass("Route", PATH_HOME . "engine/classes/model/Route.php");
//Bootstrap::registerClass("RoutePeer", PATH_HOME . "engine/classes/model/RoutePeer.php");
//
//Bootstrap::registerClass("BaseStep", PATH_HOME . "engine/classes/model/om/BaseStep.php");
//Bootstrap::registerClass("Step", PATH_HOME . "engine/classes/model/Step.php");
//Bootstrap::registerClass("StepPeer", PATH_HOME . "engine/classes/model/StepPeer.php");
//
//Bootstrap::registerClass("BaseStepSupervisor", PATH_HOME . "engine/classes/model/om/BaseStepSupervisor.php");
//Bootstrap::registerClass("StepSupervisor", PATH_HOME . "engine/classes/model/StepSupervisor.php");
//
//Bootstrap::registerClass("BaseStepSupervisorPeer", PATH_HOME . "engine/classes/model/om/BaseStepSupervisorPeer.php");
//Bootstrap::registerClass("StepSupervisorPeer", PATH_HOME . "engine/classes/model/StepSupervisorPeer.php");
//
//Bootstrap::registerClass("BaseStepTrigger", PATH_HOME . "engine/classes/model/om/BaseStepTrigger.php");
//Bootstrap::registerClass("StepTrigger", PATH_HOME . "engine/classes/model/StepTrigger.php");
//Bootstrap::registerClass("StepTriggerPeer", PATH_HOME . "engine/classes/model/StepTriggerPeer.php");
//
//Bootstrap::registerClass("SolrRequestData", PATH_HOME . "engine/classes/entities/SolrRequestData.php");
//
//Bootstrap::registerClass("SolrUpdateDocument", PATH_HOME . "engine/classes/entities/SolrUpdateDocument.php");
//
//Bootstrap::registerClass("BaseSwimlanesElements",PATH_HOME . "engine/classes/model/om/BaseSwimlanesElements.php");
//Bootstrap::registerClass("SwimlanesElements", PATH_HOME . "engine/classes/model/SwimlanesElements.php");
//Bootstrap::registerClass("BaseSwimlanesElementsPeer", PATH_HOME ."engine/classes/model/om/BaseSwimlanesElementsPeer.php");
//Bootstrap::registerClass("SwimlanesElementsPeer",PATH_HOME . "engine/classes/model/SwimlanesElementsPeer.php");
//
//Bootstrap::registerClass("BaseSubApplication", PATH_HOME . "engine/classes/model/om/BaseSubApplication.php");
//Bootstrap::registerClass("SubApplication", PATH_HOME . "engine/classes/model/SubApplication.php");
//Bootstrap::registerClass("SubApplicationPeer", PATH_HOME . "engine/classes/model/SubApplicationPeer.php");
//
//Bootstrap::registerClass("BaseSubProcess", PATH_HOME . "engine/classes/model/om/BaseSubProcess.php");
//Bootstrap::registerClass("SubProcess", PATH_HOME . "engine/classes/model/SubProcess.php");
//
//Bootstrap::registerClass("BaseSubProcessPeer", PATH_HOME . "engine/classes/model/om/BaseSubProcessPeer.php");
//Bootstrap::registerClass("SubProcessPeer", PATH_HOME . "engine/classes/model/SubProcessPeer.php");
//
//Bootstrap::registerClass("BaseTask", PATH_HOME . "engine/classes/model/om/BaseTask.php");
//Bootstrap::registerClass("Task", PATH_HOME . "engine/classes/model/Task.php");
//
//Bootstrap::registerClass("BaseTaskUser", PATH_HOME . "engine/classes/model/om/BaseTaskUser.php");
//Bootstrap::registerClass("TaskUserPeer", PATH_HOME . "engine/classes/model/TaskUserPeer.php");
//Bootstrap::registerClass("TaskUser", PATH_HOME . "engine/classes/model/TaskUser.php");
//
//Bootstrap::registerClass("BaseTriggers", PATH_HOME . "engine/classes/model/om/BaseTriggers.php");
//Bootstrap::registerClass("Triggers", PATH_HOME . "engine/classes/model/Triggers.php");
//Bootstrap::registerClass("BaseTriggersPeer", PATH_HOME . "engine/classes/model/om/BaseTriggersPeer.php");
//Bootstrap::registerClass("TriggersPeer", PATH_HOME . "engine/classes/model/TriggersPeer.php");
Bootstrap::registerClass("IsoCountry", PATH_HOME . "engine/classes/model/IsoCountry.php");
Bootstrap::registerClass("BaseIsoSubdivision", PATH_HOME . "engine/classes/model/om/BaseIsoSubdivision.php");
Bootstrap::registerClass("IsoSubdivision", PATH_HOME . "engine/classes/model/IsoSubdivision.php");
Bootstrap::registerClass("BaseIsoLocation", PATH_HOME . "engine/classes/model/om/BaseIsoLocation.php");
Bootstrap::registerClass("IsoLocation", PATH_HOME . "engine/classes/model/IsoLocation.php");
Bootstrap::registerClass("Users", PATH_HOME . "engine/classes/model/Users.php");
Bootstrap::registerClass("UsersPeer", PATH_HOME . "engine/classes/model/UsersPeer.php");
Bootstrap::registerClass("BaseUsers", PATH_HOME . "engine/classes/model/om/BaseUsers.php");
Bootstrap::registerClass("AuthenticationSourcePeer", PATH_RBAC . "model" . PATH_SEP . "AuthenticationSourcePeer.php");
Bootstrap::registerClass("BaseAuthenticationSource", PATH_RBAC . "model" . PATH_SEP . "om" . PATH_SEP . "BaseAuthenticationSource.php");
Bootstrap::registerClass("AuthenticationSource", PATH_RBAC . "model" . PATH_SEP . "AuthenticationSource.php");
Bootstrap::registerClass("RolesPeer", PATH_RBAC . "model" . PATH_SEP . "RolesPeer.php");
Bootstrap::registerClass("BaseRoles", PATH_RBAC . "model" . PATH_SEP . "om" . PATH_SEP . "BaseRoles.php");
Bootstrap::registerClass("Roles", PATH_RBAC . "model" . PATH_SEP . "Roles.php");
//Bootstrap::registerClass("UsersRolesPeer", PATH_RBAC . "model" . PATH_SEP . "UsersRolesPeer.php");
//Bootstrap::registerClass("BaseUsersRoles", PATH_RBAC . "model" . PATH_SEP . "om" . PATH_SEP . "BaseUsersRoles.php");
//Bootstrap::registerClass("UsersRoles", PATH_RBAC . "model" . PATH_SEP . "UsersRoles.php");
require_once(PATH_RBAC . "model" . PATH_SEP . "UsersRolesPeer.php");
require_once(PATH_RBAC . "model" . PATH_SEP . "om" . PATH_SEP . "BaseUsersRoles.php");
require_once(PATH_RBAC . "model" . PATH_SEP . "UsersRoles.php");
$arrayClass = array("Configuration", "Language");
if (file_exists(PATH_CORE . "classes" . PATH_SEP . "model" . PATH_SEP . "AddonsManager.php")) {
$arrayClass[] = "AddonsManager";
}
foreach ($arrayClass as $value) {
Bootstrap::registerClass("Base" . $value, PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "om" . PATH_SEP . "Base" . $value . ".php");
Bootstrap::registerClass($value, PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . $value . ".php");
Bootstrap::registerClass("Base" . $value . "Peer", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "om" . PATH_SEP . "Base" . $value . "Peer.php");
Bootstrap::registerClass($value . "Peer", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . $value . "Peer.php");
}
//Bootstrap::registerClass("Xml_Node", PATH_GULLIVER . "class.xmlDocument.php");
//
//Bootstrap::registerClass("wsResponse", PATH_HOME . "engine/classes/class.wsResponse.php");
//
//G::LoadClass("dates");
Bootstrap::registerClass("groups", PATH_CLASSES . "class.groups.php");
$workflow = $argv[2];
if (is_dir(PATH_DB . $workflow) && file_exists(PATH_DB . $workflow . PATH_SEP . "db.php")) {
define("SYS_SYS", $workflow);
include_once(PATH_HOME . "engine" . PATH_SEP . "config" . PATH_SEP . "paths_installed.php");
include_once(PATH_HOME . "engine" . PATH_SEP . "config" . PATH_SEP . "paths.php");
//PM Paths DATA
define("PATH_DATA_SITE", PATH_DATA . "sites/" . SYS_SYS . "/");
define("PATH_DOCUMENT", PATH_DATA_SITE . "files/");
define("PATH_DATA_MAILTEMPLATES", PATH_DATA_SITE . "mailTemplates/");
define("PATH_DATA_PUBLIC", PATH_DATA_SITE . "public/");
define("PATH_DATA_REPORTS", PATH_DATA_SITE . "reports/");
define("PATH_DYNAFORM", PATH_DATA_SITE . "xmlForms/");
define("PATH_IMAGES_ENVIRONMENT_FILES", PATH_DATA_SITE . "usersFiles" . PATH_SEP);
define("PATH_IMAGES_ENVIRONMENT_USERS", PATH_DATA_SITE . "usersPhotographies" . PATH_SEP);
if (is_file(PATH_DATA_SITE.PATH_SEP . ".server_info")) {
$SERVER_INFO = file_get_contents(PATH_DATA_SITE.PATH_SEP.".server_info");
$SERVER_INFO = unserialize($SERVER_INFO);
define("SERVER_NAME", $SERVER_INFO ["SERVER_NAME"]);
define("SERVER_PORT", $SERVER_INFO ["SERVER_PORT"]);
} else {
eprintln("WARNING! No server info found!", "red");
}
//DB
$phpCode = "";
$fileDb = fopen(PATH_DB . $workflow . PATH_SEP . "db.php", "r");
if ($fileDb) {
while (!feof($fileDb)) {
$buffer = fgets($fileDb, 4096); //Read a line
$phpCode .= preg_replace("/define\s*\(\s*[\x22\x27](.*)[\x22\x27]\s*,\s*(\x22.*\x22|\x27.*\x27)\s*\)\s*;/i", "\$$1 = $2;", $buffer);
}
fclose($fileDb);
}
$phpCode = str_replace(array("<?php", "<?", "?>"), array("", "", ""), $phpCode);
eval($phpCode);
$dsn = $DB_ADAPTER . "://" . $DB_USER . ":" . $DB_PASS . "@" . $DB_HOST . "/" . $DB_NAME;
$dsnRbac = $DB_ADAPTER . "://" . $DB_RBAC_USER . ":" . $DB_RBAC_PASS . "@" . $DB_RBAC_HOST . "/" . $DB_RBAC_NAME;
$dsnRp = $DB_ADAPTER . "://" . $DB_REPORT_USER . ":" . $DB_REPORT_PASS . "@" . $DB_REPORT_HOST . "/" . $DB_REPORT_NAME;
switch ($DB_ADAPTER) {
case "mysql":
$dsn .= "?encoding=utf8";
$dsnRbac .= "?encoding=utf8";
break;
case "mssql":
//$dsn .= "?sendStringAsUnicode=false";
//$dsnRbac .= "?sendStringAsUnicode=false";
break;
default:
break;
}
$pro = array();
$pro["datasources"]["workflow"]["connection"] = $dsn;
$pro["datasources"]["workflow"]["adapter"] = $DB_ADAPTER;
$pro["datasources"]["rbac"]["connection"] = $dsnRbac;
$pro["datasources"]["rbac"]["adapter"] = $DB_ADAPTER;
$pro["datasources"]["rp"]["connection"] = $dsnRp;
$pro["datasources"]["rp"]["adapter"] = $DB_ADAPTER;
//$pro["datasources"]["dbarray"]["connection"] = "dbarray://user:pass@localhost/pm_os";
//$pro["datasources"]["dbarray"]["adapter"] = "dbarray";
$oFile = fopen(PATH_CORE . "config" . PATH_SEP . "_databases_.php", "w");
fwrite($oFile, "<?php global \$pro; return \$pro; ?>");
fclose($oFile);
Propel::init(PATH_CORE . "config" . PATH_SEP . "_databases_.php");
//Creole::registerDriver("dbarray", "creole.contrib.DBArrayConnection");
//Enable RBAC
Bootstrap::LoadSystem("rbac");
$rbac = &RBAC::getSingleton(PATH_DATA, session_id());
$rbac->sSystem = "PROCESSMAKER";
eprintln("Processing workspace: " . $workflow, "green");
try {
require_once(PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.ldapAdvanced.php");
require_once(PATH_HOME . "engine" . PATH_SEP . "methods" . PATH_SEP . "services" . PATH_SEP . "ldapadvanced.php");
$obj = new ldapadvancedClassCron();
$obj->executeCron((bool)($argv[1]));
} catch (Exception $e) {
echo $e->getMessage() . "\n";
eprintln("Problem in workspace: " . $workflow . " it was omitted.", "red");
}
eprintln();
}
if (file_exists(PATH_CORE . "config" . PATH_SEP . "_databases_.php")) {
unlink(PATH_CORE . "config" . PATH_SEP . "_databases_.php");
}
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}

View File

@@ -249,7 +249,7 @@ class Cases
$rows[] = array('uid' => 'char', 'value' => 'char');
$tasks = array();
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "SCRIPT-TASK");
$c = new Criteria();
$c->clearSelectColumns();
@@ -7014,4 +7014,3 @@ class Cases
return $unserializedData;
}
}

View File

@@ -112,7 +112,7 @@ class Derivation
$arrayTaskData["NEXT_TASK"]["TAS_PARENT"] = "";
}
$arrayTaskData["NEXT_TASK"]["USER_ASSIGNED"] = (!in_array($arrayTaskData["NEXT_TASK"]["TAS_TYPE"], array("GATEWAYTOGATEWAY", "END-MESSAGE-EVENT")))? $this->getNextAssignedUser($arrayTaskData) : array("USR_UID" => "");
$arrayTaskData["NEXT_TASK"]["USER_ASSIGNED"] = (!in_array($arrayTaskData["NEXT_TASK"]["TAS_TYPE"], array("GATEWAYTOGATEWAY", "END-MESSAGE-EVENT", "SCRIPT-TASK", "END-EMAIL-EVENT")))? $this->getNextAssignedUser($arrayTaskData) : array("USR_UID" => "", "USR_FULLNAME" => "");
}
//Return
@@ -219,7 +219,7 @@ class Derivation
$arrayNextTask[++$i] = $this->prepareInformationTask($arrayNextTaskDefault);
}
//Check Task GATEWAYTOGATEWAY or END-MESSAGE-EVENT
//Check Task GATEWAYTOGATEWAY or END-MESSAGE-EVENT or END-EMAIL-EVENT
$arrayNextTaskBackup = $arrayNextTask;
$arrayNextTask = array();
$i = 0;
@@ -228,7 +228,7 @@ class Derivation
$arrayNextTaskData = $value;
if ($arrayNextTaskData["NEXT_TASK"]["TAS_UID"] != "-1" &&
in_array($arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"], array("GATEWAYTOGATEWAY", "END-MESSAGE-EVENT"))
in_array($arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"], array("GATEWAYTOGATEWAY", "END-MESSAGE-EVENT", "END-EMAIL-EVENT"))
) {
$arrayAux = $this->prepareInformation($arrayData, $arrayNextTaskData["NEXT_TASK"]["TAS_UID"]);
@@ -236,8 +236,8 @@ class Derivation
$arrayNextTask[++$i] = $value2;
}
} else {
if ($arrayNextTaskData["TAS_TYPE"] == "END-MESSAGE-EVENT" &&
$arrayNextTaskData["NEXT_TASK"]["TAS_UID"] == "-1"
if (in_array($arrayNextTaskData["TAS_TYPE"], array("END-MESSAGE-EVENT", "END-EMAIL-EVENT")) &&
$arrayNextTaskData["NEXT_TASK"]["TAS_UID"] == "-1"
) {
$arrayNextTaskData["NEXT_TASK"]["TAS_UID"] = $arrayNextTaskData["TAS_UID"] . "/" . $arrayNextTaskData["NEXT_TASK"]["TAS_UID"];
}
@@ -575,7 +575,7 @@ class Derivation
* @param array $nextDelegations
* @return void
*/
function derivate ($currentDelegation = array(), $nextDelegations = array())
function derivate ($currentDelegation = array(), $nextDelegations = array(), $removeList = true)
{
//define this...
if (! defined( 'TASK_FINISH_PROCESS' )) {
@@ -587,15 +587,19 @@ class Derivation
$this->case = new cases();
//first, we close the current derivation, then we'll try to derivate to each defined route
//Get data for this DEL_INDEX current
$appFields = $this->case->loadCase( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] );
//We close the current derivation, then we'll try to derivate to each defined route
$this->case->CloseCurrentDelegation( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] );
//Count how many tasks should be derivated.
//$countNextTask = count($nextDelegations);
$removeList = true;
//$removeList = true;
foreach ($nextDelegations as $nextDel) {
//BpmnEvent - END-MESSAGE-EVENT - Check and get unique id
//BpmnEvent - END-EMAIL-EVENT - Check and get unique id
if (preg_match("/^(.{32})\/(\-1)$/", $nextDel["TAS_UID"], $arrayMatch)) {
$nextDel["TAS_UID"] = $arrayMatch[2];
$nextDel["TAS_UID_DUMMY"] = $arrayMatch[1];
@@ -640,15 +644,31 @@ class Derivation
$this->case->closeAllThreads( $currentDelegation['APP_UID'] );
//I think we need to change the APP_STATUS to completed,
//Throw Message-Events - BpmnEvent - END-MESSAGE-EVENT
//BpmnEvent - END-MESSAGE-EVENT and END-EMAIL-EVENT
if (isset($nextDel["TAS_UID_DUMMY"])) {
$case = new \ProcessMaker\BusinessModel\Cases();
$case->throwMessageEventBetweenElementOriginAndElementDest(
$currentDelegation["TAS_UID"],
$nextDel["TAS_UID_DUMMY"],
$appFields
);
$taskDummy = TaskPeer::retrieveByPK($nextDel["TAS_UID_DUMMY"]);
switch ($taskDummy->getTasType()) {
case "END-MESSAGE-EVENT":
//Throw Message-Events - BpmnEvent - END-MESSAGE-EVENT
$case = new \ProcessMaker\BusinessModel\Cases();
$case->throwMessageEventBetweenElementOriginAndElementDest(
$currentDelegation["TAS_UID"],
$nextDel["TAS_UID_DUMMY"],
$appFields
);
break;
case "END-EMAIL-EVENT":
//Email Event
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
$emailEvent->emailEventBetweenElementOriginAndElementDest(
$currentDelegation["TAS_UID"],
$nextDel["TAS_UID_DUMMY"],
$appFields
);
break;
}
}
break;
case TASK_FINISH_TASK:
@@ -706,31 +726,79 @@ class Derivation
} //end switch
if ($canDerivate) {
$aSP = isset( $aSP ) ? $aSP : null;
$iNewDelIndex = $this->doDerivation( $currentDelegation, $nextDel, $appFields, $aSP );
//Throw Message-Events
$case = new \ProcessMaker\BusinessModel\Cases();
$case->throwMessageEventBetweenElementOriginAndElementDest(
$case->throwMessageEventBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields);
//Email Event
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
$emailEvent->emailEventBetweenElementOriginAndElementDest(
$currentDelegation["TAS_UID"],
$nextDel["TAS_UID"],
$appFields
);
//Derivate
$aSP = isset( $aSP ) ? $aSP : null;
$taskNextDel = \TaskPeer::retrieveByPK($nextDel["TAS_UID"]);
if (!is_null($taskNextDel) && $taskNextDel->getTasType() == "SCRIPT-TASK") {
if (!isset($nextDel["USR_UID"])) {
$nextDel["USR_UID"] = "";
}
}
$iNewDelIndex = $this->doDerivation( $currentDelegation, $nextDel, $appFields, $aSP );
//Execute Script-Task
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
$appFields = $scriptTask->execScriptByActivityUid($nextDel["TAS_UID"], $appFields);
//Create record in table APP_ASSIGN_SELF_SERVICE_VALUE
$task = new Task();
$arrayNextTaskData = $task->load($nextDel["TAS_UID"]);
if ($arrayNextTaskData["TAS_ASSIGN_TYPE"] == "SELF_SERVICE" && trim($arrayNextTaskData["TAS_GROUP_VARIABLE"]) != "") {
$nextTaskGroupVariable = trim($arrayNextTaskData["TAS_GROUP_VARIABLE"], " @#");
if (!in_array($arrayNextTaskData["TAS_TYPE"], array("SCRIPT-TASK"))) {
if ($arrayNextTaskData["TAS_ASSIGN_TYPE"] == "SELF_SERVICE" && trim($arrayNextTaskData["TAS_GROUP_VARIABLE"]) != "") {
$nextTaskGroupVariable = trim($arrayNextTaskData["TAS_GROUP_VARIABLE"], " @#");
if (isset($appFields["APP_DATA"][$nextTaskGroupVariable]) && trim($appFields["APP_DATA"][$nextTaskGroupVariable]) != "") {
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
if (isset($appFields["APP_DATA"][$nextTaskGroupVariable]) && trim($appFields["APP_DATA"][$nextTaskGroupVariable]) != "") {
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
$appAssignSelfServiceValue->create($appFields["APP_UID"], $iNewDelIndex, array("PRO_UID" => $appFields["PRO_UID"], "TAS_UID" => $nextDel["TAS_UID"], "GRP_UID" => trim($appFields["APP_DATA"][$nextTaskGroupVariable])));
$appAssignSelfServiceValue->create($appFields["APP_UID"], $iNewDelIndex, array("PRO_UID" => $appFields["PRO_UID"], "TAS_UID" => $nextDel["TAS_UID"], "GRP_UID" => trim($appFields["APP_DATA"][$nextTaskGroupVariable])));
}
}
}
//Check if $nextDel["TAS_UID"] is Script-Task
if (!is_null($taskNextDel) && $taskNextDel->getTasType() == "SCRIPT-TASK") {
$this->case->CloseCurrentDelegation($currentDelegation["APP_UID"], $iNewDelIndex);
//Get for $nextDel["TAS_UID"] your next Task
$taskNextDelNextDelegations = $this->prepareInformation(array(
"USER_UID" => $_SESSION["USER_LOGGED"],
"APP_UID" => $_SESSION["APPLICATION"],
"DEL_INDEX" => $iNewDelIndex
));
//New next delegation
$newNextDelegation = array();
$newNextDelegation[1] = array(
"TAS_UID" => $taskNextDelNextDelegations[1]["NEXT_TASK"]["TAS_UID"],
"USR_UID" => $taskNextDelNextDelegations[1]["NEXT_TASK"]["USER_ASSIGNED"]["USR_UID"],
"TAS_ASSIGN_TYPE" => $taskNextDelNextDelegations[1]["NEXT_TASK"]["TAS_ASSIGN_TYPE"],
"TAS_DEF_PROC_CODE" => "",
"DEL_PRIORITY" => "",
"TAS_PARENT" => ""
);
$this->derivate($currentDelegation, $newNextDelegation, $removeList);
}
} else {
//when the task doesnt generate a new AppDelegation
$iAppThreadIndex = $appFields['DEL_THREAD'];
@@ -763,7 +831,9 @@ class Derivation
} elseif ($nextDel['TAS_UID'] != '-1') {
$taskNex = TaskPeer::retrieveByPK($nextDel['TAS_UID']);
$aTask = $taskNex->toArray( BasePeer::TYPE_FIELDNAME );
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "SCRIPT-TASK");
if (!in_array($aTask['TAS_TYPE'], $arrayTaskTypeToExclude)) {
if (!empty($iNewDelIndex) && empty($aSP)) {
$oAppDel = AppDelegationPeer::retrieveByPK( $appFields['APP_UID'], $iNewDelIndex );
@@ -777,7 +847,6 @@ class Derivation
$aFields['REMOVED_LIST'] = $removeList;
$inbox = new ListInbox();
$inbox->newRow($aFields, $appFields['CURRENT_USER_UID'], false, array(), ($nextDel['TAS_ASSIGN_TYPE'] == 'SELF_SERVICE' ? true : false));
$removeList = false;
} else {
if (empty($aSP)) {
$oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']);
@@ -791,18 +860,24 @@ class Derivation
}
}
} else {
$oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']);
$aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME );
$users = new Users();
if ($aFields['APP_STATUS'] == 'DRAFT') {
$users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft');
} else {
$users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox');
if (!in_array($aTask['TAS_TYPE'], array("SCRIPT-TASK"))) {
$oRow = ApplicationPeer::retrieveByPK($appFields["APP_UID"]);
$aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME );
$users = new Users();
if ($aFields["APP_STATUS"] == "DRAFT") {
$users->refreshTotal($appFields["CURRENT_USER_UID"], "remove", "draft");
} else {
$users->refreshTotal($appFields["CURRENT_USER_UID"], "remove", "inbox");
}
}
}
}
/*----------------------------------********---------------------------------*/
unset( $aSP );
$removeList = false;
} //end foreach
/* Start Block : UPDATES APPLICATION */
@@ -909,16 +984,16 @@ class Derivation
$aNewCase = $this->case->startCase( $aSP['TAS_UID'], $aSP['USR_UID'], true, $appFields);
//Create record in table APP_ASSIGN_SELF_SERVICE_VALUE
$taskSub = new Task();
$taskSub = new Task();
$arrayNextTaskData = $taskSub->load($aSP["TAS_UID"]);
if ($arrayNextTaskData["TAS_ASSIGN_TYPE"] == "SELF_SERVICE" && trim($arrayNextTaskData["TAS_GROUP_VARIABLE"]) != "") {
$nextTaskGroupVariable = trim($arrayNextTaskData["TAS_GROUP_VARIABLE"], " @#");
$nextTaskGroupVariable = trim($arrayNextTaskData["TAS_GROUP_VARIABLE"], " @#");
if (isset($appFields["APP_DATA"][$nextTaskGroupVariable]) && trim($appFields["APP_DATA"][$nextTaskGroupVariable]) != "") {
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
$appAssignSelfServiceValue->create($aNewCase['APPLICATION'], $aNewCase['INDEX'], array("PRO_UID" => $aNewCase['PROCESS'], "TAS_UID" => $aSP["TAS_UID"], "GRP_UID" => trim($appFields["APP_DATA"][$nextTaskGroupVariable])));
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
$appAssignSelfServiceValue->create($aNewCase['APPLICATION'], $aNewCase['INDEX'], array("PRO_UID" => $aNewCase['PROCESS'], "TAS_UID" => $aSP["TAS_UID"], "GRP_UID" => trim($appFields["APP_DATA"][$nextTaskGroupVariable])));
}
}
//Copy case variables to sub-process case
@@ -1043,14 +1118,14 @@ class Derivation
$oCase->updateCase( $aSA['APP_PARENT'], $aParentCase );
/*----------------------------------********---------------------------------*/
$inbox = new ListInbox();
$inbox->update($aParentCase);
$inbox->update($aParentCase);
/*----------------------------------********---------------------------------*/
//Update table SUB_APPLICATION
$oSubApplication = new SubApplication();
$oSubApplication->update( array ('APP_UID' => $sApplicationUID,'APP_PARENT' => $aSA['APP_PARENT'],'DEL_INDEX_PARENT' => $aSA['DEL_INDEX_PARENT'],'DEL_THREAD_PARENT' => $aSA['DEL_THREAD_PARENT'],'SA_STATUS' => 'FINISHED','SA_VALUES_IN' => serialize( $aNewFields ),'SA_FINISH_DATE' => date( 'Y-m-d H:i:s' )
) );
//Derive the parent case
$aDeriveTasks = $this->prepareInformation( array ('USER_UID' => - 1,'APP_UID' => $aSA['APP_PARENT'],'DEL_INDEX' => $aSA['DEL_INDEX_PARENT']
) );
@@ -1215,4 +1290,3 @@ class Derivation
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -197,6 +197,40 @@ class PMLicensedFeatures
"type" => "features",
"url" => "",
"version" => ""
),
10 => array(
"description" => "This plugin will synchronize ProcessMaker with an LDAP or Active Directory server for user authentication.",
"enabled" => false,
"id" => "ldapAdvanced",
"latest_version" => "",
"log" => null,
"name" => "ldapAdvanced",
"nick" => "ldapAdvanced",
"progress" => 0,
"publisher" => "Colosa",
"release_type" => "localRegistry",
"status" => "ready",
"store" => "00000000000000000000000000010010",
"type" => "features",
"url" => "",
"version" => ""
),
11 => array(
"description" => "SSO with an LDAP provider.",
"enabled" => false,
"id" => "windowsSSO",
"latest_version" => "",
"log" => null,
"name" => "windowsSSO",
"nick" => "windowsSSO",
"progress" => 0,
"publisher" => "Colosa",
"release_type" => "localRegistry",
"status" => "ready",
"store" => "00000000000000000000000000010011",
"type" => "features",
"url" => "",
"version" => ""
)
);

View File

@@ -0,0 +1,76 @@
<?php
/**
* class.pmSso.php
*
*/
G::LoadClass ('pmFunctions');
class pmSsoClass extends PMPlugin {
function __construct() {
}
function setup()
{
}
function getFieldsForPageSetup()
{
}
function updateFieldsForPageSetup()
{
}
function ssocVerifyUser(){
$RBAC = RBAC::getSingleton();
$RBAC->initRBAC();
$res = false;
$server = $_SERVER['SERVER_SOFTWARE'];
$webserver = explode("/", $server);
if(isset($_SERVER['REMOTE_USER']) && $_SERVER['REMOTE_USER'] !=''){
// IIS Verification
if (!is_array($webserver) || (is_array($webserver) && ($webserver[0] == 'Microsoft-IIS'))){
$userFull = $_SERVER['REMOTE_USER'];
$userPN = explode("\\", $userFull);
if (is_array($userPN)){
$user = $userPN[1];
} else {
$user = $userFull;
}
} else {
$userFull = $_SERVER['REMOTE_USER'];
$user = $_SERVER['REMOTE_USER'];
}
// End IIS Verification
$resVerifyUser = $RBAC->verifyUser($user);
if ($resVerifyUser == 0) {
// Here we are checking if the automatic user Register is enabled, ioc return -1
$fakepswd = G::generate_password();
$res = $RBAC->checkAutomaticRegister($user, $fakepswd);
if ($res === -1) {
return false; // No successful auto register, skipping the auto register and back to normal login form
}
$RBAC->verifyUser($user);
}
if (!isset($RBAC->userObj->fields['USR_STATUS']) || $RBAC->userObj->fields['USR_STATUS'] == 0) {
$errLabel = 'ID_USER_INACTIVE';
G::SendTemporalMessage($errLabel, "warning");
return false;
}
$users = new Users();
$criteria = $users->loadByUsername($user);
$dataset = SubApplicationPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if ($dataset->next()) {
$dataUser = $dataset->getRow();
$RBAC->singleSignOn = true;
$RBAC->userObj->fields['USR_UID'] = $dataUser['USR_UID'];
$RBAC->userObj->fields['USR_USERNAME'] = $user;
$res = true;
}
}
return $res;
}
}
?>

View File

@@ -847,6 +847,18 @@ class Processes
$oData->messageType[$key]["PRJ_UID"] = $sNewProUid;
}
}
if (isset($oData->emailEvent)) {
foreach ($oData->emailEvent as $key => $value) {
$oData->emailEvent[$key]["PRJ_UID"] = $sNewProUid;
}
}
if (isset($oData->filesManager)) {
foreach ($oData->filesManager as $key => $value) {
$oData->filesManager[$key]["PRO_UID"] = $sNewProUid;
}
}
return true;
}
@@ -1996,6 +2008,19 @@ class Processes
$oData->process[$key] = $map[$oData->process[$key]];
}
}
//Script-Task
if (isset($oData->scriptTask)) {
foreach ($oData->scriptTask as $key => $value) {
$record = $value;
if (isset($map[$record["SCRTAS_OBJ_UID"]])) {
$newUid = $map[$record["SCRTAS_OBJ_UID"]];
$oData->scriptTask[$key]["SCRTAS_OBJ_UID"] = $newUid;
}
}
}
}
/**
@@ -2376,7 +2401,7 @@ class Processes
throw $e;
}
}
/**
* Renew the GUID's for all the Uids for all the elements
*
@@ -3155,6 +3180,88 @@ class Processes
throw $e;
}
}
public function getEmailEvent($processUid)
{
try {
$arrayEmailEvent = array();
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
$criteria = $emailEvent->getEmailEventCriteria();
//Get data
$criteria->add(EmailEventPeer::PRJ_UID, $processUid, Criteria::EQUAL);
$rsCriteria = EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
while ($aRow = $rsCriteria->getRow()) {
$arrayEmailEvent[] = $aRow;
$rsCriteria->next();
}
//Return
return $arrayEmailEvent;
} catch (Exception $e) {
throw $e;
}
}
public function getFilesManager($processUid)
{
try {
$arrayFilesManager = array();
//Get data
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_UID);
$criteria->addSelectColumn(\ProcessFilesPeer::PRO_UID);
$criteria->addSelectColumn(\ProcessFilesPeer::USR_UID);
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_UPDATE_USR_UID);
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_PATH);
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_TYPE);
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_EDITABLE);
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_CREATE_DATE);
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_UPDATE_DATE);
$criteria->add(ProcessFilesPeer::PRO_UID, $processUid, Criteria::EQUAL);
$rsCriteria = ProcessFilesPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
while ($aRow = $rsCriteria->getRow()) {
$arrayFilesManager[] = $aRow;
$rsCriteria->next();
}
//Return
return $arrayFilesManager;
} catch (Exception $e) {
throw $e;
}
}
public function getScriptTasks($processUid)
{
try {
$arrayScriptTask = array();
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
//Get data
$criteria = $scriptTask->getScriptTaskCriteria();
$criteria->add(\ScriptTaskPeer::PRJ_UID, $processUid, \Criteria::EQUAL);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$arrayScriptTask[] = $row;
}
//Return
return $arrayScriptTask;
} catch (Exception $e) {
throw $e;
}
}
/**
* Get Task User Rows from an array of data
@@ -3421,6 +3528,71 @@ class Processes
throw $e;
}
}
/**
* Create Email-event records
*
* @param string $processUid Unique id of Process
* @param array $arrayData Data
*
* return void
*/
public function createEmailEvent($processUid, array $arrayData)
{
try {
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
foreach ($arrayData as $value) {
$emailEventData = $emailEvent->save($processUid, $value);
}
} catch (Exception $e) {
throw $e;
}
}
/**
* Create Files Manager records
*
* @param string $processUid Unique id of Process
* @param array $arrayData Data
*
* return void
*/
public function createFilesManager($processUid, array $arrayData)
{
try {
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
foreach ($arrayData as $value) {
$filesManager->addProcessFilesManagerInDb($value);
}
} catch (Exception $e) {
throw $e;
}
}
/**
* Create Script-Task records
*
* @param string $processUid Unique id of Process
* @param array $arrayData Data
*
* return void
*/
public function createScriptTask($processUid, array $arrayData)
{
try {
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
foreach ($arrayData as $value) {
$record = $value;
$result = $scriptTask->create($processUid, $record);
}
} catch (Exception $e) {
//throw $e;
}
}
/**
* Cleanup Report Tables References from an array of data
@@ -3611,6 +3783,9 @@ class Processes
$oData->messageType = $this->getMessageTypes($sProUid);
$oData->messageTypeVariable = $this->getMessageTypeVariables($sProUid);
$oData->messageEventDefinition = $this->getMessageEventDefinitions($sProUid);
$oData->scriptTask = $this->getScriptTasks($sProUid);
$oData->emailEvent = $this->getEmailEvent($sProUid);
$oData->filesManager = $this->getFilesManager($sProUid);
$oData->groupwfs = $this->groupwfsMerge($oData->groupwfs, $oData->processUser, "USR_UID");
$oData->process["PRO_TYPE_PROCESS"] = "PUBLIC";
@@ -4710,9 +4885,11 @@ class Processes
$this->createMessageType((isset($oData->messageType))? $oData->messageType : array());
$this->createMessageTypeVariable((isset($oData->messageTypeVariable))? $oData->messageTypeVariable : array());
$this->createMessageEventDefinition($arrayProcessData["PRO_UID"], (isset($oData->messageEventDefinition))? $oData->messageEventDefinition : array());
$this->createScriptTask($arrayProcessData["PRO_UID"], (isset($oData->scriptTask))? $oData->scriptTask : array());
$this->createEmailEvent($arrayProcessData["PRO_UID"], (isset($oData->emailEvent))? $oData->emailEvent : array());
$this->createFilesManager($arrayProcessData["PRO_UID"], (isset($oData->filesManager))? $oData->filesManager : array());
}
/**
* this function creates a new Process, defined in the object $oData
*
@@ -5279,4 +5456,3 @@ class ObjectCellection
}
}
}

View File

@@ -0,0 +1,19 @@
<?php
require_once 'classes/model/om/BaseEmailEvent.php';
/**
* Skeleton subclass for representing a row from the 'EMAIL_EVENT' table.
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
* @package classes.model
*/
class EmailEvent extends BaseEmailEvent {
} // EmailEvent

View File

@@ -0,0 +1,23 @@
<?php
// include base peer class
require_once 'classes/model/om/BaseEmailEventPeer.php';
// include object class
include_once 'classes/model/EmailEvent.php';
/**
* Skeleton subclass for performing query and update operations on the 'EMAIL_EVENT' table.
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
* long as it does not already exist in the output directory.
*
* @package classes.model
*/
class EmailEventPeer extends BaseEmailEventPeer {
} // EmailEventPeer

View File

@@ -0,0 +1,5 @@
<?php
class ScriptTask extends BaseScriptTask
{
}

View File

@@ -0,0 +1,5 @@
<?php
class ScriptTaskPeer extends BaseScriptTaskPeer
{
}

View File

@@ -0,0 +1,84 @@
<?php
require_once 'propel/map/MapBuilder.php';
include_once 'creole/CreoleTypes.php';
/**
* This class adds structure of 'EMAIL_EVENT' table to 'workflow' DatabaseMap object.
*
*
*
* These statically-built map classes are used by Propel to do runtime db structure discovery.
* For example, the createSelectSql() method checks the type of a given column used in an
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
* (i.e. if it's a text column type).
*
* @package workflow.classes.model.map
*/
class EmailEventMapBuilder
{
/**
* The (dot-path) name of this class
*/
const CLASS_NAME = 'classes.model.map.EmailEventMapBuilder';
/**
* The database map.
*/
private $dbMap;
/**
* Tells us if this DatabaseMapBuilder is built so that we
* don't have to re-build it every time.
*
* @return boolean true if this DatabaseMapBuilder is built, false otherwise.
*/
public function isBuilt()
{
return ($this->dbMap !== null);
}
/**
* Gets the databasemap this map builder built.
*
* @return the databasemap
*/
public function getDatabaseMap()
{
return $this->dbMap;
}
/**
* The doBuild() method builds the DatabaseMap
*
* @return void
* @throws PropelException
*/
public function doBuild()
{
$this->dbMap = Propel::getDatabaseMap('workflow');
$tMap = $this->dbMap->addTable('EMAIL_EVENT');
$tMap->setPhpName('EmailEvent');
$tMap->setUseIdGenerator(false);
$tMap->addPrimaryKey('EMAIL_EVENT_UID', 'EmailEventUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('PRJ_UID', 'PrjUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('EVN_UID', 'EvnUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('EMAIL_EVENT_FROM', 'EmailEventFrom', 'string', CreoleTypes::VARCHAR, true, 100);
$tMap->addColumn('EMAIL_EVENT_TO', 'EmailEventTo', 'string', CreoleTypes::LONGVARCHAR, true, null);
$tMap->addColumn('EMAIL_EVENT_SUBJECT', 'EmailEventSubject', 'string', CreoleTypes::VARCHAR, false, 150);
$tMap->addColumn('PRF_UID', 'PrfUid', 'string', CreoleTypes::VARCHAR, false, 32);
} // doBuild()
} // EmailEventMapBuilder

View File

@@ -0,0 +1,82 @@
<?php
require_once 'propel/map/MapBuilder.php';
include_once 'creole/CreoleTypes.php';
/**
* This class adds structure of 'SCRIPT_TASK' table to 'workflow' DatabaseMap object.
*
*
*
* These statically-built map classes are used by Propel to do runtime db structure discovery.
* For example, the createSelectSql() method checks the type of a given column used in an
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
* (i.e. if it's a text column type).
*
* @package workflow.classes.model.map
*/
class ScriptTaskMapBuilder
{
/**
* The (dot-path) name of this class
*/
const CLASS_NAME = 'classes.model.map.ScriptTaskMapBuilder';
/**
* The database map.
*/
private $dbMap;
/**
* Tells us if this DatabaseMapBuilder is built so that we
* don't have to re-build it every time.
*
* @return boolean true if this DatabaseMapBuilder is built, false otherwise.
*/
public function isBuilt()
{
return ($this->dbMap !== null);
}
/**
* Gets the databasemap this map builder built.
*
* @return the databasemap
*/
public function getDatabaseMap()
{
return $this->dbMap;
}
/**
* The doBuild() method builds the DatabaseMap
*
* @return void
* @throws PropelException
*/
public function doBuild()
{
$this->dbMap = Propel::getDatabaseMap('workflow');
$tMap = $this->dbMap->addTable('SCRIPT_TASK');
$tMap->setPhpName('ScriptTask');
$tMap->setUseIdGenerator(false);
$tMap->addPrimaryKey('SCRTAS_UID', 'ScrtasUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('PRJ_UID', 'PrjUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('ACT_UID', 'ActUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('SCRTAS_OBJ_TYPE', 'ScrtasObjType', 'string', CreoleTypes::VARCHAR, true, 10);
$tMap->addColumn('SCRTAS_OBJ_UID', 'ScrtasObjUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addValidator('SCRTAS_OBJ_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'TRIGGER', 'Please set a valid value for TMREVN_DEF_STATUS');
} // doBuild()
} // ScriptTaskMapBuilder

View File

@@ -159,13 +159,13 @@ class TaskMapBuilder
$tMap->addColumn('TAS_SELFSERVICE_EXECUTION', 'TasSelfserviceExecution', 'string', CreoleTypes::VARCHAR, false, 15);
$tMap->addValidator('TAS_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT', 'Please enter a valid value for TAS_TYPE');
$tMap->addValidator('TAS_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT|SCRIPT-TASK|END-EMAIL-EVENT', 'Please enter a valid value for TAS_TYPE');
$tMap->addValidator('TAS_TIMEUNIT', 'validValues', 'propel.validator.ValidValuesValidator', 'MINUTES|HOURS|DAYS|WEEKS|MONTHS', 'Please select a valid value for TAS_TIMEUNIT.');
$tMap->addValidator('TAS_ALERT', 'validValues', 'propel.validator.ValidValuesValidator', 'TRUE|FALSE', 'Please select a valid value for TAS_ALERT.');
$tMap->addValidator('TAS_ASSIGN_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'BALANCED|MANUAL|EVALUATE|REPORT_TO|SELF_SERVICE|STATIC_MI|CANCEL_MI', 'Please select a valid value for TAS_ASSIGN_TYPE.');
$tMap->addValidator('TAS_ASSIGN_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'BALANCED|MANUAL|EVALUATE|REPORT_TO|SELF_SERVICE|STATIC_MI|CANCEL_MI', 'Please select a valid value for TAS_ASSIGN_TYPE.');
$tMap->addValidator('TAS_ASSIGN_LOCATION', 'validValues', 'propel.validator.ValidValuesValidator', 'TRUE|FALSE', 'Please select a valid value for TAS_ASSIGN_LOCATION.');
@@ -199,4 +199,4 @@ class TaskMapBuilder
} // doBuild()
} // TaskMapBuilder
} // TaskMapBuilder

View File

@@ -0,0 +1,858 @@
<?php
require_once 'propel/om/BaseObject.php';
require_once 'propel/om/Persistent.php';
include_once 'propel/util/Criteria.php';
include_once 'classes/model/EmailEventPeer.php';
/**
* Base class that represents a row from the 'EMAIL_EVENT' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseEmailEvent extends BaseObject implements Persistent
{
/**
* The Peer class.
* Instance provides a convenient way of calling static methods on a class
* that calling code may not be able to identify.
* @var EmailEventPeer
*/
protected static $peer;
/**
* The value for the email_event_uid field.
* @var string
*/
protected $email_event_uid;
/**
* The value for the prj_uid field.
* @var string
*/
protected $prj_uid = '';
/**
* The value for the evn_uid field.
* @var string
*/
protected $evn_uid;
/**
* The value for the email_event_from field.
* @var string
*/
protected $email_event_from = '';
/**
* The value for the email_event_to field.
* @var string
*/
protected $email_event_to;
/**
* The value for the email_event_subject field.
* @var string
*/
protected $email_event_subject = '';
/**
* The value for the prf_uid field.
* @var string
*/
protected $prf_uid = '';
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
* @var boolean
*/
protected $alreadyInSave = false;
/**
* Flag to prevent endless validation loop, if this object is referenced
* by another object which falls in this transaction.
* @var boolean
*/
protected $alreadyInValidation = false;
/**
* Get the [email_event_uid] column value.
*
* @return string
*/
public function getEmailEventUid()
{
return $this->email_event_uid;
}
/**
* Get the [prj_uid] column value.
*
* @return string
*/
public function getPrjUid()
{
return $this->prj_uid;
}
/**
* Get the [evn_uid] column value.
*
* @return string
*/
public function getEvnUid()
{
return $this->evn_uid;
}
/**
* Get the [email_event_from] column value.
*
* @return string
*/
public function getEmailEventFrom()
{
return $this->email_event_from;
}
/**
* Get the [email_event_to] column value.
*
* @return string
*/
public function getEmailEventTo()
{
return $this->email_event_to;
}
/**
* Get the [email_event_subject] column value.
*
* @return string
*/
public function getEmailEventSubject()
{
return $this->email_event_subject;
}
/**
* Get the [prf_uid] column value.
*
* @return string
*/
public function getPrfUid()
{
return $this->prf_uid;
}
/**
* Set the value of [email_event_uid] column.
*
* @param string $v new value
* @return void
*/
public function setEmailEventUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->email_event_uid !== $v) {
$this->email_event_uid = $v;
$this->modifiedColumns[] = EmailEventPeer::EMAIL_EVENT_UID;
}
} // setEmailEventUid()
/**
* Set the value of [prj_uid] column.
*
* @param string $v new value
* @return void
*/
public function setPrjUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->prj_uid !== $v || $v === '') {
$this->prj_uid = $v;
$this->modifiedColumns[] = EmailEventPeer::PRJ_UID;
}
} // setPrjUid()
/**
* Set the value of [evn_uid] column.
*
* @param string $v new value
* @return void
*/
public function setEvnUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->evn_uid !== $v) {
$this->evn_uid = $v;
$this->modifiedColumns[] = EmailEventPeer::EVN_UID;
}
} // setEvnUid()
/**
* Set the value of [email_event_from] column.
*
* @param string $v new value
* @return void
*/
public function setEmailEventFrom($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->email_event_from !== $v || $v === '') {
$this->email_event_from = $v;
$this->modifiedColumns[] = EmailEventPeer::EMAIL_EVENT_FROM;
}
} // setEmailEventFrom()
/**
* Set the value of [email_event_to] column.
*
* @param string $v new value
* @return void
*/
public function setEmailEventTo($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->email_event_to !== $v) {
$this->email_event_to = $v;
$this->modifiedColumns[] = EmailEventPeer::EMAIL_EVENT_TO;
}
} // setEmailEventTo()
/**
* Set the value of [email_event_subject] column.
*
* @param string $v new value
* @return void
*/
public function setEmailEventSubject($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->email_event_subject !== $v || $v === '') {
$this->email_event_subject = $v;
$this->modifiedColumns[] = EmailEventPeer::EMAIL_EVENT_SUBJECT;
}
} // setEmailEventSubject()
/**
* Set the value of [prf_uid] column.
*
* @param string $v new value
* @return void
*/
public function setPrfUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->prf_uid !== $v || $v === '') {
$this->prf_uid = $v;
$this->modifiedColumns[] = EmailEventPeer::PRF_UID;
}
} // setPrfUid()
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
* An offset (1-based "start column") is specified so that objects can be hydrated
* with a subset of the columns in the resultset rows. This is needed, for example,
* for results of JOIN queries where the resultset row includes columns from two or
* more tables.
*
* @param ResultSet $rs The ResultSet class with cursor advanced to desired record pos.
* @param int $startcol 1-based offset column which indicates which restultset column to start with.
* @return int next starting column
* @throws PropelException - Any caught Exception will be rewrapped as a PropelException.
*/
public function hydrate(ResultSet $rs, $startcol = 1)
{
try {
$this->email_event_uid = $rs->getString($startcol + 0);
$this->prj_uid = $rs->getString($startcol + 1);
$this->evn_uid = $rs->getString($startcol + 2);
$this->email_event_from = $rs->getString($startcol + 3);
$this->email_event_to = $rs->getString($startcol + 4);
$this->email_event_subject = $rs->getString($startcol + 5);
$this->prf_uid = $rs->getString($startcol + 6);
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 7; // 7 = EmailEventPeer::NUM_COLUMNS - EmailEventPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating EmailEvent object", $e);
}
}
/**
* Removes this object from datastore and sets delete attribute.
*
* @param Connection $con
* @return void
* @throws PropelException
* @see BaseObject::setDeleted()
* @see BaseObject::isDeleted()
*/
public function delete($con = null)
{
if ($this->isDeleted()) {
throw new PropelException("This object has already been deleted.");
}
if ($con === null) {
$con = Propel::getConnection(EmailEventPeer::DATABASE_NAME);
}
try {
$con->begin();
EmailEventPeer::doDelete($this, $con);
$this->setDeleted(true);
$con->commit();
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Stores the object in the database. If the object is new,
* it inserts it; otherwise an update is performed. This method
* wraps the doSave() worker method in a transaction.
*
* @param Connection $con
* @return int The number of rows affected by this insert/update
* @throws PropelException
* @see doSave()
*/
public function save($con = null)
{
if ($this->isDeleted()) {
throw new PropelException("You cannot save an object that has been deleted.");
}
if ($con === null) {
$con = Propel::getConnection(EmailEventPeer::DATABASE_NAME);
}
try {
$con->begin();
$affectedRows = $this->doSave($con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Stores the object in the database.
*
* If the object is new, it inserts it; otherwise an update is performed.
* All related objects are also updated in this method.
*
* @param Connection $con
* @return int The number of rows affected by this insert/update and any referring
* @throws PropelException
* @see save()
*/
protected function doSave($con)
{
$affectedRows = 0; // initialize var to track total num of affected rows
if (!$this->alreadyInSave) {
$this->alreadyInSave = true;
// If this object has been modified, then save it to the database.
if ($this->isModified()) {
if ($this->isNew()) {
$pk = EmailEventPeer::doInsert($this, $con);
$affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which
// should always be true here (even though technically
// BasePeer::doInsert() can insert multiple rows).
$this->setNew(false);
} else {
$affectedRows += EmailEventPeer::doUpdate($this, $con);
}
$this->resetModified(); // [HL] After being saved an object is no longer 'modified'
}
$this->alreadyInSave = false;
}
return $affectedRows;
} // doSave()
/**
* Array of ValidationFailed objects.
* @var array ValidationFailed[]
*/
protected $validationFailures = array();
/**
* Gets any ValidationFailed objects that resulted from last call to validate().
*
*
* @return array ValidationFailed[]
* @see validate()
*/
public function getValidationFailures()
{
return $this->validationFailures;
}
/**
* Validates the objects modified field values and all objects related to this table.
*
* If $columns is either a column name or an array of column names
* only those columns are validated.
*
* @param mixed $columns Column name or an array of column names.
* @return boolean Whether all columns pass validation.
* @see doValidate()
* @see getValidationFailures()
*/
public function validate($columns = null)
{
$res = $this->doValidate($columns);
if ($res === true) {
$this->validationFailures = array();
return true;
} else {
$this->validationFailures = $res;
return false;
}
}
/**
* This function performs the validation work for complex object models.
*
* In addition to checking the current object, all related objects will
* also be validated. If all pass then <code>true</code> is returned; otherwise
* an aggreagated array of ValidationFailed objects will be returned.
*
* @param array $columns Array of column names to validate.
* @return mixed <code>true</code> if all validations pass;
array of <code>ValidationFailed</code> objects otherwise.
*/
protected function doValidate($columns = null)
{
if (!$this->alreadyInValidation) {
$this->alreadyInValidation = true;
$retval = null;
$failureMap = array();
if (($retval = EmailEventPeer::doValidate($this, $columns)) !== true) {
$failureMap = array_merge($failureMap, $retval);
}
$this->alreadyInValidation = false;
}
return (!empty($failureMap) ? $failureMap : true);
}
/**
* Retrieves a field from the object by name passed in as a string.
*
* @param string $name name
* @param string $type The type of fieldname the $name is of:
* one of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return mixed Value of field.
*/
public function getByName($name, $type = BasePeer::TYPE_PHPNAME)
{
$pos = EmailEventPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM);
return $this->getByPosition($pos);
}
/**
* Retrieves a field from the object by Position as specified in the xml schema.
* Zero-based.
*
* @param int $pos position in xml schema
* @return mixed Value of field at $pos
*/
public function getByPosition($pos)
{
switch($pos) {
case 0:
return $this->getEmailEventUid();
break;
case 1:
return $this->getPrjUid();
break;
case 2:
return $this->getEvnUid();
break;
case 3:
return $this->getEmailEventFrom();
break;
case 4:
return $this->getEmailEventTo();
break;
case 5:
return $this->getEmailEventSubject();
break;
case 6:
return $this->getPrfUid();
break;
default:
return null;
break;
} // switch()
}
/**
* Exports the object as an array.
*
* You can specify the key type of the array by passing one of the class
* type constants.
*
* @param string $keyType One of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return an associative array containing the field names (as keys) and field values
*/
public function toArray($keyType = BasePeer::TYPE_PHPNAME)
{
$keys = EmailEventPeer::getFieldNames($keyType);
$result = array(
$keys[0] => $this->getEmailEventUid(),
$keys[1] => $this->getPrjUid(),
$keys[2] => $this->getEvnUid(),
$keys[3] => $this->getEmailEventFrom(),
$keys[4] => $this->getEmailEventTo(),
$keys[5] => $this->getEmailEventSubject(),
$keys[6] => $this->getPrfUid(),
);
return $result;
}
/**
* Sets a field from the object by name passed in as a string.
*
* @param string $name peer name
* @param mixed $value field value
* @param string $type The type of fieldname the $name is of:
* one of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return void
*/
public function setByName($name, $value, $type = BasePeer::TYPE_PHPNAME)
{
$pos = EmailEventPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM);
return $this->setByPosition($pos, $value);
}
/**
* Sets a field from the object by Position as specified in the xml schema.
* Zero-based.
*
* @param int $pos position in xml schema
* @param mixed $value field value
* @return void
*/
public function setByPosition($pos, $value)
{
switch($pos) {
case 0:
$this->setEmailEventUid($value);
break;
case 1:
$this->setPrjUid($value);
break;
case 2:
$this->setEvnUid($value);
break;
case 3:
$this->setEmailEventFrom($value);
break;
case 4:
$this->setEmailEventTo($value);
break;
case 5:
$this->setEmailEventSubject($value);
break;
case 6:
$this->setPrfUid($value);
break;
} // switch()
}
/**
* Populates the object using an array.
*
* This is particularly useful when populating an object from one of the
* request arrays (e.g. $_POST). This method goes through the column
* names, checking to see whether a matching key exists in populated
* array. If so the setByName() method is called for that column.
*
* You can specify the key type of the array by additionally passing one
* of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME,
* TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId')
*
* @param array $arr An array to populate the object from.
* @param string $keyType The type of keys the array uses.
* @return void
*/
public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
{
$keys = EmailEventPeer::getFieldNames($keyType);
if (array_key_exists($keys[0], $arr)) {
$this->setEmailEventUid($arr[$keys[0]]);
}
if (array_key_exists($keys[1], $arr)) {
$this->setPrjUid($arr[$keys[1]]);
}
if (array_key_exists($keys[2], $arr)) {
$this->setEvnUid($arr[$keys[2]]);
}
if (array_key_exists($keys[3], $arr)) {
$this->setEmailEventFrom($arr[$keys[3]]);
}
if (array_key_exists($keys[4], $arr)) {
$this->setEmailEventTo($arr[$keys[4]]);
}
if (array_key_exists($keys[5], $arr)) {
$this->setEmailEventSubject($arr[$keys[5]]);
}
if (array_key_exists($keys[6], $arr)) {
$this->setPrfUid($arr[$keys[6]]);
}
}
/**
* Build a Criteria object containing the values of all modified columns in this object.
*
* @return Criteria The Criteria object containing all modified values.
*/
public function buildCriteria()
{
$criteria = new Criteria(EmailEventPeer::DATABASE_NAME);
if ($this->isColumnModified(EmailEventPeer::EMAIL_EVENT_UID)) {
$criteria->add(EmailEventPeer::EMAIL_EVENT_UID, $this->email_event_uid);
}
if ($this->isColumnModified(EmailEventPeer::PRJ_UID)) {
$criteria->add(EmailEventPeer::PRJ_UID, $this->prj_uid);
}
if ($this->isColumnModified(EmailEventPeer::EVN_UID)) {
$criteria->add(EmailEventPeer::EVN_UID, $this->evn_uid);
}
if ($this->isColumnModified(EmailEventPeer::EMAIL_EVENT_FROM)) {
$criteria->add(EmailEventPeer::EMAIL_EVENT_FROM, $this->email_event_from);
}
if ($this->isColumnModified(EmailEventPeer::EMAIL_EVENT_TO)) {
$criteria->add(EmailEventPeer::EMAIL_EVENT_TO, $this->email_event_to);
}
if ($this->isColumnModified(EmailEventPeer::EMAIL_EVENT_SUBJECT)) {
$criteria->add(EmailEventPeer::EMAIL_EVENT_SUBJECT, $this->email_event_subject);
}
if ($this->isColumnModified(EmailEventPeer::PRF_UID)) {
$criteria->add(EmailEventPeer::PRF_UID, $this->prf_uid);
}
return $criteria;
}
/**
* Builds a Criteria object containing the primary key for this object.
*
* Unlike buildCriteria() this method includes the primary key values regardless
* of whether or not they have been modified.
*
* @return Criteria The Criteria object containing value(s) for primary key(s).
*/
public function buildPkeyCriteria()
{
$criteria = new Criteria(EmailEventPeer::DATABASE_NAME);
$criteria->add(EmailEventPeer::EMAIL_EVENT_UID, $this->email_event_uid);
return $criteria;
}
/**
* Returns the primary key for this object (row).
* @return string
*/
public function getPrimaryKey()
{
return $this->getEmailEventUid();
}
/**
* Generic method to set the primary key (email_event_uid column).
*
* @param string $key Primary key.
* @return void
*/
public function setPrimaryKey($key)
{
$this->setEmailEventUid($key);
}
/**
* Sets contents of passed object to values from current object.
*
* If desired, this method can also make copies of all associated (fkey referrers)
* objects.
*
* @param object $copyObj An object of EmailEvent (or compatible) type.
* @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row.
* @throws PropelException
*/
public function copyInto($copyObj, $deepCopy = false)
{
$copyObj->setPrjUid($this->prj_uid);
$copyObj->setEvnUid($this->evn_uid);
$copyObj->setEmailEventFrom($this->email_event_from);
$copyObj->setEmailEventTo($this->email_event_to);
$copyObj->setEmailEventSubject($this->email_event_subject);
$copyObj->setPrfUid($this->prf_uid);
$copyObj->setNew(true);
$copyObj->setEmailEventUid(NULL); // this is a pkey column, so set to default value
}
/**
* Makes a copy of this object that will be inserted as a new row in table when saved.
* It creates a new object filling in the simple attributes, but skipping any primary
* keys that are defined for the table.
*
* If desired, this method can also make copies of all associated (fkey referrers)
* objects.
*
* @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row.
* @return EmailEvent Clone of current object.
* @throws PropelException
*/
public function copy($deepCopy = false)
{
// we use get_class(), because this might be a subclass
$clazz = get_class($this);
$copyObj = new $clazz();
$this->copyInto($copyObj, $deepCopy);
return $copyObj;
}
/**
* Returns a peer instance associated with this om.
*
* Since Peer classes are not to have any instance attributes, this method returns the
* same instance for all member of this class. The method could therefore
* be static, but this would prevent one from overriding the behavior.
*
* @return EmailEventPeer
*/
public function getPeer()
{
if (self::$peer === null) {
self::$peer = new EmailEventPeer();
}
return self::$peer;
}
}

View File

@@ -0,0 +1,597 @@
<?php
require_once 'propel/util/BasePeer.php';
// The object class -- needed for instanceof checks in this class.
// actual class may be a subclass -- as returned by EmailEventPeer::getOMClass()
include_once 'classes/model/EmailEvent.php';
/**
* Base static class for performing query and update operations on the 'EMAIL_EVENT' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseEmailEventPeer
{
/** the default database name for this class */
const DATABASE_NAME = 'workflow';
/** the table name for this class */
const TABLE_NAME = 'EMAIL_EVENT';
/** A class that can be returned by this peer. */
const CLASS_DEFAULT = 'classes.model.EmailEvent';
/** The total number of columns. */
const NUM_COLUMNS = 7;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
/** the column name for the EMAIL_EVENT_UID field */
const EMAIL_EVENT_UID = 'EMAIL_EVENT.EMAIL_EVENT_UID';
/** the column name for the PRJ_UID field */
const PRJ_UID = 'EMAIL_EVENT.PRJ_UID';
/** the column name for the EVN_UID field */
const EVN_UID = 'EMAIL_EVENT.EVN_UID';
/** the column name for the EMAIL_EVENT_FROM field */
const EMAIL_EVENT_FROM = 'EMAIL_EVENT.EMAIL_EVENT_FROM';
/** the column name for the EMAIL_EVENT_TO field */
const EMAIL_EVENT_TO = 'EMAIL_EVENT.EMAIL_EVENT_TO';
/** the column name for the EMAIL_EVENT_SUBJECT field */
const EMAIL_EVENT_SUBJECT = 'EMAIL_EVENT.EMAIL_EVENT_SUBJECT';
/** the column name for the PRF_UID field */
const PRF_UID = 'EMAIL_EVENT.PRF_UID';
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
/**
* holds an array of fieldnames
*
* first dimension keys are the type constants
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('EmailEventUid', 'PrjUid', 'EvnUid', 'EmailEventFrom', 'EmailEventTo', 'EmailEventSubject', 'PrfUid', ),
BasePeer::TYPE_COLNAME => array (EmailEventPeer::EMAIL_EVENT_UID, EmailEventPeer::PRJ_UID, EmailEventPeer::EVN_UID, EmailEventPeer::EMAIL_EVENT_FROM, EmailEventPeer::EMAIL_EVENT_TO, EmailEventPeer::EMAIL_EVENT_SUBJECT, EmailEventPeer::PRF_UID, ),
BasePeer::TYPE_FIELDNAME => array ('EMAIL_EVENT_UID', 'PRJ_UID', 'EVN_UID', 'EMAIL_EVENT_FROM', 'EMAIL_EVENT_TO', 'EMAIL_EVENT_SUBJECT', 'PRF_UID', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, )
);
/**
* holds an array of keys for quick access to the fieldnames array
*
* first dimension keys are the type constants
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('EmailEventUid' => 0, 'PrjUid' => 1, 'EvnUid' => 2, 'EmailEventFrom' => 3, 'EmailEventTo' => 4, 'EmailEventSubject' => 5, 'PrfUid' => 6, ),
BasePeer::TYPE_COLNAME => array (EmailEventPeer::EMAIL_EVENT_UID => 0, EmailEventPeer::PRJ_UID => 1, EmailEventPeer::EVN_UID => 2, EmailEventPeer::EMAIL_EVENT_FROM => 3, EmailEventPeer::EMAIL_EVENT_TO => 4, EmailEventPeer::EMAIL_EVENT_SUBJECT => 5, EmailEventPeer::PRF_UID => 6, ),
BasePeer::TYPE_FIELDNAME => array ('EMAIL_EVENT_UID' => 0, 'PRJ_UID' => 1, 'EVN_UID' => 2, 'EMAIL_EVENT_FROM' => 3, 'EMAIL_EVENT_TO' => 4, 'EMAIL_EVENT_SUBJECT' => 5, 'PRF_UID' => 6, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, )
);
/**
* @return MapBuilder the map builder for this peer
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function getMapBuilder()
{
include_once 'classes/model/map/EmailEventMapBuilder.php';
return BasePeer::getMapBuilder('classes.model.map.EmailEventMapBuilder');
}
/**
* Gets a map (hash) of PHP names to DB column names.
*
* @return array The PHP to DB name map for this peer
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
* @deprecated Use the getFieldNames() and translateFieldName() methods instead of this.
*/
public static function getPhpNameMap()
{
if (self::$phpNameMap === null) {
$map = EmailEventPeer::getTableMap();
$columns = $map->getColumns();
$nameMap = array();
foreach ($columns as $column) {
$nameMap[$column->getPhpName()] = $column->getColumnName();
}
self::$phpNameMap = $nameMap;
}
return self::$phpNameMap;
}
/**
* Translates a fieldname to another type
*
* @param string $name field name
* @param string $fromType One of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @param string $toType One of the class type constants
* @return string translated name of the field.
*/
static public function translateFieldName($name, $fromType, $toType)
{
$toNames = self::getFieldNames($toType);
$key = isset(self::$fieldKeys[$fromType][$name]) ? self::$fieldKeys[$fromType][$name] : null;
if ($key === null) {
throw new PropelException("'$name' could not be found in the field names of type '$fromType'. These are: " . print_r(self::$fieldKeys[$fromType], true));
}
return $toNames[$key];
}
/**
* Returns an array of of field names.
*
* @param string $type The type of fieldnames to return:
* One of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return array A list of field names
*/
static public function getFieldNames($type = BasePeer::TYPE_PHPNAME)
{
if (!array_key_exists($type, self::$fieldNames)) {
throw new PropelException('Method getFieldNames() expects the parameter $type to be one of the class constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM. ' . $type . ' was given.');
}
return self::$fieldNames[$type];
}
/**
* Convenience method which changes table.column to alias.column.
*
* Using this method you can maintain SQL abstraction while using column aliases.
* <code>
* $c->addAlias("alias1", TablePeer::TABLE_NAME);
* $c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN);
* </code>
* @param string $alias The alias for the current table.
* @param string $column The column name for current table. (i.e. EmailEventPeer::COLUMN_NAME).
* @return string
*/
public static function alias($alias, $column)
{
return str_replace(EmailEventPeer::TABLE_NAME.'.', $alias.'.', $column);
}
/**
* Add all the columns needed to create a new object.
*
* Note: any columns that were marked with lazyLoad="true" in the
* XML schema will not be added to the select list and only loaded
* on demand.
*
* @param criteria object containing the columns to add.
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function addSelectColumns(Criteria $criteria)
{
$criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_UID);
$criteria->addSelectColumn(EmailEventPeer::PRJ_UID);
$criteria->addSelectColumn(EmailEventPeer::EVN_UID);
$criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_FROM);
$criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_TO);
$criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_SUBJECT);
$criteria->addSelectColumn(EmailEventPeer::PRF_UID);
}
const COUNT = 'COUNT(EMAIL_EVENT.EMAIL_EVENT_UID)';
const COUNT_DISTINCT = 'COUNT(DISTINCT EMAIL_EVENT.EMAIL_EVENT_UID)';
/**
* Returns the number of rows matching criteria.
*
* @param Criteria $criteria
* @param boolean $distinct Whether to select only distinct columns (You can also set DISTINCT modifier in Criteria).
* @param Connection $con
* @return int Number of matching rows.
*/
public static function doCount(Criteria $criteria, $distinct = false, $con = null)
{
// we're going to modify criteria, so copy it first
$criteria = clone $criteria;
// clear out anything that might confuse the ORDER BY clause
$criteria->clearSelectColumns()->clearOrderByColumns();
if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
$criteria->addSelectColumn(EmailEventPeer::COUNT_DISTINCT);
} else {
$criteria->addSelectColumn(EmailEventPeer::COUNT);
}
// just in case we're grouping: add those columns to the select statement
foreach ($criteria->getGroupByColumns() as $column) {
$criteria->addSelectColumn($column);
}
$rs = EmailEventPeer::doSelectRS($criteria, $con);
if ($rs->next()) {
return $rs->getInt(1);
} else {
// no rows returned; we infer that means 0 matches.
return 0;
}
}
/**
* Method to select one object from the DB.
*
* @param Criteria $criteria object used to create the SELECT statement.
* @param Connection $con
* @return EmailEvent
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doSelectOne(Criteria $criteria, $con = null)
{
$critcopy = clone $criteria;
$critcopy->setLimit(1);
$objects = EmailEventPeer::doSelect($critcopy, $con);
if ($objects) {
return $objects[0];
}
return null;
}
/**
* Method to do selects.
*
* @param Criteria $criteria The Criteria object used to build the SELECT statement.
* @param Connection $con
* @return array Array of selected Objects
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doSelect(Criteria $criteria, $con = null)
{
return EmailEventPeer::populateObjects(EmailEventPeer::doSelectRS($criteria, $con));
}
/**
* Prepares the Criteria object and uses the parent doSelect()
* method to get a ResultSet.
*
* Use this method directly if you want to just get the resultset
* (instead of an array of objects).
*
* @param Criteria $criteria The Criteria object used to build the SELECT statement.
* @param Connection $con the connection to use
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
* @return ResultSet The resultset object with numerically-indexed fields.
* @see BasePeer::doSelect()
*/
public static function doSelectRS(Criteria $criteria, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
if (!$criteria->getSelectColumns()) {
$criteria = clone $criteria;
EmailEventPeer::addSelectColumns($criteria);
}
// Set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
// BasePeer returns a Creole ResultSet, set to return
// rows indexed numerically.
return BasePeer::doSelect($criteria, $con);
}
/**
* The returned array will contain objects of the default type or
* objects that inherit from the default.
*
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function populateObjects(ResultSet $rs)
{
$results = array();
// set the class once to avoid overhead in the loop
$cls = EmailEventPeer::getOMClass();
$cls = Propel::import($cls);
// populate the object(s)
while ($rs->next()) {
$obj = new $cls();
$obj->hydrate($rs);
$results[] = $obj;
}
return $results;
}
/**
* Returns the TableMap related to this peer.
* This method is not needed for general use but a specific application could have a need.
* @return TableMap
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function getTableMap()
{
return Propel::getDatabaseMap(self::DATABASE_NAME)->getTable(self::TABLE_NAME);
}
/**
* The class that the Peer will make instances of.
*
* This uses a dot-path notation which is tranalted into a path
* relative to a location on the PHP include_path.
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
*
* @return string path.to.ClassName
*/
public static function getOMClass()
{
return EmailEventPeer::CLASS_DEFAULT;
}
/**
* Method perform an INSERT on the database, given a EmailEvent or Criteria object.
*
* @param mixed $values Criteria or EmailEvent object containing data that is used to create the INSERT statement.
* @param Connection $con the connection to use
* @return mixed The new primary key.
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doInsert($values, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
} else {
$criteria = $values->buildCriteria(); // build Criteria from EmailEvent object
}
// Set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
try {
// use transaction because $criteria could contain info
// for more than one table (I guess, conceivably)
$con->begin();
$pk = BasePeer::doInsert($criteria, $con);
$con->commit();
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
return $pk;
}
/**
* Method perform an UPDATE on the database, given a EmailEvent or Criteria object.
*
* @param mixed $values Criteria or EmailEvent object containing data create the UPDATE statement.
* @param Connection $con The connection to use (specify Connection exert more control over transactions).
* @return int The number of affected rows (if supported by underlying database driver).
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doUpdate($values, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$selectCriteria = new Criteria(self::DATABASE_NAME);
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
$comparison = $criteria->getComparison(EmailEventPeer::EMAIL_EVENT_UID);
$selectCriteria->add(EmailEventPeer::EMAIL_EVENT_UID, $criteria->remove(EmailEventPeer::EMAIL_EVENT_UID), $comparison);
} else {
$criteria = $values->buildCriteria(); // gets full criteria
$selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s)
}
// set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
return BasePeer::doUpdate($selectCriteria, $criteria, $con);
}
/**
* Method to DELETE all rows from the EMAIL_EVENT table.
*
* @return int The number of affected rows (if supported by underlying database driver).
*/
public static function doDeleteAll($con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$affectedRows = 0; // initialize var to track total num of affected rows
try {
// use transaction because $criteria could contain info
// for more than one table or we could emulating ON DELETE CASCADE, etc.
$con->begin();
$affectedRows += BasePeer::doDeleteAll(EmailEventPeer::TABLE_NAME, $con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Method perform a DELETE on the database, given a EmailEvent or Criteria object OR a primary key value.
*
* @param mixed $values Criteria or EmailEvent object or primary key or array of primary keys
* which is used to create the DELETE statement
* @param Connection $con the connection to use
* @return int The number of affected rows (if supported by underlying database driver).
* This includes CASCADE-related rows
* if supported by native driver or if emulated using Propel.
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doDelete($values, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(EmailEventPeer::DATABASE_NAME);
}
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
} elseif ($values instanceof EmailEvent) {
$criteria = $values->buildPkeyCriteria();
} else {
// it must be the primary key
$criteria = new Criteria(self::DATABASE_NAME);
$criteria->add(EmailEventPeer::EMAIL_EVENT_UID, (array) $values, Criteria::IN);
}
// Set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
$affectedRows = 0; // initialize var to track total num of affected rows
try {
// use transaction because $criteria could contain info
// for more than one table or we could emulating ON DELETE CASCADE, etc.
$con->begin();
$affectedRows += BasePeer::doDelete($criteria, $con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Validates all modified columns of given EmailEvent object.
* If parameter $columns is either a single column name or an array of column names
* than only those columns are validated.
*
* NOTICE: This does not apply to primary or foreign keys for now.
*
* @param EmailEvent $obj The object to validate.
* @param mixed $cols Column name or array of column names.
*
* @return mixed TRUE if all columns are valid or the error message of the first invalid column.
*/
public static function doValidate(EmailEvent $obj, $cols = null)
{
$columns = array();
if ($cols) {
$dbMap = Propel::getDatabaseMap(EmailEventPeer::DATABASE_NAME);
$tableMap = $dbMap->getTable(EmailEventPeer::TABLE_NAME);
if (! is_array($cols)) {
$cols = array($cols);
}
foreach ($cols as $colName) {
if ($tableMap->containsColumn($colName)) {
$get = 'get' . $tableMap->getColumn($colName)->getPhpName();
$columns[$colName] = $obj->$get();
}
}
} else {
}
return BasePeer::doValidate(EmailEventPeer::DATABASE_NAME, EmailEventPeer::TABLE_NAME, $columns);
}
/**
* Retrieve a single object by pkey.
*
* @param mixed $pk the primary key.
* @param Connection $con the connection to use
* @return EmailEvent
*/
public static function retrieveByPK($pk, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$criteria = new Criteria(EmailEventPeer::DATABASE_NAME);
$criteria->add(EmailEventPeer::EMAIL_EVENT_UID, $pk);
$v = EmailEventPeer::doSelect($criteria, $con);
return !empty($v) > 0 ? $v[0] : null;
}
/**
* Retrieve multiple objects by pkey.
*
* @param array $pks List of primary keys
* @param Connection $con the connection to use
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function retrieveByPKs($pks, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$objs = null;
if (empty($pks)) {
$objs = array();
} else {
$criteria = new Criteria();
$criteria->add(EmailEventPeer::EMAIL_EVENT_UID, $pks, Criteria::IN);
$objs = EmailEventPeer::doSelect($criteria, $con);
}
return $objs;
}
}
// static code to register the map builder for this Peer with the main Propel class
if (Propel::isInit()) {
// the MapBuilder classes register themselves with Propel during initialization
// so we need to load them here.
try {
BaseEmailEventPeer::getMapBuilder();
} catch (Exception $e) {
Propel::log('Could not initialize Peer: ' . $e->getMessage(), Propel::LOG_ERR);
}
} else {
// even if Propel is not yet initialized, the map builder class can be registered
// now and then it will be loaded when Propel initializes.
require_once 'classes/model/map/EmailEventMapBuilder.php';
Propel::registerMapBuilder('classes.model.map.EmailEventMapBuilder');
}

View File

@@ -0,0 +1,742 @@
<?php
require_once 'propel/om/BaseObject.php';
require_once 'propel/om/Persistent.php';
include_once 'propel/util/Criteria.php';
include_once 'classes/model/ScriptTaskPeer.php';
/**
* Base class that represents a row from the 'SCRIPT_TASK' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseScriptTask extends BaseObject implements Persistent
{
/**
* The Peer class.
* Instance provides a convenient way of calling static methods on a class
* that calling code may not be able to identify.
* @var ScriptTaskPeer
*/
protected static $peer;
/**
* The value for the scrtas_uid field.
* @var string
*/
protected $scrtas_uid = '';
/**
* The value for the prj_uid field.
* @var string
*/
protected $prj_uid = '';
/**
* The value for the act_uid field.
* @var string
*/
protected $act_uid = '';
/**
* The value for the scrtas_obj_type field.
* @var string
*/
protected $scrtas_obj_type = 'TRIGGER';
/**
* The value for the scrtas_obj_uid field.
* @var string
*/
protected $scrtas_obj_uid = '';
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
* @var boolean
*/
protected $alreadyInSave = false;
/**
* Flag to prevent endless validation loop, if this object is referenced
* by another object which falls in this transaction.
* @var boolean
*/
protected $alreadyInValidation = false;
/**
* Get the [scrtas_uid] column value.
*
* @return string
*/
public function getScrtasUid()
{
return $this->scrtas_uid;
}
/**
* Get the [prj_uid] column value.
*
* @return string
*/
public function getPrjUid()
{
return $this->prj_uid;
}
/**
* Get the [act_uid] column value.
*
* @return string
*/
public function getActUid()
{
return $this->act_uid;
}
/**
* Get the [scrtas_obj_type] column value.
*
* @return string
*/
public function getScrtasObjType()
{
return $this->scrtas_obj_type;
}
/**
* Get the [scrtas_obj_uid] column value.
*
* @return string
*/
public function getScrtasObjUid()
{
return $this->scrtas_obj_uid;
}
/**
* Set the value of [scrtas_uid] column.
*
* @param string $v new value
* @return void
*/
public function setScrtasUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->scrtas_uid !== $v || $v === '') {
$this->scrtas_uid = $v;
$this->modifiedColumns[] = ScriptTaskPeer::SCRTAS_UID;
}
} // setScrtasUid()
/**
* Set the value of [prj_uid] column.
*
* @param string $v new value
* @return void
*/
public function setPrjUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->prj_uid !== $v || $v === '') {
$this->prj_uid = $v;
$this->modifiedColumns[] = ScriptTaskPeer::PRJ_UID;
}
} // setPrjUid()
/**
* Set the value of [act_uid] column.
*
* @param string $v new value
* @return void
*/
public function setActUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->act_uid !== $v || $v === '') {
$this->act_uid = $v;
$this->modifiedColumns[] = ScriptTaskPeer::ACT_UID;
}
} // setActUid()
/**
* Set the value of [scrtas_obj_type] column.
*
* @param string $v new value
* @return void
*/
public function setScrtasObjType($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->scrtas_obj_type !== $v || $v === 'TRIGGER') {
$this->scrtas_obj_type = $v;
$this->modifiedColumns[] = ScriptTaskPeer::SCRTAS_OBJ_TYPE;
}
} // setScrtasObjType()
/**
* Set the value of [scrtas_obj_uid] column.
*
* @param string $v new value
* @return void
*/
public function setScrtasObjUid($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->scrtas_obj_uid !== $v || $v === '') {
$this->scrtas_obj_uid = $v;
$this->modifiedColumns[] = ScriptTaskPeer::SCRTAS_OBJ_UID;
}
} // setScrtasObjUid()
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
* An offset (1-based "start column") is specified so that objects can be hydrated
* with a subset of the columns in the resultset rows. This is needed, for example,
* for results of JOIN queries where the resultset row includes columns from two or
* more tables.
*
* @param ResultSet $rs The ResultSet class with cursor advanced to desired record pos.
* @param int $startcol 1-based offset column which indicates which restultset column to start with.
* @return int next starting column
* @throws PropelException - Any caught Exception will be rewrapped as a PropelException.
*/
public function hydrate(ResultSet $rs, $startcol = 1)
{
try {
$this->scrtas_uid = $rs->getString($startcol + 0);
$this->prj_uid = $rs->getString($startcol + 1);
$this->act_uid = $rs->getString($startcol + 2);
$this->scrtas_obj_type = $rs->getString($startcol + 3);
$this->scrtas_obj_uid = $rs->getString($startcol + 4);
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 5; // 5 = ScriptTaskPeer::NUM_COLUMNS - ScriptTaskPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating ScriptTask object", $e);
}
}
/**
* Removes this object from datastore and sets delete attribute.
*
* @param Connection $con
* @return void
* @throws PropelException
* @see BaseObject::setDeleted()
* @see BaseObject::isDeleted()
*/
public function delete($con = null)
{
if ($this->isDeleted()) {
throw new PropelException("This object has already been deleted.");
}
if ($con === null) {
$con = Propel::getConnection(ScriptTaskPeer::DATABASE_NAME);
}
try {
$con->begin();
ScriptTaskPeer::doDelete($this, $con);
$this->setDeleted(true);
$con->commit();
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Stores the object in the database. If the object is new,
* it inserts it; otherwise an update is performed. This method
* wraps the doSave() worker method in a transaction.
*
* @param Connection $con
* @return int The number of rows affected by this insert/update
* @throws PropelException
* @see doSave()
*/
public function save($con = null)
{
if ($this->isDeleted()) {
throw new PropelException("You cannot save an object that has been deleted.");
}
if ($con === null) {
$con = Propel::getConnection(ScriptTaskPeer::DATABASE_NAME);
}
try {
$con->begin();
$affectedRows = $this->doSave($con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Stores the object in the database.
*
* If the object is new, it inserts it; otherwise an update is performed.
* All related objects are also updated in this method.
*
* @param Connection $con
* @return int The number of rows affected by this insert/update and any referring
* @throws PropelException
* @see save()
*/
protected function doSave($con)
{
$affectedRows = 0; // initialize var to track total num of affected rows
if (!$this->alreadyInSave) {
$this->alreadyInSave = true;
// If this object has been modified, then save it to the database.
if ($this->isModified()) {
if ($this->isNew()) {
$pk = ScriptTaskPeer::doInsert($this, $con);
$affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which
// should always be true here (even though technically
// BasePeer::doInsert() can insert multiple rows).
$this->setNew(false);
} else {
$affectedRows += ScriptTaskPeer::doUpdate($this, $con);
}
$this->resetModified(); // [HL] After being saved an object is no longer 'modified'
}
$this->alreadyInSave = false;
}
return $affectedRows;
} // doSave()
/**
* Array of ValidationFailed objects.
* @var array ValidationFailed[]
*/
protected $validationFailures = array();
/**
* Gets any ValidationFailed objects that resulted from last call to validate().
*
*
* @return array ValidationFailed[]
* @see validate()
*/
public function getValidationFailures()
{
return $this->validationFailures;
}
/**
* Validates the objects modified field values and all objects related to this table.
*
* If $columns is either a column name or an array of column names
* only those columns are validated.
*
* @param mixed $columns Column name or an array of column names.
* @return boolean Whether all columns pass validation.
* @see doValidate()
* @see getValidationFailures()
*/
public function validate($columns = null)
{
$res = $this->doValidate($columns);
if ($res === true) {
$this->validationFailures = array();
return true;
} else {
$this->validationFailures = $res;
return false;
}
}
/**
* This function performs the validation work for complex object models.
*
* In addition to checking the current object, all related objects will
* also be validated. If all pass then <code>true</code> is returned; otherwise
* an aggreagated array of ValidationFailed objects will be returned.
*
* @param array $columns Array of column names to validate.
* @return mixed <code>true</code> if all validations pass;
array of <code>ValidationFailed</code> objects otherwise.
*/
protected function doValidate($columns = null)
{
if (!$this->alreadyInValidation) {
$this->alreadyInValidation = true;
$retval = null;
$failureMap = array();
if (($retval = ScriptTaskPeer::doValidate($this, $columns)) !== true) {
$failureMap = array_merge($failureMap, $retval);
}
$this->alreadyInValidation = false;
}
return (!empty($failureMap) ? $failureMap : true);
}
/**
* Retrieves a field from the object by name passed in as a string.
*
* @param string $name name
* @param string $type The type of fieldname the $name is of:
* one of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return mixed Value of field.
*/
public function getByName($name, $type = BasePeer::TYPE_PHPNAME)
{
$pos = ScriptTaskPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM);
return $this->getByPosition($pos);
}
/**
* Retrieves a field from the object by Position as specified in the xml schema.
* Zero-based.
*
* @param int $pos position in xml schema
* @return mixed Value of field at $pos
*/
public function getByPosition($pos)
{
switch($pos) {
case 0:
return $this->getScrtasUid();
break;
case 1:
return $this->getPrjUid();
break;
case 2:
return $this->getActUid();
break;
case 3:
return $this->getScrtasObjType();
break;
case 4:
return $this->getScrtasObjUid();
break;
default:
return null;
break;
} // switch()
}
/**
* Exports the object as an array.
*
* You can specify the key type of the array by passing one of the class
* type constants.
*
* @param string $keyType One of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return an associative array containing the field names (as keys) and field values
*/
public function toArray($keyType = BasePeer::TYPE_PHPNAME)
{
$keys = ScriptTaskPeer::getFieldNames($keyType);
$result = array(
$keys[0] => $this->getScrtasUid(),
$keys[1] => $this->getPrjUid(),
$keys[2] => $this->getActUid(),
$keys[3] => $this->getScrtasObjType(),
$keys[4] => $this->getScrtasObjUid(),
);
return $result;
}
/**
* Sets a field from the object by name passed in as a string.
*
* @param string $name peer name
* @param mixed $value field value
* @param string $type The type of fieldname the $name is of:
* one of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return void
*/
public function setByName($name, $value, $type = BasePeer::TYPE_PHPNAME)
{
$pos = ScriptTaskPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM);
return $this->setByPosition($pos, $value);
}
/**
* Sets a field from the object by Position as specified in the xml schema.
* Zero-based.
*
* @param int $pos position in xml schema
* @param mixed $value field value
* @return void
*/
public function setByPosition($pos, $value)
{
switch($pos) {
case 0:
$this->setScrtasUid($value);
break;
case 1:
$this->setPrjUid($value);
break;
case 2:
$this->setActUid($value);
break;
case 3:
$this->setScrtasObjType($value);
break;
case 4:
$this->setScrtasObjUid($value);
break;
} // switch()
}
/**
* Populates the object using an array.
*
* This is particularly useful when populating an object from one of the
* request arrays (e.g. $_POST). This method goes through the column
* names, checking to see whether a matching key exists in populated
* array. If so the setByName() method is called for that column.
*
* You can specify the key type of the array by additionally passing one
* of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME,
* TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId')
*
* @param array $arr An array to populate the object from.
* @param string $keyType The type of keys the array uses.
* @return void
*/
public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
{
$keys = ScriptTaskPeer::getFieldNames($keyType);
if (array_key_exists($keys[0], $arr)) {
$this->setScrtasUid($arr[$keys[0]]);
}
if (array_key_exists($keys[1], $arr)) {
$this->setPrjUid($arr[$keys[1]]);
}
if (array_key_exists($keys[2], $arr)) {
$this->setActUid($arr[$keys[2]]);
}
if (array_key_exists($keys[3], $arr)) {
$this->setScrtasObjType($arr[$keys[3]]);
}
if (array_key_exists($keys[4], $arr)) {
$this->setScrtasObjUid($arr[$keys[4]]);
}
}
/**
* Build a Criteria object containing the values of all modified columns in this object.
*
* @return Criteria The Criteria object containing all modified values.
*/
public function buildCriteria()
{
$criteria = new Criteria(ScriptTaskPeer::DATABASE_NAME);
if ($this->isColumnModified(ScriptTaskPeer::SCRTAS_UID)) {
$criteria->add(ScriptTaskPeer::SCRTAS_UID, $this->scrtas_uid);
}
if ($this->isColumnModified(ScriptTaskPeer::PRJ_UID)) {
$criteria->add(ScriptTaskPeer::PRJ_UID, $this->prj_uid);
}
if ($this->isColumnModified(ScriptTaskPeer::ACT_UID)) {
$criteria->add(ScriptTaskPeer::ACT_UID, $this->act_uid);
}
if ($this->isColumnModified(ScriptTaskPeer::SCRTAS_OBJ_TYPE)) {
$criteria->add(ScriptTaskPeer::SCRTAS_OBJ_TYPE, $this->scrtas_obj_type);
}
if ($this->isColumnModified(ScriptTaskPeer::SCRTAS_OBJ_UID)) {
$criteria->add(ScriptTaskPeer::SCRTAS_OBJ_UID, $this->scrtas_obj_uid);
}
return $criteria;
}
/**
* Builds a Criteria object containing the primary key for this object.
*
* Unlike buildCriteria() this method includes the primary key values regardless
* of whether or not they have been modified.
*
* @return Criteria The Criteria object containing value(s) for primary key(s).
*/
public function buildPkeyCriteria()
{
$criteria = new Criteria(ScriptTaskPeer::DATABASE_NAME);
$criteria->add(ScriptTaskPeer::SCRTAS_UID, $this->scrtas_uid);
return $criteria;
}
/**
* Returns the primary key for this object (row).
* @return string
*/
public function getPrimaryKey()
{
return $this->getScrtasUid();
}
/**
* Generic method to set the primary key (scrtas_uid column).
*
* @param string $key Primary key.
* @return void
*/
public function setPrimaryKey($key)
{
$this->setScrtasUid($key);
}
/**
* Sets contents of passed object to values from current object.
*
* If desired, this method can also make copies of all associated (fkey referrers)
* objects.
*
* @param object $copyObj An object of ScriptTask (or compatible) type.
* @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row.
* @throws PropelException
*/
public function copyInto($copyObj, $deepCopy = false)
{
$copyObj->setPrjUid($this->prj_uid);
$copyObj->setActUid($this->act_uid);
$copyObj->setScrtasObjType($this->scrtas_obj_type);
$copyObj->setScrtasObjUid($this->scrtas_obj_uid);
$copyObj->setNew(true);
$copyObj->setScrtasUid(''); // this is a pkey column, so set to default value
}
/**
* Makes a copy of this object that will be inserted as a new row in table when saved.
* It creates a new object filling in the simple attributes, but skipping any primary
* keys that are defined for the table.
*
* If desired, this method can also make copies of all associated (fkey referrers)
* objects.
*
* @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row.
* @return ScriptTask Clone of current object.
* @throws PropelException
*/
public function copy($deepCopy = false)
{
// we use get_class(), because this might be a subclass
$clazz = get_class($this);
$copyObj = new $clazz();
$this->copyInto($copyObj, $deepCopy);
return $copyObj;
}
/**
* Returns a peer instance associated with this om.
*
* Since Peer classes are not to have any instance attributes, this method returns the
* same instance for all member of this class. The method could therefore
* be static, but this would prevent one from overriding the behavior.
*
* @return ScriptTaskPeer
*/
public function getPeer()
{
if (self::$peer === null) {
self::$peer = new ScriptTaskPeer();
}
return self::$peer;
}
}

View File

@@ -0,0 +1,590 @@
<?php
require_once 'propel/util/BasePeer.php';
// The object class -- needed for instanceof checks in this class.
// actual class may be a subclass -- as returned by ScriptTaskPeer::getOMClass()
include_once 'classes/model/ScriptTask.php';
/**
* Base static class for performing query and update operations on the 'SCRIPT_TASK' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseScriptTaskPeer
{
/** the default database name for this class */
const DATABASE_NAME = 'workflow';
/** the table name for this class */
const TABLE_NAME = 'SCRIPT_TASK';
/** A class that can be returned by this peer. */
const CLASS_DEFAULT = 'classes.model.ScriptTask';
/** The total number of columns. */
const NUM_COLUMNS = 5;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
/** the column name for the SCRTAS_UID field */
const SCRTAS_UID = 'SCRIPT_TASK.SCRTAS_UID';
/** the column name for the PRJ_UID field */
const PRJ_UID = 'SCRIPT_TASK.PRJ_UID';
/** the column name for the ACT_UID field */
const ACT_UID = 'SCRIPT_TASK.ACT_UID';
/** the column name for the SCRTAS_OBJ_TYPE field */
const SCRTAS_OBJ_TYPE = 'SCRIPT_TASK.SCRTAS_OBJ_TYPE';
/** the column name for the SCRTAS_OBJ_UID field */
const SCRTAS_OBJ_UID = 'SCRIPT_TASK.SCRTAS_OBJ_UID';
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
/**
* holds an array of fieldnames
*
* first dimension keys are the type constants
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('ScrtasUid', 'PrjUid', 'ActUid', 'ScrtasObjType', 'ScrtasObjUid', ),
BasePeer::TYPE_COLNAME => array (ScriptTaskPeer::SCRTAS_UID, ScriptTaskPeer::PRJ_UID, ScriptTaskPeer::ACT_UID, ScriptTaskPeer::SCRTAS_OBJ_TYPE, ScriptTaskPeer::SCRTAS_OBJ_UID, ),
BasePeer::TYPE_FIELDNAME => array ('SCRTAS_UID', 'PRJ_UID', 'ACT_UID', 'SCRTAS_OBJ_TYPE', 'SCRTAS_OBJ_UID', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, )
);
/**
* holds an array of keys for quick access to the fieldnames array
*
* first dimension keys are the type constants
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('ScrtasUid' => 0, 'PrjUid' => 1, 'ActUid' => 2, 'ScrtasObjType' => 3, 'ScrtasObjUid' => 4, ),
BasePeer::TYPE_COLNAME => array (ScriptTaskPeer::SCRTAS_UID => 0, ScriptTaskPeer::PRJ_UID => 1, ScriptTaskPeer::ACT_UID => 2, ScriptTaskPeer::SCRTAS_OBJ_TYPE => 3, ScriptTaskPeer::SCRTAS_OBJ_UID => 4, ),
BasePeer::TYPE_FIELDNAME => array ('SCRTAS_UID' => 0, 'PRJ_UID' => 1, 'ACT_UID' => 2, 'SCRTAS_OBJ_TYPE' => 3, 'SCRTAS_OBJ_UID' => 4, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, )
);
/**
* @return MapBuilder the map builder for this peer
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function getMapBuilder()
{
include_once 'classes/model/map/ScriptTaskMapBuilder.php';
return BasePeer::getMapBuilder('classes.model.map.ScriptTaskMapBuilder');
}
/**
* Gets a map (hash) of PHP names to DB column names.
*
* @return array The PHP to DB name map for this peer
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
* @deprecated Use the getFieldNames() and translateFieldName() methods instead of this.
*/
public static function getPhpNameMap()
{
if (self::$phpNameMap === null) {
$map = ScriptTaskPeer::getTableMap();
$columns = $map->getColumns();
$nameMap = array();
foreach ($columns as $column) {
$nameMap[$column->getPhpName()] = $column->getColumnName();
}
self::$phpNameMap = $nameMap;
}
return self::$phpNameMap;
}
/**
* Translates a fieldname to another type
*
* @param string $name field name
* @param string $fromType One of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @param string $toType One of the class type constants
* @return string translated name of the field.
*/
static public function translateFieldName($name, $fromType, $toType)
{
$toNames = self::getFieldNames($toType);
$key = isset(self::$fieldKeys[$fromType][$name]) ? self::$fieldKeys[$fromType][$name] : null;
if ($key === null) {
throw new PropelException("'$name' could not be found in the field names of type '$fromType'. These are: " . print_r(self::$fieldKeys[$fromType], true));
}
return $toNames[$key];
}
/**
* Returns an array of of field names.
*
* @param string $type The type of fieldnames to return:
* One of the class type constants TYPE_PHPNAME,
* TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM
* @return array A list of field names
*/
static public function getFieldNames($type = BasePeer::TYPE_PHPNAME)
{
if (!array_key_exists($type, self::$fieldNames)) {
throw new PropelException('Method getFieldNames() expects the parameter $type to be one of the class constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, TYPE_NUM. ' . $type . ' was given.');
}
return self::$fieldNames[$type];
}
/**
* Convenience method which changes table.column to alias.column.
*
* Using this method you can maintain SQL abstraction while using column aliases.
* <code>
* $c->addAlias("alias1", TablePeer::TABLE_NAME);
* $c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN);
* </code>
* @param string $alias The alias for the current table.
* @param string $column The column name for current table. (i.e. ScriptTaskPeer::COLUMN_NAME).
* @return string
*/
public static function alias($alias, $column)
{
return str_replace(ScriptTaskPeer::TABLE_NAME.'.', $alias.'.', $column);
}
/**
* Add all the columns needed to create a new object.
*
* Note: any columns that were marked with lazyLoad="true" in the
* XML schema will not be added to the select list and only loaded
* on demand.
*
* @param criteria object containing the columns to add.
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function addSelectColumns(Criteria $criteria)
{
$criteria->addSelectColumn(ScriptTaskPeer::SCRTAS_UID);
$criteria->addSelectColumn(ScriptTaskPeer::PRJ_UID);
$criteria->addSelectColumn(ScriptTaskPeer::ACT_UID);
$criteria->addSelectColumn(ScriptTaskPeer::SCRTAS_OBJ_TYPE);
$criteria->addSelectColumn(ScriptTaskPeer::SCRTAS_OBJ_UID);
}
const COUNT = 'COUNT(SCRIPT_TASK.SCRTAS_UID)';
const COUNT_DISTINCT = 'COUNT(DISTINCT SCRIPT_TASK.SCRTAS_UID)';
/**
* Returns the number of rows matching criteria.
*
* @param Criteria $criteria
* @param boolean $distinct Whether to select only distinct columns (You can also set DISTINCT modifier in Criteria).
* @param Connection $con
* @return int Number of matching rows.
*/
public static function doCount(Criteria $criteria, $distinct = false, $con = null)
{
// we're going to modify criteria, so copy it first
$criteria = clone $criteria;
// clear out anything that might confuse the ORDER BY clause
$criteria->clearSelectColumns()->clearOrderByColumns();
if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
$criteria->addSelectColumn(ScriptTaskPeer::COUNT_DISTINCT);
} else {
$criteria->addSelectColumn(ScriptTaskPeer::COUNT);
}
// just in case we're grouping: add those columns to the select statement
foreach ($criteria->getGroupByColumns() as $column) {
$criteria->addSelectColumn($column);
}
$rs = ScriptTaskPeer::doSelectRS($criteria, $con);
if ($rs->next()) {
return $rs->getInt(1);
} else {
// no rows returned; we infer that means 0 matches.
return 0;
}
}
/**
* Method to select one object from the DB.
*
* @param Criteria $criteria object used to create the SELECT statement.
* @param Connection $con
* @return ScriptTask
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doSelectOne(Criteria $criteria, $con = null)
{
$critcopy = clone $criteria;
$critcopy->setLimit(1);
$objects = ScriptTaskPeer::doSelect($critcopy, $con);
if ($objects) {
return $objects[0];
}
return null;
}
/**
* Method to do selects.
*
* @param Criteria $criteria The Criteria object used to build the SELECT statement.
* @param Connection $con
* @return array Array of selected Objects
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doSelect(Criteria $criteria, $con = null)
{
return ScriptTaskPeer::populateObjects(ScriptTaskPeer::doSelectRS($criteria, $con));
}
/**
* Prepares the Criteria object and uses the parent doSelect()
* method to get a ResultSet.
*
* Use this method directly if you want to just get the resultset
* (instead of an array of objects).
*
* @param Criteria $criteria The Criteria object used to build the SELECT statement.
* @param Connection $con the connection to use
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
* @return ResultSet The resultset object with numerically-indexed fields.
* @see BasePeer::doSelect()
*/
public static function doSelectRS(Criteria $criteria, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
if (!$criteria->getSelectColumns()) {
$criteria = clone $criteria;
ScriptTaskPeer::addSelectColumns($criteria);
}
// Set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
// BasePeer returns a Creole ResultSet, set to return
// rows indexed numerically.
return BasePeer::doSelect($criteria, $con);
}
/**
* The returned array will contain objects of the default type or
* objects that inherit from the default.
*
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function populateObjects(ResultSet $rs)
{
$results = array();
// set the class once to avoid overhead in the loop
$cls = ScriptTaskPeer::getOMClass();
$cls = Propel::import($cls);
// populate the object(s)
while ($rs->next()) {
$obj = new $cls();
$obj->hydrate($rs);
$results[] = $obj;
}
return $results;
}
/**
* Returns the TableMap related to this peer.
* This method is not needed for general use but a specific application could have a need.
* @return TableMap
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function getTableMap()
{
return Propel::getDatabaseMap(self::DATABASE_NAME)->getTable(self::TABLE_NAME);
}
/**
* The class that the Peer will make instances of.
*
* This uses a dot-path notation which is tranalted into a path
* relative to a location on the PHP include_path.
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
*
* @return string path.to.ClassName
*/
public static function getOMClass()
{
return ScriptTaskPeer::CLASS_DEFAULT;
}
/**
* Method perform an INSERT on the database, given a ScriptTask or Criteria object.
*
* @param mixed $values Criteria or ScriptTask object containing data that is used to create the INSERT statement.
* @param Connection $con the connection to use
* @return mixed The new primary key.
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doInsert($values, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
} else {
$criteria = $values->buildCriteria(); // build Criteria from ScriptTask object
}
// Set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
try {
// use transaction because $criteria could contain info
// for more than one table (I guess, conceivably)
$con->begin();
$pk = BasePeer::doInsert($criteria, $con);
$con->commit();
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
return $pk;
}
/**
* Method perform an UPDATE on the database, given a ScriptTask or Criteria object.
*
* @param mixed $values Criteria or ScriptTask object containing data create the UPDATE statement.
* @param Connection $con The connection to use (specify Connection exert more control over transactions).
* @return int The number of affected rows (if supported by underlying database driver).
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doUpdate($values, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$selectCriteria = new Criteria(self::DATABASE_NAME);
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
$comparison = $criteria->getComparison(ScriptTaskPeer::SCRTAS_UID);
$selectCriteria->add(ScriptTaskPeer::SCRTAS_UID, $criteria->remove(ScriptTaskPeer::SCRTAS_UID), $comparison);
} else {
$criteria = $values->buildCriteria(); // gets full criteria
$selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s)
}
// set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
return BasePeer::doUpdate($selectCriteria, $criteria, $con);
}
/**
* Method to DELETE all rows from the SCRIPT_TASK table.
*
* @return int The number of affected rows (if supported by underlying database driver).
*/
public static function doDeleteAll($con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$affectedRows = 0; // initialize var to track total num of affected rows
try {
// use transaction because $criteria could contain info
// for more than one table or we could emulating ON DELETE CASCADE, etc.
$con->begin();
$affectedRows += BasePeer::doDeleteAll(ScriptTaskPeer::TABLE_NAME, $con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Method perform a DELETE on the database, given a ScriptTask or Criteria object OR a primary key value.
*
* @param mixed $values Criteria or ScriptTask object or primary key or array of primary keys
* which is used to create the DELETE statement
* @param Connection $con the connection to use
* @return int The number of affected rows (if supported by underlying database driver).
* This includes CASCADE-related rows
* if supported by native driver or if emulated using Propel.
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function doDelete($values, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(ScriptTaskPeer::DATABASE_NAME);
}
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
} elseif ($values instanceof ScriptTask) {
$criteria = $values->buildPkeyCriteria();
} else {
// it must be the primary key
$criteria = new Criteria(self::DATABASE_NAME);
$criteria->add(ScriptTaskPeer::SCRTAS_UID, (array) $values, Criteria::IN);
}
// Set the correct dbName
$criteria->setDbName(self::DATABASE_NAME);
$affectedRows = 0; // initialize var to track total num of affected rows
try {
// use transaction because $criteria could contain info
// for more than one table or we could emulating ON DELETE CASCADE, etc.
$con->begin();
$affectedRows += BasePeer::doDelete($criteria, $con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Validates all modified columns of given ScriptTask object.
* If parameter $columns is either a single column name or an array of column names
* than only those columns are validated.
*
* NOTICE: This does not apply to primary or foreign keys for now.
*
* @param ScriptTask $obj The object to validate.
* @param mixed $cols Column name or array of column names.
*
* @return mixed TRUE if all columns are valid or the error message of the first invalid column.
*/
public static function doValidate(ScriptTask $obj, $cols = null)
{
$columns = array();
if ($cols) {
$dbMap = Propel::getDatabaseMap(ScriptTaskPeer::DATABASE_NAME);
$tableMap = $dbMap->getTable(ScriptTaskPeer::TABLE_NAME);
if (! is_array($cols)) {
$cols = array($cols);
}
foreach ($cols as $colName) {
if ($tableMap->containsColumn($colName)) {
$get = 'get' . $tableMap->getColumn($colName)->getPhpName();
$columns[$colName] = $obj->$get();
}
}
} else {
if ($obj->isNew() || $obj->isColumnModified(ScriptTaskPeer::SCRTAS_OBJ_TYPE))
$columns[ScriptTaskPeer::SCRTAS_OBJ_TYPE] = $obj->getScrtasObjType();
}
return BasePeer::doValidate(ScriptTaskPeer::DATABASE_NAME, ScriptTaskPeer::TABLE_NAME, $columns);
}
/**
* Retrieve a single object by pkey.
*
* @param mixed $pk the primary key.
* @param Connection $con the connection to use
* @return ScriptTask
*/
public static function retrieveByPK($pk, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$criteria = new Criteria(ScriptTaskPeer::DATABASE_NAME);
$criteria->add(ScriptTaskPeer::SCRTAS_UID, $pk);
$v = ScriptTaskPeer::doSelect($criteria, $con);
return !empty($v) > 0 ? $v[0] : null;
}
/**
* Retrieve multiple objects by pkey.
*
* @param array $pks List of primary keys
* @param Connection $con the connection to use
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function retrieveByPKs($pks, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$objs = null;
if (empty($pks)) {
$objs = array();
} else {
$criteria = new Criteria();
$criteria->add(ScriptTaskPeer::SCRTAS_UID, $pks, Criteria::IN);
$objs = ScriptTaskPeer::doSelect($criteria, $con);
}
return $objs;
}
}
// static code to register the map builder for this Peer with the main Propel class
if (Propel::isInit()) {
// the MapBuilder classes register themselves with Propel during initialization
// so we need to load them here.
try {
BaseScriptTaskPeer::getMapBuilder();
} catch (Exception $e) {
Propel::log('Could not initialize Peer: ' . $e->getMessage(), Propel::LOG_ERR);
}
} else {
// even if Propel is not yet initialized, the map builder class can be registered
// now and then it will be loaded when Propel initializes.
require_once 'classes/model/map/ScriptTaskMapBuilder.php';
Propel::registerMapBuilder('classes.model.map.ScriptTaskMapBuilder');
}

File diff suppressed because it is too large Load Diff

View File

@@ -2829,6 +2829,38 @@ CREATE TABLE `CATALOG`
PRIMARY KEY (`CAT_UID`, `CAT_TYPE`),
KEY `indexType`( `CAT_TYPE`)
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Definitions catalog.';
#-----------------------------------------------------------------------------
#-- TABLE: SCRIPT_TASK
#-----------------------------------------------------------------------------
DROP TABLE IF EXISTS SCRIPT_TASK;
CREATE TABLE SCRIPT_TASK
(
SCRTAS_UID VARCHAR(32) NOT NULL,
PRJ_UID VARCHAR(32) NOT NULL,
ACT_UID VARCHAR(32) NOT NULL,
SCRTAS_OBJ_TYPE VARCHAR(10) default 'TRIGGER' NOT NULL,
SCRTAS_OBJ_UID VARCHAR(32) NOT NULL,
PRIMARY KEY (SCRTAS_UID)
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
#-----------------------------------------------------------------------------
#-- EMAIL_EVENT
#-----------------------------------------------------------------------------
DROP TABLE IF EXISTS `EMAIL_EVENT`;
CREATE TABLE `EMAIL_EVENT`
(
`EMAIL_EVENT_UID` VARCHAR(32) NOT NULL,
`PRJ_UID` VARCHAR(32) default '' NOT NULL,
`EVN_UID` VARCHAR(32) NOT NULL,
`EMAIL_EVENT_FROM` VARCHAR(100) default '' NOT NULL,
`EMAIL_EVENT_TO` MEDIUMTEXT NOT NULL,
`EMAIL_EVENT_SUBJECT` VARCHAR(150) default '' NOT NULL,
`PRF_UID` VARCHAR(32) default '' NOT NULL,
PRIMARY KEY (`EMAIL_EVENT_UID`)
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
# This restores the fkey checks, after having unset them earlier
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -0,0 +1,61 @@
<?php
/**
* authSourcesSynchronize.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2011 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.
*
**/
global $RBAC;
switch ($RBAC->userCanAccess("PM_USERS")) {
case - 2:
G::SendTemporalMessage("ID_USER_HAVENT_RIGHTS_SYSTEM", "error", "labels");
G::header("location: ../login/login");
die;
break;
case - 1:
G::SendTemporalMessage("ID_USER_HAVENT_RIGHTS_PAGE", "error", "labels");
G::header("location: ../login/login");
die;
break;
case -3:
G::SendTemporalMessage("ID_USER_HAVENT_RIGHTS_PAGE", "error", "labels");
G::header("location: ../login/login");
die;
break;
}
if (!isset($_REQUEST["tab"])) {
$_REQUEST["tab"] = "synchronizeDepartments";
}
$authenticationSource = array("AUTH_SOURCE_UID" => $_REQUEST["authUid"], "CURRENT_TAB" => ($_REQUEST["tab"] == "synchronizeDepartments" ? 0 : 1));
$oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addExtJsScript("authSources/authSourcesSynchronize", false);
$oHeadPublisher->addContent("authSources/authSourcesSynchronize");
$oHeadPublisher->assign("AUTHENTICATION_SOURCE", $authenticationSource);
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
G::RenderPage("publish", "extJs");

View File

@@ -0,0 +1,472 @@
<?php
/**
* authSourcesSynchronizeAjax.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2011 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.
*
**/
class treeNode extends stdclass
{
public $text = "";
public $cls = "";
public $leaf = false;
public $checked = false;
public $children = array();
public $id = "";
}
try {
require_once ("classes" . PATH_SEP . "model" . PATH_SEP . "Department.php");
G::LoadThirdParty("pear" . PATH_SEP . "json", "class.json");
$json = new Services_JSON();
header("Content-Type: application/json;");
switch ($_REQUEST["m"]) {
case "loadDepartments":
global $ldapAdvanced;
global $departments;
global $terminatedOu;
global $baseDN;
$ldapAdvanced = getLDAPAdvanceInstance($_REQUEST["authUid"]);
$RBAC =& RBAC::getSingleton();
$authenticationSource = $RBAC->authSourcesObj->load($_REQUEST["authUid"]);
$baseDN = $authenticationSource["AUTH_SOURCE_BASE_DN"];
$departments = $ldapAdvanced->searchDepartments();
$terminatedOu = $ldapAdvanced->getTerminatedOu();
$nodes = lookForChildrenDeps("");
die($json->encode($nodes));
break;
case "saveDepartments":
$depsToCheck = explode("|", $_REQUEST["departmentsDN"]);
$depsToCheck = array_map("urldecode", $depsToCheck);
$depsToUncheck = getDepartmentsToUncheck($depsToCheck);
$RBAC =& RBAC::getSingleton();
$authenticationSource = $RBAC->authSourcesObj->load($_REQUEST["authUid"]);
$ldapAdvanced = getLDAPAdvanceInstance($_REQUEST["authUid"]);
foreach ($depsToCheck as $departmentDN) {
$baseDN = str_replace($authenticationSource["AUTH_SOURCE_BASE_DN"], "", $departmentDN);
$ous = custom_ldap_explode_dn($departmentDN);
$currentDep = array_shift($ous);
$parentDN = implode(",", $ous);
//$ous = custom_ldap_explode_dn($baseDN);
//$currentDep = array_shift($ous);
foreach ($ous as $key => $val) {
$aux = explode("=", $val);
if (isset($aux[0]) && strtolower(trim($aux[0])) != "ou") {
unset($ous[$key]);
}
}
if ($currentDep == "") {
$depTitle = "ROOT " . $authenticationSource["AUTH_SOURCE_BASE_DN"];
} else {
$depAux = explode("=", $currentDep);
$depTitle = trim($depAux[1]);
}
$departmentUID = $ldapAdvanced->getDepUidIfExistsDN($departmentDN);
if ($departmentUID == "") {
if (count($ous) == 0) {
$parentUid = "";
} else {
$parentUid = $ldapAdvanced->getDepUidIfExistsDN($parentDN);
if ($parentUid == "") {
$response = new stdclass();
$response->status = "ERROR";
$response->message = "Parent departments are needed before create this sub department " . $parentDN;
die($json->encode($response));
}
}
$department = new department();
$row["DEP_TITLE"] = stripslashes($depTitle);
$row["DEP_PARENT"] = $parentUid;
$row["DEP_LDAP_DN"] = $departmentDN;
$row["DEP_REF_CODE"] = "";
$departmentUID = $department->create($row);
if ($departmentUID == false) {
$response = new stdclass();
$response->status = "ERROR";
$response->message = "Error creating department";
die($json->encode($response));
}
}
}
if (count($depsToUncheck) > 0) {
foreach ($depsToUncheck as $departmentDN) {
$departmentUID = $ldapAdvanced->getDepUidIfExistsDN($departmentDN);
if ($departmentUID != "") {
$department = new department();
$departmentInfo = $department->Load($departmentUID);
$arrayAux1 = custom_ldap_explode_dn($departmentDN);
foreach ($arrayAux1 as $index => $value) {
$arrayAux2 = explode("=", $value);
if (isset($arrayAux2[0]) && strtolower(trim($arrayAux2[0])) == "ou") {
unset($arrayAux1[$index]);
}
}
$departmentBaseDn = implode(",", $arrayAux1);
if (strtolower($departmentBaseDn) == strtolower($authenticationSource["AUTH_SOURCE_BASE_DN"])) {
$departmentInfo["DEP_LDAP_DN"] = "";
$department->update($departmentInfo);
if (!isset($authenticationSource["AUTH_SOURCE_DATA"]["DEPARTMENTS_TO_UNASSIGN"])) {
$authenticationSource["AUTH_SOURCE_DATA"]["DEPARTMENTS_TO_UNASSIGN"] = array();
}
$authenticationSource["AUTH_SOURCE_DATA"]["DEPARTMENTS_TO_UNASSIGN"][] = $departmentUID;
}
}
}
$RBAC->authSourcesObj->update($authenticationSource);
}
$response = new stdclass();
$response->status = "OK";
die($json->encode($response));
break;
case "loadGroups":
global $ldapAdvanced;
global $groups;
$ldapAdvanced = getLDAPAdvanceInstance($_REQUEST["authUid"]);
$groups = $ldapAdvanced->searchGroups();
$nodes = lookForChildrenGroups();
die($json->encode($nodes));
break;
case "saveGroups":
$groupsToCheck = explode("|", $_REQUEST["groupsDN"]);
$groupsToCheck = array_map("urldecode", $groupsToCheck);
$groupsToUncheck = getGroupsToUncheck($groupsToCheck);
$RBAC =& RBAC::getSingleton();
$authenticationSource = $RBAC->authSourcesObj->load($_REQUEST["authUid"]);
$ldapAdvanced = getLDAPAdvanceInstance($_REQUEST["authUid"]);
foreach ($groupsToCheck as $groupDN) {
//$baseDN = str_replace($authenticationSource["AUTH_SOURCE_BASE_DN"], "", $groupDN);
$ous = custom_ldap_explode_dn($groupDN);
$currentGroup = array_shift($ous);
//$parentDN = implode(",", $ous);
//$ous = custom_ldap_explode_dn($baseDN);
//$currentGroup = array_shift($ous);
foreach ($ous as $key => $val) {
$aux = explode("=", $val);
if (isset($aux[0]) && strtolower(trim($aux[0]) != "ou")) {
unset($ous[$key]);
}
}
$groupAux = explode("=", $currentGroup);
$groupTitle = isset($groupAux[1]) ? trim($groupAux[1]) : "";
$groupUID = $ldapAdvanced->getGrpUidIfExistsDN($groupDN);
if ($groupUID == "") {
$group = new Groupwf();
$row["GRP_TITLE"] = stripslashes($groupTitle);
$row["GRP_LDAP_DN"] = $groupDN;
$groupUID = $group->create($row);
if ($groupUID == false) {
$response = new stdclass();
$response->status = "ERROR";
$response->message = "Error creating group";
die($json->encode($response));
}
}
}
if (count($groupsToUncheck) > 0) {
foreach ($groupsToUncheck as $groupDN) {
$groupUID = $ldapAdvanced->getGrpUidIfExistsDN($groupDN);
if ($groupUID != "") {
$group = new Groupwf();
$groupInfo = $group->Load($groupUID);
$groupInfo["GRP_LDAP_DN"] = "";
$group->update($groupInfo);
if (!isset($authenticationSource["AUTH_SOURCE_DATA"]["GROUPS_TO_UNASSIGN"])) {
$authenticationSource["AUTH_SOURCE_DATA"]["GROUPS_TO_UNASSIGN"] = array();
}
$authenticationSource["AUTH_SOURCE_DATA"]["GROUPS_TO_UNASSIGN"][] = $groupUID;
}
}
$RBAC->authSourcesObj->update($authenticationSource);
}
$response = new stdclass();
$response->status = "OK";
die($json->encode($response));
break;
}
} catch (Exception $error) {
$response = new stdclass();
$response->status = "ERROR";
$response->message = $error->getMessage();
die($json->encode($response));
}
function getLDAPAdvanceInstance($authUid)
{
$RBAC = &RBAC::getSingleton();
$ldapAdvanced = new ldapAdvanced();
$ldapAdvanced->sAuthSource = $authUid;
$ldapAdvanced->sSystem = $RBAC->sSystem;
return $ldapAdvanced;
}
function getDepartments($parent)
{
global $departments;
global $terminatedOu;
global $baseDN;
$parentDepartments = $departments;
$childDepartments = $departments;
$currentDepartments = array();
foreach ($parentDepartments as $key => $val) {
if (strtolower($val["dn"]) != strtolower($parent)) {
if ((strtolower($val["parent"]) == strtolower($parent)) && (strtolower($val["ou"]) != strtolower($terminatedOu))) {
$node = array();
$node["DEP_UID"] = $val["ou"];
$node["DEP_TITLE"] = $val["ou"];
$node["DEP_USERS"] = $val["users"];
$node["DEP_DN"] = $val["dn"];
$node["HAS_CHILDREN"] = false;
$departments[$key]["hasChildren"] = false;
foreach ($childDepartments as $key2 => $val2) {
if (strtolower($val2["parent"]) == strtolower($val["dn"])) {
$node["HAS_CHILDREN"] = true;
$departments[$key]["hasChildren"] = true;
break;
}
}
$node["DEP_LAST"] = false;
$currentDepartments[] = $node;
}
}
}
if (isset($currentDepartments[count($currentDepartments) - 1])) {
$currentDepartments[count($currentDepartments) - 1]["DEP_LAST"] = true;
}
return $currentDepartments;
}
function lookForChildrenDeps($parent)
{
global $ldapAdvanced;
global $departments;
$allDepartments = getDepartments($parent);
$departmentsObjects = array();
$arrayDepartmentNumberOfUsersFromDb = $ldapAdvanced->departmentsGetNumberOfUsersFromDb();
foreach ($allDepartments as $department) {
$departmentObject = new treeNode();
$departmentObject->text = htmlentities($department["DEP_TITLE"], ENT_QUOTES, "UTF-8");
$departmentUid = $ldapAdvanced->getDepUidIfExistsDN($department["DEP_DN"]);
if ($departmentUid != "") {
$departmentObject->text .= " (" . ((isset($arrayDepartmentNumberOfUsersFromDb[$departmentUid]))? $arrayDepartmentNumberOfUsersFromDb[$departmentUid] : 0) . ")";
$departmentObject->checked = true;
} else {
$departmentObject->checked = false;
}
if ($department["HAS_CHILDREN"] == 1) {
$departmentObject->children = lookForChildrenDeps($department["DEP_DN"]);
}
$departmentObject->id = urlencode($department["DEP_DN"]);
$departmentsObjects[] = $departmentObject;
}
return $departmentsObjects;
}
function getDepartmentsWithDN()
{
$arrayDepartmentLdapDn = array();
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(DepartmentPeer::DEP_LDAP_DN);
$criteria->add(DepartmentPeer::DEP_LDAP_DN, "", Criteria::NOT_EQUAL);
$criteria->add(DepartmentPeer::DEP_LDAP_DN, null, Criteria::ISNOTNULL);
$rsCriteria = DepartmentPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$arrayDepartmentLdapDn[] = $row;
}
return $arrayDepartmentLdapDn;
}
function getDepartmentsToUncheck($depsToCheck)
{
$departmentsWithDN = getDepartmentsWithDN();
$depsToUncheck = array();
foreach ($departmentsWithDN as $departmentWithDN) {
$found = false;
foreach ($depsToCheck as $depToCheck) {
if ($departmentWithDN["DEP_LDAP_DN"] == $depToCheck) {
$found = true;
}
}
if (!$found) {
$depsToUncheck[] = $departmentWithDN["DEP_LDAP_DN"];
}
}
return $depsToUncheck;
}
function getGroups()
{
global $groups;
$currentGroups = array();
foreach ($groups as $key => $val) {
$node = array();
$node["GRP_UID"] = $val["cn"];
$node["GRP_TITLE"] = $val["cn"];
$node["GRP_USERS"] = $val["users"];
$node["GRP_DN"] = $val["dn"];
$currentGroups[] = $node;
}
return $currentGroups;
}
function lookForChildrenGroups()
{
global $ldapAdvanced;
global $groups;
$allGroups = getGroups();
$groupsObjects = array();
$arrayGroupNumberOfUsersFromDb = $ldapAdvanced->groupsGetNumberOfUsersFromDb();
foreach ($allGroups as $group) {
$groupObject = new treeNode();
$groupObject->text = htmlentities($group["GRP_TITLE"], ENT_QUOTES, "UTF-8");
$groupUid = $ldapAdvanced->getGrpUidIfExistsDN($group["GRP_DN"]);
if ($groupUid != "") {
$groupObject->text .= " (" . ((isset($arrayGroupNumberOfUsersFromDb[$groupUid]))? $arrayGroupNumberOfUsersFromDb[$groupUid] : 0) . ")";
$groupObject->checked = true;
} else {
$groupObject->checked = false;
}
$groupObject->id = urlencode($group["GRP_DN"]);
$groupsObjects[] = $groupObject;
}
return $groupsObjects;
}
function getGroupsWithDN()
{
$groupInstance = new Groupwf();
$allGroups = $groupInstance->getAll()->data;
$groupsWithDN = array();
foreach ($allGroups as $group) {
if ($group["GRP_LDAP_DN"] != "") {
$groupsWithDN[] = $group;
}
}
return $groupsWithDN;
}
function getGroupsToUncheck($groupsToCheck)
{
$groupsWithDN = getGroupsWithDN();
$groupsToUncheck = array();
foreach ($groupsWithDN as $groupWithDN) {
$found = false;
foreach ($groupsToCheck as $groupToCheck) {
if ($groupWithDN["GRP_LDAP_DN"] == $groupToCheck) {
$found = true;
}
}
if (!$found) {
$groupsToUncheck[] = $groupWithDN["GRP_LDAP_DN"];
}
}
return $groupsToUncheck;
}
function custom_ldap_explode_dn($dn)
{
$result = ldap_explode_dn($dn, 0);
unset($result["count"]);
foreach ($result as $key => $value) {
$result[$key] = addcslashes(preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value), '<>,"');
}
return($result);
}

View File

@@ -158,17 +158,15 @@ try {
if (($sObject != '.') && ($sObject != '..') && ($sObject != '.svn') && ($sObject != 'ldap')) {
if (is_file( PATH_RBAC . 'plugins' . PATH_SEP . $sObject )) {
$sType = trim(str_replace(array("class.", ".php"), "", $sObject));
$statusPlugin = $pluginRegistry->getStatusPlugin($sType);
$flagAdd = false;
if (preg_match("/^(?:enabled|disabled)$/", $statusPlugin)) {
if ($statusPlugin == "enabled") {
$flagAdd = true;
}
} else {
/*----------------------------------********---------------------------------*/
if (PMLicensedFeatures
::getSingleton()
->verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) {
$flagAdd = true;
}
/*----------------------------------********---------------------------------*/
if ($flagAdd) {
$arr[] = array("sType" => $sType, "sLabel" => $sType);

View File

@@ -83,17 +83,8 @@ if ($fields['AUTH_SOURCE_PROVIDER'] == 'ldap') {
$oHeadPublisher->assign( 'sUID', $_GET['sUID'] );
G::RenderPage( 'publish', 'extJs' );
} else {
if (file_exists( PATH_PLUGINS . $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
$pluginEnabled = 0;
if (file_exists(PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . ".php")) {
$pluginRegistry = &PMPluginRegistry::getSingleton();
$pluginDetail = $pluginRegistry->getPluginDetails($fields["AUTH_SOURCE_PROVIDER"] . ".php");
if ($pluginDetail && $pluginDetail->enabled) {
$pluginEnabled = 1;
}
}
if (file_exists( PATH_XMLFORM . 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
$pluginEnabled = 1;
if ($pluginEnabled == 1) {
//The attributes the users
@@ -110,17 +101,17 @@ if ($fields['AUTH_SOURCE_PROVIDER'] == 'ldap') {
}
$fields["AUTH_SOURCE_ATTRIBUTE_IDS"] = $attributes;
if (file_exists(PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . $fields["AUTH_SOURCE_PROVIDER"] . 'Flag')) {
if (file_exists(PATH_XMLFORM . 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Flag')) {
$oHeadPublisher = & headPublisher::getSingleton ();
$oHeadPublisher->assign("Fields", $fields);
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'library', false, true );
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'ldapAdvancedForm', false, true );
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'ldapAdvancedList', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/library', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/ldapAdvancedForm', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/ldapAdvancedList', false, true );
G::RenderPage ('publish', 'extJs');
die();
}
$G_PUBLISH->AddContent("xmlform", "xmlform", $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . $fields["AUTH_SOURCE_PROVIDER"] . "Edit", "", $fields, "../authSources/authSources_Save");
$G_PUBLISH->AddContent("xmlform", "xmlform", 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit', '', $fields, '../authSources/authSources_Save');
} else {
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => G::LoadTranslation( 'ID_AUTH_SOURCE_MISSING' )
) );

View File

@@ -33,16 +33,21 @@ G::LoadClass( 'configuration' );
$c = new Configurations();
$configPage = $c->getConfiguration( 'authSourcesList', 'pageSize', '', $_SESSION['USER_LOGGED'] );
$Config['pageSize'] = isset( $configPage['pageSize'] ) ? $configPage['pageSize'] : 20;
$G_MAIN_MENU = 'processmaker';
$G_SUB_MENU = 'users';
$G_ID_MENU_SELECTED = 'USERS';
$G_ID_SUB_MENU_SELECTED = 'AUTH_SOURCES';
$G_PUBLISH = new Publisher();
$licensedFeatures = & PMLicensedFeatures::getSingleton();
$oHeadPublisher = & headPublisher::getSingleton();
$oHeadPublisher->addExtJsScript( 'authSources/authSourcesList', false ); //adding a javascript file .js
$oHeadPublisher->addExtJsScript( 'authSources/authSourcesList', false ); //adding a javascript file .js
/*----------------------------------********---------------------------------*/
if ($licensedFeatures->verifyfeature('sywN09PSzh1MVdOajZBdnhMbFhCSnpNT1lLTEFwVklmOTE=')) {
$oHeadPublisher->addExtJsScript( 'authSources/authSourcesListSyn', false ); //adding a javascript file .js
}
/*----------------------------------********---------------------------------*/
$oHeadPublisher->addContent( 'authSources/authSourcesList' ); //adding a html file .html.
$oHeadPublisher->assign( 'FORMATS', $c->getFormats() );
$oHeadPublisher->assign( 'CONFIG', $Config );

View File

@@ -37,19 +37,8 @@ $G_ID_SUB_MENU_SELECTED = 'AUTH_SOURCES';
$fields = array ('AUTH_SOURCE_PROVIDER' => $_REQUEST['AUTH_SOURCE_PROVIDER']);
$G_PUBLISH = new Publisher();
if (file_exists( PATH_PLUGINS . $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
$pluginEnabled = 0;
if (file_exists(PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . ".php")) {
$pluginRegistry = &PMPluginRegistry::getSingleton();
$pluginDetail = $pluginRegistry->getPluginDetails($fields["AUTH_SOURCE_PROVIDER"] . ".php");
if ($pluginDetail && $pluginDetail->enabled) {
$pluginEnabled = 1;
}
}
if (file_exists( PATH_XMLFORM . 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
$pluginEnabled = 1;
if ($pluginEnabled == 1) {
//The attributes the users
G::LoadClass("pmFunctions");
@@ -64,17 +53,17 @@ if (file_exists( PATH_PLUGINS . $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fi
}
}
$fields["AUTH_SOURCE_ATTRIBUTE_IDS"] = $attributes;
if (file_exists(PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . $fields["AUTH_SOURCE_PROVIDER"] . 'Flag')) {
if (file_exists(PATH_XMLFORM . 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Flag')) {
$oHeadPublisher = & headPublisher::getSingleton ();
$oHeadPublisher->assign("Fields", $fields);
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'library', false, true );
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'ldapAdvancedForm', false, true );
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'ldapAdvancedList', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/library', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/ldapAdvancedForm', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/ldapAdvancedList', false, true );
G::RenderPage ('publish', 'extJs');
die();
}
$G_PUBLISH->AddContent("xmlform", "xmlform", $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . $fields["AUTH_SOURCE_PROVIDER"] . "Edit", "", $fields, "../authSources/authSources_Save");
$G_PUBLISH->AddContent("xmlform", "xmlform", 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit', '', $fields, '../authSources/authSources_Save');
} else {
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => G::LoadTranslation( 'ID_AUTH_SOURCE_MISSING' )) );
}

View File

@@ -35,20 +35,16 @@ $G_ID_SUB_MENU_SELECTED = 'AUTH_SOURCES';
$G_PUBLISH = new Publisher();
$fields = $RBAC->getAuthSource( $_GET['sUID'] );
if (file_exists( PATH_PLUGINS . $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
if (file_exists( PATH_XMLFORM . 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml' )) {
$pluginEnabled = 0;
if (file_exists(PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . ".php")) {
$pluginRegistry = &PMPluginRegistry::getSingleton();
$pluginDetail = $pluginRegistry->getPluginDetails($fields["AUTH_SOURCE_PROVIDER"] . ".php");
if ($pluginDetail && $pluginDetail->enabled) {
$pluginEnabled = 1;
}
/*----------------------------------********---------------------------------*/
$licensedFeatures = & PMLicensedFeatures::getSingleton();
if ($licensedFeatures->verifyfeature('sywN09PSzh1MVdOajZBdnhMbFhCSnpNT1lLTEFwVklmOTE=')) {
$pluginEnabled = 1;
}
/*----------------------------------********---------------------------------*/
if ($pluginEnabled == 0) {
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => G::LoadTranslation( 'ID_AUTH_SOURCE_MISSING' ) ) );
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => G::LoadTranslation( 'ID_AUTH_SOURCE_FEATURE_MISSING' ) ) );
G::RenderPage( 'publish', 'blank' );
} else {
G::LoadClass('configuration');
@@ -61,12 +57,12 @@ if (file_exists( PATH_PLUGINS . $fields['AUTH_SOURCE_PROVIDER'] . PATH_SEP . $fi
$oHeadPublisher->assign("FORMATS", $c->getFormats());
$oHeadPublisher->assign("CONFIG", $Config);
if (file_exists(PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . $fields["AUTH_SOURCE_PROVIDER"] . 'Flag')) {
if (file_exists(PATH_XMLFORM . 'ldapAdvanced/' . $fields['AUTH_SOURCE_PROVIDER'] . 'Flag')) {
$oHeadPublisher = & headPublisher::getSingleton ();
$oHeadPublisher->assign("Fields", $fields);
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'library', false, true );
$oHeadPublisher->addExtJsScript (PATH_PLUGINS . $fields["AUTH_SOURCE_PROVIDER"] . PATH_SEP . 'js' . PATH_SEP . 'ldapAdvancedSearch', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/library', false, true );
$oHeadPublisher->addExtJsScript (PATH_TPL. 'ldapAdvanced/ldapAdvancedSearch', false, true );
G::RenderPage ('publish', 'extJs');
die();
}

View File

@@ -0,0 +1,348 @@
<?php
$function = $_REQUEST['functionAccion'];
switch ($function) {
case "ldapVerifyIfExistsRecordsInDb":
$response = array();
try {
$authenticationSourceUid = $_POST["authenticationSourceUid"];
$arrayAuthenticationSourceData = $RBAC->getAuthSource($authenticationSourceUid);
$flagUser = false;
$flagDepartment = false;
$flagGroup = false;
//Users
$criteria = new Criteria("rbac");
$criteria->addSelectColumn(RbacUsersPeer::USR_UID);
$criteria->add(RbacUsersPeer::USR_AUTH_USER_DN, "%" . $arrayAuthenticationSourceData["AUTH_SOURCE_BASE_DN"], Criteria::LIKE);
$criteria->setOffset(0); //Start
$criteria->setLimit(1); //Limit
$rsCriteria = RbacUsersPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria->next()) {
$flagUser = true;
}
//Departments
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(DepartmentPeer::DEP_UID);
$criteria->add(DepartmentPeer::DEP_LDAP_DN, "%" . $arrayAuthenticationSourceData["AUTH_SOURCE_BASE_DN"], Criteria::LIKE);
$criteria->setOffset(0); //Start
$criteria->setLimit(1); //Limit
$rsCriteria = DepartmentPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria->next()) {
$flagDepartment = true;
}
//Groups
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(GroupwfPeer::GRP_UID);
$criteria->add(GroupwfPeer::GRP_LDAP_DN, "%" . $arrayAuthenticationSourceData["AUTH_SOURCE_BASE_DN"], Criteria::LIKE);
$criteria->setOffset(0); //Start
$criteria->setLimit(1); //Limit
$rsCriteria = GroupwfPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria->next()) {
$flagGroup = true;
}
//Response
$response["status"] = "OK";
$response["existsRecords"] = ($flagUser || $flagDepartment || $flagGroup)? 1 : 0;
} catch (Exception $e) {
//Response
$response["status"] = "ERROR";
$response["message"] = $e->getMessage();
}
echo G::json_encode($response);
break;
case 'ldapGrid':
$data = array();
switch ($_REQUEST['tipo']) {
case 'crear':
$data = array('ID' => G::generateUniqueID());
break;
case 'read':
if (isset($_REQUEST['data']) && $_REQUEST['data'] != '') {
$dataValue = G::json_decode($_REQUEST['data']);
$data = array();
foreach ($dataValue as $value) {
$data[] = array(
'ID' => G::generateUniqueID(),
'ATTRIBUTE_LDAP' => $value->attributeLdap,
'ATTRIBUTE_USER' => $value->attributeUser
);
}
}
break;
default:
break;
}
echo G::json_encode(array('success'=> true, 'data' => $data, 'message'=>'Created Quote', 'total' => count($data)));
break;
case 'ldapSave':
if (isset($_POST['AUTH_SOURCE_SHOWGRID-checkbox'])) {
if ($_POST['AUTH_SOURCE_SHOWGRID-checkbox'] == 'on') {
$_POST['AUTH_SOURCE_SHOWGRID'] = 'on';
$attributes = G::json_decode($_POST['AUTH_SOURCE_GRID_TEXT']);
$con = 1;
foreach ($attributes as $value) {
$_POST['AUTH_SOURCE_GRID_ATTRIBUTE'][$con] = (array)$value;
$con++;
}
}
unset($_POST['AUTH_SOURCE_SHOWGRID-checkbox']);
}
if ($_POST['AUTH_ANONYMOUS'] == '1') {
$_POST['AUTH_SOURCE_SEARCH_USER'] = '';
$_POST['AUTH_SOURCE_PASSWORD'] = '';
}
if (isset($_POST['AUTH_SOURCE_GRID_TEXT'])) {
unset($_POST['AUTH_SOURCE_GRID_TEXT']);
}
if (isset($_POST['DELETE1'])) {
unset($_POST['DELETE1']);
}
if (isset($_POST['DELETE2'])) {
unset($_POST['DELETE2']);
}
if (isset($_POST['AUTH_SOURCE_ATTRIBUTE_IDS'])) {
unset($_POST['AUTH_SOURCE_ATTRIBUTE_IDS']);
}
if (isset($_POST['AUTH_SOURCE_SHOWGRID_FLAG'])) {
unset($_POST['AUTH_SOURCE_SHOWGRID_FLAG']);
}
if (isset($_POST['AUTH_SOURCE_GRID_TEXT'])) {
unset($_POST['AUTH_SOURCE_GRID_TEXT']);
}
$aCommonFields = array ('AUTH_SOURCE_UID','AUTH_SOURCE_NAME','AUTH_SOURCE_PROVIDER','AUTH_SOURCE_SERVER_NAME','AUTH_SOURCE_PORT','AUTH_SOURCE_ENABLED_TLS','AUTH_ANONYMOUS','AUTH_SOURCE_SEARCH_USER','AUTH_SOURCE_PASSWORD','AUTH_SOURCE_VERSION','AUTH_SOURCE_BASE_DN','AUTH_SOURCE_OBJECT_CLASSES','AUTH_SOURCE_ATTRIBUTES');
$aFields = $aData = array ();
foreach ($_POST as $sField => $sValue) {
if (in_array( $sField, $aCommonFields )) {
$aFields[$sField] = $sValue;
} else {
$aData[$sField] = $sValue;
}
}
if (!isset($aData['AUTH_SOURCE_SHOWGRID']) || $aData['AUTH_SOURCE_SHOWGRID'] == 'off') {
unset($aData['AUTH_SOURCE_GRID_ATTRIBUTE']);
unset($aData['AUTH_SOURCE_SHOWGRID']);
}
$aFields['AUTH_SOURCE_DATA'] = $aData;
if ($aFields['AUTH_SOURCE_UID'] == '') {
$RBAC->createAuthSource( $aFields );
} else {
$RBAC->updateAuthSource( $aFields );
}
echo G::json_encode(array('success'=> true));
break;
case "searchUsers":
$response = array();
try {
$pageSize = $_POST["pageSize"];
$authenticationSourceUid = $_POST["sUID"];
$keyword = $_POST["sKeyword"];
$start = (isset($_POST["start"]))? $_POST["start"]: 0;
$limit = (isset($_POST["limit"]))? $_POST["limit"]: $pageSize;
//Get Users from Database
$arrayUser = array();
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(UsersPeer::USR_USERNAME);
$criteria->add(UsersPeer::USR_STATUS, "CLOSED", Criteria::NOT_EQUAL);
$rsCriteria = UsersPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$arrayUser[$row["USR_USERNAME"]] = 1;
}
//Get data
$arrayData = array();
$ldapAdvanced = new ldapAdvanced();
$ldapAdvanced->sAuthSource = $authenticationSourceUid;
$result = $ldapAdvanced->searchUsers($keyword, $start, $limit);
foreach ($result["data"] as $value) {
$arrayUserData = $value;
if (!isset($arrayUser[$arrayUserData["sUsername"]])) {
$arrayUserData["STATUS"] = "NOT IMPORTED";
$arrayUserData["IMPORT"] = 1;
} else {
$arrayUserData["STATUS"] = "IMPORTED";
$arrayUserData["IMPORT"] = 0;
}
$arrayData[] = $arrayUserData;
}
//Response
$response["status"] = "OK";
$response["success"] = true;
$response["resultTotal"] = $result["numRecTotal"];
$response["resultRoot"] = $arrayData;
} catch (Exception $e) {
//Response
$response["status"] = "ERROR";
$response["message"] = $e->getMessage();
}
echo G::json_encode($response);
break;
case 'importUsers':
$usersImport = $_REQUEST['UsersImport'];
$authSourceUid = $_REQUEST['AUTH_SOURCE_UID'];
$aUsers = G::json_decode($usersImport);
global $RBAC;
$aFields = $RBAC->getAuthSource( $authSourceUid );
$aAttributes = array();
if (isset($aFields['AUTH_SOURCE_DATA']['AUTH_SOURCE_GRID_ATTRIBUTE'])) {
$aAttributes = $aFields['AUTH_SOURCE_DATA']['AUTH_SOURCE_GRID_ATTRIBUTE'];
}
$usersCreated = '';
$countUsers = 0;
//$usersImport
foreach ($aUsers as $sUser) {
$aUser = (array)$sUser;
$matches = array();
$aData = array();
$aData['USR_USERNAME'] = str_replace( "*", "'", $aUser['sUsername'] );
$aData["USR_PASSWORD"] = "00000000000000000000000000000000";
// note added by gustavo gustavo-at-colosa.com
// asign the FirstName and LastName variables
// add replace to change D*Souza to D'Souza by krlos
$aData['USR_FIRSTNAME'] = str_replace( "*", "'", $aUser['sFirstname'] );
$aData['USR_LASTNAME'] = str_replace( "*", "'", $aUser['sLastname'] );
$aData['USR_EMAIL'] = $aUser['sEmail'];
$aData['USR_DUE_DATE'] = date( 'Y-m-d', mktime( 0, 0, 0, date( 'm' ), date( 'd' ), date( 'Y' ) + 2 ) );
$aData['USR_CREATE_DATE'] = date( 'Y-m-d H:i:s' );
$aData['USR_UPDATE_DATE'] = date( 'Y-m-d H:i:s' );
$aData['USR_BIRTHDAY'] = date( 'Y-m-d' );
$aData['USR_STATUS'] = (isset($aUser['USR_STATUS'])) ? (($aUser['USR_STATUS'] == 'ACTIVE') ? 1 : 0) : 1;
$aData['USR_AUTH_TYPE'] = strtolower( $aFields['AUTH_SOURCE_PROVIDER'] );
$aData['UID_AUTH_SOURCE'] = $aFields['AUTH_SOURCE_UID'];
// validating with regexp if there are some missing * inside the DN string
// if it's so the is changed to the ' character
preg_match( '/[a-zA-Z]\*[a-zA-Z]/', $aUser['sDN'], $matches );
foreach ($matches as $key => $match) {
$newMatch = str_replace( '*', '\'', $match );
$aUser['sDN'] = str_replace( $match, $newMatch, $aUser['sDN'] );
}
$aData['USR_AUTH_USER_DN'] = $aUser['sDN'];
try {
$sUserUID = $RBAC->createUser( $aData, 'PROCESSMAKER_OPERATOR', $aFields['AUTH_SOURCE_NAME']);
$usersCreated .= $aData['USR_USERNAME'].' ';
$countUsers ++;
} catch (Exception $oError) {
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', array ('MESSAGE' => $oError->getMessage()) );
G::RenderPage("publish", "blank");
die();
}
$aData['USR_STATUS'] = (isset($aUser['USR_STATUS'])) ? $aUser['USR_STATUS'] :'ACTIVE';
$aData['USR_UID'] = $sUserUID;
$aData['USR_ROLE'] = 'PROCESSMAKER_OPERATOR';
G::LoadClass("calendar");
$calendarObj = new Calendar();
$calendarObj->assignCalendarTo($sUserUID, '00000000000000000000000000000001', 'USER');
if (count($aAttributes)) {
foreach ($aAttributes as $value) {
if (isset($aUser[$value['attributeUser']])) {
$aData[$value['attributeUser']] = str_replace( "*", "'", $aUser[$value['attributeUser']] );
if ($value['attributeUser'] == 'USR_STATUS') {
$evalValue = $aData[$value['attributeUser']];
$statusValue = $aData['USR_STATUS'];
$aData[$value['attributeUser']] = $statusValue;
}
}
}
}
require_once 'classes/model/Users.php';
$oUser = new Users();
$oUser->create( $aData );
}
$sClassName = strtolower($aFields['AUTH_SOURCE_PROVIDER']);
$plugin = new $sClassName();
$aAuthSource = $RBAC->authSourcesObj->load($authSourceUid);
if (is_null($plugin->ldapcnn)) {
$plugin->ldapcnn = $plugin->ldapConnection($aAuthSource);
}
$ldapcnn = $plugin->ldapcnn;
$plugin->log($ldapcnn, "Users imported $countUsers: " . $usersCreated);
echo G::json_encode(array('success'=> true));
break;
case "ldapTestConnection":
$response = array();
try {
if ($_POST["AUTH_ANONYMOUS"] == "1") {
$_POST["AUTH_SOURCE_SEARCH_USER"] = "";
$_POST["AUTH_SOURCE_PASSWORD"] = "";
}
$arrayAuthenticationSourceData = $_POST;
//Test connection
$ldapAdvanced = new ldapAdvanced();
$ldapcnn = $ldapAdvanced->ldapConnection($arrayAuthenticationSourceData);
//Response
$response["status"] = "OK";
} catch (Exception $e) {
//Response
$response["status"] = "ERROR";
$response["message"] = $e->getMessage();
}
echo G::json_encode($response);
break;
default:
break;
}

View File

@@ -761,7 +761,6 @@ try {
$sTask = $aFields['TASK'][$sKey]['NEXT_TASK']['TAS_UID'];
//TAS_UID has a hidden field to store the TAS_UID
$hiddenName = "form[TASKS][" . $sKey . "][TAS_UID]";
$hiddenField = '<input type="hidden" name="' . $hiddenName . '" id="' . $hiddenName . '" value="' . $aValues['NEXT_TASK']['TAS_UID'] . '">';
@@ -889,6 +888,15 @@ try {
$aFields['PROCESS']['ROU_FINISH_FLAG'] = true;
break;
}
$optionTaskType = (isset($aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TYPE"]))? $aFields["TASK"][$sKey]["NEXT_TASK"]["TAS_TYPE"] : "";
switch ($optionTaskType) {
case "SCRIPT-TASK":
$aFields["TASK"][$sKey]["NEXT_TASK"]["USR_UID"] = G::LoadTranslation("ID_ROUTE_TO_TASK_SCRIPT_TASK");;
break;
}
$hiddenName = 'form[TASKS][' . $sKey . ']';
/* Allow user defined Timing Control
@@ -1099,4 +1107,3 @@ if ($_SESSION['TRIGGER_DEBUG']['ISSET']) {
showdebug();
}' );
}

View File

@@ -103,6 +103,25 @@ if (isset ($_SESSION['USER_LOGGED'])) {
// Execute SSO trigger
$pluginRegistry =& PMPluginRegistry::getSingleton();
if (defined('PM_SINGLE_SIGN_ON')) {
/*----------------------------------********---------------------------------*/
$licensedFeatures = & PMLicensedFeatures::getSingleton();
if ($licensedFeatures->verifyfeature('x4TTzlISnp2K2tnSTJoMC8rTDRMTjlhMCtZeXV0QnNCLzU=')) {
//Check in SSO class
G::LoadClass("pmSso");
$oSso = new pmSsoClass();
$res = $oSso->ssocVerifyUser();
if($res){
// Start new session
@session_destroy();
session_start();
session_regenerate_id();
// Authenticate
require_once 'authentication.php';
die();
}
//Check in SSO class
}
/*----------------------------------********---------------------------------*/
if ($pluginRegistry->existsTrigger(PM_SINGLE_SIGN_ON)) {
if ($pluginRegistry->executeTriggers(PM_SINGLE_SIGN_ON, null)) {
// Start new session

View File

@@ -0,0 +1,651 @@
<?php
class ldapadvancedClassCron
{
public $deletedRemoved = 0; //Users in the removed OU
public $deletedRemovedUsers = "";
public $dAlready = 0; //Count for already existing users
public $dMoved = 0; //Users moved from a Department to another Department
public $dImpossible = 0; //Users already created using another Authentication source
public $dCreated = 0; //Users created
public $dRemoved = 0; //Users removed
public $dAlreadyUsers = "";
public $dMovedUsers = "";
public $dImpossibleUsers = "";
public $dCreatedUsers = "";
public $dRemovedUsers = "";
public $gAlready = 0;
public $gMoved = 0;
public $gImpossible = 0;
public $gCreated = 0;
public $gRemoved = 0;
public $gAlreadyUsers = "";
public $gMovedUsers = "";
public $gImpossibleUsers = "";
public $gCreatedUsers = "";
public $gRemovedUsers = "";
public $managersHierarchy = array();
public $oldManagersHierarchy = array();
public $managersToClear = array();
public $deletedManager = 0;
public function __construct()
{
}
/**
function executed by the cron
this function will synchronize users from ldap/active directory to PM users tables
@return void
*/
public function executeCron($debug)
{
$rbac = &RBAC::getSingleton();
if (is_null($rbac->authSourcesObj)) {
$rbac->authSourcesObj = new AuthenticationSource();
}
$plugin = new ldapAdvanced();
$plugin->sSystem = $rbac->sSystem;
$plugin->setFrontEnd(true);
$plugin->setDebug($debug);
//Get all authsource for this plugin ( ldapAdvanced plugin, because other authsources are not needed )
$arrayAuthenticationSource = $plugin->getAuthSources();
$aDepartments = $plugin->getDepartments("");
$aGroups = $plugin->getGroups();
//$arrayDepartmentUserAd = array(); //(D) Update Users
//$arrayGroupUserAd = array(); //(G) Update Users
//echo "\n";
$plugin->frontEndShow("START");
$plugin->debugLog("START");
foreach ($arrayAuthenticationSource as $value) {
$arrayAuthenticationSourceData = $value;
$plugin->debugLog("ldapadvanced.php > function executeCron() > foreach > \$arrayAuthenticationSourceData ---->\n" . print_r($arrayAuthenticationSourceData, true));
$plugin->sAuthSource = $arrayAuthenticationSourceData["AUTH_SOURCE_UID"];
$plugin->ldapcnn = null;
$plugin->setArrayDepartmentUserSynchronizedChecked(array());
$plugin->setArrayUserUpdateChecked(array());
//Get all User (USR_UID, USR_USERNAME, USR_AUTH_USER_DN) registered in RBAC with this Authentication Source
$plugin->setArrayAuthenticationSourceUsers($arrayAuthenticationSourceData["AUTH_SOURCE_UID"]); //INITIALIZE DATA
$plugin->frontEndShow("TEXT", "Authentication Source: " . $arrayAuthenticationSourceData["AUTH_SOURCE_NAME"]);
$plugin->log(null, "Executing cron for Authentication Source: " . $arrayAuthenticationSourceData["AUTH_SOURCE_NAME"]);
//Get all departments from Ldap/ActiveDirectory and build a hierarchy using dn (ou->ou parent)
$aLdapDepts = $plugin->searchDepartments();
//Obtain all departments from PM with a valid department in LDAP/ActiveDirectory
$aRegisteredDepts = $plugin->getRegisteredDepartments($aLdapDepts, $aDepartments);
$plugin->debugLog("ldapadvanced.php > function executeCron() > foreach > \$aRegisteredDepts ---->\n" . print_r($aRegisteredDepts, true));
//Get all group from Ldap/ActiveDirectory
$aLdapGroups = $plugin->searchGroups();
//Obtain all groups from PM with a valid group in LDAP/ActiveDirectory
$aRegisteredGroups = $plugin->getRegisteredGroups($aLdapGroups, $aGroups);
$plugin->debugLog("ldapadvanced.php > function executeCron() > foreach > \$aRegisteredGroups ---->\n" . print_r($aRegisteredGroups, true));
//Get all users from Removed OU
$this->usersRemovedOu = $plugin->getUsersFromRemovedOu($arrayAuthenticationSourceData);
$plugin->deactiveArrayOfUsers($this->usersRemovedOu);
//Variables
$this->deletedRemoved = count($this->usersRemovedOu);
$this->deletedRemovedUsers = "";
$this->dAlready = 0;
$this->dMoved = 0;
$this->dImpossible = 0;
$this->dCreated = 0;
$this->dRemoved = 0;
$this->dAlreadyUsers = "";
$this->dMovedUsers = "";
$this->dImpossibleUsers = "";
$this->dCreatedUsers = "";
$this->dRemovedUsers = "";
$this->gAlready = 0;
$this->gMoved = 0;
$this->gImpossible = 0;
$this->gCreated = 0;
$this->gRemoved = 0;
$this->gAlreadyUsers = "";
$this->gMovedUsers = "";
$this->gImpossibleUsers = "";
$this->gCreatedUsers = "";
$this->gRemovedUsers = "";
//Department - Synchronize Users
$numDepartments = count($aRegisteredDepts);
$count = 0;
$plugin->debugLog("ldapadvanced.php > function executeCron() > foreach > \$numDepartments ----> $numDepartments");
foreach ($aRegisteredDepts as $registeredDept) {
$count++;
//(D) Update Users
//if (!isset($arrayDepartmentUserAd[$registeredDept["DEP_UID"]])) {
// $arrayDepartmentUserAd[$registeredDept["DEP_UID"]] = array(); //Current users in department based in Active Directory
//}
//
//$arrayAux = $this->departmentSynchronizeUsers($plugin, $numDepartments, $count, $registeredDept);
//$arrayAux = array_merge($arrayDepartmentUserAd[$registeredDept["DEP_UID"]], $arrayAux);
//
//$arrayDepartmentUserAd[$registeredDept["DEP_UID"]] = array_unique($arrayAux);
$arrayAux = $this->departmentSynchronizeUsers($plugin, $numDepartments, $count, $registeredDept);
}
//Department - Print log
$logResults = sprintf(
"- Departments -> Existing users: %d, moved: %d, impossible: %d, created: %d, removed: %d",
$this->dAlready,
$this->dMoved,
$this->dImpossible,
$this->dCreated,
$this->dRemoved
);
$plugin->frontEndShow("TEXT", $logResults);
$plugin->log(null, $logResults);
//Group - Synchronize Users
$numGroups = count($aRegisteredGroups);
$count = 0;
$plugin->debugLog("ldapadvanced.php > function executeCron() > foreach > \$numGroups ----> $numGroups");
foreach ($aRegisteredGroups as $registeredGroup) {
$count++;
//(G) Update Users
//if (!isset($arrayGroupUserAd[$registeredGroup["GRP_UID"]])) {
// $arrayGroupUserAd[$registeredGroup["GRP_UID"]] = array(); //Current users in group based in Active Directory
//}
//
//$arrayAux = $this->groupSynchronizeUsers($plugin, $numGroups, $count, $registeredGroup);
//$arrayAux = array_merge($arrayGroupUserAd[$registeredGroup["GRP_UID"]], $arrayAux);
//
//$arrayGroupUserAd[$registeredGroup["GRP_UID"]] = array_unique($arrayAux);
$arrayAux = $this->groupSynchronizeUsers($plugin, $numGroups, $count, $registeredGroup);
}
//Group - Print log
$logResults = sprintf(
"- Groups -> Existing users: %d, moved: %d, impossible: %d, created: %d, removed: %d",
$this->gAlready,
$this->gMoved,
$this->gImpossible,
$this->gCreated,
$this->gRemoved
);
$plugin->frontEndShow("TEXT", $logResults);
$plugin->log(null, $logResults);
//Manager
$plugin->clearManager($this->managersToClear);
if (isset($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["DEPARTMENTS_TO_UNASSIGN"])) {
if (is_array($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["DEPARTMENTS_TO_UNASSIGN"])) {
foreach ($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["DEPARTMENTS_TO_UNASSIGN"] as $departmentUID) {
// Delete manager assignments
$criteriaSet = new Criteria("workflow");
$criteriaSet->add(UsersPeer::USR_REPORTS_TO, "");
$criteriaWhere = new Criteria("workflow");
$criteriaWhere->add(UsersPeer::DEP_UID, $departmentUID);
$criteriaWhere->add(UsersPeer::USR_REPORTS_TO, "", Criteria::NOT_EQUAL);
$this->deletedManager = BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection("workflow"));
// Delete department assignments
$criteriaSet = new Criteria("workflow");
$criteriaSet->add(UsersPeer::DEP_UID, "");
$criteriaWhere = new Criteria("workflow");
$criteriaWhere->add(UsersPeer::DEP_UID, $departmentUID);
$this->dMoved += UsersPeer::doCount($criteriaWhere);
BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection("workflow"));
}
}
unset($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["DEPARTMENTS_TO_UNASSIGN"]);
$rbac = &RBAC::getSingleton();
$rbac->authSourcesObj->update($arrayAuthenticationSourceData);
}
if (isset($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["GROUPS_TO_UNASSIGN"])) {
if (is_array($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["GROUPS_TO_UNASSIGN"])) {
foreach ($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["GROUPS_TO_UNASSIGN"] as $groupUID) {
// Delete manager assignments
$groupsInstance = new Groups();
$criteria = $groupsInstance->getUsersGroupCriteria($groupUID);
$dataset = UsersPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
$users = array();
while ($row = $dataset->getRow()) {
$users[] = $row["USR_UID"];
$dataset->next();
}
$criteriaSet = new Criteria("workflow");
$criteriaSet->add(UsersPeer::USR_REPORTS_TO, "");
$criteriaWhere = new Criteria("workflow");
$criteriaWhere->add(UsersPeer::USR_UID, $users, Criteria::IN);
$criteriaWhere->add(UsersPeer::USR_REPORTS_TO, "", Criteria::NOT_EQUAL);
$this->deletedManager = BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection("workflow"));
// Delete group assignments
$criteria = new Criteria("workflow");
$criteria->add(GroupUserPeer::GRP_UID, $groupUID);
$this->gMoved += GroupUserPeer::doCount($criteria);
BasePeer::doDelete($criteria, Propel::getConnection("workflow"));
}
}
unset($arrayAuthenticationSourceData["AUTH_SOURCE_DATA"]["GROUPS_TO_UNASSIGN"]);
$rbac = &RBAC::getSingleton();
$rbac->authSourcesObj->update($arrayAuthenticationSourceData);
}
// Delete the managers that not exists in PM
$criteria = new Criteria("rbac");
$criteria->addSelectColumn(RbacUsersPeer::USR_AUTH_USER_DN);
$criteria->add(RbacUsersPeer::USR_AUTH_USER_DN, "", Criteria::NOT_EQUAL);
$dataset = RbacUsersPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
$existingUsers = array();
while ($row = $dataset->getRow()) {
$existingUsers[] = $row["USR_AUTH_USER_DN"];
$dataset->next();
}
foreach ($this->managersHierarchy as $managerDN => $subordinates) {
if (!in_array($managerDN, $existingUsers)) {
unset($this->managersHierarchy[$managerDN]);
}
}
// Get the managers assigments counters
$plugin->synchronizeManagers($this->managersHierarchy);
$deletedManagersAssignments = self::array_diff_assoc_recursive($this->oldManagersHierarchy, $this->managersHierarchy);
$newManagersAssignments = self::array_diff_assoc_recursive($this->managersHierarchy, $this->oldManagersHierarchy);
$deletedManagers = array();
$newManagers = array();
$movedManagers = array();
if (is_array($deletedManagersAssignments)) {
foreach ($deletedManagersAssignments as $dn1 => $subordinates1) {
foreach ($subordinates1 as $subordinate) {
if (!in_array($subordinate, $deletedManagers)) {
$deletedManagers[] = $subordinate;
}
foreach ($newManagersAssignments as $dn2 => $subordinates2) {
if (isset($subordinates2[$subordinate])) {
$movedManagers[] = $subordinate;
}
}
}
}
}
if (is_array($newManagersAssignments)) {
foreach ($newManagersAssignments as $dn1 => $subordinates1) {
foreach ($subordinates1 as $subordinate) {
if (!in_array($subordinate, $newManagers)) {
$newManagers[] = $subordinate;
}
foreach ($deletedManagersAssignments as $dn2 => $subordinates2) {
if (isset($subordinates2[$subordinate])) {
if (!in_array($subordinate, $movedManagers)) {
$movedManagers[] = $subordinate;
}
}
}
}
}
}
//Print and log the users's information
//Deleted/Removed Users
$logResults = sprintf("- Deleted/Removed Users: %d", $this->deletedRemoved);
$plugin->frontEndShow("TEXT", $logResults);
$plugin->log(null, $logResults);
if ($this->deletedRemoved > 0) {
$plugin->log(null, "Deleted/Removed Users: ");
$plugin->log(null, $this->deletedRemovedUsers);
}
if ($this->dAlready + $this->gAlready > 0) {
$plugin->log(null, "Existing Users: ");
$plugin->log(null, $this->dAlreadyUsers . " " . $this->gAlreadyUsers);
}
if ($this->dMoved + $this->gMoved > 0) {
$plugin->log(null, "Moved Users: ");
$plugin->log(null, $this->dMovedUsers . " " . $this->gMovedUsers);
}
if ($this->dImpossible + $this->gImpossible > 0) {
$plugin->log(null, "Impossible Users: ");
$plugin->log(null, $this->dImpossibleUsers . " " . $this->gImpossibleUsers);
}
if ($this->dCreated + $this->gCreated > 0) {
$plugin->log(null, "Created Users: ");
$plugin->log(null, $this->dCreatedUsers . " " . $this->gCreatedUsers);
}
if ($this->dRemoved + $this->gRemoved > 0) {
$plugin->log(null, "Removed Users: ");
$plugin->log(null, $this->dRemovedUsers . " " . $this->gRemovedUsers);
}
//Print and log the managers assignments"s information
$logResults = sprintf(
"- Managers assignments: created %d, moved %d, removed %d",
count($newManagers) - count($movedManagers),
count($movedManagers),
count($deletedManagers) - count($movedManagers) + $this->deletedManager
);
$plugin->frontEndShow("TEXT", $logResults);
$plugin->log(null, $logResults);
//Update Users data based on the LDAP Server
$plugin->usersUpdateData($arrayAuthenticationSourceData["AUTH_SOURCE_UID"]);
}
$plugin->frontEndShow("END");
//(D) Update Users
////Department //Upgrade users in departments
//foreach ($arrayDepartmentUserAd as $departmentUid => $arrayUserAd) {
// $plugin->setArrayDepartmentUsers($departmentUid); //INITIALIZE DATA
//
// $arrayAux = array_diff(array_keys($plugin->arrayDepartmentUsersByUid), $arrayUserAd);
//
// $this->departmentRemoveUsers($departmentUid, $arrayAux);
//}
//(G) Update Users
////Group //Upgrade users in groups
//foreach ($arrayGroupUserAd as $groupUid => $arrayUserAd) {
// $plugin->setArrayGroupUsers($groupUid); //INITIALIZE DATA
//
// $arrayAux = array_diff(array_keys($plugin->arrayGroupUsersByUid), $arrayUserAd);
//
// $this->groupRemoveUsers($groupUid, $arrayAux);
//}
//// Developed by Gary and Ronald
//$usersInfo = $plugin->ASUpdateInfo('');
//if (isset($usersInfo) && $usersInfo > 0) {
// $this->dMoved = $usersInfo;
//}
//// End Developed by Gary and Ronald
$plugin->debugLog("END");
}
public function array_diff_assoc_recursive($array1, $array2)
{
foreach ($array1 as $key => $value) {
if (is_array($value)) {
if (!isset($array2[$key])) {
$difference[$key] = $value;
} else {
if (!is_array($array2[$key])) {
$difference[$key] = $value;
} else {
$new_diff = self::array_diff_assoc_recursive($value, $array2[$key]);
if ($new_diff != false) {
$difference[$key] = $new_diff;
}
}
}
} else {
if (!isset($array2[$key]) || $array2[$key] != $value) {
$difference[$key] = $value;
}
}
}
return (!isset($difference))? array() : $difference;
}
public function departmentRemoveUsers($departmentUid, array $arrayUserUid)
{
try {
$department = new Department();
$department->Load($departmentUid);
$departmentManagerUid = $department->getDepManager();
foreach ($arrayUserUid as $value) {
$userUid = $value;
$department->removeUserFromDepartment($departmentUid, $userUid);
if ($userUid == $departmentManagerUid) {
$department->update(array("DEP_UID" => $departmentUid, "DEP_MANAGER" => ""));
$department->updateDepartmentManager($departmentUid);
}
}
} catch (Exception $e) {
throw $e;
}
}
public function groupRemoveUsers($groupUid, array $arrayUserUid)
{
try {
$group = new Groups();
foreach ($arrayUserUid as $value) {
$userUid = $value;
$group->removeUserOfGroup($groupUid, $userUid);
}
} catch (Exception $e) {
throw $e;
}
}
public function departmentSynchronizeUsers($ldapAdvanced, $numDepartments, $count, array $arrayDepartmentData)
{
try {
$ldapAdvanced->debugLog("ldapadvanced.php > function departmentSynchronizeUsers() > START");
$ldapAdvanced->debugLog("ldapadvanced.php > function departmentSynchronizeUsers() > \$arrayDepartmentData ---->\n" . print_r($arrayDepartmentData, true));
//Get users from ProcessMaker tables (for this Department)
$ldapAdvanced->setArrayDepartmentUsers($arrayDepartmentData["DEP_UID"]); //INITIALIZE DATA
//Clear the manager assignments
$arrayUserUid = array();
foreach ($ldapAdvanced->arrayDepartmentUsersByUid as $key => $user) {
$arrayUserUid[] = $user["USR_UID"];
if (isset($user["USR_REPORTS_TO"]) && $user["USR_REPORTS_TO"] != "") {
$dn = (isset($ldapAdvanced->arrayAuthenticationSourceUsersByUid[$user["USR_REPORTS_TO"]]["USR_AUTH_USER_DN"]))? $ldapAdvanced->arrayAuthenticationSourceUsersByUid[$user["USR_REPORTS_TO"]]["USR_AUTH_USER_DN"] : "";
if ($dn != "") {
if (!isset($this->oldManagersHierarchy[$dn])) {
$this->oldManagersHierarchy[$dn] = array();
}
$this->oldManagersHierarchy[$dn][$user["USR_UID"]] = $user["USR_UID"];
}
}
}
$this->managersToClear = $arrayUserUid;
//Synchronize Users from Department
//Now we need to go over ldapusers and check if the user exists in ldap but not in PM, then we need to create it
$arrayData = array(
"already" => $this->dAlready,
"moved" => $this->dMoved,
"impossible" => $this->dImpossible,
"created" => $this->dCreated,
"alreadyUsers" => $this->dAlreadyUsers,
"movedUsers" => $this->dMovedUsers,
"impossibleUsers" => $this->dImpossibleUsers,
"createdUsers" => $this->dCreatedUsers,
"managersHierarchy" => $this->managersHierarchy,
"arrayUserUid" => array(),
"n" => $numDepartments,
"i" => $count
);
//Get Users from LDAP (for this Department)
$arrayData = $ldapAdvanced->ldapGetUsersFromDepartment("SYNCHRONIZE", $arrayDepartmentData["DEP_LDAP_DN"], $arrayData);
$this->dAlready = $arrayData["already"];
$this->dMoved = $arrayData["moved"];
$this->dImpossible = $arrayData["impossible"];
$this->dCreated = $arrayData["created"];
$this->dAlreadyUsers = $arrayData["alreadyUsers"];
$this->dMovedUsers = $arrayData["movedUsers"];
$this->dImpossibleUsers = $arrayData["impossibleUsers"];
$this->dCreatedUsers = $arrayData["createdUsers"];
$this->managersHierarchy = $arrayData["managersHierarchy"];
$arrayUserUid = $arrayData["arrayUserUid"];
//(D) Update Users
$arrayAux = array_diff(array_keys($ldapAdvanced->arrayDepartmentUsersByUid), $arrayUserUid);
$this->departmentRemoveUsers($arrayDepartmentData["DEP_UID"], $arrayAux);
$this->dRemoved += count($arrayAux);
$this->dRemovedUsers = "";
$ldapAdvanced->debugLog("ldapadvanced.php > function departmentSynchronizeUsers() > END");
//Return all UID of Users synchronized in the Department (Return all UID of Users of this Department)
return $arrayUserUid;
} catch (Exception $e) {
throw $e;
}
}
public function groupSynchronizeUsers($ldapAdvanced, $numGroups, $count, array $arrayGroupData)
{
try {
$ldapAdvanced->debugLog("ldapadvanced.php > function groupSynchronizeUsers() > START");
$ldapAdvanced->debugLog("ldapadvanced.php > function groupSynchronizeUsers() > \$arrayGroupData ---->\n" . print_r($arrayGroupData, true));
//Get users from ProcessMaker tables (for this Group)
$ldapAdvanced->setArrayGroupUsers($arrayGroupData["GRP_UID"]); //INITIALIZE DATA
//Clear the manager assignments
$arrayUserUid = array();
foreach ($ldapAdvanced->arrayGroupUsersByUid as $key => $user) {
$arrayUserUid[] = $user["USR_UID"];
if (isset($user["USR_REPORTS_TO"]) && $user["USR_REPORTS_TO"] != "") {
$dn = (isset($ldapAdvanced->arrayAuthenticationSourceUsersByUid[$user["USR_REPORTS_TO"]]["USR_AUTH_USER_DN"]))? $ldapAdvanced->arrayAuthenticationSourceUsersByUid[$user["USR_REPORTS_TO"]]["USR_AUTH_USER_DN"] : "";
if ($dn != "") {
if (!isset($this->oldManagersHierarchy[$dn])) {
$this->oldManagersHierarchy[$dn] = array();
}
$this->oldManagersHierarchy[$dn][$user["USR_UID"]] = $user["USR_UID"];
}
}
}
$this->managersToClear = array_merge($this->managersToClear, $arrayUserUid);
//Synchronize Users from Group
//Now we need to go over ldapusers and check if the user exists in ldap but not in PM, then we need to create it
$arrayData = array(
"already" => $this->gAlready,
"moved" => $this->gMoved,
"impossible" => $this->gImpossible,
"created" => $this->gCreated,
"alreadyUsers" => $this->gAlreadyUsers,
"movedUsers" => $this->gMovedUsers,
"impossibleUsers" => $this->gImpossibleUsers,
"createdUsers" => $this->gCreatedUsers,
"managersHierarchy" => $this->managersHierarchy,
"arrayUserUid" => array(),
"n" => $numGroups,
"i" => $count
);
//Get Users from LDAP (for this Group)
$arrayData = $ldapAdvanced->ldapGetUsersFromGroup("SYNCHRONIZE", $arrayGroupData, $arrayData);
$this->gAlready = $arrayData["already"];
$this->gMoved = $arrayData["moved"];
$this->gImpossible = $arrayData["impossible"];
$this->gCreated = $arrayData["created"];
$this->gAlreadyUsers = $arrayData["alreadyUsers"];
$this->gMovedUsers = $arrayData["movedUsers"];
$this->gImpossibleUsers = $arrayData["impossibleUsers"];
$this->gCreatedUsers = $arrayData["createdUsers"];
$this->managersHierarchy = $arrayData["managersHierarchy"];
$arrayUserUid = $arrayData["arrayUserUid"];
//(G) Update Users
$arrayAux = array_diff(array_keys($ldapAdvanced->arrayGroupUsersByUid), $arrayUserUid);
$this->groupRemoveUsers($arrayGroupData["GRP_UID"], $arrayAux);
$this->gRemoved += count($arrayAux);
$this->gRemovedUsers = "";
$ldapAdvanced->debugLog("ldapadvanced.php > function groupSynchronizeUsers() > END");
//Return all UID of Users synchronized in the Group (Return all UID of Users of this Group)
return $arrayUserUid;
} catch (Exception $e) {
throw $e;
}
}
}

View File

@@ -0,0 +1,498 @@
<?php
namespace ProcessMaker\BusinessModel;
class EmailEvent
{
/*private $arrayFieldDefinition = array(
"EMAIL_EVENT_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "emailEventUid"),
"PRJ_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "projectUid"),
"EVN_UID" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "eventUid"),
"EMAIL_EVENT_FROM" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "messageTypeUid"),
"EMAIL_EVENT_TO" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "EmailEventUserUid"),
"EMAIL_EVENT_SUBJECT" => array("type" => "array", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "EmailEventVariables"),
"PRF_UID" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "EmailEventCorrelation")
);
*/
/**
* Get the email accounts of the current workspace
*
* return array
*/
public function getEmailEventAccounts()
{
try {
$criteria = new \Criteria("workflow");
$criteria->clearSelectColumns();
$criteria->addSelectColumn(\UsersPeer::USR_UID);
$criteria->addSelectColumn(\UsersPeer::USR_EMAIL);
$criteria->add(\UsersPeer::USR_STATUS, "ACTIVE");
$result = \UsersPeer::doSelectRS($criteria);
$result->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$result->next();
$accountsArray = array();
while ($aRow = $result->getRow()) {
if (($aRow['USR_EMAIL'] != null) || ($aRow['USR_EMAIL'] != "")) {
$accountsArray[] = array_change_key_case($aRow, CASE_LOWER);
}
$result->next();
}
return $accountsArray;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get the Email-Event data
* @var string $evn_uid. uid for activity
* @var string $pro_uid. uid for process
* return array
*/
public function getEmailEventData($pro_uid, $evn_uid)
{
try {
//Get data
$criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::EVN_UID, $evn_uid, \Criteria::EQUAL);
$criteria->add(\EmailEventPeer::PRJ_UID, $pro_uid, \Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
$row = $rsCriteria->getRow();
if(is_array($row)) {
$row = array_change_key_case($row, CASE_LOWER);
}
return $row;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get the Email-Event data
* @var string $emailEventUid. uid for email event
* @var string $pro_uid. uid for process
* return array
*/
public function getEmailEventDataByUid($pro_uid, $emailEventUid)
{
try {
//Get data
$criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, \Criteria::EQUAL);
$criteria->add(\EmailEventPeer::PRJ_UID, $pro_uid, \Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
$row = $rsCriteria->getRow();
if(is_array($row)) {
$row = array_change_key_case($row, CASE_LOWER);
}
return $row;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Save Data for Email-Event
* @var string $prj_uid. Uid for Process
* @var string $arrayData. Data for Trigger
*
* return array
*/
public function save($prj_uid = '', $arrayData = array())
{
try {
//Verify data
$process = new \ProcessMaker\BusinessModel\Process();
$validator = new \ProcessMaker\BusinessModel\Validator();
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
//Set data
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
//Verify data
$process->throwExceptionIfNotExistsProcess($prj_uid, "projectUid");
//Create
$db = \Propel::getConnection("workflow");
try {
$emailEvent = new \EmailEvent();
$emailEvent->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME);
$emailEventUid = \ProcessMaker\Util\Common::generateUID();
$emailEvent->setEmailEventUid($emailEventUid);
$emailEvent->setPrjUid($prj_uid);
$db->begin();
$result = $emailEvent->save();
$db->commit();
return $this->getEmailEvent($emailEventUid);
} catch (\Exception $e) {
$db->rollback();
throw $e;
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Update Email-Event
*
* @param string $emailEventUid Unique id of Email-Event
* @param array $arrayData Data
*
* return array Return data of the Email-Event updated
*/
public function update($emailEventUid, array $arrayData)
{
try {
//Verify data
$validator = new \ProcessMaker\BusinessModel\Validator();
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
//Set data
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
$arrayDataBackup = $arrayData;
//Set variables
$arrayEmailEventData = $this->getEmailEvent($emailEventUid);
//Verify data
$this->verifyIfEmailEventExists($emailEventUid);
//Update
$db = \Propel::getConnection("workflow");
try {
$emailEvent = \EmailEventPeer::retrieveByPK($emailEventUid);
$emailEvent->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME);
$db->begin();
$result = $emailEvent->save();
$db->commit();
$arrayData = $arrayDataBackup;
$arrayData = array_change_key_case($arrayData, CASE_LOWER);
return $arrayData;
} catch (\Exception $e) {
$cnn->rollback();
throw $e;
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Delete Email-Event
*
* @param string $emailEventUid Unique id of Email-Event
*
* return void
*/
public function delete($pro_uid, $emailEventUid, $passValidation = true)
{
try {
//Verify data
if($passValidation) {
$this->verifyIfEmailEventExists($emailEventUid);
//Delete file
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
$arrayData = $this->getEmailEventDataByUid($pro_uid, $emailEventUid);
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
if(sizeof($arrayData)) {
$prfUid = $arrayData['PRF_UID'];
$filesManager->deleteProcessFilesManager('',$prfUid);
}
}
//Delete Email event
$criteria = new \Criteria("workflow");
$criteria->add(\EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, \Criteria::EQUAL);
$result = \EmailEventPeer::doDelete($criteria);
} catch (\Exception $e) {
throw $e;
}
}
/**
* Delete Email-Event by event uid
*
* @param string $emailEventUid Unique id of Email-Event
*
* return void
*/
public function deleteByEvent($prj_uid, $evn_uid)
{
try {
//Verify data
if (!$this->existsEvent($prj_uid, $evn_uid)) {
throw new \Exception(\G::LoadTranslation("ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST"));
}
$arrayData = $this->existsEvent($prj_uid, $evn_uid);
$this->delete($prj_uid, $arrayData[0]);
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get data of a Email-Event
*
* @param string $emailEventUid Unique id of Email-Event
* @param bool $flagGetRecord Value that set the getting
*
* return array Return an array with data of a Email-Event
*/
public function getEmailEvent($emailEventUid)
{
try {
//Verify data
$this->verifyIfEmailEventExists($emailEventUid);
//Get data
$criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, \Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
$row = $rsCriteria->getRow();
//Return
return $row;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Verify if exists the Email-Event
*
* @param string $emailEventUid Unique id of Email-Event
*
* return bool Return true if exists the Email-Event, false otherwise
*/
public function exists($emailEventUid)
{
try {
$obj = \EmailEventPeer::retrieveByPK($emailEventUid);
return (!is_null($obj))? true : false;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get criteria for Email-Event
*
* return object
*/
public function getEmailEventCriteria()
{
try {
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_UID);
$criteria->addSelectColumn(\EmailEventPeer::PRJ_UID);
$criteria->addSelectColumn(\EmailEventPeer::EVN_UID);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_FROM);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_TO);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_SUBJECT);
$criteria->addSelectColumn(\EmailEventPeer::PRF_UID);
return $criteria;
} catch (\Exception $e) {
throw $e;
}
}
public function verifyIfEmailEventExists($emailEventUid)
{
if (!$this->exists($emailEventUid)) {
throw new \Exception(\G::LoadTranslation("ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST", array("Email Event Uid", $emailEventUid)));
}
}
/**
* Verify if exists the Event of a Message-Event-Definition
*
* @param string $projectUid Unique id of Project
* @param string $eventUid Unique id of Event
*
* return bool Return true if exists the Event of a Message-Event-Definition, false otherwise
*/
public function existsEvent($projectUid, $eventUid)
{
try {
$criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::PRJ_UID, $projectUid, \Criteria::EQUAL);
$criteria->add(\EmailEventPeer::EVN_UID, $eventUid, \Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria);
$rsCriteria->next();
$row = $rsCriteria->getRow();
if(is_array($row)) {
$row = array_change_key_case($row, CASE_LOWER);
}
return (sizeof($row))? $row : false;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Email-event for the Case
*
* @param string $elementOriginUid Unique id of Element Origin (unique id of Task)
* @param string $elementDestUid Unique id of Element Dest (unique id of Task)
* @param array $arrayApplicationData Case data
*
* return void
*/
public function emailEventBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData)
{
try {
//Verify if the Project is BPMN
$bpmn = new \ProcessMaker\Project\Bpmn();
if (!$bpmn->exists($arrayApplicationData["PRO_UID"])) {
return;
}
//Element origin and dest
$elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation();
$arrayElement = array(
"elementOrigin" => array("uid" => $elementOriginUid, "type" => "bpmnActivity"),
"elementDest" => array("uid" => $elementDestUid, "type" => "bpmnActivity")
);
foreach ($arrayElement as $key => $value) {
$arrayElementTaskRelationData = $elementTaskRelation->getElementTaskRelationWhere(
array(
\ElementTaskRelationPeer::PRJ_UID => $arrayApplicationData["PRO_UID"],
\ElementTaskRelationPeer::ELEMENT_TYPE => "bpmnEvent",
\ElementTaskRelationPeer::TAS_UID => $arrayElement[$key]["uid"]
),
true
);
if (!is_null($arrayElementTaskRelationData)) {
$arrayElement[$key]["uid"] = $arrayElementTaskRelationData["ELEMENT_UID"];
$arrayElement[$key]["type"] = "bpmnEvent";
}
}
$elementOriginUid = $arrayElement["elementOrigin"]["uid"];
$elementOriginType = $arrayElement["elementOrigin"]["type"];
$elementDestUid = $arrayElement["elementDest"]["uid"];
$elementDestType = $arrayElement["elementDest"]["type"];
//Get Message-Events of throw type
$arrayEvent = $bpmn->getEmailEventTypeBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
);
//Email-event
foreach ($arrayEvent as $value) {
$result = $this->sendEmail($arrayApplicationData["APP_UID"], $arrayApplicationData["PRO_UID"], $value[0], $arrayApplicationData);
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Email-event do function
*
* @param string $appUID Unique id of application
* @param string $prj_uid Unique id of Project
* @param string $eventUid Unique id of event
* @param array $arrayApplicationData Case data
*
* return void
*/
public function sendEmail($appUID, $prj_uid, $eventUid, $arrayApplicationData)
{
if (!$this->existsEvent($prj_uid, $eventUid)) {
throw new \Exception(\G::LoadTranslation("ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST"));
}
$arrayData = $this->existsEvent($prj_uid, $eventUid);
if(sizeof($arrayData)) {
$prfUid = $arrayData[6];
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
$contentFile = $filesManager->getProcessFileManager($prj_uid, $prfUid);
\PMFSendMessage($appUID, $arrayData[3], $arrayData[4], '', '', $arrayData[5], $contentFile['prf_filename'], array());
}
}
/**
* Update process file Uid
*
* @param string $oldUid Unique id of old process file
* @param string $newUid Unique id of new process file
* @param string $projectUid Unique id of Project
*
* return bool Return array if exists, false otherwise
*/
public function updatePrfUid($oldUid, $newUid, $projectUid) {
try {
$newValues = array();
$rowData = $this->verifyIfEmailEventExistsByPrfUid($oldUid, $projectUid);
if(is_array($rowData)) {
$newValues['PRF_UID'] = $newUid;
$this->update($rowData['EMAIL_EVENT_UID'], $newValues);
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Verify if exists the Email Event of
*
* @param string $oldUid Unique id of old process file
* @param string $projectUid Unique id of Project
*
* return bool Return array if exists, false otherwise
*/
public function verifyIfEmailEventExistsByPrfUid($oldUid, $projectUid)
{
try {
$criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::PRJ_UID, $projectUid, \Criteria::EQUAL);
$criteria->add(\EmailEventPeer::PRF_UID, $oldUid, \Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
$row = $rsCriteria->getRow();
if(is_array($row)) {
$row = array_change_key_case($row, CASE_UPPER);
}
return (sizeof($row))? $row : false;
} catch (\Exception $e) {
throw $e;
}
}
}

View File

@@ -242,6 +242,41 @@ class FilesManager
throw $e;
}
}
public function addProcessFilesManagerInDb($aData)
{
try {
$oProcessFiles = new \ProcessFiles();
$aData = array_change_key_case($aData, CASE_UPPER);
$oProcessFiles->fromArray($aData, \BasePeer::TYPE_FIELDNAME);
if($this->existsProcessFile($aData['PRF_UID'])) {
$sPkProcessFiles = \G::generateUniqueID();
$oProcessFiles->setPrfUid($sPkProcessFiles);
$sDirectory = PATH_DATA_MAILTEMPLATES . $aData['PRO_UID'] . PATH_SEP . basename($aData['PRF_PATH']);
$oProcessFiles->setPrfPath($sDirectory);
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
$emailEvent->updatePrfUid($aData['PRF_UID'], $sPkProcessFiles, $aData['PRO_UID']);
}
$result = $oProcessFiles->save();
} catch (Exception $e) {
throw $e;
}
}
public function existsProcessFile($prfUid)
{
try {
$obj = \ProcessFilesPeer::retrieveByPK($prfUid);
return (!is_null($obj))? true : false;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Return the Process Files Manager
@@ -306,9 +341,11 @@ class FilesManager
public function getFileManagerUid($path)
{
try {
$path = explode("/",$path);
$baseName = $path[count($path)-2].DIRECTORY_SEPARATOR.$path[count($path)-1];
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_UID);
$criteria->add(\ProcessFilesPeer::PRF_PATH, $path, \Criteria::EQUAL);
$criteria->add(\ProcessFilesPeer::PRF_PATH, "%" . $baseName . "%", \Criteria::LIKE);
$rsCriteria = \ProcessFilesPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
@@ -371,6 +408,9 @@ class FilesManager
$oProcessFiles->setPrfUpdateUsrUid($userUID);
$oProcessFiles->setPrfUpdateDate($sDate);
$oProcessFiles->save();
$path = PATH_DATA_MAILTEMPLATES.$sProcessUID.DIRECTORY_SEPARATOR.$sFile;
$fp = fopen($path, 'w');
$content = stripslashes($aData['prf_content']);
$content = str_replace("@amp@", "&", $content);
@@ -417,8 +457,11 @@ class FilesManager
if ($path == '') {
throw new \Exception(\G::LoadTranslation("ID_INVALID_VALUE_FOR", array('prf_uid')));
}
if (file_exists($path)) {
$sFile = end(explode("/",$path));
$path = PATH_DATA_MAILTEMPLATES.$sProcessUID.DIRECTORY_SEPARATOR.$sFile;
if (file_exists($path) && !is_dir($path)) {
unlink($path);
}

View File

@@ -0,0 +1,621 @@
<?php
namespace ProcessMaker\BusinessModel;
class ScriptTask
{
private $arrayFieldDefinition = array(
"SCRTAS_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "scrtasUid"),
"PRJ_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "projectUid"),
"ACT_UID" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "actUid"),
"SCRTAS_OBJ_TYPE" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("TRIGGER"), "fieldNameAux" => "scrtasObjType"),
"SCRTAS_OBJ_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "scrtasObjUid")
);
private $formatFieldNameInUppercase = true;
private $arrayFieldNameForException = array();
/**
* Constructor of the class
*
* return void
*/
public function __construct()
{
try {
foreach ($this->arrayFieldDefinition as $key => $value) {
$this->arrayFieldNameForException[$value["fieldNameAux"]] = $key;
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Set the format of the fields name (uppercase, lowercase)
*
* @param bool $flag Value that set the format
*
* return void
*/
public function setFormatFieldNameInUppercase($flag)
{
try {
$this->formatFieldNameInUppercase = $flag;
$this->setArrayFieldNameForException($this->arrayFieldNameForException);
} catch (\Exception $e) {
throw $e;
}
}
/**
* Set exception messages for fields
*
* @param array $arrayData Data with the fields
*
* return void
*/
public function setArrayFieldNameForException(array $arrayData)
{
try {
foreach ($arrayData as $key => $value) {
$this->arrayFieldNameForException[$key] = $this->getFieldNameByFormatFieldName($value);
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get the name of the field according to the format
*
* @param string $fieldName Field name
*
* return string Return the field name according the format
*/
public function getFieldNameByFormatFieldName($fieldName)
{
try {
//Return
return ($this->formatFieldNameInUppercase)? strtoupper($fieldName) : strtolower($fieldName);
} catch (\Exception $e) {
throw $e;
}
}
/**
* Verify if exists the Script-Task
*
* @param string $scriptTaskUid Unique id of Script-Task
*
* return bool Return true if exists the Script-Task, false otherwise
*/
public function exists($scriptTaskUid)
{
try {
$obj = \ScriptTaskPeer::retrieveByPK($scriptTaskUid);
//Return
return (!is_null($obj))? true : false;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Verify if does not exists the Script-Task
*
* @param string $scriptTaskUid Unique id of Script-Task
* @param string $fieldNameForException Field name for the exception
*
* return void Throw exception if does not exists the Script-Task
*/
public function throwExceptionIfNotExistsScriptTask($scriptTaskUid, $fieldNameForException)
{
try {
if (!$this->exists($scriptTaskUid)) {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_DOES_NOT_EXIST", array($fieldNameForException, $scriptTaskUid)));
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Validate the data if they are invalid (INSERT and UPDATE)
*
* @param string $scriptTaskUid Unique id of Script-Task
* @param string $projectUid Unique id of Project
* @param array $arrayData Data
*
* return void Throw exception if data has an invalid value
*/
public function throwExceptionIfDataIsInvalid($scriptTaskUid, $projectUid, array $arrayData)
{
try {
//Set variables
$arrayScriptTaskData = ($scriptTaskUid == "")? array() : $this->getScriptTask($scriptTaskUid, true);
$flagInsert = ($scriptTaskUid == "")? true : false;
$arrayFinalData = array_merge($arrayScriptTaskData, $arrayData);
//Verify data - Field definition
$process = new \ProcessMaker\BusinessModel\Process();
$process->throwExceptionIfDataNotMetFieldDefinition($arrayData, $this->arrayFieldDefinition, $this->arrayFieldNameForException, $flagInsert);
//---
if (isset($arrayData["ACT_UID"])) {
$obj = \BpmnActivityPeer::retrieveByPK($arrayData["ACT_UID"]);
if (is_null($obj)) {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_DOES_NOT_ACTIVITY", array($this->arrayFieldNameForException["actUid"], $arrayData["ACT_UID"])));
}
}
//---
if (isset($arrayData["SCRTAS_OBJ_UID"])) {
$obj = \TriggersPeer::retrieveByPK($arrayData["SCRTAS_OBJ_UID"]);
if (is_null($obj)) {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_DOES_NOT_TRIGGER", array($this->arrayFieldNameForException["scrtasObjUid"], $arrayData["SCRTAS_OBJ_UID"])));
}
}
//---
if (isset($arrayData["ACT_UID"])) {
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\BpmnActivityPeer::ACT_UID);
$criteria->add(\BpmnActivityPeer::ACT_UID, $arrayData["ACT_UID"], \Criteria::EQUAL);
$criteria->add(\BpmnActivityPeer::PRJ_UID, $projectUid, \Criteria::EQUAL);
$rsCriteria = \BpmnActivityPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
if (!$rsCriteria->next()) {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_ACTIVITY_NOT_BELONG_TO_PROJECT", array($arrayData["ACT_UID"], $projectUid)));
}
}
//---
if (isset($arrayData["SCRTAS_OBJ_UID"])) {
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\TriggersPeer::TRI_UID);
$criteria->add(\TriggersPeer::TRI_UID, $arrayData["SCRTAS_OBJ_UID"], \Criteria::EQUAL);
$criteria->add(\TriggersPeer::PRO_UID, $projectUid, \Criteria::EQUAL);
$rsCriteria = \TriggersPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
if (!$rsCriteria->next()) {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_TRIGGER_NOT_BELONG_TO_PROJECT", array($arrayData["SCRTAS_OBJ_UID"], $projectUid)));
}
}
//---
$obj = \BpmnActivityPeer::retrieveByPK($arrayFinalData["ACT_UID"]);
if ($obj->getActTaskType() != "SCRIPTTASK") {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_TYPE_ACTIVITY_NOT_IS_SCRIPTTASK", array($this->arrayFieldNameForException["actUid"], $arrayData["ACT_UID"])));
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Create Script-Task for a Project
*
* @param string $projectUid Unique id of Project
* @param array $arrayData Data
*
* return array Return data of the new Script-Task created
*/
public function create($projectUid, array $arrayData)
{
try {
//Verify data
$process = new \ProcessMaker\BusinessModel\Process();
$validator = new \ProcessMaker\BusinessModel\Validator();
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
//Set data
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
unset($arrayData["SCRTAS_UID"]);
unset($arrayData["PRJ_UID"]);
//Verify data
$process->throwExceptionIfNotExistsProcess($projectUid, $this->arrayFieldNameForException["projectUid"]);
$this->throwExceptionIfDataIsInvalid("", $projectUid, $arrayData);
//Create
$cnn = \Propel::getConnection("workflow");
try {
$scriptTask = new \ScriptTask();
$scriptTask->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME);
$scriptTaskUid = \ProcessMaker\Util\Common::generateUID();
$scriptTask->setScrtasUid($scriptTaskUid);
$scriptTask->setPrjUid($projectUid);
if ($scriptTask->validate()) {
$cnn->begin();
$result = $scriptTask->save();
$cnn->commit();
//Return
return $this->getScriptTask($scriptTaskUid);
} else {
$msg = "";
foreach ($scriptTask->getValidationFailures() as $validationFailure) {
$msg = $msg . (($msg != "")? "\n" : "") . $validationFailure->getMessage();
}
throw new \Exception(\G::LoadTranslation("ID_RECORD_CANNOT_BE_CREATED") . (($msg != "")? "\n" . $msg : ""));
}
} catch (\Exception $e) {
$cnn->rollback();
throw $e;
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Update Script-Task
*
* @param string $scriptTaskUid Unique id of Script-Task
* @param array $arrayData Data
*
* return array Return data of the Script-Task updated
*/
public function update($scriptTaskUid, array $arrayData)
{
try {
//Verify data
$process = new \ProcessMaker\BusinessModel\Process();
$validator = new \ProcessMaker\BusinessModel\Validator();
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
//Set data
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
$arrayDataBackup = $arrayData;
unset($arrayData["SCRTAS_UID"]);
unset($arrayData["PRJ_UID"]);
//Set variables
$arrayScriptTaskData = $this->getScriptTask($scriptTaskUid, true);
//Verify data
$this->throwExceptionIfNotExistsScriptTask($scriptTaskUid, $this->arrayFieldNameForException["scrtasUid"]);
$this->throwExceptionIfDataIsInvalid($scriptTaskUid, $arrayScriptTaskData["PRJ_UID"], $arrayData);
//Update
$cnn = \Propel::getConnection("workflow");
try {
$scriptTask = \ScriptTaskPeer::retrieveByPK($scriptTaskUid);
$scriptTask->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME);
if ($scriptTask->validate()) {
$cnn->begin();
$result = $scriptTask->save();
$cnn->commit();
//Return
$arrayData = $arrayDataBackup;
if (!$this->formatFieldNameInUppercase) {
$arrayData = array_change_key_case($arrayData, CASE_LOWER);
}
return $arrayData;
} else {
$msg = "";
foreach ($scriptTask->getValidationFailures() as $validationFailure) {
$msg = $msg . (($msg != "")? "\n" : "") . $validationFailure->getMessage();
}
throw new \Exception(\G::LoadTranslation("ID_REGISTRY_CANNOT_BE_UPDATED") . (($msg != "")? "\n" . $msg : ""));
}
} catch (\Exception $e) {
$cnn->rollback();
throw $e;
}
} catch (\Exception $e) {
throw $e;
}
}
/**
* Delete Script-Task
*
* @param string $scriptTaskUid Unique id of Script-Task
*
* return void
*/
public function delete($scriptTaskUid)
{
try {
//Verify data
$this->throwExceptionIfNotExistsScriptTask($scriptTaskUid, $this->arrayFieldNameForException["scrtasUid"]);
//Delete
$criteria = new \Criteria("workflow");
$criteria->add(\ScriptTaskPeer::SCRTAS_UID, $scriptTaskUid, \Criteria::EQUAL);
$result = \ScriptTaskPeer::doDelete($criteria);
} catch (\Exception $e) {
throw $e;
}
}
/**
* Delete Script-Task
*
* @param array $arrayCondition Conditions
*
* return void
*/
public function deleteWhere(array $arrayCondition)
{
try {
//Delete
$criteria = new \Criteria("workflow");
foreach ($arrayCondition as $key => $value) {
if (is_array($value)) {
$criteria->add($key, $value[0], $value[1]);
} else {
$criteria->add($key, $value, \Criteria::EQUAL);
}
}
$result = \ScriptTaskPeer::doDelete($criteria);
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get criteria for Script-Task
*
* return object
*/
public function getScriptTaskCriteria()
{
try {
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_UID);
$criteria->addSelectColumn(\ScriptTaskPeer::PRJ_UID);
$criteria->addSelectColumn(\ScriptTaskPeer::ACT_UID);
$criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_OBJ_TYPE);
$criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_OBJ_UID);
return $criteria;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get data of a Script-Task from a record
*
* @param array $record Record
*
* return array Return an array with data Script-Task
*/
public function getScriptTaskDataFromRecord(array $record)
{
try {
return array(
$this->getFieldNameByFormatFieldName("SCRTAS_UID") => $record["SCRTAS_UID"],
$this->getFieldNameByFormatFieldName("PRJ_UID") => $record["PRJ_UID"],
$this->getFieldNameByFormatFieldName("ACT_UID") => $record["ACT_UID"],
$this->getFieldNameByFormatFieldName("SCRTAS_OBJ_TYPE") => $record["SCRTAS_OBJ_TYPE"],
$this->getFieldNameByFormatFieldName("SCRTAS_OBJ_UID") => $record["SCRTAS_OBJ_UID"]
);
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get data of a Script-Task
*
* @param string $scriptTaskUid Unique id of Script-Task
* @param bool $flagGetRecord Value that set the getting
*
* return array Return an array with data of a Script-Task
*/
public function getScriptTask($scriptTaskUid, $flagGetRecord = false)
{
try {
//Verify data
$this->throwExceptionIfNotExistsScriptTask($scriptTaskUid, $this->arrayFieldNameForException["scrtasUid"]);
//Get data
$criteria = $this->getScriptTaskCriteria();
$criteria->add(\ScriptTaskPeer::SCRTAS_UID, $scriptTaskUid, \Criteria::EQUAL);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$result = $rsCriteria->next();
$row = $rsCriteria->getRow();
//Return
return (!$flagGetRecord)? $this->getScriptTaskDataFromRecord($row) : $row;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get all Script-Tasks
*
* @param string $scriptTaskDefUid Unique id of Project
*
* return array Return an array with all Script-Tasks
*/
public function getScriptTasks($projectUid)
{
try {
$arrayScriptTask = array();
//Verify data
$process = new \ProcessMaker\BusinessModel\Process();
$process->throwExceptionIfNotExistsProcess($projectUid, $this->arrayFieldNameForException["projectUid"]);
//Get data
$criteria = $this->getScriptTaskCriteria();
$criteria->add(\ScriptTaskPeer::PRJ_UID, $projectUid, \Criteria::EQUAL);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$arrayScriptTask[] = $this->getScriptTaskDataFromRecord($row);
}
//Return
return $arrayScriptTask;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get data of a Script-Task by unique id of Activity
*
* @param string $projectUid Unique id of Project
* @param string $activityUid Unique id of Event
*
* return array Return an array with data of a Script-Task by unique id of Activity
*/
public function getScriptTaskByActivity($projectUid, $activityUid)
{
try {
//Verify data
$process = new \ProcessMaker\BusinessModel\Process();
$process->throwExceptionIfNotExistsProcess($projectUid, $this->arrayFieldNameForException["projectUid"]);
//---
$obj = \BpmnActivityPeer::retrieveByPK($activityUid);
if (is_null($obj)) {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_DOES_NOT_ACTIVITY", array($this->arrayFieldNameForException["actUid"], $activityUid)));
}
//---
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\BpmnActivityPeer::ACT_UID);
$criteria->add(\BpmnActivityPeer::PRJ_UID, $projectUid, \Criteria::EQUAL);
$criteria->add(\BpmnActivityPeer::ACT_UID, $activityUid, \Criteria::EQUAL);
$rsCriteria = \BpmnActivityPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
if (!$rsCriteria->next()) {
throw new \Exception(\G::LoadTranslation("ID_SCRIPT_TASK_ACTIVITY_NOT_BELONG_TO_PROJECT", array($arrayData["ACT_UID"], $projectUid)));
}
//---
$criteria = $this->getScriptTaskCriteria();
$criteria->add(\ScriptTaskPeer::PRJ_UID, $projectUid, \Criteria::EQUAL);
$criteria->add(\ScriptTaskPeer::ACT_UID, $activityUid, \Criteria::EQUAL);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
//Return
return ($rsCriteria->next())? $this->getScriptTaskDataFromRecord($rsCriteria->getRow()) : array();
} catch (\Exception $e) {
throw $e;
}
}
/**
* Execute Script
*
* @param string $activityUid Unique id of Event
* @param array $arrayApplicationData Case data
*
* return array
*/
public function execScriptByActivityUid($activityUid, array $arrayApplicationData)
{
try {
$task = \TaskPeer::retrieveByPK($activityUid);
if (!is_null($task) && $task->getTasType() == "SCRIPT-TASK") {
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_OBJ_UID);
$criteria->add(\ScriptTaskPeer::ACT_UID, $activityUid, \Criteria::EQUAL);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$scriptTasObjUid = $row["SCRTAS_OBJ_UID"];
$trigger = \TriggersPeer::retrieveByPK($scriptTasObjUid);
if (!is_null($trigger)) {
$pmScript = new \PMScript();
$pmScript->setFields($arrayApplicationData);
$pmScript->setScript($trigger->getTriWebbot());
$result = $pmScript->execute();
$arrayApplicationData = $pmScript->aFields;
}
}
}
//Return
return $arrayApplicationData;
} catch (\Exception $e) {
throw $e;
}
}
}

View File

@@ -391,7 +391,7 @@ abstract class Importer
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
$arrayTaskData = $value;
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"))) {
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-EMAIL-EVENT"))) {
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
}
}

View File

@@ -28,7 +28,8 @@ class BpmnWorkflow extends Project\Bpmn
"end-message-event" => array("type" => "END-MESSAGE-EVENT", "prefix" => "eme-"),
"start-message-event" => array("type" => "START-MESSAGE-EVENT", "prefix" => "sme-"),
"intermediate-throw-message-event" => array("type" => "INTERMEDIATE-THROW-MESSAGE-EVENT", "prefix" => "itme-"),
"intermediate-catch-message-event" => array("type" => "INTERMEDIATE-CATCH-MESSAGE-EVENT", "prefix" => "icme-")
"intermediate-catch-message-event" => array("type" => "INTERMEDIATE-CATCH-MESSAGE-EVENT", "prefix" => "icme-"),
"end-email-event" => array("type" => "END-EMAIL-EVENT", "prefix" => "eee-")
);
private $arrayElementTaskRelation = array();
@@ -198,8 +199,14 @@ class BpmnWorkflow extends Project\Bpmn
public function updateActivity($actUid, $data)
{
//Update Activity
$activityBefore = \BpmnActivityPeer::retrieveByPK($actUid);
parent::updateActivity($actUid, $data);
$activityCurrent = \BpmnActivityPeer::retrieveByPK($actUid);
//Update Task
$taskData = array();
if (array_key_exists("ACT_NAME", $data)) {
@@ -212,14 +219,38 @@ class BpmnWorkflow extends Project\Bpmn
$taskData["TAS_POSY"] = $data["BOU_Y"];
}
if ($activityBefore->getActTaskType() != "SCRIPTTASK" && $activityCurrent->getActTaskType() == "SCRIPTTASK") {
$taskData["TAS_TYPE"] = "SCRIPT-TASK";
}
if ($activityBefore->getActTaskType() == "SCRIPTTASK" && $activityCurrent->getActTaskType() != "SCRIPTTASK") {
$taskData["TAS_TYPE"] = "NORMAL";
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
$scriptTask->deleteWhere(array(
\ScriptTaskPeer::PRJ_UID => $activityCurrent->getPrjUid(),
\ScriptTaskPeer::ACT_UID => $activityCurrent->getActUid()
));
}
$this->wp->updateTask($actUid, $taskData);
}
public function removeActivity($actUid)
{
$activity = \BpmnActivityPeer::retrieveByPK($actUid);
parent::removeActivity($actUid);
$this->wp->removeTask($actUid);
//Delete Script-Task
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
$scriptTask->deleteWhere(array(
\ScriptTaskPeer::PRJ_UID => $activity->getPrjUid(),
\ScriptTaskPeer::ACT_UID => $activity->getActUid()
));
}
public function removeElementTaskRelation($elementUid, $elementType)
@@ -552,6 +583,20 @@ class BpmnWorkflow extends Project\Bpmn
$messageEventDefinition->delete($arrayMessageEventDefinitionData["MSGED_UID"]);
}
}
//Email-Event - Delete
$arrayEventType = array("END", "INTERMEDIATE");
$arrayEventMarker = array("EMAIL");
if (in_array($bpmnEvent->getEvnType(), $arrayEventType) && in_array($bpmnEvent->getEvnMarker(), $arrayEventMarker)) {
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
if ($emailEvent->existsEvent($bpmnEvent->getPrjUid(), $bpmnEvent->getEvnUid())) {
$arrayEmailEventData = $emailEvent->getEmailEventData($bpmnEvent->getPrjUid(), $bpmnEvent->getEvnUid());
$arrayEmailEventData = array_change_key_case($arrayEmailEventData, CASE_UPPER);
$emailEvent->delete($bpmnEvent->getPrjUid(), $arrayEmailEventData["EMAIL_EVENT_UID"], true);
}
}
//Element-Task-Relation - Delete
$this->removeElementTaskRelation($bpmnEvent->getEvnUid(), "bpmnEvent");
@@ -820,6 +865,16 @@ class BpmnWorkflow extends Project\Bpmn
$result = $this->wp->addRoute($activityUid, $taskUid, $routeType, $routeCondition, $routeDefault);
$result = $this->wp->addRoute($taskUid, -1, "SEQUENTIAL");
break;
case "EMAIL":
$taskUid = $this->createTaskByElement(
$event->getEvnUid(),
"bpmnEvent",
"end-email-event"
);
$result = $this->wp->addRoute($activityUid, $taskUid, $routeType, $routeCondition, $routeDefault);
$result = $this->wp->addRoute($taskUid, -1, "SEQUENTIAL");
break;
default:
//EMPTY //and others types
$result = $this->wp->addRoute($activityUid, -1, $routeType, $routeCondition, $routeDefault);
@@ -908,6 +963,16 @@ class BpmnWorkflow extends Project\Bpmn
"end-message-event"
);
$result = $this->wp->addRoute($activityUid, $taskUid, $routeType, $routeCondition, $routeDefault);
$result = $this->wp->addRoute($taskUid, -1, "SEQUENTIAL");
break;
case "EMAIL":
$taskUid = $this->createTaskByElement(
$event->getEvnUid(),
"bpmnEvent",
"end-email-event"
);
$result = $this->wp->addRoute($activityUid, $taskUid, $routeType, $routeCondition, $routeDefault);
$result = $this->wp->addRoute($taskUid, -1, "SEQUENTIAL");
break;
@@ -995,6 +1060,16 @@ class BpmnWorkflow extends Project\Bpmn
$result = $this->wp->addRoute($activity["ACT_UID"], $taskUid, "SEQUENTIAL");
$result = $this->wp->addRoute($taskUid, -1, "SEQUENTIAL");
break;
case "EMAIL":
$taskUid = $this->createTaskByElement(
$event->getEvnUid(),
"bpmnEvent",
"end-email-event"
);
$result = $this->wp->addRoute($activity["ACT_UID"], $taskUid, "SEQUENTIAL");
$result = $this->wp->addRoute($taskUid, -1, "SEQUENTIAL");
break;
default:
//EMPTY //This it's already implemented
//and others types
@@ -1245,6 +1320,7 @@ class BpmnWorkflow extends Project\Bpmn
* @param $projectData
* @return array
*/
public static function updateFromStruct($prjUid, $projectData, $generateUid = true, $forceInsert = false)
{
$diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array();
@@ -1869,4 +1945,3 @@ class BpmnWorkflow extends Project\Bpmn
}
}
}

View File

@@ -1473,5 +1473,50 @@ class Bpmn extends Handler
throw $e;
}
}
public function getEmailEventTypeBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType
) {
try {
$arrayEventType = array("END", "INTERMEDIATE");
$arrayEventMarker = array("EMAIL");
$this->arrayElementOriginChecked = array();
$arrayEventAux = $this->getElementsBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
$elementDestUid,
$elementDestType,
0
);
ksort($arrayEventAux);
$arrayEvent = array();
foreach ($arrayEventAux as $value) {
if ($value[1] == "bpmnEvent") {
$event = \BpmnEventPeer::retrieveByPK($value[0]);
if (!is_null($event) &&
in_array($event->getEvnType(), $arrayEventType) && in_array($event->getEvnMarker(), $arrayEventMarker)
) {
$arrayEvent[] = $value;
}
}
}
//Return
return $arrayEvent;
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
}

View File

@@ -855,6 +855,49 @@ class Workflow extends Handler
$messageEventDefinition->delete($row["MSGED_UID"]);
}
//Delete Email-Event
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_UID);
$criteria->add(\EmailEventPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$emailEvent->delete($sProcessUID,$row["EMAIL_EVENT_UID"],false);
}
//Delete files Manager
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_UID);
$criteria->add(\ProcessFilesPeer::PRO_UID, $sProcessUID, \Criteria::EQUAL);
$rsCriteria = \ProcessFilesPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$filesManager->deleteProcessFilesManager($sProcessUID, $row["PRF_UID"]);
}
//Delete Script-Task
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_UID);
$criteria->add(\ScriptTaskPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$scriptTask->delete($row["SCRTAS_UID"]);
}
//Delete the process
try {
@@ -1241,6 +1284,38 @@ class Workflow extends Handler
}
}
}
//Update EMAIL_EVENT.EVN_UID
if (isset($arrayWorkflowData["emailEvent"])) {
foreach ($arrayWorkflowData["emailEvent"] as $key => $value) {
$emailEventEventUid = $arrayWorkflowData["emailEvent"][$key]["EVN_UID"];
foreach ($arrayUid as $value2) {
$arrayItem = $value2;
if ($arrayItem["old_uid"] == $emailEventEventUid) {
$arrayWorkflowData["emailEvent"][$key]["EVN_UID"] = $arrayItem["new_uid"];
break;
}
}
}
}
//Update SCRIPT_TASK.ACT_UID
if (isset($arrayWorkflowData["scriptTask"])) {
foreach ($arrayWorkflowData["scriptTask"] as $key => $value) {
$scriptTaskActivityUid = $arrayWorkflowData["scriptTask"][$key]["ACT_UID"];
foreach ($arrayUid as $value2) {
$arrayItem = $value2;
if ($arrayItem["old_uid"] == $scriptTaskActivityUid) {
$arrayWorkflowData["scriptTask"][$key]["ACT_UID"] = $arrayItem["new_uid"];
break;
}
}
}
}
//Workflow tables
$workflowData = (object)($arrayWorkflowData);
@@ -1294,4 +1369,3 @@ class Workflow extends Handler
}
}
}

View File

@@ -528,15 +528,20 @@ class ActionsByEmail extends Api
{
$templates = array();
$path = PATH_DATA_MAILTEMPLATES . $proId . PATH_SEP;
$userUid = $this->getUserId();
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
\G::verifyPath($path, true);
if (defined('PARTNER_FLAG')) {
if (!file_exists($path . 'actionsByEmailPartner.html')) {
$data = array('prf_content' => '', 'prf_filename' => 'actionsByEmailPartner.html', 'prf_path' => 'templates');
$arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data);
@copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmailPartner.html', $path . 'actionsByEmail.html');
}
} else {
if (!file_exists($path . 'actionsByEmail.html')) {
$data = array('prf_content' => '', 'prf_filename' => 'actionsByEmail.html', 'prf_path' => 'templates');
$arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data);
@copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmail.html', $path . 'actionsByEmail.html');
}
}

View File

@@ -0,0 +1,123 @@
<?php
namespace ProcessMaker\Services\Api\Project;
use \ProcessMaker\Services\Api;
use \Luracast\Restler\RestException;
/**
* Project\EmailEvent Api Controller
*
* @protected
*/
class EmailEvent extends Api
{
private $EmailEvent;
/**
* Constructor of the class
*
* return void
*/
public function __construct()
{
try {
$this->EmailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url GET /:prj_uid/email-event/accounts
*
* @param string $prj_uid {@min 1} {@max 32}
*/
public function doGetEmailEventAccounts($prj_uid)
{
try {
$response = $this->EmailEvent->GetEmailEventAccounts();
return $response;
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}
}
/**
* @url GET /:prj_uid/email-event/:act_uid
*
* @param string $prj_uid {@min 1} {@max 32}
* @param string $act_uid {@min 1} {@max 32}
*/
public function doGetEmailEvent($prj_uid, $act_uid)
{
try {
$response = $this->EmailEvent->getEmailEventData($prj_uid, $act_uid);
return $response;
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}
}
/**
* @url POST /:prj_uid/email-event
*
* @param string $prj_uid {@min 1} {@max 32}
*/
public function doPostEmailEvent($prj_uid, array $request_data)
{
try {
$response = $this->EmailEvent->save($prj_uid, $request_data);
return $response;
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}
}
/**
* @url PUT /:prj_uid/email-event/:email_event_uid
*
* @param string $prj_uid {@min 32}{@max 32}
* @param string $email_event_uid {@min 32}{@max 32}
* @param array $request_data
*/
public function doPutEmailEvent($prj_uid, $email_event_uid, array $request_data)
{
try {
$arrayData = $this->EmailEvent->update($email_event_uid, $request_data);
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url DELETE /:prj_uid/email-event/:email_event_uid
*
* @param string $prj_uid {@min 32}{@max 32}
* @param string $email_event_uid {@min 32}{@max 32}
*/
public function doDeleteEmailEvent($prj_uid, $email_event_uid)
{
try {
$this->EmailEvent->delete($prj_uid, $email_event_uid);
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url DELETE /:prj_uid/email-event/by-event/:act_uid
*
* @param string $prj_uid {@min 32}{@max 32}
* @param string $act_uid {@min 32}{@max 32}
*/
public function doDeleteEmailEventByEvent ($prj_uid, $act_uid)
{
try {
$this->EmailEvent->deleteByEvent($prj_uid, $act_uid);
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
}

View File

@@ -0,0 +1,133 @@
<?php
namespace ProcessMaker\Services\Api\Project;
use \ProcessMaker\Services\Api;
use \Luracast\Restler\RestException;
/**
* Project\ScriptTask Api Controller
*
* @protected
*/
class ScriptTask extends Api
{
private $scriptTask;
/**
* Constructor of the class
*
* return void
*/
public function __construct()
{
try {
$this->scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
$this->scriptTask->setFormatFieldNameInUppercase(false);
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url GET /:prj_uid/script-task/:scrtas_uid
*
* @param string $prj_uid {@min 32}{@max 32}
* @param string $scrtas_def_uid {@min 32}{@max 32}
*/
public function doGetScriptTask($prj_uid, $scrtas_uid)
{
try {
$response = $this->scriptTask->getScriptTask($scrtas_uid);
return $response;
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url GET /:prj_uid/script-tasks
*
* @param string $prj_uid {@min 32}{@max 32}
*/
public function doGetScriptTasks($prj_uid)
{
try {
$response = $this->scriptTask->getScriptTasks($prj_uid);
return $response;
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url GET /:prj_uid/script-task/activity/:act_uid
*
* @param string $prj_uid {@min 32}{@max 32}
* @param string $act_uid {@min 32}{@max 32}
*/
public function doGetScriptTaskActivity($prj_uid, $act_uid)
{
try {
$response = $this->scriptTask->getScriptTaskByActivity($prj_uid, $act_uid);
return $response;
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url POST /:prj_uid/script-task
*
* @param string $prj_uid {@min 32}{@max 32}
* @param array $request_data
*
* @status 201
*/
public function doPostScriptTask($prj_uid, array $request_data)
{
try {
$arrayData = $this->scriptTask->create($prj_uid, $request_data);
$response = $arrayData;
return $response;
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url PUT /:prj_uid/script-task/:scrtas_uid
*
* @param string $prj_uid {@min 32}{@max 32}
* @param string $scrtas_uid {@min 32}{@max 32}
* @param array $request_data
*/
public function doPutScriptTask($prj_uid, $scrtas_uid, array $request_data)
{
try {
$arrayData = $this->scriptTask->update($scrtas_uid, $request_data);
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url DELETE /:prj_uid/script-task/:scrtas_uid
*
* @param string $prj_uid {@min 32}{@max 32}
* @param string $scrtas_uid {@min 32}{@max 32}
*/
public function doDeleteScriptTask($prj_uid, $scrtas_uid)
{
try {
$this->scriptTask->delete($scrtas_uid);
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
}

View File

@@ -41,6 +41,8 @@ debug = 1
message-type-variable = "ProcessMaker\Services\Api\Project\MessageType\Variable"
web-entry-event = "ProcessMaker\Services\Api\Project\WebEntryEvent"
message-event-definition = "ProcessMaker\Services\Api\Project\MessageEventDefinition"
script-task = "ProcessMaker\Services\Api\Project\ScriptTask"
email-event = "ProcessMaker\Services\Api\Project\EmailEvent"
[alias: projects]
project = "ProcessMaker\Services\Api\Project"

View File

@@ -0,0 +1,46 @@
var synchronizeDepartmentsLDAPADV = function() {
iGrid = Ext.getCmp('infoGrid');
rowSelected = iGrid.getSelectionModel().getSelected();
if (rowSelected) {
location.href = 'authSourcesSynchronize?authUid=' + rowSelected.data.AUTH_SOURCE_UID + '&tab=synchronizeDepartments';
}
};
var synchronizeGroupsLDAPADV = function() {
iGrid = Ext.getCmp('infoGrid');
rowSelected = iGrid.getSelectionModel().getSelected();
if (rowSelected) {
location.href = 'authSourcesSynchronize?authUid=' + rowSelected.data.AUTH_SOURCE_UID + '&tab=synchronizeGroups';
}
};
var synchronizeDepartmentsButtonLDAPADV = new Ext.Action({
text: 'Synchronize Departments',
iconCls: 'ICON_DEPARTAMENTS',
disabled: true,
handler: synchronizeDepartmentsLDAPADV
});
var synchronizeGroupsButtonLDAPADV = new Ext.Action({
text: 'Synchronize Groups',
iconCls: 'ICON_GROUPS',
disabled: true,
handler: synchronizeGroupsLDAPADV
});
var _rowselectLDAPADV = function(sm, index, record) {
if (record.get('AUTH_SOURCE_PROVIDER') == 'ldapAdvanced') {
synchronizeDepartmentsButtonLDAPADV.enable();
synchronizeGroupsButtonLDAPADV.enable();
}
};
var _rowdeselectLDAPADV = function(sm, index, record) {
synchronizeDepartmentsButtonLDAPADV.disable();
synchronizeGroupsButtonLDAPADV.disable();
};
_rowselect.push(_rowselectLDAPADV);
_rowdeselect.push(_rowdeselectLDAPADV);
_pluginActionButtons.push(synchronizeDepartmentsButtonLDAPADV);
_pluginActionButtons.push(synchronizeGroupsButtonLDAPADV);

View File

@@ -0,0 +1,3 @@
<div style="padding: 15px">
<div id="list-panel"></div>
</div>

View File

@@ -0,0 +1,229 @@
var viewPort;
var backButton;
var northPanel;
var tabsPanel;
var departmentsPanel;
var groupsPanel;
var treeDepartments;
var treeGroups;
var isSaved = true;
var isFirstTime = true;
Ext.onReady(function() {
nodeChangeCheck = function (node, check)
{
if (node) {
if (node.hasChildNodes()) {
node.eachChild(function (n) { nodeChangeCheck(n, check); });
}
//node.expand();
node.getUI().toggleCheck(check);
}
}
nodeChangeCheckStart = function (node, check)
{
treeDepartments.removeListener("checkchange", nodeChangeCheckStart, this);
nodeChangeCheck(node, check);
treeDepartments.addListener("checkchange", nodeChangeCheckStart, this);
}
try {
Ext.Ajax.timeout = 300000;
backButton = new Ext.Action({
text : _('ID_BACK'),
iconCls: "button_menu_ext ss_sprite ss_arrow_left",
handler: function() {
location.href = '../authSources/authSources_List';
}
});
northPanel = new Ext.Panel({
region: 'north',
xtype: 'panel',
tbar: ['<b>'+ 'Authentication Sources' + '</b>', {xtype: 'tbfill'}, backButton]
});
treeDepartments = new Ext.tree.TreePanel({
title: 'Departments List',
defaults: {flex: 1},
useArrows: true,
autoScroll: true,
animate: true,
enableDD: true,
containerScroll: true,
rootVisible: false,
frame: true,
root: {
nodeType: 'async'
},
maskDisabled: false,
dataUrl: 'authSourcesSynchronizeAjax?m=loadDepartments&authUid=' + AUTHENTICATION_SOURCE.AUTH_SOURCE_UID,
requestMethod: 'POST',
buttons: [{
text: 'Save Changes',
handler: function() {
isSaved = false;
var msg = '', selNodes = treeDepartments.getChecked();
treeDepartments.disabled = true;
var departments = [];
Ext.each(selNodes, function(node) {
departments.push(node.id);
});
Ext.Ajax.request({
url: 'authSourcesSynchronizeAjax',
params: {m: 'saveDepartments', authUid: AUTHENTICATION_SOURCE.AUTH_SOURCE_UID, departmentsDN: departments.join('|')},
success: function(r) {
var response = Ext.util.JSON.decode(r.responseText);
if (response.status == 'OK') {
treeDepartments.getLoader().load(treeDepartments.root);
}
else {
alert(response.message);
}
}
});
}
}],
listeners: {
checkchange: nodeChangeCheckStart
}
});
treeDepartments.loader.on('load', function() {
treeDepartments.getRootNode().expand(true);
if (!isSaved) {
isSaved = true;
treeDepartments.disabled = false;
Ext.Msg.show({
title: 'Changes saved.',
msg: 'All changes have been saved.',
icon: Ext.Msg.INFO,
minWidth: 200,
buttons: Ext.Msg.OK
});
}
});
treeGroups = new Ext.tree.TreePanel({
title: 'Groups List',
defaults: {flex: 1},
useArrows: true,
autoScroll: true,
animate: true,
enableDD: true,
containerScroll: true,
rootVisible: false,
frame: true,
root: {
nodeType: 'async'
},
dataUrl: 'authSourcesSynchronizeAjax?m=loadGroups&authUid=' + AUTHENTICATION_SOURCE.AUTH_SOURCE_UID,
requestMethod: 'POST',
buttons: [{
text: 'Save Changes',
handler: function() {
isSaved = false;
var msg = '', selNodes = treeGroups.getChecked();
treeGroups.disabled = true;
this.disabled = true;
var Groups = [];
Ext.each(selNodes, function(node) {
Groups.push(node.id);
});
Ext.Ajax.request({
url: 'authSourcesSynchronizeAjax',
params: {m: 'saveGroups', authUid: AUTHENTICATION_SOURCE.AUTH_SOURCE_UID, groupsDN: Groups.join('|')},
success: function(r) {
var response = Ext.util.JSON.decode(r.responseText);
if (response.status == 'OK') {
treeGroups.getLoader().load(treeGroups.root);
}
else {
alert(response.message);
}
}
});
}
}]
});
treeGroups.loader.on('load', function() {
treeGroups.getRootNode().expand(true);
if (!isSaved) {
isSaved = true;
treeGroups.disabled = false;
treeGroups.buttons[0].disabled = false;
Ext.Msg.show({
title: 'Changes saved.',
msg: 'All changes have been saved.',
icon: Ext.Msg.INFO,
minWidth: 200,
buttons: Ext.Msg.OK
});
}
});
departmentsPanel = new Ext.Panel({
title: 'Synchronize Departments',
autoWidth: true,
layout: 'hbox',
defaults: {flex: 1},
layoutConfig: {align: 'stretch'},
items: [treeDepartments],
viewConfig: {forceFit: true}
});
groupsPanel = new Ext.Panel({
title: 'Synchronize Groups',
autoWidth: true,
layout: 'hbox',
defaults: {flex: 1},
layoutConfig: {align: 'stretch'},
items: [treeGroups],
viewConfig: {forceFit: true}
});
tabsPanel = new Ext.TabPanel({
region: 'center',
activeTab: AUTHENTICATION_SOURCE.CURRENT_TAB,
items:[departmentsPanel, groupsPanel],
listeners:{
beforetabchange: function(p, t, c) {
if (typeof(t.body) == 'undefined') {
isFirstTime = true;
}
},
tabchange: function(p, t) {
if (!isFirstTime) {
switch(t.title){
case 'Synchronize Departments':
treeDepartments.getLoader().load(treeDepartments.root);
break;
case 'Synchronize Groups':
treeGroups.getLoader().load(treeGroups.root);
break;
}
}
else {
isFirstTime = false;
}
}
}
});
viewport = new Ext.Viewport({
layout: 'border',
items: [northPanel, tabsPanel]
});
}
catch (error) {
alert('->' + error + '<-');
}
});

View File

@@ -85,14 +85,19 @@
{/if}
{if $data.NEXT_TASK.TAS_NEXT eq ''}
{if $data.NEXT_TASK.USR_UID neq ''}
{if $data.NEXT_TASK.TAS_TYPE != "INTERMEDIATE-CATCH-MESSAGE-EVENT"}
{if ($data.NEXT_TASK.TAS_TYPE == "INTERMEDIATE-CATCH-MESSAGE-EVENT")}
<tr>
<td class="FormLabel" width="100">{$EMPLOYEE}:</td>
<td class="FormFieldContent" colspan="2" style="text-align: center">{$data.NEXT_TASK.USR_HIDDEN_FIELD}</td>
</tr>
{elseif ($data.NEXT_TASK.TAS_TYPE == "SCRIPT-TASK")}
<tr>
<td class="FormLabel" width="100"></td>
<td class="FormFieldContent">{$data.NEXT_TASK.USR_UID}{$data.NEXT_TASK.USR_HIDDEN_FIELD}</td>
</tr>
{else}
<tr>
<td class="FormFieldContent" colspan="2" style="text-align: center">{$data.NEXT_TASK.USR_HIDDEN_FIELD}</td>
<td class="FormLabel" width="100">{$EMPLOYEE}:</td>
<td class="FormFieldContent">{$data.NEXT_TASK.USR_UID}{$data.NEXT_TASK.USR_HIDDEN_FIELD}</td>
</tr>
{/if}
{/if}

View File

@@ -0,0 +1,237 @@
var ldapFormAnonymousOnChange = function (combo, arrayObject)
{
var flagAnonymous = (combo.getValue() == "1")? true : false;
arrayObject["ldapFormSearchUser"].allowBlank = flagAnonymous;
arrayObject["ldapFormPassword"].allowBlank = flagAnonymous;
arrayObject["ldapFormSearchUser"].setVisible(!flagAnonymous);
arrayObject["ldapFormPassword"].setVisible(!flagAnonymous);
};
var ldapFormId = new Ext.form.Hidden({
name: 'AUTH_SOURCE_UID',
id: 'AUTH_SOURCE_UID'
});
var ldapFormName = new Ext.form.TextField({
fieldLabel: '<span style="color: red">*</span>' + _('ID_NAME'),
name: 'AUTH_SOURCE_NAME',
id: 'AUTH_SOURCE_NAME',
autoCreate: {tag: 'input', type: 'text', maxlength: '50'},
allowBlank: false,
width: 210
});
var ldapFormProvider = new Ext.form.Hidden({
name: 'AUTH_SOURCE_PROVIDER',
id: 'AUTH_SOURCE_PROVIDER'
});
var ldapFormType = new Ext.form.ComboBox({
valueField: 'ID',
displayField: 'VALUE',
value: 'ldap',
fieldLabel: '<span style="color: red">*</span>' + _('ID_TYPE'),
typeAhead: true,
forceSelection: true,
triggerAction: 'all',
editable: true,
name: 'LDAP_TYPE',
id: 'LDAP_TYPE',
width: 130,
allowBlank: false,
store: [["ldap", "OpenLDAP"], ["ad", "Active Directory"], ["ds", "389 DS"]],
listeners:{
select: function(combo, record) {
ldapFormIdentifier.setValue((combo.getValue() == "ad")? "samaccountname" : "uid");
}
}
});
var ldapFormAutoRegister = new Ext.form.ComboBox({
valueField: 'ID',
displayField: 'VALUE',
value: '0',
fieldLabel: '<span style="color: red">*</span>' + "Enable automatic register",
typeAhead: true,
forceSelection: true,
triggerAction: 'all',
editable: true,
name: 'AUTH_SOURCE_AUTO_REGISTER',
id: 'AUTH_SOURCE_AUTO_REGISTER',
width: 130,
allowBlank: false,
store: [['0',_('ID_NO')],['1',_('ID_YES')]]
});
var ldapFormServerName = new Ext.form.TextField({
fieldLabel: '<span style="color: red">*</span>' + "Server Address",
name: 'AUTH_SOURCE_SERVER_NAME',
id: 'AUTH_SOURCE_SERVER_NAME',
autoCreate: {tag: 'input', type: 'text', maxlength: '50'},
allowBlank: false,
width: 210
});
var ldapFormPort = new Ext.form.NumberField({
fieldLabel: '<span style="color: red">*</span>' + _('ID_PORT'),
name: 'AUTH_SOURCE_PORT',
id: 'AUTH_SOURCE_PORT',
allowBlank: true,
width: 130,
value: '389',
autoCreate: {tag: 'input', type: 'text', maxlength: '5'}
});
var ldapFormTls = new Ext.form.ComboBox({
valueField: 'ID',
displayField: 'VALUE',
fieldLabel: '<span style="color: red">*</span>' + _('ID_ENABLED_TLS'),
typeAhead: true,
forceSelection: true,
triggerAction: 'all',
editable: true,
name: 'AUTH_SOURCE_ENABLED_TLS',
id: 'AUTH_SOURCE_ENABLED_TLS',
width: 130,
allowBlank: false,
value: '0',
store: [['0',_('ID_NO')],['1',_('ID_YES')]]
});
var ldapFormBaseDN = new Ext.form.TextField({
fieldLabel: '<span style="color: red">*</span>' + _('ID_BASE_DN'),
name: 'AUTH_SOURCE_BASE_DN',
id: 'AUTH_SOURCE_BASE_DN',
autoCreate: {tag: 'input', type: 'text', maxlength: '128'},
allowBlank: false,
width: 210
});
var ldapFormAnonymous = new Ext.form.ComboBox({
valueField: 'ID',
displayField: 'VALUE',
fieldLabel: '<span style="color: red">*</span>' + _('ID_ANONYMOUS'),
typeAhead: true,
forceSelection: true,
triggerAction: 'all',
editable: true,
name: 'AUTH_ANONYMOUS',
id: 'AUTH_ANONYMOUS',
width: 130,
allowBlank: false,
value: '0',
store: [['0',_('ID_NO')],['1',_('ID_YES')]],
listeners:{
select: function(combo, record) {
var arrayObject = [];
arrayObject["ldapFormSearchUser"] = ldapFormSearchUser;
arrayObject["ldapFormPassword"] = ldapFormPassword;
ldapFormAnonymousOnChange(combo, arrayObject);
}
}
});
var ldapFormSearchUser = new Ext.form.TextField({
fieldLabel: '<span style="color: red">*</span>' + _('ID_USERNAME'),
name: 'AUTH_SOURCE_SEARCH_USER',
id: 'AUTH_SOURCE_SEARCH_USER',
autoCreate: {tag: 'input', type: 'text', maxlength: '128'},
allowBlank: false,
width: 210
});
var ldapFormPassword = new Ext.form.TextField({
fieldLabel: '<span style="color: red">*</span>' + _('ID_PASSWORD'),
inputType: 'password',
name: 'AUTH_SOURCE_PASSWORD',
id: 'AUTH_SOURCE_PASSWORD',
autoCreate: {tag: 'input', type: 'text', maxlength: '32'},
allowBlank: false,
width: 210
});
var ldapFormIdentifier = new Ext.form.TextField({
fieldLabel: '<span style="color: red">*</span>' + "User Identifier",
name: 'AUTH_SOURCE_IDENTIFIER_FOR_USER',
id: 'AUTH_SOURCE_IDENTIFIER_FOR_USER',
autoCreate: {tag: 'input', type: 'text', maxlength: '20'},
allowBlank: false,
width: 210,
value: 'uid'
});
var ldapFormUsersFilter = new Ext.form.TextField({
fieldLabel: "Filter to search users",
name: 'AUTH_SOURCE_USERS_FILTER',
id: 'AUTH_SOURCE_USERS_FILTER',
autoCreate: {tag: 'input', type: 'text', maxlength: '200'},
allowBlank: true,
width: 210
});
var ldapFormRetiredEmployees = new Ext.form.TextField({
fieldLabel: "OU for Retired Employees OU",
name: 'AUTH_SOURCE_RETIRED_OU',
id: 'AUTH_SOURCE_RETIRED_OU',
autoCreate: {tag: 'input', type: 'text', maxlength: '128'},
allowBlank: true,
width: 210
});
var ldapFormAttrinuteIds = new Ext.form.Hidden({
name: 'AUTH_SOURCE_ATTRIBUTE_IDS',
id: 'AUTH_SOURCE_ATTRIBUTE_IDS'
});
var ldapFormShowGrid = new Ext.form.Hidden({
name: 'AUTH_SOURCE_SHOWGRID',
id: 'AUTH_SOURCE_SHOWGRID'
});
var ldapFormGridText = new Ext.form.Hidden({
name: 'AUTH_SOURCE_GRID_TEXT',
id: 'AUTH_SOURCE_GRID_TEXT'
});
///////////////////////////////////////////////////////////////////////////////////////
var ldapFormData = new Ext.form.FieldSet({
style: {
border: "0px"
},
labelWidth : 170,
items :[
ldapFormId, ldapFormName, ldapFormProvider, ldapFormType, ldapFormAutoRegister, ldapFormServerName,
ldapFormPort, ldapFormTls, ldapFormBaseDN, ldapFormAnonymous, ldapFormSearchUser, ldapFormPassword,
ldapFormIdentifier, ldapFormUsersFilter, ldapFormRetiredEmployees,
{
xtype: 'label',
fieldLabel: ' ',
id:'passwordReview',
width: 300,
style: 'font: 9px tahoma,arial,helvetica,sans-serif;',
text: "(Default set to (&(!(objectClass=organizationalUnit))))",
labelSeparator: ''
}, ldapFormAttrinuteIds, ldapFormShowGrid, ldapFormGridText
]
});
var pnlData = new Ext.Panel({
height: 425,
bodyStyle: "border-top: 0px; padding-top: 10px;",
title: "<div style=\"height: 20px;\">" + _("ID_INFORMATION") + "</div>",
items: [ldapFormData]
});

View File

@@ -0,0 +1,486 @@
Ext.onReady(function() {
//Head - Add style
var nhead = document.getElementsByTagName("head")[0];
var nstyle = document.createElement("style");
var strCss = "\
.ext-mb-ok {\
background: transparent url(/images/dialog-ok-apply.png) no-repeat top left;\
}";
nstyle.setAttribute("type", "text/css");
nhead.appendChild(nstyle);
if (nstyle.styleSheet) {
//IE
nstyle.styleSheet.cssText = strCss;
} else {
//Others browsers
nstyle.appendChild(document.createTextNode(strCss));
}
//Init
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
var ldapGridProxy = new Ext.data.HttpProxy({
method: 'POST',
api: {
read : 'ldapAdvancedProxy.php?functionAccion=ldapGrid&tipo=read',
create : 'ldapAdvancedProxy.php?functionAccion=ldapGrid&tipo=create',
save : 'ldapAdvancedProxy.php?functionAccion=ldapGrid&tipo=save',
destroy : 'ldapAdvancedProxy.php?functionAccion=ldapGrid&tipo=destroy',
update : 'ldapAdvancedProxy.php?functionAccion=ldapGrid&tipo=update'
}
});
var ldapGridReader = new Ext.data.JsonReader({
totalProperty: 'total',
successProperty: 'success',
messageProperty: 'message',
idProperty: 'ID',
root: 'data',
fields: [
{name: 'ID'},
{name: 'ATTRIBUTE_LDAP'},
{name: 'ATTRIBUTE_USER'}
]
});
var ldapGridWriter = new Ext.data.JsonWriter({
encode: true,
writeAllFields: true,
listful: true
});
var ldapGridStore = new Ext.data.Store({
proxy: ldapGridProxy,
reader: ldapGridReader,
writer: ldapGridWriter,
autoSave: true,
listeners:{
load: function() {
//
}
}
});
Ext.data.DataProxy.addListener('beforewrite', function(proxy, action) {
/*
if(action != 'create')
{
Ext.MessageBox.show({
msg: 'Guardando su información, espere un momento por favor',
progressText: 'Saving...',
width:300,
wait:true,
waitConfig: {interval:200},
animEl: 'mb7'
});
}
*/
});
Ext.data.DataProxy.addListener('write', function(proxy, action, result, res, rs) {
//
});
Ext.data.DataProxy.addListener('exception', function(proxy, type, action, options, res) {
/*
Ext.MessageBox.show({
title: 'Error de almacenamiento',
msg: 'Error al almacenar datos',
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
icon: Ext.MessageBox.ERROR
});
*/
});
var ldapGridFieldLdap = new Ext.form.TextField({
name: 'DELETE1',
id: 'DELETE1',
autoCreate: {tag: 'input', type: 'text', maxlength: '50'}
});
var values = Fields.AUTH_SOURCE_ATTRIBUTE_IDS;
values = values.trim();
var allValues = new Array();
var comboValues = new Array();
allValues = values.split('|');
for (var i = 0; i < allValues.length; i++) {
if (allValues[i] != '') {
comboValues.push([allValues[i],allValues[i]]);
}
}
var ldapGridFieldUser = new Ext.form.ComboBox({
valueField: 'ID',
displayField: 'VALUE',
value: '0',
typeAhead: true,
forceSelection: true,
triggerAction: 'all',
name: 'DELETE2',
id: 'DELETE2',
editable: true,
width: 130,
store: comboValues
});
var ldapGridCol = [
{
id: 'ID',
dataIndex: 'ID',
sortable: true,
hidden: true,
hideable:false
},{
id: 'ATTRIBUTE_LDAP',
header: "LDAP Field",
dataIndex: 'ATTRIBUTE_LDAP',
width: 10,
sortable: true,
editor: ldapGridFieldLdap
},
{
id: 'ATTRIBUTE_USER',
header: "User Field",
dataIndex: 'ATTRIBUTE_USER',
width: 10,
sortable: true,
editor: ldapGridFieldUser
}
];
var ldapGridEditor = new Ext.ux.grid.RowEditor({
saveText: _('ID_SAVE'),
listeners: {
canceledit: function(grid,obj){
//
},
afteredit: function(grid,obj,record){
//
}
}
});
var ldapGrid = new Ext.grid.GridPanel({
store: ldapGridStore,
loadMask : true,
plugins: [ldapGridEditor],
frame: true,
height: 365,
columns : ldapGridCol,
autoShow: true,
autoFill:true,
nocache: true,
autoWidth: true,
stripeRows: true,
stateful: true,
animCollapse: true,
enableColumnResize: true,
enableHdMenu: true,
columnLines: true,
tbar: [{
text: _('ID_ADD'),
iconCls: ' x-btn-text button_menu_ext ss_sprite ss_add',
handler: onAdd
}, '-', {
text: _('ID_REMOVE'),
iconCls: ' x-btn-text button_menu_ext ss_sprite ss_delete',
handler: onDelete
}],
viewConfig: {
forceFit: true
}
});
function onAdd(btn, ev) {
var row = new ldapGrid.store.recordType({
ID: 'NUEVO',
ATTRIBUTE_LDAP: '',
ATTRIBUTE_USER: ''
});
var length = ldapGrid.getStore().data.length;
ldapGridEditor.stopEditing();
ldapGridStore.insert(length, row);
ldapGrid.getView().refresh();
ldapGrid.getSelectionModel().selectRow(length);
ldapGridEditor.startEditing(length);
}
function onDelete() {
var rec = ldapGrid.getSelectionModel().getSelected();
if (!rec) {
return false;
}
ldapGrid.store.remove(rec);
}
///////////////////////////////////////////////////////////////////////////////////////
var pnlAttribute = new Ext.Panel({
height: 425,
bodyStyle: "border-top: 0px; padding: 10px;",
title: "<div id=\"containerChkAttribute\" style=\"height: 20px;\"></div>",
items: [ldapGrid],
listeners: {
afterrender: function (panel)
{
var chk = new Ext.form.Checkbox({
id: "AUTH_SOURCE_SHOWGRID-checkbox",
name: "AUTH_SOURCE_SHOWGRID-checkbox",
boxLabel: "Match attributes to sync",
renderTo: "containerChkAttribute",
listeners: {
check: function (chk, checked)
{
ldapGrid.setVisible(checked);
}
}
});
}
}
});
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
var ldapFormSubmit = function ()
{
var itemsLdapGrid = ldapGrid.store.data.items;
var arrayDetail = [];
for (var i = 0; i <= itemsLdapGrid.length - 1; i++) {
var newItem = {
attributeLdap: itemsLdapGrid[i].data.ATTRIBUTE_LDAP,
attributeUser: itemsLdapGrid[i].data.ATTRIBUTE_USER
};
arrayDetail[i] = newItem;
}
Ext.get("LDAP_TYPE").dom.value = ldapFormType.getValue();
Ext.get("AUTH_SOURCE_AUTO_REGISTER").dom.value = ldapFormAutoRegister.getValue();
Ext.get("AUTH_SOURCE_ENABLED_TLS").dom.value = ldapFormTls.getValue();
Ext.get("AUTH_ANONYMOUS").dom.value = ldapFormAnonymous.getValue();
Ext.get("AUTH_SOURCE_GRID_TEXT").dom.value = Ext.util.JSON.encode(arrayDetail);
ldapForm.getForm().submit({
method: "POST",
waitTitle: "Connecting...",
waitMsg: _("ID_SAVING"),
success: function (form, action)
{
redirectPage("../authSources/authSources_List?" + randomNum(1, 9999999));
},
failure: function (form, action)
{
//
}
});
};
var ldapForm = new Ext.FormPanel({
url : 'ldapAdvancedProxy.php?functionAccion=ldapSave',
frame : true,
title : "Authentication Source Information",
border : false,
autoScroll: true,
monitorValid : true,
items:[
{
layout:'column',
autoScroll:true,
bodyStyle: "border: 0px;",
items:[{
columnWidth: 0.5,
bodyStyle: "border: 0px;",
items: [pnlData]
},{
columnWidth: 0.5,
bodyStyle: "border: 0px; padding-left: 10px;",
items: [pnlAttribute]
}]
},
{
layout: "column",
autoScroll: true,
bodyStyle: "margin-top: 0.5em; border: 0px;",
items: [
{
columnWidth: 1,
bodyStyle: "border: 0px;",
html: "Minimum data required to run the \"Test Connection\": \"Server Address, " + _("ID_PORT") + ", " + _("ID_ENABLED_TLS") + ", " + _("ID_ANONYMOUS") + ", " + _("ID_USERNAME") + ", " + _("ID_PASSWORD") + "\""
}
]
}
],
buttons: [
{
text: _("ID_SAVE"),
formBind: true,
handler: function ()
{
if (typeof(Fields.AUTH_SOURCE_UID) != "undefined" && typeof(Fields.AUTH_SOURCE_BASE_DN) != "undefined" && ldapFormBaseDN.getValue() != Fields.AUTH_SOURCE_BASE_DN) {
Ext.Ajax.request({
url: "ldapAdvancedProxy.php",
method: "POST",
params: {
functionAccion: "ldapVerifyIfExistsRecordsInDb",
authenticationSourceUid: Fields.AUTH_SOURCE_UID
},
success: function (response, opts)
{
var dataResponse = Ext.util.JSON.decode(response.responseText);
if (dataResponse.status) {
if (dataResponse.status == "OK" && dataResponse.existsRecords + "" == "1") {
Ext.MessageBox.confirm(
_("ID_CONFIRM"),
"System has detected that there are synchronized elements with the \"Authentication Source \" you are editing, if you change the \"Base DN\" those synchronized elements could have problems. Are you sure you want to change the \"Base DN\"?",
function (btn)
{
if (btn == "yes") {
ldapFormSubmit();
}
}
);
} else {
ldapFormSubmit();
}
} else {
ldapFormSubmit();
}
},
failure: function (response, opts)
{
//
}
});
} else {
ldapFormSubmit();
}
}
},
{
text: "Test connection",
formBind: true,
handler: function ()
{
var loadMaskAux = new Ext.LoadMask(Ext.getBody(), {msg: "Testing connection..."});
loadMaskAux.show();
Ext.Ajax.request({
url: "ldapAdvancedProxy.php",
method: "POST",
params: {
functionAccion: "ldapTestConnection",
AUTH_SOURCE_SERVER_NAME: Ext.getCmp("AUTH_SOURCE_SERVER_NAME").getValue(),
AUTH_SOURCE_PORT: Ext.getCmp("AUTH_SOURCE_PORT").getValue(),
AUTH_SOURCE_ENABLED_TLS: Ext.getCmp("AUTH_SOURCE_ENABLED_TLS").getValue(),
AUTH_ANONYMOUS: Ext.getCmp("AUTH_ANONYMOUS").getValue(),
AUTH_SOURCE_SEARCH_USER: Ext.getCmp("AUTH_SOURCE_SEARCH_USER").getValue(),
AUTH_SOURCE_PASSWORD: Ext.getCmp("AUTH_SOURCE_PASSWORD").getValue(),
AUTH_SOURCE_VERSION: 3
},
success: function (response, opts)
{
var dataResponse = Ext.util.JSON.decode(response.responseText);
if (dataResponse.status) {
Ext.MessageBox.show({
title: "Test connection",
msg: (dataResponse.status == "OK")? "Successfully connected" : dataResponse.message,
icon: (dataResponse.status == "OK")? "ext-mb-ok" : Ext.MessageBox.ERROR,
buttons: {ok: _("ID_ACCEPT")}
});
}
loadMaskAux.hide();
},
failure: function (response, opts)
{
loadMaskAux.hide();
}
});
}
},
{
text: _("ID_CANCEL"),
handler: function ()
{
redirectPage("../authSources/authSources_List?" + randomNum(1, 9999999));
}
}
]
});
var gridAttribute = '';
if (typeof(Fields.AUTH_SOURCE_UID) == 'undefined' || Fields.AUTH_SOURCE_UID == '') {
ldapFormProvider.setValue(Fields.AUTH_SOURCE_PROVIDER);
ldapFormAttrinuteIds.setValue(Fields.AUTH_SOURCE_ATTRIBUTE_IDS);
gridAttribute = '';
} else {
ldapFormId.setValue(Fields.AUTH_SOURCE_UID);
ldapFormName.setValue(Fields.AUTH_SOURCE_NAME);
ldapFormProvider.setValue(Fields.AUTH_SOURCE_PROVIDER);
ldapFormType.setValue(Fields.LDAP_TYPE);
ldapFormAutoRegister.setValue(Fields.AUTH_SOURCE_AUTO_REGISTER);
ldapFormServerName.setValue(Fields.AUTH_SOURCE_SERVER_NAME);
ldapFormPort.setValue(Fields.AUTH_SOURCE_PORT);
ldapFormTls.setValue(Fields.AUTH_SOURCE_ENABLED_TLS);
ldapFormBaseDN.setValue(Fields.AUTH_SOURCE_BASE_DN);
ldapFormAnonymous.setValue(Fields.AUTH_ANONYMOUS);
ldapFormSearchUser.setValue(Fields.AUTH_SOURCE_SEARCH_USER);
ldapFormPassword.setValue(Fields.AUTH_SOURCE_PASSWORD);
ldapFormIdentifier.setValue(Fields.AUTH_SOURCE_IDENTIFIER_FOR_USER);
ldapFormUsersFilter.setValue(Fields.AUTH_SOURCE_USERS_FILTER);
ldapFormRetiredEmployees.setValue(Fields.AUTH_SOURCE_RETIRED_OU);
if (typeof(Fields.AUTH_SOURCE_GRID_ATTRIBUTE) != 'undefined') {
gridAttribute = Ext.util.JSON.encode(Fields.AUTH_SOURCE_GRID_ATTRIBUTE);
}
}
ldapGridStore.load({
params:{'data': gridAttribute}
});
var arrayObject = [];
arrayObject["ldapFormSearchUser"] = ldapFormSearchUser;
arrayObject["ldapFormPassword"] = ldapFormPassword;
ldapFormAnonymousOnChange(ldapFormAnonymous, arrayObject);
new Ext.Viewport({
layout:'fit',
border: false,
items: [ldapForm]
});
ldapFormProvider.setValue(Fields.AUTH_SOURCE_PROVIDER);
ldapFormAttrinuteIds.setValue(Fields.AUTH_SOURCE_ATTRIBUTE_IDS);
Ext.getCmp("AUTH_SOURCE_SHOWGRID-checkbox").setValue(typeof(Fields.AUTH_SOURCE_GRID_ATTRIBUTE) != "undefined");
ldapGrid.setVisible(typeof(Fields.AUTH_SOURCE_GRID_ATTRIBUTE) != "undefined");
});

View File

@@ -0,0 +1,317 @@
Ext.onReady(function() {
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
/////////////////////////////////
///// PANEL SEARCH USERS
/////////////////////////////////
//Variables
var pageSize = parseInt(CONFIG.pageSize);
//Components
var searchUsersText = new Ext.form.TextField({
width: 280,
allowBlank: true,
listeners:{
specialkey:function(f,o){
if(o.getKey()==13){
storeGridSearch.load({ params: {sKeyword: searchUsersText.getValue()} });
}
}
}
});
var compSearchUsers = new Ext.form.CompositeField({
fieldLabel: 'Keyword',
labelStyle: 'width:100px; padding: 3px 3px 3px 15px;',
items: [
searchUsersText,
{
xtype: 'button',
iconCls: 'button_menu_ext ss_sprite ss_magnifier',
text: 'Search',
width : 40,
handler: function(){
storeGridSearch.load({ params: {sKeyword: searchUsersText.getValue()} });
}
}
]
});
var panelSearch = new Ext.Panel({
region: 'north',
height: 65,
margins: '0 0 0 0',
frame: true,
labelAlign: 'left',
align: 'center',
labelStyle: 'font-weight:bold; padding: 3px 3px 3px 15px;',
title: "<div><div style=\"float: left;\">" + "Search for user" + "</div><div id=\"divBack\" style=\"float: right;\"></div><div style=\"clear: both; height: 0; line-height:0; font-size: 0;\"></div></div>",
items: [
new Ext.FormPanel({
labelWidth : 120,
labelStyle: 'padding: 3px 3px 3px 15px;',
autoScroll: false,
monitorValid : true,
bodyStyle: "border: 0px;",
items:[
compSearchUsers
]
})
],
listeners: {
afterrender: function (panel)
{
var btn = new Ext.Button({
text: _("ID_BACK"),
iconCls: "button_menu_ext ss_sprite ss_arrow_left",
renderTo: "divBack",
handler: function ()
{
redirectPage("authSources_List");
}
});
}
}
});
/////////////////////////////////
///// GRID SEARCH USERS
/////////////////////////////////
var storeGridSearch = new Ext.data.JsonStore({
proxy: new Ext.data.HttpProxy({
method: 'POST',
url: 'ldapAdvancedProxy.php',
timeout: 240000
}),
autoDestroy: true,
remoteSort: false,
totalProperty: "resultTotal",
root: "resultRoot",
fields: [
'sUsername',
'sFullname',
'sFirstname',
'sLastname',
'sEmail',
'sCategory',
'sDN',
'sManagerDN',
'STATUS',
'IMPORT'
],
listeners: {
beforeload: function (store, opt)
{
this.baseParams = {
functionAccion: "searchUsers",
sUID: Fields.AUTH_SOURCE_UID,
sKeyword: searchUsersText.getValue(),
pageSize: pageSize
};
},
load: function (store, record, opt)
{
Ext.getCmp('BUTTON_IMPORT').disable();
}
}
});
storeGridSearch.setDefaultSort('sUsername', 'asc');
var tbarSearch = [
{
id: 'BUTTON_IMPORT',
text: 'Import',
iconCls: 'button_menu_ext ss_sprite ss_group_go ',
disabled: true,
handler: function () {
rowSelected = gridSearch.getSelectionModel().getSelected();
var auxUsersSelect = gridSearch.getSelectionModel().selections.items;
var countSelect = auxUsersSelect.length;
if (countSelect != 0) {
var con = 0;
var usersSelect = new Array();
var numberCases = '';
while (con < countSelect) {
if (auxUsersSelect[con].data.IMPORT == 1) {
var newArray = {
sUsername : auxUsersSelect[con].data.sUsername,
sFullname : auxUsersSelect[con].data.sFullname,
sFirstname : auxUsersSelect[con].data.sFirstname,
sLastname : auxUsersSelect[con].data.sLastname,
sEmail : auxUsersSelect[con].data.sEmail,
sCategory : auxUsersSelect[con].data.sCategory,
sDN : auxUsersSelect[con].data.sDN,
sManagerDN : auxUsersSelect[con].data.sManagerDN
};
usersSelect.push(newArray);
}
con++;
}
var countImport = usersSelect.length;
if (countImport != 0) {
Ext.MessageBox.confirm('Confirm', 'Are you sure you want to import the selected users?', function (val) {
if (val == 'yes') {
Ext.MessageBox.show({
msg: 'Importing Users...',
progressText: 'Saving...',
width:300,
wait:true,
waitConfig: {interval:200},
animEl: 'mb7'
});
Ext.Ajax.request({
params: {
'UsersImport': Ext.encode(usersSelect),
'functionAccion': 'importUsers',
'AUTH_SOURCE_UID': Fields.AUTH_SOURCE_UID
},
url : 'ldapAdvancedProxy.php',
success: function (returnData) {
var resp = Ext.decode(returnData.responseText);
Ext.MessageBox.hide();
if (resp.success) {
Ext.MessageBox.show({
title: 'Import Users',
msg: 'Imported Successfully',
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
icon: Ext.MessageBox.INFO
});
redirectPage('../users/users_List');
}
},
failure: function () {
Ext.MessageBox.alert('ERROR', 'Error in server');
}
});
}
});
} else {
PMExt.notify('WARNING', 'You do not select any user to import');
}
} else {
PMExt.notify('WARNING', 'You do not select any user to import');
}
}
}
];
//var pageSize = parseInt(CONFIG.pageSize);
//
//var storePageSize = new Ext.data.SimpleStore({
// autoLoad: true,
// fields: ['size'],
// data:[['20'],['30'],['40'],['50'],['100']]
//});
//
//var comboPageSize = new Ext.form.ComboBox({
// typeAhead : false,
// mode : 'local',
// triggerAction : 'all',
// store: storePageSize,
// valueField: 'size',
// displayField: 'size',
// width: 50,
// editable: false,
// listeners:{
// select: function(c,d,i){
// pagingSearchList.pageSize = parseInt(d.data['size']);
// pagingSearchList.moveFirst();
// }
// }
//});
//
//comboPageSize.setValue(pageSize);
//
//var pagingSearchList = new Ext.PagingToolbar({
// pageSize : 1000,
// store : storeGridSearch,
// displayInfo : true,
// autoHeight : true,
// displayMsg : 'Ldap Users' + ' {0} - {1} ' + 'of' + ' {2}',
// emptyMsg : ' There are no LDAP Users '//,
// //items: [
// //comboPageSize
// //]
//});
var pagingSearchList = new Ext.PagingToolbar({
pageSize: pageSize,
store: storeGridSearch,
displayInfo: true,
displayMsg: "LDAP Users" + " {0} - {1} " + "of" + " {2}",
emptyMsg: "There are no LDAP Users"
});
var selectModelList = new Ext.grid.CheckboxSelectionModel({
listeners: {
selectionchange: function() {
if (selectModelList.getCount() > 0) {
Ext.getCmp('BUTTON_IMPORT').enable();
} else {
Ext.getCmp('BUTTON_IMPORT').disable();
}
}
}
});
var gridSearch = new Ext.grid.GridPanel({
store : storeGridSearch,
tbar : tbarSearch,
bbar : pagingSearchList,
region: 'center',
margins: '0 0 0 0',
loadMask : true,
sm: selectModelList,
cm: new Ext.grid.ColumnModel({
defaults: {
sortable: true
},
columns: [
selectModelList,
{header: 'Username', width: 15, dataIndex: 'sUsername', sortable: true},
{header: 'First Name', width: 15, dataIndex: 'sFirstname', sortable: true},
{header: 'Last Name', width: 15, dataIndex: 'sLastname', sortable: true},
{header: 'Email', width: 15, dataIndex: 'sEmail', sortable: true},
{header: 'Distinguished Name', width: 35, dataIndex: 'sDN'},
{dataIndex: "STATUS", header: _("ID_STATUS"), width: 10, css: "background: #D4D4D4; font-weight: bold;", align: "center", renderer: renderStatus}
]
}),
border: false,
autoShow: true,
autoFill:true,
nocache: true,
autoWidth: true,
stripeRows: true,
stateful: true,
animCollapse: true,
enableColumnResize: true,
enableHdMenu: true,
columnLines: true,
viewConfig: {
forceFit:true,
emptyText: '<div align="center"><b> ' + ' There are no LDAP Users ' + ' </b></div>'
}
});
new Ext.Viewport({
layout:'border',
border: false,
items: [panelSearch, gridSearch]
});
});

View File

@@ -0,0 +1,15 @@
function redirectPage(page){
window.location = page;
}
function randomNum(inf, sup){
numPos = sup - inf;
aleat = Math.random() * numPos;
aleat = Math.round(aleat);
return parseInt(inf) + aleat;
}
function renderStatus (data, metadata, record, rowIndex, columnIndex, store) {
return "<span style=\"color: " + ((record.data.IMPORT == 1)? "#005E20" : "#FF0000") + ";\">" + record.data.STATUS.toUpperCase() + "</span>";
}

View File

@@ -0,0 +1,180 @@
var caseData = '';
var appTitle = new Ext.form.Label({
fieldLabel: "Case Title",
labelStyle: 'font-weight:bold;padding-right:30px;'
});
var process = new Ext.form.Label({
fieldLabel: "Process Uid",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var processTitle = new Ext.form.Label({
fieldLabel: "Process",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var appUid = new Ext.form.Label({
fieldLabel: "App Uid",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var caseNumber = new Ext.form.Label({
fieldLabel: "Case number",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var initUser = new Ext.form.Label({
fieldLabel: "Init user",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var finishUser = new Ext.form.Label({
fieldLabel: "Finish user",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var createDate = new Ext.form.Label({
fieldLabel: "Create date",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var finishDate = new Ext.form.Label({
fieldLabel: "Finish date",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var fileName = new Ext.form.Label({
fieldLabel: "File Name",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var statusCaseWin = new Ext.form.Label({
fieldLabel: "Status",
labelStyle: 'font-weight:bold;padding-right:35px;'
});
var formCase = new Ext.FormPanel({
labelWidth : 120,
labelAlign : 'right',
autoScroll: true,
frame: true,
bodyStyle : 'padding-top:20px;padding-left:20px;',
items:[
appTitle,
caseNumber,
processTitle,
initUser,
finishUser,
createDate,
finishDate,
fileName,
statusCaseWin
],
buttons:[{
text : "Restore case",
id: 'BUTTON_UNARCHIVE_CASE',
iconCls: 'button_menu_ext ss_sprite ss_folder_go',
formBind : true,
handler : function(){
if (caseData!='') {
Ext.MessageBox.confirm("Confirm", "Are you sure you want to restore the case?", function (val) {
if (val == 'yes') {
dataCase = caseData;
Ext.MessageBox.show({
msg: "Restoring case" + ' ' + dataCase.CASE_NUMBER + ' ...',
progressText: 'Saving...',
width:300,
wait:true,
waitConfig: {interval:200},
animEl: 'mb7'
});
Ext.Ajax.request({
params: {
'APP_UID': dataCase.APP_UID,
'FILENAME_TAR': dataCase.FILENAME_TAR,
'functionExecute': 'unarchiveCase'
},
url : 'controllers/searchListProxy.php',
success: function (returnData) {
Ext.MessageBox.hide();
var resp = Ext.decode(returnData.responseText);
if (resp.success) {
Ext.MessageBox.show({
title: 'Case Unarhive',
msg: "Case" + ' ' + dataCase.CASE_NUMBER + ' ' + "Restored sucessfully",
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
icon: Ext.MessageBox.INFO
});
} else {
Ext.MessageBox.show({
title: "Error",
msg: resp.message,
buttons: Ext.MessageBox.OK,
animEl: 'mb9',
icon: Ext.MessageBox.ERROR
});
}
storeGridSearch.load();
},
failure: function () {
Ext.MessageBox.alert("Error", "Error in server");
}
});
}
});
}
}
},
{
text : _('ID_CLOSE'),
iconCls: 'button_menu_ext ss_sprite ss_folder_delete',
formBind : true,
handler : function(){
summaryWindow.hide();
}
}]
});
var summaryWindow = new Ext.Window({
title: "Detail Case",
layout: 'fit',
width: 500,
height: 320,
resizable: true,
closable: true,
closeAction : 'hide',
modal: true,
autoScroll:true,
constrain: true,
items: [formCase]
});
function showCaseSummary(dataCase) {
if (dataCase) {
caseData = dataCase;
if(dataCase.STATUS == 'RESTORED'){
Ext.getCmp('BUTTON_UNARCHIVE_CASE').disable();
} else {
Ext.getCmp('BUTTON_UNARCHIVE_CASE').enable();
}
appTitle.setText(dataCase.APP_TITLE, false);
process.setText(dataCase.PRO_UID, false);
processTitle.setText(dataCase.PRO_TITLE, false);
appUid.setText(dataCase.APP_UID, false);
caseNumber.setText(dataCase.CASE_NUMBER, false);
initUser.setText(dataCase.INIT_USER_NAME, false);
finishUser.setText(dataCase.FINISH_USER_NAME, false);
createDate.setText(renderDate(dataCase.CREATE_DATE, false));
finishDate.setText(renderDate(dataCase.FINISH_DATE, false));
fileName.setText(dataCase.FILENAME_TAR+'.tar', false);
statusCaseWin.setText(dataCase.STATUS, false);
summaryWindow.show();
}
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<dynaForm type="grid" name="ldapAdvanced/gridAttribute" enabletemplate="0" mode="">
<attributeLdap type="text" maxlength="64" validate="Any" required="0" readonly="0" size="15" mode="edit" btn_cancel="Cancel">
<en><![CDATA[LDAP Field]]></en>
<pt-BR><![CDATA[Campo LDAP]]></pt-BR>
</attributeLdap>
<attributeUser type="dropdown" required="0" readonly="0" mode="edit" options="Array" btn_cancel="Cancel">
<en><![CDATA[User Field]]></en>
<pt-BR><![CDATA[Campo de Usuário]]></pt-BR>
</attributeUser>
</dynaForm>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<dynaForm name="Ldap Setup Form" type="xmlform" width="550">
<TITLE type="title" group="1">
<en><![CDATA[Ldap Advance Plugin]]></en>
<pt-BR><![CDATA[Ldap Plugin Adiantamento]]></pt-BR>
</TITLE>
<HelpText type="subtitle" maxlength="100" size="60">
<en><![CDATA[Please check the User Section in order to Synchronize or Import users from an authentication source using this plugin. There is no further configuration needed.]]></en>
<pt-BR><![CDATA[Por favor verifique a seção do usuário, a fim de sincronizar ou importar usuários a partir de uma fonte de autenticação usando este plugin. Não há nenhuma configuração adicional necessário.]]></pt-BR>
</HelpText>
</dynaForm>

View File

@@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8"?>
<dynaForm name="authSources/ldap_Edit" type="xmlform" width="650" enabletemplate="0" mode="">
<title type="title">
<en><![CDATA[Authentication Source Information]]></en>
<pt-BR><![CDATA[Informações de fonte de autenticação]]></pt-BR>
</title>
<AUTH_SOURCE_UID type="hidden"/>
<AUTH_SOURCE_NAME type="text" size="50" maxlength="50" required="1">
<en><![CDATA[Name]]></en>
<pt-BR><![CDATA[Nome]]></pt-BR>
</AUTH_SOURCE_NAME>
<AUTH_SOURCE_PROVIDER type="hidden" defaultValue="ldap"/>
<LDAP_TYPE type="dropdown" required="0">
<en><![CDATA[Type]]><option name="ldap"><![CDATA[OpenLDAP]]></option><option name="ad"><![CDATA[Active Directory]]></option><option name="ds"><![CDATA[389 DS]]></option></en>
<pt-BR><![CDATA[Tipo]]><option name="ldap"><![CDATA[OpenLDAP]]></option><option name="ad"><![CDATA[Active Directory]]></option><option name="ds"><![CDATA[389 DS]]></option></pt-BR>
</LDAP_TYPE>
<AUTH_SOURCE_AUTO_REGISTER type="dropdown">
<en><![CDATA[Enable automatic register]]><option name="0"><![CDATA[No]]></option><option name="1"><![CDATA[Yes]]></option></en>
<pt-BR><![CDATA[Ativado automatic registrar]]><option name="0"><![CDATA[Não]]></option><option name="1"><![CDATA[Sim]]></option></pt-BR>
</AUTH_SOURCE_AUTO_REGISTER>
<AUTH_SOURCE_SERVER_NAME type="text" size="50" maxlength="50" required="1">
<en><![CDATA[Server Address]]></en>
<pt-BR><![CDATA[Endereço do Servidor]]></pt-BR>
</AUTH_SOURCE_SERVER_NAME>
<AUTH_SOURCE_PORT type="text" size="5" maxlength="5" required="1" defaultValue="389" validate="Int">
<en><![CDATA[Port]]></en>
<pt-BR><![CDATA[Porto]]></pt-BR>
</AUTH_SOURCE_PORT>
<AUTH_SOURCE_ENABLED_TLS type="dropdown">
<en><![CDATA[Enabled TLS]]><option name="0"><![CDATA[No]]></option><option name="1"><![CDATA[Yes]]></option></en>
<pt-BR><![CDATA[Ativado TLS]]><option name="0"><![CDATA[Não]]></option><option name="1"><![CDATA[Sim]]></option></pt-BR>
</AUTH_SOURCE_ENABLED_TLS>
<AUTH_SOURCE_BASE_DN type="text" size="50" maxlength="128" required="1">
<en><![CDATA[Base DN]]></en>
<pt-BR><![CDATA[Base DN]]></pt-BR>
</AUTH_SOURCE_BASE_DN>
<AUTH_ANONYMOUS type="dropdown">
<en><![CDATA[Anonymous]]><option name="0"><![CDATA[No]]></option><option name="1"><![CDATA[Yes]]></option></en>
<pt-BR><![CDATA[anônimo]]><option name="0"><![CDATA[Não]]></option><option name="1"><![CDATA[Sim]]></option></pt-BR>
</AUTH_ANONYMOUS>
<AUTH_SOURCE_SEARCH_USER type="text" size="50" maxlength="128" required="0">
<en><![CDATA[Username]]></en>
<pt-BR><![CDATA[Usuário]]></pt-BR>
</AUTH_SOURCE_SEARCH_USER>
<AUTH_SOURCE_PASSWORD type="password" size="20" maxlength="32" required="0">
<en><![CDATA[Password]]></en>
<pt-BR><![CDATA[Senha]]></pt-BR>
</AUTH_SOURCE_PASSWORD>
<AUTH_SOURCE_IDENTIFIER_FOR_USER type="text" size="20" maxlength="20" required="1" defaultValue="uid">
<en><![CDATA[User Identifier]]></en>
<pt-BR><![CDATA[Identificador de usuário]]></pt-BR>
</AUTH_SOURCE_IDENTIFIER_FOR_USER>
<AUTH_SOURCE_USERS_FILTER type="text" size="50" maxlength="200" required="0" defaultValue="">
<en><![CDATA[Filter to search users (Default set to (&(!(objectClass=organizationalUnit))))]]></en>
<pt-BR><![CDATA[Filtro para os usuários de busca (Default set to (&(!(objectClass=organizationalUnit))))]]></pt-BR>
</AUTH_SOURCE_USERS_FILTER>
<AUTH_SOURCE_RETIRED_OU type="text" size="50" maxlength="128" required="0">
<en><![CDATA[OU for Retired Employees OU]]></en>
<pt-BR><![CDATA[OU ao Aposentado UO]]></pt-BR>
</AUTH_SOURCE_RETIRED_OU>
<AUTH_SOURCE_ATTRIBUTE_IDS type="hidden"/>
<AUTH_SOURCE_SHOWGRID_FLAG type="hidden"/>
<AUTH_SOURCE_GRID_TEXT type="hidden"/>
<AUTH_SOURCE_ATTRIBUTE_SUBTITLE type="subtitle" enablehtml="1" btn_cancel="Cancel" required="0" readonly="0" savelabel="0">
<en><![CDATA[<input type="checkbox" name="form[AUTH_SOURCE_SHOWGRID]" id="form[AUTH_SOURCE_SHOWGRID]"> Match attributes to sync]]></en>
<pt-BR><![CDATA[<input type="checkbox" name="form[AUTH_SOURCE_SHOWGRID]" id="form[AUTH_SOURCE_SHOWGRID]"> Combinar atributos para sincronizar]]></pt-BR>
</AUTH_SOURCE_ATTRIBUTE_SUBTITLE>
<AUTH_SOURCE_GRID_ATTRIBUTE type="grid" xmlgrid="ldapAdvanced/gridAttribute" addrow="1" deleterow="1" btn_cancel="Cancel"/>
<SUBTITLETESTCONNECTION type="subtitle">
<en><![CDATA[Minimum data required to run the "Test Connection": "Server Address, Port, Enabled TLS, Anonymous, Username, Password"]]></en>
<pt-BR><![CDATA[Dados mínimos necessários para executar o "Test Connection": "Server Address, Port, TLS Habilitado, Anonymous, Nome de usuário, Senha"]]></pt-BR>
</SUBTITLETESTCONNECTION>
<btnSave type="submit">
<en><![CDATA[Save]]></en>
<pt-BR><![CDATA[Salvar]]></pt-BR>
</btnSave>
<BTNTESTCONNECTION type="button" onclick="testConnection();">
<en><![CDATA[Test connection]]></en>
<pt-BR><![CDATA[Teste de conexão]]></pt-BR>
</BTNTESTCONNECTION>
<btnCancel type="button" onclick="history.go(-1);">
<en><![CDATA[Cancel]]></en>
<pt-BR><![CDATA[Cancel]]></pt-BR>
</btnCancel>
<JS type="javascript"><![CDATA[
var dynaformOnload = function() {
getField('AUTH_SOURCE_SHOWGRID').checked = (getField('AUTH_SOURCE_SHOWGRID_FLAG').value == 1) ? true : false;
var fieldGridTd = getField('AUTH_SOURCE_GRID_ATTRIBUTE').parentNode.parentNode.parentNode;
fieldGridTd.style.display = 'none';
leimnud.event.add(getField('AUTH_ANONYMOUS'), 'change', hideShowSearchUser);
leimnud.event.add(getField('LDAP_TYPE'), 'change', hideShowSuggest);
leimnud.event.add(getField('AUTH_SOURCE_SHOWGRID'), 'click', showGrid);
hideShowSearchUser();
hideShowSuggest();
showGrid();
var valuesDrop = getField('AUTH_SOURCE_ATTRIBUTE_IDS').value;
valuesDropArray = valuesDrop.split('|');
for (var i = 0 ; i < valuesDropArray.length ; i++) {
if (valuesDropArray[i] != '') {
var iRows = Number_Rows_Grid('AUTH_SOURCE_GRID_ATTRIBUTE','attributeLdap');
for (cont=1 ; cont<=iRows ; cont=cont+1) {
eval(" var newOption = document.createElement('option'); newOption.text = valuesDropArray[i]; newOption.value = valuesDropArray[i]; try { getField('AUTH_SOURCE_GRID_ATTRIBUTE][" + cont + "][attributeUser').add(newOption, null);} catch(ex) { getField('AUTH_SOURCE_GRID_ATTRIBUTE][" + cont + "][attributeUser').add(newOption);}");
}
}
}
var valuesGrid = getField('AUTH_SOURCE_GRID_TEXT').value;
valuesGridArray = valuesGrid.split('|');
var fil = 1;
for (var i = 0 ; i < valuesGridArray.length ; i++) {
if(valuesGridArray[i] != '')
{
var valuesFielddGrid = valuesGridArray[i].split("/");
getField('AUTH_SOURCE_GRID_ATTRIBUTE][' + fil + '][attributeUser').value = valuesFielddGrid['1'];
fil++;
}
}
function showGrid() {
if (getField('AUTH_SOURCE_SHOWGRID').checked == true) {
fieldGridTd.style.display = 'block';
fieldGridTd.removeAttribute("style",0);
} else {
fieldGridTd.style.display = 'none';
}
}
};
var hideShowSearchUser = function() {
if (getField('AUTH_ANONYMOUS').value == '1') {
hideRowById('AUTH_SOURCE_SEARCH_USER');
hideRowById('AUTH_SOURCE_PASSWORD');
}
else {
showRowById('AUTH_SOURCE_SEARCH_USER');
showRowById('AUTH_SOURCE_PASSWORD');
}
};
var hideShowSuggest = function ()
{
getField("AUTH_SOURCE_IDENTIFIER_FOR_USER").value = (getField("LDAP_TYPE").value == "ad")? "samaccountname" : "uid";
};
var testConnection = function ()
{
var strArgs = "functionAccion=ldapTestConnection&";
strArgs += "AUTH_SOURCE_SERVER_NAME=" + getField("AUTH_SOURCE_SERVER_NAME").value + "&";
strArgs += "AUTH_SOURCE_PORT=" + getField("AUTH_SOURCE_PORT").value + "&";
strArgs += "AUTH_SOURCE_ENABLED_TLS=" + getField("AUTH_SOURCE_ENABLED_TLS").value + "&";
strArgs += "AUTH_ANONYMOUS=" + getField("AUTH_ANONYMOUS").value + "&";
strArgs += "AUTH_SOURCE_SEARCH_USER=" + getField("AUTH_SOURCE_SEARCH_USER").value + "&";
strArgs += "AUTH_SOURCE_PASSWORD=" + getField("AUTH_SOURCE_PASSWORD").value + "&";
strArgs += "AUTH_SOURCE_VERSION=3";
var rpcAjax = new leimnud.module.rpc.xmlhttp({
url: "../ldapAdvanced/controllers/ldapAdvancedProxy.php",
method: "POST",
args: strArgs
});
rpcAjax.callback = function (rpc)
{
var dataResponse = rpc.xmlhttp.responseText.parseJSON();
if (dataResponse.status) {
var panel = new leimnud.module.panel();
panel.options = {
statusBarButtons: [{value: _("ID_ACCEPT")}],
position: {center: true},
size: {
w: 400,
h: 125
},
control: {
close: true,
resize: false
},
fx: {modal: true}
};
panel.setStyle = {
content:{
padding: 10,
paddingLeft: 50,
textAlign: "left",
background: "url(/images/" + ((dataResponse.status == "OK")? "dialog-ok-apply" : "error") + ".png)",
backgroundRepeat: "no-repeat",
backgroundPosition: "2% 10%",
backgroundColor: "transparent",
borderWidth: 0
}
};
panel.make();
panel.addContent((dataResponse.status == "OK")? "Successfully connected" : dataResponse.message);
panel.fixContent();
panel.elements.statusBarButtons[0].onmouseup = function ()
{
panel.remove();
return false;
}.extend(this);
}
}.extend(this);
rpcAjax.make();
};
]]></JS>
</dynaForm>

View File

@@ -0,0 +1 @@
Bandera para habilitar nueva interfaz extjs