Adding the features ui adhoc

This commit is contained in:
Gustavo Cruz
2015-02-13 16:19:01 -04:00
parent 3a5057265f
commit 550e7bcc06
71 changed files with 8908 additions and 267 deletions

1
.gitignore vendored
View File

@@ -19,6 +19,7 @@ workflow/engine/gulliver
workflow/public_html/index.html
.DS_Store
.idea
nbproject/
composer.phar
composer.lock
vendor/

View File

@@ -1,267 +1,267 @@
(function () {
var Pos = CodeMirror.Pos;
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, keywords, getToken, options) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
var sToken = token.string.trim();
if ( sToken == "(") {
token = tprop = getToken(editor, Pos(cur.line, tprop.start));
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end + 1)};
}
if ( sToken == "=") {
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start + 1),
to: Pos(cur.line, token.end)};
}
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end)};
}
CodeMirror.phpHint = function(editor, options) {
return scriptHint(editor, phpPMFunctions, function (e, cur) {return e.getTokenAt(cur);}, options);
};
var SPACE = " ";
var arrayFunctions = [];
var formatDate = "formatDate";
var formatDateFunction = [formatDate+"($date,$format,$language);",formatDate+"($date,$format);"];
arrayFunctions[formatDate] = formatDateFunction;
var getCurrentDate = "getCurrentDate";
var getCurrentDateFunction = [getCurrentDate+"()"];
arrayFunctions[getCurrentDate] = getCurrentDateFunction;
var getCurrentTime = "getCurrentTime";
var getCurrentTimeFunction = [getCurrentTime+"()"];
arrayFunctions[getCurrentTime] = getCurrentTimeFunction;
var literalDate = "literalDate";
var literalDateFunction = [literalDate+"($date,$Language)",literalDate+"($date)"];
arrayFunctions[literalDate] = literalDateFunction;
var capitalize = "capitalize";
var capitalizeFunction = [capitalize+"($textToConvert)"];
arrayFunctions[capitalize] = capitalizeFunction;
var lowerCase = "lowerCase";
var lowerCaseFunction = [lowerCase+"($textToConvert)"];
arrayFunctions[lowerCase] = lowerCaseFunction;
var upperCase = "upperCase";
var upperCaseFunction = [upperCase+"($textToConvert)"];
arrayFunctions[upperCase] = upperCaseFunction;
var userInfo = "userInfo";
var userInfoFunction = [userInfo+"($USER_ID)"];
arrayFunctions[userInfo] = userInfoFunction;
var executeQuery = "executeQuery";
var executeQueryFunction = [executeQuery+"($sqlStatement,$DBConnectionUID)",executeQuery+"($sqlStatement)"];
arrayFunctions[executeQuery] = executeQueryFunction;
var orderGrid = "orderGrid";
var orderGridFunction = ("orderGrid($gridName,$field,$criteria) orderGrid($gridName,$field)").split(SPACE);
arrayFunctions[orderGrid] = orderGridFunction;
var evaluateFunction = "evaluateFunction";
var evaluateFunctionFunction = [evaluateFunction+"($gridName,$Expression)"];
arrayFunctions[evaluateFunction] = evaluateFunctionFunction;
var PMFTaskCase = "PMFTaskCase";
var PMFTaskCaseFunction = [PMFTaskCase+"($caseId)"];
arrayFunctions[PMFTaskCase] = PMFTaskCaseFunction;
var PMFTaskList = "PMFTaskList";
var PMFTaskListFunction = [PMFTaskList+"($userId)"];
arrayFunctions[PMFTaskList] = PMFTaskListFunction;
var PMFUserList = "PMFUserList";
var PMFUserListFunction = [PMFUserList+"()"];
arrayFunctions[PMFUserList] = PMFUserListFunction;
var PMFGroupList = "PMFGroupList";
var PMFGroupListFunction = [PMFGroupList+"()"];
arrayFunctions[PMFGroupList] = PMFGroupListFunction;
var PMFRoleList = "PMFRoleList";
var PMFRoleListFunction = [PMFRoleList+"()"];
arrayFunctions[PMFRoleList] = PMFRoleListFunction;
var PMFCaseList = "PMFCaseList";
var PMFCaseListFunction = [PMFCaseList+"($userId)",PMFCaseList+"()"];
arrayFunctions[PMFCaseList] = PMFCaseListFunction;
var PMFProcessList = "PMFProcessList";
var PMFProcessListFunction = [PMFProcessList+"()"];
arrayFunctions[PMFProcessList] = PMFProcessListFunction;
var PMFSendVariables = "PMFSendVariables";
var PMFSendVariablesFunction = [PMFSendVariables+"($caseId,$variables)"];
arrayFunctions[PMFSendVariables] = PMFSendVariablesFunction;
var PMFDerivateCase = "PMFDerivateCase";
var PMFDerivateCaseFunction = [PMFDerivateCase+"($caseId,$delegation,$executeTriggersBeforeAssigment)",PMFDerivateCase+"($caseId,$delegation)"];
arrayFunctions[PMFDerivateCase] = PMFDerivateCaseFunction;
var PMFNewCaseImpersonate = "PMFNewCaseImpersonate";
var PMFNewCaseImpersonateFunction = [PMFNewCaseImpersonate+"($processId,$userId,$variables)"];
arrayFunctions[PMFNewCaseImpersonate] = PMFNewCaseImpersonateFunction;
var PMFNewCase = "PMFNewCase";
var PMFNewCaseFunction = [PMFNewCase+"($processId,$userId,$taskId,$variables)"];
arrayFunctions[PMFNewCase] = PMFNewCaseFunction;
var PMFPauseCase = "PMFPauseCase";
var PMFPauseCaseFunction = [PMFPauseCase+"($caseUid,$delIndex,$userUid,$unpauseDate)",PMFPauseCase+"($caseUid,$delIndex,$userUid)"];
arrayFunctions[PMFPauseCase] = PMFPauseCaseFunction;
var PMFAssignUserToGroup = "PMFAssignUserToGroup";
var PMFAssignUserToGroupFunction = [PMFAssignUserToGroup+"($userId,$groupId)"];
arrayFunctions[PMFAssignUserToGroup] = PMFAssignUserToGroupFunction;
var PMFCreateUser = "PMFCreateUser";
var PMFCreateUserFunction = [PMFCreateUser+"($userId,$password,$firstname,$lastname,$email,$role)"];
arrayFunctions[PMFCreateUser] = PMFCreateUserFunction;
var PMFUpdateUser = "PMFUpdateUser";
var PMFUpdateUserFunction = [PMFUpdateUser+"($userUid,$userName,$firstName,$lastName,$email,$dueDate,$status,$role,$password)"];
arrayFunctions[PMFUpdateUser] = PMFUpdateUserFunction;
var PMFInformationUser = "PMFInformationUser";
var PMFInformationUserFunction = [PMFInformationUser+"($userUid)"];
arrayFunctions[PMFInformationUser] = PMFInformationUserFunction;
var generateCode = "generateCode";
var generateCodeFunction = [generateCode+"($size,$type)"];
arrayFunctions[generateCode] = generateCodeFunction;
var setCaseTrackerCode = "setCaseTrackerCode";
var setCaseTrackerCodeFunction = [setCaseTrackerCode+"($caseId,$code,$pin)"];
arrayFunctions[setCaseTrackerCode] = setCaseTrackerCodeFunction;
var jumping = "jumping";
var jumpingFunction = [jumping+"($caseId,$delegation)"];
arrayFunctions[jumping] = jumpingFunction;
var PMFRedirectToStep = "PMFRedirectToStep";
var PMFRedirectToStepFunction = [PMFRedirectToStep+"($caseId,$delegation,$stepType,$stepId)"];
arrayFunctions[PMFRedirectToStep] = PMFRedirectToStepFunction;
var pauseCase = "pauseCase";
var pauseCaseFunction = [pauseCase+"($caseId,$delegation,$userId,$unpauseDate)",pauseCase+"($caseId,$delegation,$userId)"];
arrayFunctions[pauseCase] = pauseCaseFunction;
var PMFUnpauseCase = "PMFUnpauseCase";
var PMFUnpauseCaseFunction = [PMFUnpauseCase+"($caseId,$delegation,$userId,$unpauseDate)",PMFUnpauseCase+"($caseId,$delegation,$userId)"];
arrayFunctions[PMFUnpauseCase] = PMFUnpauseCaseFunction;
var PMFSendMessage = "PMFSendMessage";
var PMFSendMessageFunction = [PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template,$fields,$attachments)",PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template,$fields)",PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template)"];
arrayFunctions[PMFSendMessage] = PMFSendMessageFunction;
var PMFgetLabelOption = "PMFgetLabelOption";
var PMFgetLabelOptionFunction = [PMFgetLabelOption+"($processId,$dynaformId,$fieldName,$optionId)"];
arrayFunctions[PMFgetLabelOption] = PMFgetLabelOptionFunction;
var PMFGenerateOutputDocument = "PMFGenerateOutputDocument";
var PMFGenerateOutputDocumentFunction = [PMFGenerateOutputDocument+"($outputID)"];
arrayFunctions[PMFGenerateOutputDocument] = PMFGenerateOutputDocumentFunction;
var PMFGetUserEmailAddress = "PMFGetUserEmailAddress";
var PMFGetUserEmailAddressFunction = [PMFGetUserEmailAddress+"($id,$APP_UID,$prefix)",PMFGetUserEmailAddress+"($id,$APP_UID)",PMFGetUserEmailAddress+"($id)"];
arrayFunctions[PMFGetUserEmailAddress] = PMFGetUserEmailAddressFunction;
var PMFGetNextAssignedUser = "PMFGetNextAssignedUser";
var PMFGetNextAssignedUserFunction = (PMFGetNextAssignedUser+"($application,$task)").split(SPACE);
arrayFunctions[PMFGetNextAssignedUser] = PMFGetNextAssignedUserFunction;
var PMFDeleteCase = "PMFDeleteCase";
var PMFDeleteCaseFunction = ("PMFDeleteCase($caseId)").split(SPACE);
arrayFunctions[PMFDeleteCase] = PMFDeleteCaseFunction;
var PMFCancelCase = "PMFCancelCase";
var PMFCancelCaseFunction = [PMFCancelCase+"($caseUid,$delIndex,$userUid)"];
arrayFunctions[PMFCancelCase] = PMFCancelCaseFunction;
var PMFAddInputDocument = "PMFAddInputDocument";
var PMFAddInputDocumentFunction = [PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid,$option,$file)",PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid,$option)",PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid)"];
arrayFunctions[PMFAddInputDocument] = PMFAddInputDocumentFunction;
var PMFAddCaseNote = "PMFAddCaseNote";
var PMFAddCaseNoteFunction = [PMFAddCaseNote+"($caseUid,$processUid,$taskUid,$userUid,$note,$sendMail)"];
arrayFunctions[PMFAddCaseNote] = PMFAddCaseNoteFunction;
var PMFGetCaseNotes = "PMFGetCaseNotes";
var PMFGetCaseNotesFunction = [PMFGetCaseNotes+"($applicationID,$type,$userUid);",PMFGetCaseNotes+"($applicationID,$type)",PMFGetCaseNotes+"($applicationID)"];
arrayFunctions[PMFGetCaseNotes] = PMFGetCaseNotesFunction;
var phpPMFunctions = [formatDate,getCurrentDate,getCurrentTime,literalDate,capitalize,lowerCase,upperCase,userInfo,executeQuery,orderGrid,
evaluateFunction,PMFTaskCase,PMFTaskList,PMFUserList,PMFGroupList,PMFRoleList,PMFCaseList,PMFProcessList,PMFSendVariables,PMFDerivateCase,
PMFNewCaseImpersonate,PMFNewCase,PMFPauseCase,PMFUnpauseCase,PMFAssignUserToGroup,PMFCreateUser,PMFUpdateUser,PMFInformationUser,
generateCode,setCaseTrackerCode,jumping,PMFRedirectToStep,pauseCase,PMFSendMessage,PMFgetLabelOption,PMFGenerateOutputDocument,
PMFGetUserEmailAddress,PMFGetNextAssignedUser,PMFDeleteCase,PMFCancelCase,PMFAddInputDocument,PMFAddCaseNote,PMFGetCaseNotes];
var phpKeywords = ("break case catch continue default do else false for function " +
"if new return switch throw true try var while").split(SPACE);
function getCompletions(functionName, keywords, options) {
var found = [];
function maybeAdd(str) {// for keywords ?
if ( str.indexOf(functionName) == 0 && !arrayContains(found, str)) {
found.push(str);
}
}
function yesAdd(str) {
if ( !arrayContains(found, str)) {
found.push(str);
}
}
arrayFunction = arrayFunctions[functionName];
if (arrayFunction != undefined) {
forEach( arrayFunction, yesAdd);
} else {
if (functionName.trim() == "") {
forEach (phpKeywords, yesAdd);
forEach (keywords, yesAdd);
} else if (functionName == "=") {
forEach (phpPMFunctions, yesAdd);
} else {
for (index = 0; index < phpKeywords.length; index++) {
if ( phpKeywords[index].indexOf(functionName) == 0 ) {
found.push(phpKeywords[index]);
}
}
forEach(keywords, maybeAdd);
}
}
return found;
}
})();
(function () {
var Pos = CodeMirror.Pos;
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, keywords, getToken, options) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
var sToken = token.string.trim();
if ( sToken == "(") {
token = tprop = getToken(editor, Pos(cur.line, tprop.start));
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end + 1)};
}
if ( sToken == "=") {
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start + 1),
to: Pos(cur.line, token.end)};
}
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end)};
}
CodeMirror.phpHint = function(editor, options) {
return scriptHint(editor, phpPMFunctions, function (e, cur) {return e.getTokenAt(cur);}, options);
};
var SPACE = " ";
var arrayFunctions = [];
var formatDate = "formatDate";
var formatDateFunction = [formatDate+"($date,$format,$language);",formatDate+"($date,$format);"];
arrayFunctions[formatDate] = formatDateFunction;
var getCurrentDate = "getCurrentDate";
var getCurrentDateFunction = [getCurrentDate+"()"];
arrayFunctions[getCurrentDate] = getCurrentDateFunction;
var getCurrentTime = "getCurrentTime";
var getCurrentTimeFunction = [getCurrentTime+"()"];
arrayFunctions[getCurrentTime] = getCurrentTimeFunction;
var literalDate = "literalDate";
var literalDateFunction = [literalDate+"($date,$Language)",literalDate+"($date)"];
arrayFunctions[literalDate] = literalDateFunction;
var capitalize = "capitalize";
var capitalizeFunction = [capitalize+"($textToConvert)"];
arrayFunctions[capitalize] = capitalizeFunction;
var lowerCase = "lowerCase";
var lowerCaseFunction = [lowerCase+"($textToConvert)"];
arrayFunctions[lowerCase] = lowerCaseFunction;
var upperCase = "upperCase";
var upperCaseFunction = [upperCase+"($textToConvert)"];
arrayFunctions[upperCase] = upperCaseFunction;
var userInfo = "userInfo";
var userInfoFunction = [userInfo+"($USER_ID)"];
arrayFunctions[userInfo] = userInfoFunction;
var executeQuery = "executeQuery";
var executeQueryFunction = [executeQuery+"($sqlStatement,$DBConnectionUID)",executeQuery+"($sqlStatement)"];
arrayFunctions[executeQuery] = executeQueryFunction;
var orderGrid = "orderGrid";
var orderGridFunction = ("orderGrid($gridName,$field,$criteria) orderGrid($gridName,$field)").split(SPACE);
arrayFunctions[orderGrid] = orderGridFunction;
var evaluateFunction = "evaluateFunction";
var evaluateFunctionFunction = [evaluateFunction+"($gridName,$Expression)"];
arrayFunctions[evaluateFunction] = evaluateFunctionFunction;
var PMFTaskCase = "PMFTaskCase";
var PMFTaskCaseFunction = [PMFTaskCase+"($caseId)"];
arrayFunctions[PMFTaskCase] = PMFTaskCaseFunction;
var PMFTaskList = "PMFTaskList";
var PMFTaskListFunction = [PMFTaskList+"($userId)"];
arrayFunctions[PMFTaskList] = PMFTaskListFunction;
var PMFUserList = "PMFUserList";
var PMFUserListFunction = [PMFUserList+"()"];
arrayFunctions[PMFUserList] = PMFUserListFunction;
var PMFGroupList = "PMFGroupList";
var PMFGroupListFunction = [PMFGroupList+"()"];
arrayFunctions[PMFGroupList] = PMFGroupListFunction;
var PMFRoleList = "PMFRoleList";
var PMFRoleListFunction = [PMFRoleList+"()"];
arrayFunctions[PMFRoleList] = PMFRoleListFunction;
var PMFCaseList = "PMFCaseList";
var PMFCaseListFunction = [PMFCaseList+"($userId)",PMFCaseList+"()"];
arrayFunctions[PMFCaseList] = PMFCaseListFunction;
var PMFProcessList = "PMFProcessList";
var PMFProcessListFunction = [PMFProcessList+"()"];
arrayFunctions[PMFProcessList] = PMFProcessListFunction;
var PMFSendVariables = "PMFSendVariables";
var PMFSendVariablesFunction = [PMFSendVariables+"($caseId,$variables)"];
arrayFunctions[PMFSendVariables] = PMFSendVariablesFunction;
var PMFDerivateCase = "PMFDerivateCase";
var PMFDerivateCaseFunction = [PMFDerivateCase+"($caseId,$delegation,$executeTriggersBeforeAssigment)",PMFDerivateCase+"($caseId,$delegation)"];
arrayFunctions[PMFDerivateCase] = PMFDerivateCaseFunction;
var PMFNewCaseImpersonate = "PMFNewCaseImpersonate";
var PMFNewCaseImpersonateFunction = [PMFNewCaseImpersonate+"($processId,$userId,$variables)"];
arrayFunctions[PMFNewCaseImpersonate] = PMFNewCaseImpersonateFunction;
var PMFNewCase = "PMFNewCase";
var PMFNewCaseFunction = [PMFNewCase+"($processId,$userId,$taskId,$variables)"];
arrayFunctions[PMFNewCase] = PMFNewCaseFunction;
var PMFPauseCase = "PMFPauseCase";
var PMFPauseCaseFunction = [PMFPauseCase+"($caseUid,$delIndex,$userUid,$unpauseDate)",PMFPauseCase+"($caseUid,$delIndex,$userUid)"];
arrayFunctions[PMFPauseCase] = PMFPauseCaseFunction;
var PMFAssignUserToGroup = "PMFAssignUserToGroup";
var PMFAssignUserToGroupFunction = [PMFAssignUserToGroup+"($userId,$groupId)"];
arrayFunctions[PMFAssignUserToGroup] = PMFAssignUserToGroupFunction;
var PMFCreateUser = "PMFCreateUser";
var PMFCreateUserFunction = [PMFCreateUser+"($userId,$password,$firstname,$lastname,$email,$role)"];
arrayFunctions[PMFCreateUser] = PMFCreateUserFunction;
var PMFUpdateUser = "PMFUpdateUser";
var PMFUpdateUserFunction = [PMFUpdateUser+"($userUid,$userName,$firstName,$lastName,$email,$dueDate,$status,$role,$password)"];
arrayFunctions[PMFUpdateUser] = PMFUpdateUserFunction;
var PMFInformationUser = "PMFInformationUser";
var PMFInformationUserFunction = [PMFInformationUser+"($userUid)"];
arrayFunctions[PMFInformationUser] = PMFInformationUserFunction;
var generateCode = "generateCode";
var generateCodeFunction = [generateCode+"($size,$type)"];
arrayFunctions[generateCode] = generateCodeFunction;
var setCaseTrackerCode = "setCaseTrackerCode";
var setCaseTrackerCodeFunction = [setCaseTrackerCode+"($caseId,$code,$pin)"];
arrayFunctions[setCaseTrackerCode] = setCaseTrackerCodeFunction;
var jumping = "jumping";
var jumpingFunction = [jumping+"($caseId,$delegation)"];
arrayFunctions[jumping] = jumpingFunction;
var PMFRedirectToStep = "PMFRedirectToStep";
var PMFRedirectToStepFunction = [PMFRedirectToStep+"($caseId,$delegation,$stepType,$stepId)"];
arrayFunctions[PMFRedirectToStep] = PMFRedirectToStepFunction;
var pauseCase = "pauseCase";
var pauseCaseFunction = [pauseCase+"($caseId,$delegation,$userId,$unpauseDate)",pauseCase+"($caseId,$delegation,$userId)"];
arrayFunctions[pauseCase] = pauseCaseFunction;
var PMFUnpauseCase = "PMFUnpauseCase";
var PMFUnpauseCaseFunction = [PMFUnpauseCase+"($caseId,$delegation,$userId,$unpauseDate)",PMFUnpauseCase+"($caseId,$delegation,$userId)"];
arrayFunctions[PMFUnpauseCase] = PMFUnpauseCaseFunction;
var PMFSendMessage = "PMFSendMessage";
var PMFSendMessageFunction = [PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template,$fields,$attachments)",PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template,$fields)",PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template)"];
arrayFunctions[PMFSendMessage] = PMFSendMessageFunction;
var PMFgetLabelOption = "PMFgetLabelOption";
var PMFgetLabelOptionFunction = [PMFgetLabelOption+"($processId,$dynaformId,$fieldName,$optionId)"];
arrayFunctions[PMFgetLabelOption] = PMFgetLabelOptionFunction;
var PMFGenerateOutputDocument = "PMFGenerateOutputDocument";
var PMFGenerateOutputDocumentFunction = [PMFGenerateOutputDocument+"($outputID)"];
arrayFunctions[PMFGenerateOutputDocument] = PMFGenerateOutputDocumentFunction;
var PMFGetUserEmailAddress = "PMFGetUserEmailAddress";
var PMFGetUserEmailAddressFunction = [PMFGetUserEmailAddress+"($id,$APP_UID,$prefix)",PMFGetUserEmailAddress+"($id,$APP_UID)",PMFGetUserEmailAddress+"($id)"];
arrayFunctions[PMFGetUserEmailAddress] = PMFGetUserEmailAddressFunction;
var PMFGetNextAssignedUser = "PMFGetNextAssignedUser";
var PMFGetNextAssignedUserFunction = (PMFGetNextAssignedUser+"($application,$task)").split(SPACE);
arrayFunctions[PMFGetNextAssignedUser] = PMFGetNextAssignedUserFunction;
var PMFDeleteCase = "PMFDeleteCase";
var PMFDeleteCaseFunction = ("PMFDeleteCase($caseId)").split(SPACE);
arrayFunctions[PMFDeleteCase] = PMFDeleteCaseFunction;
var PMFCancelCase = "PMFCancelCase";
var PMFCancelCaseFunction = [PMFCancelCase+"($caseUid,$delIndex,$userUid)"];
arrayFunctions[PMFCancelCase] = PMFCancelCaseFunction;
var PMFAddInputDocument = "PMFAddInputDocument";
var PMFAddInputDocumentFunction = [PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid,$option,$file)",PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid,$option)",PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid)"];
arrayFunctions[PMFAddInputDocument] = PMFAddInputDocumentFunction;
var PMFAddCaseNote = "PMFAddCaseNote";
var PMFAddCaseNoteFunction = [PMFAddCaseNote+"($caseUid,$processUid,$taskUid,$userUid,$note,$sendMail)"];
arrayFunctions[PMFAddCaseNote] = PMFAddCaseNoteFunction;
var PMFGetCaseNotes = "PMFGetCaseNotes";
var PMFGetCaseNotesFunction = [PMFGetCaseNotes+"($applicationID,$type,$userUid);",PMFGetCaseNotes+"($applicationID,$type)",PMFGetCaseNotes+"($applicationID)"];
arrayFunctions[PMFGetCaseNotes] = PMFGetCaseNotesFunction;
var phpPMFunctions = [formatDate,getCurrentDate,getCurrentTime,literalDate,capitalize,lowerCase,upperCase,userInfo,executeQuery,orderGrid,
evaluateFunction,PMFTaskCase,PMFTaskList,PMFUserList,PMFGroupList,PMFRoleList,PMFCaseList,PMFProcessList,PMFSendVariables,PMFDerivateCase,
PMFNewCaseImpersonate,PMFNewCase,PMFPauseCase,PMFUnpauseCase,PMFAssignUserToGroup,PMFCreateUser,PMFUpdateUser,PMFInformationUser,
generateCode,setCaseTrackerCode,jumping,PMFRedirectToStep,pauseCase,PMFSendMessage,PMFgetLabelOption,PMFGenerateOutputDocument,
PMFGetUserEmailAddress,PMFGetNextAssignedUser,PMFDeleteCase,PMFCancelCase,PMFAddInputDocument,PMFAddCaseNote,PMFGetCaseNotes];
var phpKeywords = ("break case catch continue default do else false for function " +
"if new return switch throw true try var while").split(SPACE);
function getCompletions(functionName, keywords, options) {
var found = [];
function maybeAdd(str) {// for keywords ?
if ( str.indexOf(functionName) == 0 && !arrayContains(found, str)) {
found.push(str);
}
}
function yesAdd(str) {
if ( !arrayContains(found, str)) {
found.push(str);
}
}
arrayFunction = arrayFunctions[functionName];
if (arrayFunction != undefined) {
forEach( arrayFunction, yesAdd);
} else {
if (functionName.trim() == "") {
forEach (phpKeywords, yesAdd);
forEach (keywords, yesAdd);
} else if (functionName == "=") {
forEach (phpPMFunctions, yesAdd);
} else {
for (index = 0; index < phpKeywords.length; index++) {
if ( phpKeywords[index].indexOf(functionName) == 0 ) {
found.push(phpKeywords[index]);
}
}
forEach(keywords, maybeAdd);
}
}
return found;
}
})();

View File

@@ -0,0 +1,10 @@
<?php
/**
* Description of ConfigurationManager
*
*/
class ConfigurationHandler
{
//put your code here
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Features\ActionsByEnmail;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author gustav
*/
interface EnterpriseFeature
{
public function setup();
public function install();
public function enable();
public function disable();
}

View File

@@ -0,0 +1,20 @@
<?php
/**
* Description of ExtensionManager
*
*/
class ExtensionManager
{
public function registerView($view, ExtensionContainer $container)
{
$view = $this->prepareView($view);
$container->register($view);
}
public function prepareView($view)
{
return $view;
}
}

View File

@@ -0,0 +1,10 @@
<?php
/**
* Description of FeatureManager
*
*/
class FeatureHandler
{
//put your code here
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Features\ViewContainers;
/**
* Description of TaskContainer
*
*/
class TaskContainer extends ViewContainer
{
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Features\ViewContainers;
/**
* Description of TriggerContainer
*
*/
class TriggerContainer extends ViewContainer
{
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Features\ViewContainers;
/**
* Description of Container
*
*/
class ViewContainer
{
protected $viewList = array();
public function register($view)
{
$this->viewList[] = $view;
}
public function getView($id)
{
return $this->viewList[$id];
}
public function getAllViews()
{
return $this->viewList;
}
}

View File

@@ -0,0 +1,6 @@
<?php
$oHeadPublisher->addExtJsScript('actionsByEmail/report', false); //adding a javascript file .js
//$oHeadPublisher->addContent('cases/casesListExtJs'); //adding a html file .html.
G::RenderPage('publish', 'extJs');

View File

@@ -0,0 +1,30 @@
<?php
/**
* Description of ActionsByEmailFeature
*
*/
namespace Features\ActionsByEnmail;
class ActionsByEmailFeature implements EnterpriseFeature
{
public function setup()
{
}
public function install()
{
}
public function enable()
{
}
public function disable()
{
}
}

View File

@@ -0,0 +1,117 @@
<?php
/**
* The Actions By Email plugin allows to perform actions on cases from an email sent to an user,
* in this first version it allows to fill out a form or select a value from one field to derivate
* the case later.
*
* @author Julio Cesar Laura <juliocesar at colosa dot com> <contact at julio-laura dot com>
* @author Marco Antonio Nina <marcoantonionina at colosa dot com>
* @package plugins.actionsByEmail
* @copyright Copyright (C) 2004 - 2012 Colosa Inc.
*/
// Verify that the plugin "enterprisePlugin" is installed
if (!class_exists('enterprisePlugin')) {
return;
}
// Load dependences
G::LoadClass('plugin');
class actionsByEmailPlugin extends enterprisePlugin
{
public function __construct($namespace, $filename = null)
{
$result = parent::PMPlugin($namespace, $filename);
$config = parse_ini_file(PATH_PLUGINS . 'actionsByEmail' . PATH_SEP . 'pluginConfig.ini');
$this->sFriendlyName = $config['name'];
$this->sDescription = $config['description'];
$this->sPluginFolder = $config['pluginFolder'];
$this->sSetupPage = $config['setupPage'];
$this->iVersion = self::getPluginVersion($namespace);
$this->aWorkspaces = null;
$this->aDependences = array(array('sClassName' => 'enterprise'), array('sClassName' => 'pmLicenseManager'));
$this->bPrivate = parent::registerEE($this->sPluginFolder, $this->iVersion);
return $result;
}
public function setup()
{
try {
// Register the extended tab for the task properties
$this->registerTaskExtendedProperty('actionsByEmail/configActionsByEmail', "Actions by Email");
//$this->registerTaskExtendedProperty('actionsByEmail/configActionsByEmail', 'Actions by Email');
$this->registerMenu('setup', 'menusetup.php');
// Register the trigger for the hook PM_CREATE_NEW_DELEGATION
if (!defined('PM_CREATE_NEW_DELEGATION')) {
throw new Exception('It might be using a version of ProcessMaker which is not totally compatible with this plugin, the minimun required version is 2.0.37');
}
$this->registerTrigger(PM_CREATE_NEW_DELEGATION, 'sendActionsByEmail');
// Register the external step for the tracking form
//$this->registerStep('4939290144f0745f5ddb1d1019823738', 'externalStep', 'Actions by Email - Tracking Form'); // ToDo: For the next release
} catch (Exception $error) {
//G::SendMessageText($error->getMessage(), 'WARNING');
}
}
public function install()
{
$this->checkTables();
}
public function enable()
{
$this->checkTables();
}
public function disable()
{
// Nothing to do for now
}
/**
* This method get the version of this plugin, when the plugin is packaged in the tar.gz
* the file "version" in the plugin folder has this information for development purposes,
* we calculate the version using git commands, because the repository is in GIT
*
* @param String $namespace The namespace of the plugin
* @return String $version
*/
private static function getPluginVersion($namespace)
{
return "2.0.20";
}
public function checkTables()
{
$con = Propel::getConnection('workflow');
$stmt = $con->createStatement();
// setting the path of the sql schema files
$filenameSql = PATH_PLUGINS . 'actionsByEmail/data/schema.sql';
// checking the existence of the schema file
if (!file_exists($filenameSql)) {
throw new Exception("File data/schema.sql doesn't exists");
}
// exploding the sql query in an array
$sql = explode(';', file_get_contents($filenameSql));
$stmt->executeQuery('SET FOREIGN_KEY_CHECKS = 0;');
// executing each query stored in the array
foreach ($sql as $sentence) {
if (trim($sentence) != '') {
$stmt->executeQuery($sentence);
}
}
}
}
$oPluginRegistry = &PMPluginRegistry::getSingleton();
$oPluginRegistry->registerPlugin('actionsByEmail', __FILE__);

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<dynaForm name="actionByEmail Setup Form" type="xmlform" width="550">
<TITLE type="title" group="1">
<en>Action By Email Plugin</en>
<pt-BR><![CDATA[Ação por Email Plugin]]></pt-BR>
</TITLE>
<HelpText type="subtitle" maxlength="100" size="60">
<en>There is no further configuration needed.</en>
<pt-BR><![CDATA[Não há nenhuma configuração adicional necessária.]]></pt-BR>
</HelpText>
</dynaForm>

View File

@@ -0,0 +1,514 @@
<?php
set_include_path(PATH_PLUGINS . 'actionsByEmail' . PATH_SEPARATOR . get_include_path());
require_once 'classes/model/AbeConfiguration.php';
require_once 'classes/model/AbeRequests.php';
require_once 'classes/model/AbeResponses.php';
require_once 'classes/model/AppDelegation.php';
require_once 'classes/model/Application.php';
require_once 'classes/model/Users.php';
function addTitlle($Category, $Id, $Lang)
{
require_once 'classes/model/Content.php';
$content = new Content();
$value = $content->load($Category,'', $Id, $Lang);
return $value;
}
// General Validations
if (!isset($_REQUEST['action'])) {
$_REQUEST['action'] = '';
}
if (!isset($_REQUEST['limit'])) {
$_REQUEST['limit'] = '';
}
if (!isset($_REQUEST['start'])) {
$_REQUEST['start'] = '';
}
// Initialize response object
$response = new stdclass();
$response->status = 'OK';
// Main switch
try {
switch ($_REQUEST['action']) {
case 'editTemplate':
// Action Validations
if (!isset($_REQUEST['TEMPLATE'])) {
$_REQUEST['TEMPLATE'] = '';
}
if ($_REQUEST['TEMPLATE'] == '') {
throw new Exception('The TEMPLATE parameter is empty.');
}
$data = array(
'CONTENT' => file_get_contents(PATH_DATA_MAILTEMPLATES . $_REQUEST['PRO_UID'] . PATH_SEP . $_REQUEST['TEMPLATE']),
'TEMPLATE' => $_REQUEST['TEMPLATE'],
);
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'actionsByEmail/actionsByEmail_FileEdit', '', $data);
G::RenderPage('publish', 'raw');
die();
break;
case 'updateTemplate':
// Action Validations
if (!isset($_REQUEST['TEMPLATE'])) {
$_REQUEST['TEMPLATE'] = '';
}
if (!isset($_REQUEST['CONTENT'])) {
$_REQUEST['CONTENT'] = '';
}
if ($_REQUEST['TEMPLATE'] == '') {
throw new Exception('The TEMPLATE parameter is empty.');
}
$templateFile = fopen(PATH_DATA_MAILTEMPLATES . $_REQUEST['PRO_UID'] . PATH_SEP . $_REQUEST['TEMPLATE'], 'w');
$content = stripslashes($_REQUEST['CONTENT']);
$content = str_replace('@amp@', '&', $content);
$content = base64_decode($content);
fwrite($templateFile, $content);
fclose($templateFile);
break;
// comment
case 'loadFields':
if (!isset($_REQUEST['DYN_UID'])) {
$_REQUEST['DYN_UID'] = '';
}
if (!isset($_REQUEST['PRO_UID'])) {
$_REQUEST['PRO_UID'] = '';
}
$response->emailFields = array();
$response->actionFields = array();
if ($_REQUEST['PRO_UID'] != '' && $_REQUEST['DYN_UID']) {
$dynaform = new Form($_REQUEST['PRO_UID'] . PATH_SEP . $_REQUEST['DYN_UID'], PATH_DYNAFORM, SYS_LANG, false);
foreach ($dynaform->fields as $fieldName => $data) {
switch($data->type) {
case 'text':
case 'suggest':
case 'hidden':
case 'textarea':
$response->emailFields[] = array('value' => $data->name, 'label' => $data->label . ' (@@' . $data->name . ')');
break;
case 'dropdown':
case 'radiogroup':
case 'yesno':
case 'checkbox':
$response->actionFields[] = array('value' => $data->name, 'label' => $data->label . ' (@@' . $data->name . ')');
break;
}
}
}
break;
case 'saveConfiguration':
// Action Validations
if (!isset($_REQUEST['ABE_UID'])) {
$_REQUEST['ABE_UID'] = '';
}
if (!isset($_REQUEST['PRO_UID'])) {
$_REQUEST['PRO_UID'] = '';
}
if (!isset($_REQUEST['TAS_UID'])) {
$_REQUEST['TAS_UID'] = '';
}
if (!isset($_REQUEST['ABE_TYPE'])) {
$_REQUEST['ABE_TYPE'] = '';
}
if (!isset($_REQUEST['ABE_TEMPLATE'])) {
$_REQUEST['ABE_TEMPLATE'] = '';
}
if (!isset($_REQUEST['DYN_UID'])) {
$_REQUEST['DYN_UID'] = '';
}
if (!isset($_REQUEST['ABE_EMAIL_FIELD'])) {
$_REQUEST['ABE_EMAIL_FIELD'] = '';
}
if (!isset($_REQUEST['ABE_ACTION_FIELD'])) {
$_REQUEST['ABE_ACTION_FIELD'] = '';
}
if (!isset($_REQUEST['ABE_CASE_NOTE_IN_RESPONSE'])) {
$_REQUEST['ABE_CASE_NOTE_IN_RESPONSE'] = 0;
}
if ($_REQUEST['PRO_UID'] == '') {
throw new Exception('The PRO_UID parameter is empty.');
}
if ($_REQUEST['TAS_UID'] == '') {
throw new Exception('The TAS_UID parameter is empty.');
}
require_once 'classes/model/AbeConfiguration.php';
$abeConfigurationInstance = new AbeConfiguration();
if ($_REQUEST['ABE_TYPE'] != '') {
if ($_REQUEST['DYN_UID'] == '') {
throw new Exception('The DYN_UID parameter is empty.');
}
try {
$response->ABE_UID = $abeConfigurationInstance->createOrUpdate($_REQUEST);
} catch (Exception $error) {
throw $error;
}
} else {
try {
$abeConfigurationInstance->deleteByTasUid($_REQUEST['TAS_UID']);
$response->ABE_UID = '';
} catch (Exception $error) {
throw $error;
}
}
break;
case 'loadActionByEmail':
$criteria = new Criteria();
$criteria->addSelectColumn( 'COUNT(*)');
$criteria->addJoin(AbeConfigurationPeer::ABE_UID,AbeRequestsPeer::ABE_UID);
$criteria->addJoin(AppDelegationPeer::APP_UID,AbeRequestsPeer::APP_UID);
$criteria->addJoin(AppDelegationPeer::DEL_INDEX,AbeRequestsPeer::DEL_INDEX);
$result = AbeConfigurationPeer::doSelectRS($criteria);
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result->next();
$totalCount = $result->getRow();
$totalCount = $totalCount['COUNT(*)'];
$criteria = new Criteria();
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::PRO_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::TAS_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_UPDATE_DATE);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_TEMPLATE);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD);
$criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_UID);
$criteria->addSelectColumn(AbeRequestsPeer::APP_UID);
$criteria->addSelectColumn(AbeRequestsPeer::DEL_INDEX);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SENT_TO);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_STATUS);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SUBJECT);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_ANSWERED);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_BODY);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_DATE);
$criteria->addSelectColumn(ApplicationPeer::APP_NUMBER);
$criteria->addSelectColumn(AppDelegationPeer::DEL_PREVIOUS);
$criteria->addJoin(AbeConfigurationPeer::ABE_UID,AbeRequestsPeer::ABE_UID);
$criteria->addJoin(ApplicationPeer::APP_UID,AbeRequestsPeer::APP_UID);
$criteria->addJoin(AppDelegationPeer::APP_UID,AbeRequestsPeer::APP_UID);
$criteria->addJoin(AppDelegationPeer::DEL_INDEX,AbeRequestsPeer::DEL_INDEX);
$criteria->addDescendingOrderByColumn(AbeRequestsPeer::ABE_REQ_DATE);
$criteria->setLimit( $_REQUEST['limit'] );
$criteria->setOffset( $_REQUEST['start'] );
$result = AbeConfigurationPeer::doSelectRS($criteria);
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$data = Array();
$arrayPro = Array();
$arrayTAS = Array();
$index = 0;
while ($result->next()) {
$data[] = $result->getRow();
$criteriaRes = new Criteria();
$criteriaRes->addSelectColumn(AbeResponsesPeer::ABE_RES_UID);
$criteriaRes->addSelectColumn(AbeResponsesPeer::ABE_RES_CLIENT_IP);
$criteriaRes->addSelectColumn(AbeResponsesPeer::ABE_RES_DATA);
$criteriaRes->addSelectColumn(AbeResponsesPeer::ABE_RES_STATUS);
$criteriaRes->addSelectColumn(AbeResponsesPeer::ABE_RES_MESSAGE);
$criteriaRes->add(AbeResponsesPeer::ABE_REQ_UID, $data[$index]['ABE_REQ_UID']);
$resultRes = AbeResponsesPeer::doSelectRS($criteriaRes);
$resultRes->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$resultRes->next();
$dataRes = Array();
if ($dataRes = $resultRes->getRow()) {
$data[$index]['ABE_RES_UID'] = $dataRes['ABE_RES_UID'];
$data[$index]['ABE_RES_CLIENT_IP'] = $dataRes['ABE_RES_CLIENT_IP'];
$data[$index]['ABE_RES_DATA'] = $dataRes['ABE_RES_DATA'];
$data[$index]['ABE_RES_STATUS'] = $dataRes['ABE_RES_STATUS'];
$data[$index]['ABE_RES_MESSAGE'] = $dataRes['ABE_RES_MESSAGE'];
} else {
$data[$index]['ABE_RES_UID'] = '';
$data[$index]['ABE_RES_CLIENT_IP'] = '';
$data[$index]['ABE_RES_DATA'] = '';
$data[$index]['ABE_RES_STATUS'] = '';
$data[$index]['ABE_RES_MESSAGE'] = '';
}
$criteriaRes = new Criteria();
$criteriaRes->addSelectColumn(AppDelegationPeer::USR_UID);
$criteriaRes->addSelectColumn(UsersPeer::USR_FIRSTNAME);
$criteriaRes->addSelectColumn(UsersPeer::USR_LASTNAME);
$criteria->addJoin(AppDelegationPeer::APP_UID,$data[$index]['APP_UID']);
$criteria->addJoin(AppDelegationPeer::DEL_INDEX,$data[$index]['DEL_PREVIOUS']);
$criteria->addJoin(AppDelegationPeer::USR_UID,UsersPeer::USR_UID);
$resultRes = AppDelegationPeer::doSelectRS($criteriaRes);
$resultRes->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$resultRes->next();
if ($dataRes = $resultRes->getRow()) {
$data[$index]['USER'] = $dataRes['USR_FIRSTNAME']. ' '.$dataRes['USR_LASTNAME'];
} else {
$data[$index]['USER'] = '';
}
$data[$index]['ABE_REQ_ANSWERED'] = ($data[$index]['ABE_REQ_ANSWERED'] == 1)? 'YES' : 'NO';
/*
$swPRO = false;
foreach($arrayPro as $k => $field){
if($arrayPro[$k]['PRO_UID'] == $data[$index]['PRO_UID'] && $arrayPro[$k]['LANG'] == SYS_LANG){
$data[$index]['PRO_TITLE'] = $arrayPro[$k]['PRO_TITLE'];
$swPRO = true;
}
}
if(!$swPRO){
$data[$index]['PRO_TITLE'] = addTitlle('PRO_TITLE', $data[$index]['PRO_UID'], SYS_LANG);
$arrayPRO[] = Array('PRO_UID'=>$data[$index]['PRO_UID'] , 'PRO_TITLE'=>$data[$index]['PRO_TITLE'],'LANG' => SYS_LANG);
}
$swTAS = false;
foreach($arrayTAS as $k => $field){
if($arrayTAS[$k]['TAS_UID'] == $data[$index]['TAS_UID'] && $arrayTAS[$k]['LANG'] == SYS_LANG){
$data[$index]['TAS_TITLE'] = $arrayTAS[$k]['TAS_TITLE'];
$swTAS = true;
}
}
if(!$swTAS){
$data[$index]['TAS_TITLE'] = addTitlle('TAS_TITLE', $data[$index]['TAS_UID'], SYS_LANG);
$arrayTAS[] = Array('TAS_UID'=>$data[$index]['TAS_UID'] , 'TAS_TITLE'=>$data[$index]['TAS_TITLE'],'LANG' => SYS_LANG);
}*/
$index++;
}
$response = array();
$response['totalCount'] = $totalCount;
$response['data'] = $data;
break;
case 'forwardMail':
if (!isset($_REQUEST['REQ_UID'])) {
$_REQUEST['REQ_UID'] = '';
}
$criteria = new Criteria();
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::PRO_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::TAS_UID);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_UID);
$criteria->addSelectColumn(AbeRequestsPeer::APP_UID);
$criteria->addSelectColumn(AbeRequestsPeer::DEL_INDEX);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SENT_TO);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SUBJECT);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_BODY);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_ANSWERED);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_STATUS);
$criteria->addSelectColumn(AppDelegationPeer::DEL_FINISH_DATE);
$criteria->add(AbeRequestsPeer::ABE_REQ_UID,$_REQUEST['REQ_UID']);
$criteria->addJoin(AbeRequestsPeer::ABE_UID,AbeConfigurationPeer::ABE_UID);
$criteria->addJoin(AppDelegationPeer::APP_UID,AbeRequestsPeer::APP_UID);
$criteria->addJoin(AppDelegationPeer::DEL_INDEX,AbeRequestsPeer::DEL_INDEX);
$resultRes = AbeRequestsPeer::doSelectRS($criteria);
$resultRes->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$resultRes->next();
$dataRes = Array();
if ($dataRes = $resultRes->getRow()) {
if (is_null($dataRes['DEL_FINISH_DATE'])) {
require_once 'classes/model/Configuration.php';
G::LoadClass('spool');
$configuration = new Configuration();
$sDelimiter = DBAdapter::getStringDelimiter();
$criteria = new Criteria('workflow');
$criteria->add(ConfigurationPeer::CFG_UID, 'Emails');
$criteria->add(ConfigurationPeer::OBJ_UID, '');
$criteria->add(ConfigurationPeer::PRO_UID, '');
$criteria->add(ConfigurationPeer::USR_UID, '');
$criteria->add(ConfigurationPeer::APP_UID, '');
if (ConfigurationPeer::doCount($criteria) == 0) {
$configuration->create(array('CFG_UID'=>'Emails', 'OBJ_UID'=>'', 'CFG_VALUE'=>'', 'PRO_UID'=>'', 'USR_UID'=>'', 'APP_UID'=>''));
$newConfiguration = array();
} else {
$newConfiguration = $configuration->load('Emails', '', '', '', '');
if ($newConfiguration['CFG_VALUE'] != '') {
$newConfiguration = unserialize($newConfiguration['CFG_VALUE']);
} else {
$newConfiguration = array();
}
}
$spool = new spoolRun();
$spool->setConfig(array(
'MESS_ENGINE' => $newConfiguration['MESS_ENGINE'],
'MESS_SERVER' => $newConfiguration['MESS_SERVER'],
'MESS_PORT' => $newConfiguration['MESS_PORT'],
'MESS_ACCOUNT' => $newConfiguration['MESS_ACCOUNT'],
'MESS_PASSWORD' => $newConfiguration['MESS_PASSWORD'],
'SMTPAuth' => $newConfiguration['MESS_RAUTH']
));
$spool->create(array(
'msg_uid' => '',
'app_uid' => $dataRes['APP_UID'],
'del_index' => $dataRes['DEL_INDEX'],
'app_msg_type' => 'TEST',
'app_msg_subject' => $dataRes['ABE_REQ_SUBJECT'],
'app_msg_from' => $newConfiguration['MESS_ACCOUNT'],
'app_msg_to' => $dataRes['ABE_REQ_SENT_TO'],
'app_msg_body' => $dataRes['ABE_REQ_BODY'],
'app_msg_cc' => '',
'app_msg_bcc' => '',
'app_msg_attach' => '',
'app_msg_template'=> '',
'app_msg_status' => 'pending'
));
if ($spool->sendMail()) {
$dataRes['ABE_REQ_STATUS'] = 'SENT';
$message = 'The email was resend to: '. $dataRes['ABE_REQ_SENT_TO'];
} else {
$dataRes['ABE_REQ_STATUS'] = 'ERROR';
$message = 'There was a problem sending the email to: '. $dataRes['ABE_REQ_SENT_TO'] .', please try later.';
}
try {
$abeRequestsInstance = new AbeRequests();
$abeRequestsInstance->createOrUpdate($dataRes);
} catch (Exception $error) {
throw $error;
}
} else {
$message = 'Unable to send email, the task is closed.';
}
} else {
$message = 'An unexpected error occurred please try again later.';
}
print_r($message);
die;
break;
case 'viewForm':
//coment
if (!isset($_REQUEST['REQ_UID'])) {
$_REQUEST['REQ_UID'] = '';
}
$criteria = new Criteria();
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::PRO_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::TAS_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_UID);
$criteria->addSelectColumn(AbeRequestsPeer::APP_UID);
$criteria->addSelectColumn(AbeRequestsPeer::DEL_INDEX);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_UID);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_DATA);
$criteria->add(AbeRequestsPeer::ABE_REQ_UID,$_REQUEST['REQ_UID']);
$criteria->addJoin(AbeRequestsPeer::ABE_UID,AbeConfigurationPeer::ABE_UID);
$criteria->addJoin(AbeResponsesPeer::ABE_REQ_UID,AbeRequestsPeer::ABE_REQ_UID);
$resultRes = AbeRequestsPeer::doSelectRS($criteria);
$resultRes->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$resultRes->next();
$dataRes = Array();
$message = 'The user has not responded to this request.';
if ($dataRes = $resultRes->getRow()) {
$_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']);
$dynaform = new Form($dataRes['PRO_UID'] . PATH_SEP . trim($dataRes['DYN_UID']), PATH_DYNAFORM, SYS_LANG, false);
$dynaform->mode = 'view';
if ($dataRes['ABE_RES_DATA'] != '') {
$value = unserialize( $dataRes['ABE_RES_DATA'] );
if (is_array($value)) {
$dynaform->values = $value;
foreach ($dynaform->fields as $fieldName => $field) {
if ($field->type == 'submit') {
unset($dynaform->fields[$fieldName]);
}
}
$message = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode);
} else {
$response = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode);
$field = $dynaform->fields[$dataRes['ABE_ACTION_FIELD']];
$message = '<b>Type: </b>'.$field->type . '<br>';
switch ($field->type) {
case 'dropdown':
case 'radiogroup':
$message .=$field->label .' - ';
$message .= $field->options[$value];
break;
case 'yesno':
$message .= '<b>'.$field->label. ' </b>- ';
$message .= ($value == 1)? 'Yes' : 'No';
break;
case 'checkbox':
$message .= '<b>'. $field->label. '</b> - ';
$message .= ($value == 'On')? 'Check' : 'Uncheck';
break;
}
}
}
}
print_r($message);
die;
break;
}
} catch (Exception $error) {
$response = new stdclass();
$response->status = 'ERROR';
$response->message = $error->getMessage();
}
header('Content-Type: application/json;');
die(G::json_encode($response));

View File

@@ -0,0 +1,33 @@
<form id="{$form_id}" name="{$form_name}" action="{$form_action}" class="{$form_className}" method="post" encType="multipart/form-data" style="margin:0px;" onsubmit='return validateForm("{$form_objectRequiredFields}".parseJSON());'> <div class="borderForm" style="width:{$form_width}; padding-left:0; padding-right:0; border-width:{$form_border};">
<div class="boxTop"><div class="a"></div><div class="b"></div><div class="c"></div></div>
<div class="content" style="height:{$form_height};" >
<table width="99%">
<tr>
<td valign='top'>
<input type="hidden" name="__notValidateThisFields__" id="__notValidateThisFields__" value="" />
<input type="hidden" name="DynaformRequiredFields" id="DynaformRequiredFields" value='{$form_objectRequiredFields}' />
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr style="display: none">
<td colspan="2">{$form.TEMPLATE}</td>
</tr>
<tr>
<td class='FormTitle' colspan="2" align="">{$form.THETITLE}</td>
</tr>
<tr>
<td class='FormFieldContent' colspan="2">{$form.CONTENT}</td>
</tr>
<tr>
<td class='FormButton' colspan="2" align="center">{$form.ACCEPT} &nbsp; {$form.CANCEL}</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="boxBottom"><div class="a"></div><div class="b"></div><div class="c"></div></div>
</div>
</form>
<script type="text/javascript">
{$form.JS}
try {literal}{{/literal} dynaformSetFocus();}catch(e){literal}{{/literal}}
</script>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<dynaForm name="actionsByEmail_FileEdit" type="xmlform" width="100%" enableTemplate="1">
<TEMPLATE type="hidden" defaultValue=""/>
<THETITLE type="title" enableHTML="1">
<en><![CDATA[<div align="center">Edit @#TEMPLATE email template</div>]]></en>
<pt-BR><![CDATA[<div align="center">Editar @#TEMPLATE de e-mail template</div>]]></pt-BR>
</THETITLE>
<CONTENT type="html" height="420" width="100%" defaultValue="">
<en/>
<pt-BR/>
</CONTENT>
<ACCEPT type="button" onclick="saveFile();">
<en>Save</en>
<pt-BR><![CDATA[Salvar]]></pt-BR>
</ACCEPT>
<CANCEL type="button" onclick="cancel();">
<en>Cancel</en>
<pt-BR><![CDATA[Cancelar]]></pt-BR>
</CANCEL>
<JS type="javascript" replacetags="1"><![CDATA[
var cancel = function () {
oPanel.remove();
};
var saveFile = function() {
var fc64 = base64_encode(getField('CONTENT').value);
fc64 = fc64.replace(/&amp;/g, '@amp@');
fc64 = fc64.replace(/\+/g, '%2B');
var oRPC = new leimnud.module.rpc.xmlhttp({
url: '../actionsByEmail/actionsByEmailAjax',
args: 'action=updateTemplate&PRO_UID=' + Pm.options.uid + '&TEMPLATE=' + getField('TEMPLATE').value + '&CONTENT=' + fc64
});
oPanel.loader.show();
oRPC.callback = function(rpc) {
oPanel.remove();
}.extend(this);
oRPC.make();
};
]]></JS>
</dynaForm>

View File

@@ -0,0 +1,230 @@
<?php
class actionsByEmailClass extends PMPlugin
{
public function __construct()
{
set_include_path(PATH_PLUGINS . 'actionsByEmail' . PATH_SEPARATOR . get_include_path());
}
public function setup()
{
}
public function getFieldsForPageSetup()
{
return array();
}
public function updateFieldsForPageSetup()
{
}
public function sendActionsByEmail($data)
{
try {
// Validations
if (!is_object($data)) {
throw new Exception('The parameter $data is null.');
}
if (!isset($data->TAS_UID)) {
throw new Exception('The parameter $data->TAS_UID is null.');
}
if (!isset($data->APP_UID)) {
throw new Exception('The parameter $data->APP_UID is null.');
}
if (!isset($data->DEL_INDEX)) {
throw new Exception('The parameter $data->DEL_INDEX is null.');
}
if ($data->TAS_UID == '') {
throw new Exception('The parameter $data->TAS_UID is empty.');
}
if ($data->APP_UID == '') {
throw new Exception('The parameter $data->APP_UID is empty.');
}
if ($data->DEL_INDEX == '') {
throw new Exception('The parameter $data->DEL_INDEX is empty.');
}
G::LoadClass('pmFunctions');
$emailSetup = getEmailConfiguration();
if (!empty($emailSetup)) {
require_once 'classes/model/AbeConfiguration.php';
G::LoadClass('case');
$cases = new Cases();
$caseFields = $cases->loadCase($data->APP_UID);
$criteria = new Criteria();
$criteria->add(AbeConfigurationPeer::PRO_UID, $caseFields['PRO_UID']);
$criteria->add(AbeConfigurationPeer::TAS_UID, $data->TAS_UID);
$result = AbeConfigurationPeer::doSelectRS($criteria);
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result->next();
if ($configuration = $result->getRow()) {
if ($configuration['ABE_EMAIL_FIELD'] != '' && isset($caseFields['APP_DATA'][$configuration['ABE_EMAIL_FIELD']])) {
$email = trim($caseFields['APP_DATA'][$configuration['ABE_EMAIL_FIELD']]);
} else {
require_once 'classes/model/Users.php';
$userInstance = new Users();
$userInfo = $userInstance->getAllInformation($data->USR_UID);
$email = $userInfo['mail'];
}
if ($email != '') {
$subject = $caseFields['APP_TITLE'];
// Create
require_once 'classes/model/AbeRequests.php';
$abeRequest = array();
$abeRequest['ABE_REQ_UID'] = '';
$abeRequest['ABE_UID'] = $configuration['ABE_UID'];
$abeRequest['APP_UID'] = $data->APP_UID;
$abeRequest['DEL_INDEX'] = $data->DEL_INDEX;
$abeRequest['ABE_REQ_SENT_TO'] = $email;
$abeRequest['ABE_REQ_SUBJECT'] = $subject;
$abeRequest['ABE_REQ_BODY'] = '';
$abeRequest['ABE_REQ_ANSWERED'] = 0;
$abeRequest['ABE_REQ_STATUS'] = 'PENDING';
try {
$abeRequestsInstance = new AbeRequests();
$abeRequest['ABE_REQ_UID'] = $abeRequestsInstance->createOrUpdate($abeRequest);
} catch (Exception $error) {
throw $error;
}
if ($configuration['ABE_TYPE'] != '') {
// Email
$_SESSION['CURRENT_DYN_UID'] = $configuration['DYN_UID'];
$scriptCode = '';
$dynaform = new Form($caseFields['PRO_UID'] . PATH_SEP . $configuration['DYN_UID'], PATH_DYNAFORM, SYS_LANG, false);
$dynaform->mode = 'view';
$dynaform->values = $caseFields['APP_DATA'];
foreach ($dynaform->fields as $fieldName => $field) {
if ($field->type == 'submit') {
unset($dynaform->fields[$fieldName]);
}
}
$__ABE__ = '';
$link = (G::is_https() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/actionsByEmail/services/';
switch ($configuration['ABE_TYPE']) {
case 'LINK':
$__ABE__ .= $dynaform->render(PATH_PLUGINS . 'actionsByEmail/xmlform.html', $scriptCode) . '<br />';
$__ABE__ .= '<a href="' . $link . 'dataForm?APP_UID=' . G::encrypt($data->APP_UID, URL_KEY) . '&DEL_INDEX=' . G::encrypt($data->DEL_INDEX, URL_KEY) . '&DYN_UID=' . G::encrypt($configuration['DYN_UID'], URL_KEY) . '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY) . '" target="_blank">Please complete this form</a>';
break;
// coment
case 'FIELD':
if (isset($dynaform->fields[$configuration['ABE_ACTION_FIELD']])) {
$field = $dynaform->fields[$configuration['ABE_ACTION_FIELD']];
unset($dynaform->fields[$configuration['ABE_ACTION_FIELD']]);
$__ABE__ .= $dynaform->render(PATH_PLUGINS . 'actionsByEmail/xmlform.html', $scriptCode) . '<br />';
$__ABE__ .= '<strong>' . $field->label . '</strong><br /><table align="left" border="0"><tr>';
switch ($field->type) {
case 'dropdown':
case 'radiogroup':
$field->executeSQL($field->owner);
$index = 1;
$__ABE__.='<br /><td><table align="left" cellpadding="2"><tr>';
foreach ($field->options as $optValue => $optName) {
$__ABE__ .= '<td align="center"><a style="text-decoration: none; color: #000; background-color: #E5E5E5; ';
$__ABE__ .= 'filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFEFEF, endColorstr=#BCBCBC); ';
$__ABE__ .= 'background-image: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), #BCBCBC); ';
$__ABE__ .= 'background-image: -webkit-linear-gradient(top, #EFEFEF, #BCBCBC); ';
$__ABE__ .= 'background-image: -moz-linear-gradient(top, #EFEFEF, #BCBCBC); background-image: -ms-linear-gradient(top, #EFEFEF, #BCBCBC); ';
$__ABE__ .= 'background-image: -o-linear-gradient(top, #EFEFEF, #BCBCBC); border: 1px solid #AAAAAA; ';
$__ABE__ .= 'border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); ';
$__ABE__ .= 'font-family: Arial,serif; font-size: 9pt; font-weight: 400; line-height: 14px; margin: 2px 0; padding: 2px 7px; ';
$__ABE__ .= 'text-decoration: none; text-transform: capitalize;" href="' .urldecode(urlencode($link)). 'dataField?APP_UID=';
$__ABE__ .= G::encrypt($data->APP_UID, URL_KEY) . '&DEL_INDEX=' . G::encrypt($data->DEL_INDEX, URL_KEY);
$__ABE__ .= '&FIELD=' . G::encrypt($configuration['ABE_ACTION_FIELD'], URL_KEY) . '&VALUE=' . G::encrypt($optValue, URL_KEY);
$__ABE__ .= '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY) . '" target="_blank" >' . $optName;
$__ABE__ .= '</a></td>' . (($index % 5 == 0) ? '</tr><tr>' : ' ');
$index++;
}
$__ABE__.='</tr></table></td>';
break;
case 'yesno':
$__ABE__ .= '<td align="center"><a href="' . $link . 'dataField?APP_UID=' . urlencode(G::encrypt($data->APP_UID, URL_KEY)) . '&DEL_INDEX=' . urlencode(G::encrypt($data->DEL_INDEX, URL_KEY)). '&FIELD=' . urlencode(G::encrypt($configuration['ABE_ACTION_FIELD'], URL_KEY)) . '&VALUE=' . urlencode(G::encrypt(1, URL_KEY)) . '&ABER=' . urlencode(G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY)) . '" target="_blank">' . G::LoadTranslation('ID_YES_VALUE') . '</a></td>';
$__ABE__ .= '<td align="center"><a href="' . $link . 'dataField?APP_UID=' . urlencode(G::encrypt($data->APP_UID, URL_KEY)) . '&DEL_INDEX=' . urlencode(G::encrypt($data->DEL_INDEX, URL_KEY)) . '&FIELD=' . urlencode(G::encrypt($configuration['ABE_ACTION_FIELD'], URL_KEY)) . '&VALUE=' . urlencode(G::encrypt(0, URL_KEY)) . '&ABER=' . urlencode(G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY)) . '" target="_blank">' . G::LoadTranslation('ID_NO_VALUE') . '</a></td>';
break;
case 'checkbox':
$__ABE__ .= '<td align="center"><a href="' . $link . 'dataField?APP_UID=' . G::encrypt($data->APP_UID, URL_KEY) . '&DEL_INDEX=' . G::encrypt($data->DEL_INDEX, URL_KEY) . '&FIELD=' . G::encrypt($configuration['ABE_ACTION_FIELD'], URL_KEY) . '&VALUE=' . G::encrypt($field->value, URL_KEY) . '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY) . '" target="_blank">Check</a></td>';
$__ABE__ .= '<td align="center"><a href="' . $link . 'dataField?APP_UID=' . G::encrypt($data->APP_UID, URL_KEY) . '&DEL_INDEX=' . G::encrypt($data->DEL_INDEX, URL_KEY) . '&FIELD=' . G::encrypt($configuration['ABE_ACTION_FIELD'], URL_KEY) . '&VALUE=' . G::encrypt($field->value, URL_KEY) . '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY) . '" target="_blank">Uncheck</a></td>';
break;
}
$__ABE__ .= '</tr></table>';
}
break;
}
$__ABE__ = preg_replace('/\<img src=\"\/js\/maborak\/core\/images\/(.+?)\>/', '' , $__ABE__);
$__ABE__ = preg_replace('/\<input\b[^>]*\/>/', '' , $__ABE__);
$__ABE__ = preg_replace('/<select\b[^>]*>(.*?)<\/select>/is', "", $__ABE__);
$__ABE__ = preg_replace('/align=\"center\"/', '' , $__ABE__);
$__ABE__ = preg_replace('/class="tableGrid_view" /', 'class="tableGrid_view" width="100%" ', $__ABE__);
$caseFields['APP_DATA']['__ABE__'] = $__ABE__;
G::LoadClass("Users");
$user = new Users();
$userDetails = $user->loadDetails($data->USR_UID);
$emailFrom = $userDetails["USR_EMAIL"];
G::LoadClass('wsBase');
$wsBaseInstance = new wsBase();
$result = $wsBaseInstance->sendMessage($data->APP_UID,
$emailFrom,
$email,
'',
'',
$subject,
$configuration['ABE_TEMPLATE'],
$caseFields['APP_DATA'],
'');
$abeRequest['ABE_REQ_STATUS'] = ($result->status_code == 0 ? 'SENT' : 'ERROR');
$body = '';
$messageSent = executeQuery('SELECT `APP_MSG_BODY` FROM `APP_MESSAGE` ORDER BY `APP_MSG_SEND_DATE` DESC LIMIT 1');
if (!empty($messageSent) && is_array($messageSent)) {
$body = $messageSent[1]['APP_MSG_BODY'];
}
$abeRequest['ABE_REQ_BODY'] = $body;
// Update
try {
$abeRequestsInstance = new AbeRequests();
$abeRequestsInstance->createOrUpdate($abeRequest);
} catch (Exception $error) {
throw $error;
}
}
}
}
}
} catch (Exception $error) {
throw $error;
}
}
}

View File

@@ -0,0 +1,97 @@
<?php
require_once 'classes/model/om/BaseAbeConfiguration.php';
/**
* Skeleton subclass for representing a row from the 'ABE_CONFIGURATION' 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 AbeConfiguration extends BaseAbeConfiguration
{
private $filterThisFields = array('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE',
'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID','ABE_EMAIL_FIELD',
'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_CREATE_DATE','ABE_UPDATE_DATE');
public function load($abeUid)
{
try {
$abeConfigurationInstance = AbeConfigurationPeer::retrieveByPK($abeUid);
$fields = $abeConfigurationInstance->toArray(BasePeer::TYPE_FIELDNAME);
return $fields;
} catch (Exception $error) {
throw $error;
}
}
public function createOrUpdate($data)
{
foreach ($data as $field => $value) {
if (!in_array($field, $this->filterThisFields)) {
unset($data[$field]);
}
}
$connection = Propel::getConnection(AbeConfigurationPeer::DATABASE_NAME);
try {
if (!isset($data['ABE_UID'])) {
$data['ABE_UID'] = '';
}
if ($data['ABE_UID'] == '') {
$data['ABE_UID'] = G::generateUniqueID();
$data['ABE_CREATE_DATE'] = date('Y-m-d H:i:s');
$abeConfigurationInstance = new AbeConfiguration();
} else {
$abeConfigurationInstance = AbeConfigurationPeer::retrieveByPK($data['ABE_UID']);
}
$data['ABE_UPDATE_DATE'] = date('Y-m-d H:i:s');
$abeConfigurationInstance->fromArray($data, BasePeer::TYPE_FIELDNAME);
if ($abeConfigurationInstance->validate()) {
$connection->begin();
$result = $abeConfigurationInstance->save();
$connection->commit();
return $data['ABE_UID'];
} else {
$message = '';
$validationFailures = $abeConfigurationInstance->getValidationFailures();
foreach ($validationFailures as $validationFailure) {
$message .= $validationFailure->getMessage() . '. ';
}
throw (new Exception('Error trying to update: ' . $message));
}
} catch (Exception $error) {
$connection->rollback();
throw $error;
}
}
public function deleteByTasUid($tasUid)
{
try {
$criteria = new Criteria('workflow');
$criteria->add(AbeConfigurationPeer::TAS_UID, $tasUid);
AbeConfigurationPeer::doDelete($criteria);
} catch (Exception $error) {
throw $error;
}
}
}
// AbeConfiguration

View File

@@ -0,0 +1,25 @@
<?php
// include base peer class
require_once 'classes/model/om/BaseAbeConfigurationPeer.php';
// include object class
include_once 'classes/model/AbeConfiguration.php';
/**
* Skeleton subclass for performing query and update operations on the 'ABE_CONFIGURATION' 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 AbeConfigurationPeer extends BaseAbeConfigurationPeer
{
}
// AbeConfigurationPeer

View File

@@ -0,0 +1,87 @@
<?php
require_once 'classes/model/om/BaseAbeRequests.php';
/**
* Skeleton subclass for representing a row from the 'ABE_REQUESTS' 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 AbeRequests extends BaseAbeRequests
{
private $filterThisFields = array('ABE_REQ_UID', 'ABE_UID', 'APP_UID', 'DEL_INDEX',
'ABE_REQ_SENT_TO', 'ABE_REQ_SUBJECT', 'ABE_REQ_BODY',
'ABE_REQ_DATE', 'ABE_REQ_STATUS', 'ABE_REQ_ANSWERED');
public function load($abeRequestUid)
{
try {
$abeRequestInstance = AbeRequestsPeer::retrieveByPK($abeRequestUid);
$fields = $abeRequestInstance->toArray(BasePeer::TYPE_FIELDNAME);
return $fields;
} catch (Exception $error) {
throw $error;
}
}
public function createOrUpdate($data)
{
$additionalFields = array();
foreach ($data as $field => $value) {
if (!in_array($field, $this->filterThisFields)) {
$additionalFields[$field] = $value;
unset($data[$field]);
}
}
$connection = Propel::getConnection(AbeRequestsPeer::DATABASE_NAME);
try {
if (!isset($data['ABE_REQ_UID'])) {
$data['ABE_REQ_UID'] = '';
}
if ($data['ABE_REQ_UID'] == '') {
$data['ABE_REQ_UID'] = G::generateUniqueID();
$data['ABE_REQ_DATE'] = date('Y-m-d H:i:s');
$AbeRequestsInstance = new AbeRequests();
} else {
$AbeRequestsInstance = AbeRequestsPeer::retrieveByPK($data['ABE_REQ_UID']);
}
$AbeRequestsInstance->fromArray($data, BasePeer::TYPE_FIELDNAME);
if ($AbeRequestsInstance->validate()) {
$connection->begin();
$result = $AbeRequestsInstance->save();
$connection->commit();
return $data['ABE_REQ_UID'];
} else {
$message = '';
$validationFailures = $AbeRequestsInstance->getValidationFailures();
foreach ($validationFailures as $validationFailure) {
$message .= $validationFailure->getMessage() . '. ';
}
throw(new Exception('Error trying to update: ' . $message));
}
} catch (Exception $error) {
$connection->rollback();
throw $error;
}
}
}
// AbeRequests

View File

@@ -0,0 +1,24 @@
<?php
// include base peer class
require_once 'classes/model/om/BaseAbeRequestsPeer.php';
// include object class
include_once 'classes/model/AbeRequests.php';
/**
* Skeleton subclass for performing query and update operations on the 'ABE_REQUESTS' 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 AbeRequestsPeer extends BaseAbeRequestsPeer
{
}
// AbeRequestsPeer

View File

@@ -0,0 +1,88 @@
<?php
require_once 'classes/model/om/BaseAbeResponses.php';
/**
* Skeleton subclass for representing a row from the 'ABE_RESPONSES' 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 AbeResponses extends BaseAbeResponses
{
private $filterThisFields = array('ABE_RES_UID', 'ABE_REQ_UID', 'ABE_RES_CLIENT_IP', 'ABE_RES_DATA',
'ABE_RES_DATE', 'ABE_RES_STATUS', 'ABE_RES_MESSAGE');
public function load($abeResponsesUid)
{
try {
$abeResponsesInstance = AbeResponsesPeer::retrieveByPK($abeResponsesUid);
$fields = $abeResponsesInstance->toArray(BasePeer::TYPE_FIELDNAME);
return $fields;
} catch (Exception $error) {
throw $error;
}
}
public function createOrUpdate($data)
{
$additionalFields = array();
foreach ($data as $field => $value) {
if (!in_array($field, $this->filterThisFields)) {
$additionalFields[$field] = $value;
unset($data[$field]);
}
}
$connection = Propel::getConnection(AbeResponsesPeer::DATABASE_NAME);
try {
if (!isset($data['ABE_RES_UID'])) {
$data['ABE_RES_UID'] = '';
}
if ($data['ABE_RES_UID'] == '') {
$data['ABE_RES_UID'] = G::generateUniqueID();
$data['ABE_RES_DATE'] = date('Y-m-d H:i:s');
$AbeResponsesInstance = new AbeResponses();
} else {
$AbeResponsesInstance = AbeResponsesPeer::retrieveByPK($data['ABE_RES_UID']);
}
//$data['ABE_RES_UPDATE'] = date('Y-m-d H:i:s');
$AbeResponsesInstance->fromArray($data, BasePeer::TYPE_FIELDNAME);
if ($AbeResponsesInstance->validate()) {
$connection->begin();
$result = $AbeResponsesInstance->save();
$connection->commit();
return $data['ABE_RES_UID'];
} else {
$message = '';
$validationFailures = $AbeResponsesInstance->getValidationFailures();
foreach ($validationFailures as $validationFailure) {
$message .= $validationFailure->getMessage() . '. ';
}
throw(new Exception('Error trying to update: ' . $message));
}
} catch (Exception $error) {
$connection->rollback();
throw $error;
}
}
}
// AbeResponses

View File

@@ -0,0 +1,25 @@
<?php
// include base peer class
require_once 'classes/model/om/BaseAbeResponsesPeer.php';
// include object class
include_once 'classes/model/AbeResponses.php';
/**
* Skeleton subclass for performing query and update operations on the 'ABE_RESPONSES' 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 AbeResponsesPeer extends BaseAbeResponsesPeer
{
}
// AbeResponsesPeer

View File

@@ -0,0 +1,93 @@
<?php
require_once 'propel/map/MapBuilder.php';
include_once 'creole/CreoleTypes.php';
/**
* This class adds structure of 'ABE_CONFIGURATION' 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 AbeConfigurationMapBuilder
{
/**
* The (dot-path) name of this class
*/
const CLASS_NAME = 'classes.model.map.AbeConfigurationMapBuilder';
/**
* 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('ABE_CONFIGURATION');
$tMap->setPhpName('AbeConfiguration');
$tMap->setUseIdGenerator(false);
$tMap->addPrimaryKey('ABE_UID', 'AbeUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('PRO_UID', 'ProUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('TAS_UID', 'TasUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('ABE_TYPE', 'AbeType', 'string', CreoleTypes::VARCHAR, true, 10);
$tMap->addColumn('ABE_TEMPLATE', 'AbeTemplate', 'string', CreoleTypes::VARCHAR, true, 100);
$tMap->addColumn('ABE_DYN_TYPE', 'AbeDynType', 'string', CreoleTypes::VARCHAR, true, 10);
$tMap->addColumn('DYN_UID', 'DynUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('ABE_EMAIL_FIELD', 'AbeEmailField', 'string', CreoleTypes::VARCHAR, true, 255);
$tMap->addColumn('ABE_ACTION_FIELD', 'AbeActionField', 'string', CreoleTypes::VARCHAR, false, 255);
$tMap->addColumn('ABE_CASE_NOTE_IN_RESPONSE', 'AbeCaseNoteInResponse', 'int', CreoleTypes::INTEGER, false, null);
$tMap->addColumn('ABE_CREATE_DATE', 'AbeCreateDate', 'int', CreoleTypes::TIMESTAMP, true, null);
$tMap->addColumn('ABE_UPDATE_DATE', 'AbeUpdateDate', 'int', CreoleTypes::TIMESTAMP, false, null);
} // doBuild()
}
// AbeConfigurationMapBuilder

View File

@@ -0,0 +1,89 @@
<?php
require_once 'propel/map/MapBuilder.php';
include_once 'creole/CreoleTypes.php';
/**
* This class adds structure of 'ABE_REQUESTS' 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 AbeRequestsMapBuilder
{
/**
* The (dot-path) name of this class
*/
const CLASS_NAME = 'classes.model.map.AbeRequestsMapBuilder';
/**
* 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('ABE_REQUESTS');
$tMap->setPhpName('AbeRequests');
$tMap->setUseIdGenerator(false);
$tMap->addPrimaryKey('ABE_REQ_UID', 'AbeReqUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('ABE_UID', 'AbeUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('APP_UID', 'AppUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('DEL_INDEX', 'DelIndex', 'int', CreoleTypes::INTEGER, true, null);
$tMap->addColumn('ABE_REQ_SENT_TO', 'AbeReqSentTo', 'string', CreoleTypes::VARCHAR, true, 100);
$tMap->addColumn('ABE_REQ_SUBJECT', 'AbeReqSubject', 'string', CreoleTypes::VARCHAR, true, 150);
$tMap->addColumn('ABE_REQ_BODY', 'AbeReqBody', 'string', CreoleTypes::LONGVARCHAR, true, null);
$tMap->addColumn('ABE_REQ_DATE', 'AbeReqDate', 'int', CreoleTypes::TIMESTAMP, true, null);
$tMap->addColumn('ABE_REQ_STATUS', 'AbeReqStatus', 'string', CreoleTypes::VARCHAR, false, 10);
$tMap->addColumn('ABE_REQ_ANSWERED', 'AbeReqAnswered', 'int', CreoleTypes::TINYINT, true, null);
} // doBuild()
}
// AbeRequestsMapBuilder

View File

@@ -0,0 +1,83 @@
<?php
require_once 'propel/map/MapBuilder.php';
include_once 'creole/CreoleTypes.php';
/**
* This class adds structure of 'ABE_RESPONSES' 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 AbeResponsesMapBuilder
{
/**
* The (dot-path) name of this class
*/
const CLASS_NAME = 'classes.model.map.AbeResponsesMapBuilder';
/**
* 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('ABE_RESPONSES');
$tMap->setPhpName('AbeResponses');
$tMap->setUseIdGenerator(false);
$tMap->addPrimaryKey('ABE_RES_UID', 'AbeResUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('ABE_REQ_UID', 'AbeReqUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('ABE_RES_CLIENT_IP', 'AbeResClientIp', 'string', CreoleTypes::VARCHAR, true, 20);
$tMap->addColumn('ABE_RES_DATA', 'AbeResData', 'string', CreoleTypes::LONGVARCHAR, true, null);
$tMap->addColumn('ABE_RES_DATE', 'AbeResDate', 'int', CreoleTypes::TIMESTAMP, true, null);
$tMap->addColumn('ABE_RES_STATUS', 'AbeResStatus', 'string', CreoleTypes::VARCHAR, true, 10);
$tMap->addColumn('ABE_RES_MESSAGE', 'AbeResMessage', 'string', CreoleTypes::VARCHAR, false, 255);
} // doBuild()
}
// AbeResponsesMapBuilder

View File

@@ -0,0 +1,632 @@
<?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 AbeConfigurationPeer::getOMClass()
include_once 'classes/model/AbeConfiguration.php';
/**
* Base static class for performing query and update operations on the 'ABE_CONFIGURATION' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseAbeConfigurationPeer
{
/** the default database name for this class */
const DATABASE_NAME = 'workflow';
/** the table name for this class */
const TABLE_NAME = 'ABE_CONFIGURATION';
/** A class that can be returned by this peer. */
const CLASS_DEFAULT = 'classes.model.AbeConfiguration';
/** The total number of columns. */
const NUM_COLUMNS = 12;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
/** the column name for the ABE_UID field */
const ABE_UID = 'ABE_CONFIGURATION.ABE_UID';
/** the column name for the PRO_UID field */
const PRO_UID = 'ABE_CONFIGURATION.PRO_UID';
/** the column name for the TAS_UID field */
const TAS_UID = 'ABE_CONFIGURATION.TAS_UID';
/** the column name for the ABE_TYPE field */
const ABE_TYPE = 'ABE_CONFIGURATION.ABE_TYPE';
/** the column name for the ABE_TEMPLATE field */
const ABE_TEMPLATE = 'ABE_CONFIGURATION.ABE_TEMPLATE';
/** the column name for the ABE_DYN_TYPE field */
const ABE_DYN_TYPE = 'ABE_CONFIGURATION.ABE_DYN_TYPE';
/** the column name for the DYN_UID field */
const DYN_UID = 'ABE_CONFIGURATION.DYN_UID';
/** the column name for the ABE_EMAIL_FIELD field */
const ABE_EMAIL_FIELD = 'ABE_CONFIGURATION.ABE_EMAIL_FIELD';
/** the column name for the ABE_ACTION_FIELD field */
const ABE_ACTION_FIELD = 'ABE_CONFIGURATION.ABE_ACTION_FIELD';
/** the column name for the ABE_CASE_NOTE_IN_RESPONSE field */
const ABE_CASE_NOTE_IN_RESPONSE = 'ABE_CONFIGURATION.ABE_CASE_NOTE_IN_RESPONSE';
/** the column name for the ABE_CREATE_DATE field */
const ABE_CREATE_DATE = 'ABE_CONFIGURATION.ABE_CREATE_DATE';
/** the column name for the ABE_UPDATE_DATE field */
const ABE_UPDATE_DATE = 'ABE_CONFIGURATION.ABE_UPDATE_DATE';
/** 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 ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeCaseNoteInResponse', 'AbeCreateDate', 'AbeUpdateDate', ),
BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, ),
BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
);
/**
* 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 ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeCaseNoteInResponse' => 9, 'AbeCreateDate' => 10, 'AbeUpdateDate' => 11, ),
BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 9, AbeConfigurationPeer::ABE_CREATE_DATE => 10, AbeConfigurationPeer::ABE_UPDATE_DATE => 11, ),
BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_CASE_NOTE_IN_RESPONSE' => 9, 'ABE_CREATE_DATE' => 10, 'ABE_UPDATE_DATE' => 11, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
);
/**
* @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/AbeConfigurationMapBuilder.php';
return BasePeer::getMapBuilder('classes.model.map.AbeConfigurationMapBuilder');
}
/**
* 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 = AbeConfigurationPeer::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. AbeConfigurationPeer::COLUMN_NAME).
* @return string
*/
public static function alias($alias, $column)
{
return str_replace(AbeConfigurationPeer::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(AbeConfigurationPeer::ABE_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::PRO_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::TAS_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_TYPE);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_TEMPLATE);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_DYN_TYPE);
$criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_FIELD);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_CREATE_DATE);
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_UPDATE_DATE);
}
const COUNT = 'COUNT(ABE_CONFIGURATION.ABE_UID)';
const COUNT_DISTINCT = 'COUNT(DISTINCT ABE_CONFIGURATION.ABE_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(AbeConfigurationPeer::COUNT_DISTINCT);
} else {
$criteria->addSelectColumn(AbeConfigurationPeer::COUNT);
}
// just in case we're grouping: add those columns to the select statement
foreach ($criteria->getGroupByColumns() as $column) {
$criteria->addSelectColumn($column);
}
$rs = AbeConfigurationPeer::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 AbeConfiguration
* @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 = AbeConfigurationPeer::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 AbeConfigurationPeer::populateObjects(AbeConfigurationPeer::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;
AbeConfigurationPeer::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 = AbeConfigurationPeer::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 AbeConfigurationPeer::CLASS_DEFAULT;
}
/**
* Method perform an INSERT on the database, given a AbeConfiguration or Criteria object.
*
* @param mixed $values Criteria or AbeConfiguration 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 AbeConfiguration 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 AbeConfiguration or Criteria object.
*
* @param mixed $values Criteria or AbeConfiguration object containing data that is used to create the UPDATE statement.
* @param Connection $con The connection to use (specify Connection object to 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(AbeConfigurationPeer::ABE_UID);
$selectCriteria->add(AbeConfigurationPeer::ABE_UID, $criteria->remove(AbeConfigurationPeer::ABE_UID), $comparison);
} else {
// $values is AbeConfiguration object
$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 ABE_CONFIGURATION 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(AbeConfigurationPeer::TABLE_NAME, $con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Method perform a DELETE on the database, given a AbeConfiguration or Criteria object OR a primary key value.
*
* @param mixed $values Criteria or AbeConfiguration 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(AbeConfigurationPeer::DATABASE_NAME);
}
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
} elseif ($values instanceof AbeConfiguration) {
$criteria = $values->buildPkeyCriteria();
} else {
// it must be the primary key
$criteria = new Criteria(self::DATABASE_NAME);
$criteria->add(AbeConfigurationPeer::ABE_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 AbeConfiguration 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 AbeConfiguration $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(AbeConfiguration $obj, $cols = null)
{
$columns = array();
if ($cols) {
$dbMap = Propel::getDatabaseMap(AbeConfigurationPeer::DATABASE_NAME);
$tableMap = $dbMap->getTable(AbeConfigurationPeer::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(AbeConfigurationPeer::DATABASE_NAME, AbeConfigurationPeer::TABLE_NAME, $columns);
}
/**
* Retrieve a single object by pkey.
*
* @param mixed $pk the primary key.
* @param Connection $con the connection to use
* @return AbeConfiguration
*/
public static function retrieveByPK($pk, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$criteria = new Criteria(AbeConfigurationPeer::DATABASE_NAME);
$criteria->add(AbeConfigurationPeer::ABE_UID, $pk);
$v = AbeConfigurationPeer::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(AbeConfigurationPeer::ABE_UID, $pks, Criteria::IN);
$objs = AbeConfigurationPeer::doSelect($criteria, $con);
}
return $objs;
}
}
// BaseAbeConfigurationPeer
// 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 {
BaseAbeConfigurationPeer::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/AbeConfigurationMapBuilder.php';
Propel::registerMapBuilder('classes.model.map.AbeConfigurationMapBuilder');
}

View File

@@ -0,0 +1,615 @@
<?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 AbeRequestsPeer::getOMClass()
include_once 'classes/model/AbeRequests.php';
/**
* Base static class for performing query and update operations on the 'ABE_REQUESTS' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseAbeRequestsPeer
{
/** the default database name for this class */
const DATABASE_NAME = 'workflow';
/** the table name for this class */
const TABLE_NAME = 'ABE_REQUESTS';
/** A class that can be returned by this peer. */
const CLASS_DEFAULT = 'classes.model.AbeRequests';
/** The total number of columns. */
const NUM_COLUMNS = 10;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
/** the column name for the ABE_REQ_UID field */
const ABE_REQ_UID = 'ABE_REQUESTS.ABE_REQ_UID';
/** the column name for the ABE_UID field */
const ABE_UID = 'ABE_REQUESTS.ABE_UID';
/** the column name for the APP_UID field */
const APP_UID = 'ABE_REQUESTS.APP_UID';
/** the column name for the DEL_INDEX field */
const DEL_INDEX = 'ABE_REQUESTS.DEL_INDEX';
/** the column name for the ABE_REQ_SENT_TO field */
const ABE_REQ_SENT_TO = 'ABE_REQUESTS.ABE_REQ_SENT_TO';
/** the column name for the ABE_REQ_SUBJECT field */
const ABE_REQ_SUBJECT = 'ABE_REQUESTS.ABE_REQ_SUBJECT';
/** the column name for the ABE_REQ_BODY field */
const ABE_REQ_BODY = 'ABE_REQUESTS.ABE_REQ_BODY';
/** the column name for the ABE_REQ_DATE field */
const ABE_REQ_DATE = 'ABE_REQUESTS.ABE_REQ_DATE';
/** the column name for the ABE_REQ_STATUS field */
const ABE_REQ_STATUS = 'ABE_REQUESTS.ABE_REQ_STATUS';
/** the column name for the ABE_REQ_ANSWERED field */
const ABE_REQ_ANSWERED = 'ABE_REQUESTS.ABE_REQ_ANSWERED';
/** 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 ('AbeReqUid', 'AbeUid', 'AppUid', 'DelIndex', 'AbeReqSentTo', 'AbeReqSubject', 'AbeReqBody', 'AbeReqDate', 'AbeReqStatus', 'AbeReqAnswered', ),
BasePeer::TYPE_COLNAME => array (AbeRequestsPeer::ABE_REQ_UID, AbeRequestsPeer::ABE_UID, AbeRequestsPeer::APP_UID, AbeRequestsPeer::DEL_INDEX, AbeRequestsPeer::ABE_REQ_SENT_TO, AbeRequestsPeer::ABE_REQ_SUBJECT, AbeRequestsPeer::ABE_REQ_BODY, AbeRequestsPeer::ABE_REQ_DATE, AbeRequestsPeer::ABE_REQ_STATUS, AbeRequestsPeer::ABE_REQ_ANSWERED, ),
BasePeer::TYPE_FIELDNAME => array ('ABE_REQ_UID', 'ABE_UID', 'APP_UID', 'DEL_INDEX', 'ABE_REQ_SENT_TO', 'ABE_REQ_SUBJECT', 'ABE_REQ_BODY', 'ABE_REQ_DATE', 'ABE_REQ_STATUS', 'ABE_REQ_ANSWERED', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
);
/**
* 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 ('AbeReqUid' => 0, 'AbeUid' => 1, 'AppUid' => 2, 'DelIndex' => 3, 'AbeReqSentTo' => 4, 'AbeReqSubject' => 5, 'AbeReqBody' => 6, 'AbeReqDate' => 7, 'AbeReqStatus' => 8, 'AbeReqAnswered' => 9, ),
BasePeer::TYPE_COLNAME => array (AbeRequestsPeer::ABE_REQ_UID => 0, AbeRequestsPeer::ABE_UID => 1, AbeRequestsPeer::APP_UID => 2, AbeRequestsPeer::DEL_INDEX => 3, AbeRequestsPeer::ABE_REQ_SENT_TO => 4, AbeRequestsPeer::ABE_REQ_SUBJECT => 5, AbeRequestsPeer::ABE_REQ_BODY => 6, AbeRequestsPeer::ABE_REQ_DATE => 7, AbeRequestsPeer::ABE_REQ_STATUS => 8, AbeRequestsPeer::ABE_REQ_ANSWERED => 9, ),
BasePeer::TYPE_FIELDNAME => array ('ABE_REQ_UID' => 0, 'ABE_UID' => 1, 'APP_UID' => 2, 'DEL_INDEX' => 3, 'ABE_REQ_SENT_TO' => 4, 'ABE_REQ_SUBJECT' => 5, 'ABE_REQ_BODY' => 6, 'ABE_REQ_DATE' => 7, 'ABE_REQ_STATUS' => 8, 'ABE_REQ_ANSWERED' => 9, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
);
/**
* @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/AbeRequestsMapBuilder.php';
return BasePeer::getMapBuilder('classes.model.map.AbeRequestsMapBuilder');
}
/**
* 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 = AbeRequestsPeer::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. AbeRequestsPeer::COLUMN_NAME).
* @return string
*/
public static function alias($alias, $column)
{
return str_replace(AbeRequestsPeer::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(AbeRequestsPeer::ABE_REQ_UID);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_UID);
$criteria->addSelectColumn(AbeRequestsPeer::APP_UID);
$criteria->addSelectColumn(AbeRequestsPeer::DEL_INDEX);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SENT_TO);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_SUBJECT);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_BODY);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_DATE);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_STATUS);
$criteria->addSelectColumn(AbeRequestsPeer::ABE_REQ_ANSWERED);
}
const COUNT = 'COUNT(ABE_REQUESTS.ABE_REQ_UID)';
const COUNT_DISTINCT = 'COUNT(DISTINCT ABE_REQUESTS.ABE_REQ_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(AbeRequestsPeer::COUNT_DISTINCT);
} else {
$criteria->addSelectColumn(AbeRequestsPeer::COUNT);
}
// just in case we're grouping: add those columns to the select statement
foreach ($criteria->getGroupByColumns() as $column) {
$criteria->addSelectColumn($column);
}
$rs = AbeRequestsPeer::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 AbeRequests
* @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 = AbeRequestsPeer::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 AbeRequestsPeer::populateObjects(AbeRequestsPeer::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;
AbeRequestsPeer::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 = AbeRequestsPeer::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 AbeRequestsPeer::CLASS_DEFAULT;
}
/**
* Method perform an INSERT on the database, given a AbeRequests or Criteria object.
*
* @param mixed $values Criteria or AbeRequests 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 AbeRequests 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 AbeRequests or Criteria object.
*
* @param mixed $values Criteria or AbeRequests object containing data that is used to create the UPDATE statement.
* @param Connection $con The connection to use (specify Connection object to 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(AbeRequestsPeer::ABE_REQ_UID);
$selectCriteria->add(AbeRequestsPeer::ABE_REQ_UID, $criteria->remove(AbeRequestsPeer::ABE_REQ_UID), $comparison);
} else {
// $values is AbeRequests object
$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 ABE_REQUESTS 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(AbeRequestsPeer::TABLE_NAME, $con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Method perform a DELETE on the database, given a AbeRequests or Criteria object OR a primary key value.
*
* @param mixed $values Criteria or AbeRequests 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(AbeRequestsPeer::DATABASE_NAME);
}
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
} elseif ($values instanceof AbeRequests) {
$criteria = $values->buildPkeyCriteria();
} else {
// it must be the primary key
$criteria = new Criteria(self::DATABASE_NAME);
$criteria->add(AbeRequestsPeer::ABE_REQ_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 AbeRequests 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 AbeRequests $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(AbeRequests $obj, $cols = null)
{
$columns = array();
if ($cols) {
$dbMap = Propel::getDatabaseMap(AbeRequestsPeer::DATABASE_NAME);
$tableMap = $dbMap->getTable(AbeRequestsPeer::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(AbeRequestsPeer::DATABASE_NAME, AbeRequestsPeer::TABLE_NAME, $columns);
}
/**
* Retrieve a single object by pkey.
*
* @param mixed $pk the primary key.
* @param Connection $con the connection to use
* @return AbeRequests
*/
public static function retrieveByPK($pk, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$criteria = new Criteria(AbeRequestsPeer::DATABASE_NAME);
$criteria->add(AbeRequestsPeer::ABE_REQ_UID, $pk);
$v = AbeRequestsPeer::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(AbeRequestsPeer::ABE_REQ_UID, $pks, Criteria::IN);
$objs = AbeRequestsPeer::doSelect($criteria, $con);
}
return $objs;
}
}
// BaseAbeRequestsPeer
// 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 {
BaseAbeRequestsPeer::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/AbeRequestsMapBuilder.php';
Propel::registerMapBuilder('classes.model.map.AbeRequestsMapBuilder');
}

View File

@@ -0,0 +1,886 @@
<?php
require_once 'propel/om/BaseObject.php';
require_once 'propel/om/Persistent.php';
include_once 'propel/util/Criteria.php';
include_once 'classes/model/AbeResponsesPeer.php';
/**
* Base class that represents a row from the 'ABE_RESPONSES' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseAbeResponses 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 AbeResponsesPeer
*/
protected static $peer;
/**
* The value for the abe_res_uid field.
* @var string
*/
protected $abe_res_uid = '';
/**
* The value for the abe_req_uid field.
* @var string
*/
protected $abe_req_uid = '';
/**
* The value for the abe_res_client_ip field.
* @var string
*/
protected $abe_res_client_ip = '';
/**
* The value for the abe_res_data field.
* @var string
*/
protected $abe_res_data = '0';
/**
* The value for the abe_res_date field.
* @var int
*/
protected $abe_res_date;
/**
* The value for the abe_res_status field.
* @var string
*/
protected $abe_res_status = '';
/**
* The value for the abe_res_message field.
* @var string
*/
protected $abe_res_message = '';
/**
* 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 [abe_res_uid] column value.
*
* @return string
*/
public function getAbeResUid()
{
return $this->abe_res_uid;
}
/**
* Get the [abe_req_uid] column value.
*
* @return string
*/
public function getAbeReqUid()
{
return $this->abe_req_uid;
}
/**
* Get the [abe_res_client_ip] column value.
*
* @return string
*/
public function getAbeResClientIp()
{
return $this->abe_res_client_ip;
}
/**
* Get the [abe_res_data] column value.
*
* @return string
*/
public function getAbeResData()
{
return $this->abe_res_data;
}
/**
* Get the [optionally formatted] [abe_res_date] column value.
*
* @param string $format The date/time format string (either date()-style or strftime()-style).
* If format is NULL, then the integer unix timestamp will be returned.
* @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL).
* @throws PropelException - if unable to convert the date/time to timestamp.
*/
public function getAbeResDate($format = 'Y-m-d H:i:s')
{
if ($this->abe_res_date === null || $this->abe_res_date === '') {
return null;
} elseif (!is_int($this->abe_res_date)) {
// a non-timestamp value was set externally, so we convert it
$ts = strtotime($this->abe_res_date);
if ($ts === -1 || $ts === false) {
// in PHP 5.1 return value changes to FALSE
throw new PropelException("Unable to parse value of [abe_res_date] as date/time value: " . var_export($this->abe_res_date, true));
}
} else {
$ts = $this->abe_res_date;
}
if ($format === null) {
return $ts;
} elseif (strpos($format, '%') !== false) {
return strftime($format, $ts);
} else {
return date($format, $ts);
}
}
/**
* Get the [abe_res_status] column value.
*
* @return string
*/
public function getAbeResStatus()
{
return $this->abe_res_status;
}
/**
* Get the [abe_res_message] column value.
*
* @return string
*/
public function getAbeResMessage()
{
return $this->abe_res_message;
}
/**
* Set the value of [abe_res_uid] column.
*
* @param string $v new value
* @return void
*/
public function setAbeResUid($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->abe_res_uid !== $v || $v === '') {
$this->abe_res_uid = $v;
$this->modifiedColumns[] = AbeResponsesPeer::ABE_RES_UID;
}
}
// setAbeResUid()
/**
* Set the value of [abe_req_uid] column.
*
* @param string $v new value
* @return void
*/
public function setAbeReqUid($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->abe_req_uid !== $v || $v === '') {
$this->abe_req_uid = $v;
$this->modifiedColumns[] = AbeResponsesPeer::ABE_REQ_UID;
}
}
// setAbeReqUid()
/**
* Set the value of [abe_res_client_ip] column.
*
* @param string $v new value
* @return void
*/
public function setAbeResClientIp($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->abe_res_client_ip !== $v || $v === '') {
$this->abe_res_client_ip = $v;
$this->modifiedColumns[] = AbeResponsesPeer::ABE_RES_CLIENT_IP;
}
}
// setAbeResClientIp()
/**
* Set the value of [abe_res_data] column.
*
* @param string $v new value
* @return void
*/
public function setAbeResData($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->abe_res_data !== $v || $v === '0') {
$this->abe_res_data = $v;
$this->modifiedColumns[] = AbeResponsesPeer::ABE_RES_DATA;
}
}
// setAbeResData()
/**
* Set the value of [abe_res_date] column.
*
* @param int $v new value
* @return void
*/
public function setAbeResDate($v)
{
if ($v !== null && !is_int($v)) {
$ts = strtotime($v);
if ($ts === -1 || $ts === false) {
// in PHP 5.1 return value changes to FALSE
throw new PropelException("Unable to parse date/time value for [abe_res_date] from input: " . var_export($v, true));
}
} else {
$ts = $v;
}
if ($this->abe_res_date !== $ts) {
$this->abe_res_date = $ts;
$this->modifiedColumns[] = AbeResponsesPeer::ABE_RES_DATE;
}
}
// setAbeResDate()
/**
* Set the value of [abe_res_status] column.
*
* @param string $v new value
* @return void
*/
public function setAbeResStatus($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->abe_res_status !== $v || $v === '') {
$this->abe_res_status = $v;
$this->modifiedColumns[] = AbeResponsesPeer::ABE_RES_STATUS;
}
}
// setAbeResStatus()
/**
* Set the value of [abe_res_message] column.
*
* @param string $v new value
* @return void
*/
public function setAbeResMessage($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->abe_res_message !== $v || $v === '') {
$this->abe_res_message = $v;
$this->modifiedColumns[] = AbeResponsesPeer::ABE_RES_MESSAGE;
}
}
// setAbeResMessage()
/**
* 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->abe_res_uid = $rs->getString($startcol + 0);
$this->abe_req_uid = $rs->getString($startcol + 1);
$this->abe_res_client_ip = $rs->getString($startcol + 2);
$this->abe_res_data = $rs->getString($startcol + 3);
$this->abe_res_date = $rs->getTimestamp($startcol + 4, null);
$this->abe_res_status = $rs->getString($startcol + 5);
$this->abe_res_message = $rs->getString($startcol + 6);
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 7; // 7 = AbeResponsesPeer::NUM_COLUMNS - AbeResponsesPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating AbeResponses 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(AbeResponsesPeer::DATABASE_NAME);
}
try {
$con->begin();
AbeResponsesPeer::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 and any referring fk objects' save() operations.
* @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(AbeResponsesPeer::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 fk objects' save() operations.
* @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 = AbeResponsesPeer::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 += AbeResponsesPeer::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> objets otherwise.
*/
protected function doValidate($columns = null)
{
if (!$this->alreadyInValidation) {
$this->alreadyInValidation = true;
$retval = null;
$failureMap = array();
if (($retval = AbeResponsesPeer::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 = AbeResponsesPeer::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->getAbeResUid();
break;
case 1:
return $this->getAbeReqUid();
break;
case 2:
return $this->getAbeResClientIp();
break;
case 3:
return $this->getAbeResData();
break;
case 4:
return $this->getAbeResDate();
break;
case 5:
return $this->getAbeResStatus();
break;
case 6:
return $this->getAbeResMessage();
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 = AbeResponsesPeer::getFieldNames($keyType);
$result = array(
$keys[0] => $this->getAbeResUid(),
$keys[1] => $this->getAbeReqUid(),
$keys[2] => $this->getAbeResClientIp(),
$keys[3] => $this->getAbeResData(),
$keys[4] => $this->getAbeResDate(),
$keys[5] => $this->getAbeResStatus(),
$keys[6] => $this->getAbeResMessage(),
);
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 = AbeResponsesPeer::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->setAbeResUid($value);
break;
case 1:
$this->setAbeReqUid($value);
break;
case 2:
$this->setAbeResClientIp($value);
break;
case 3:
$this->setAbeResData($value);
break;
case 4:
$this->setAbeResDate($value);
break;
case 5:
$this->setAbeResStatus($value);
break;
case 6:
$this->setAbeResMessage($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 = AbeResponsesPeer::getFieldNames($keyType);
if (array_key_exists($keys[0], $arr)) {
$this->setAbeResUid($arr[$keys[0]]);
}
if (array_key_exists($keys[1], $arr)) {
$this->setAbeReqUid($arr[$keys[1]]);
}
if (array_key_exists($keys[2], $arr)) {
$this->setAbeResClientIp($arr[$keys[2]]);
}
if (array_key_exists($keys[3], $arr)) {
$this->setAbeResData($arr[$keys[3]]);
}
if (array_key_exists($keys[4], $arr)) {
$this->setAbeResDate($arr[$keys[4]]);
}
if (array_key_exists($keys[5], $arr)) {
$this->setAbeResStatus($arr[$keys[5]]);
}
if (array_key_exists($keys[6], $arr)) {
$this->setAbeResMessage($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(AbeResponsesPeer::DATABASE_NAME);
if ($this->isColumnModified(AbeResponsesPeer::ABE_RES_UID)) {
$criteria->add(AbeResponsesPeer::ABE_RES_UID, $this->abe_res_uid);
}
if ($this->isColumnModified(AbeResponsesPeer::ABE_REQ_UID)) {
$criteria->add(AbeResponsesPeer::ABE_REQ_UID, $this->abe_req_uid);
}
if ($this->isColumnModified(AbeResponsesPeer::ABE_RES_CLIENT_IP)) {
$criteria->add(AbeResponsesPeer::ABE_RES_CLIENT_IP, $this->abe_res_client_ip);
}
if ($this->isColumnModified(AbeResponsesPeer::ABE_RES_DATA)) {
$criteria->add(AbeResponsesPeer::ABE_RES_DATA, $this->abe_res_data);
}
if ($this->isColumnModified(AbeResponsesPeer::ABE_RES_DATE)) {
$criteria->add(AbeResponsesPeer::ABE_RES_DATE, $this->abe_res_date);
}
if ($this->isColumnModified(AbeResponsesPeer::ABE_RES_STATUS)) {
$criteria->add(AbeResponsesPeer::ABE_RES_STATUS, $this->abe_res_status);
}
if ($this->isColumnModified(AbeResponsesPeer::ABE_RES_MESSAGE)) {
$criteria->add(AbeResponsesPeer::ABE_RES_MESSAGE, $this->abe_res_message);
}
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(AbeResponsesPeer::DATABASE_NAME);
$criteria->add(AbeResponsesPeer::ABE_RES_UID, $this->abe_res_uid);
return $criteria;
}
/**
* Returns the primary key for this object (row).
* @return string
*/
public function getPrimaryKey()
{
return $this->getAbeResUid();
}
/**
* Generic method to set the primary key (abe_res_uid column).
*
* @param string $key Primary key.
* @return void
*/
public function setPrimaryKey($key)
{
$this->setAbeResUid($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 AbeResponses (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->setAbeReqUid($this->abe_req_uid);
$copyObj->setAbeResClientIp($this->abe_res_client_ip);
$copyObj->setAbeResData($this->abe_res_data);
$copyObj->setAbeResDate($this->abe_res_date);
$copyObj->setAbeResStatus($this->abe_res_status);
$copyObj->setAbeResMessage($this->abe_res_message);
$copyObj->setNew(true);
$copyObj->setAbeResUid(''); // 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 AbeResponses 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 AbeResponsesPeer
*/
public function getPeer()
{
if (self::$peer === null) {
self::$peer = new AbeResponsesPeer();
}
return self::$peer;
}
}
// BaseAbeResponses

View File

@@ -0,0 +1,610 @@
<?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 AbeResponsesPeer::getOMClass()
include_once 'classes/model/AbeResponses.php';
/**
* Base static class for performing query and update operations on the 'ABE_RESPONSES' table.
*
*
*
* @package workflow.classes.model.om
*/
abstract class BaseAbeResponsesPeer
{
/** the default database name for this class */
const DATABASE_NAME = 'workflow';
/** the table name for this class */
const TABLE_NAME = 'ABE_RESPONSES';
/** A class that can be returned by this peer. */
const CLASS_DEFAULT = 'classes.model.AbeResponses';
/** 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 ABE_RES_UID field */
const ABE_RES_UID = 'ABE_RESPONSES.ABE_RES_UID';
/** the column name for the ABE_REQ_UID field */
const ABE_REQ_UID = 'ABE_RESPONSES.ABE_REQ_UID';
/** the column name for the ABE_RES_CLIENT_IP field */
const ABE_RES_CLIENT_IP = 'ABE_RESPONSES.ABE_RES_CLIENT_IP';
/** the column name for the ABE_RES_DATA field */
const ABE_RES_DATA = 'ABE_RESPONSES.ABE_RES_DATA';
/** the column name for the ABE_RES_DATE field */
const ABE_RES_DATE = 'ABE_RESPONSES.ABE_RES_DATE';
/** the column name for the ABE_RES_STATUS field */
const ABE_RES_STATUS = 'ABE_RESPONSES.ABE_RES_STATUS';
/** the column name for the ABE_RES_MESSAGE field */
const ABE_RES_MESSAGE = 'ABE_RESPONSES.ABE_RES_MESSAGE';
/** 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 ('AbeResUid', 'AbeReqUid', 'AbeResClientIp', 'AbeResData', 'AbeResDate', 'AbeResStatus', 'AbeResMessage', ),
BasePeer::TYPE_COLNAME => array (AbeResponsesPeer::ABE_RES_UID, AbeResponsesPeer::ABE_REQ_UID, AbeResponsesPeer::ABE_RES_CLIENT_IP, AbeResponsesPeer::ABE_RES_DATA, AbeResponsesPeer::ABE_RES_DATE, AbeResponsesPeer::ABE_RES_STATUS, AbeResponsesPeer::ABE_RES_MESSAGE, ),
BasePeer::TYPE_FIELDNAME => array ('ABE_RES_UID', 'ABE_REQ_UID', 'ABE_RES_CLIENT_IP', 'ABE_RES_DATA', 'ABE_RES_DATE', 'ABE_RES_STATUS', 'ABE_RES_MESSAGE', ),
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 ('AbeResUid' => 0, 'AbeReqUid' => 1, 'AbeResClientIp' => 2, 'AbeResData' => 3, 'AbeResDate' => 4, 'AbeResStatus' => 5, 'AbeResMessage' => 6, ),
BasePeer::TYPE_COLNAME => array (AbeResponsesPeer::ABE_RES_UID => 0, AbeResponsesPeer::ABE_REQ_UID => 1, AbeResponsesPeer::ABE_RES_CLIENT_IP => 2, AbeResponsesPeer::ABE_RES_DATA => 3, AbeResponsesPeer::ABE_RES_DATE => 4, AbeResponsesPeer::ABE_RES_STATUS => 5, AbeResponsesPeer::ABE_RES_MESSAGE => 6, ),
BasePeer::TYPE_FIELDNAME => array ('ABE_RES_UID' => 0, 'ABE_REQ_UID' => 1, 'ABE_RES_CLIENT_IP' => 2, 'ABE_RES_DATA' => 3, 'ABE_RES_DATE' => 4, 'ABE_RES_STATUS' => 5, 'ABE_RES_MESSAGE' => 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/AbeResponsesMapBuilder.php';
return BasePeer::getMapBuilder('classes.model.map.AbeResponsesMapBuilder');
}
/**
* 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 = AbeResponsesPeer::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. AbeResponsesPeer::COLUMN_NAME).
* @return string
*/
public static function alias($alias, $column)
{
return str_replace(AbeResponsesPeer::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(AbeResponsesPeer::ABE_RES_UID);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_REQ_UID);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_CLIENT_IP);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_DATA);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_DATE);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_STATUS);
$criteria->addSelectColumn(AbeResponsesPeer::ABE_RES_MESSAGE);
}
const COUNT = 'COUNT(ABE_RESPONSES.ABE_RES_UID)';
const COUNT_DISTINCT = 'COUNT(DISTINCT ABE_RESPONSES.ABE_RES_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(AbeResponsesPeer::COUNT_DISTINCT);
} else {
$criteria->addSelectColumn(AbeResponsesPeer::COUNT);
}
// just in case we're grouping: add those columns to the select statement
foreach ($criteria->getGroupByColumns() as $column) {
$criteria->addSelectColumn($column);
}
$rs = AbeResponsesPeer::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 AbeResponses
* @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 = AbeResponsesPeer::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 AbeResponsesPeer::populateObjects(AbeResponsesPeer::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;
AbeResponsesPeer::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 = AbeResponsesPeer::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 AbeResponsesPeer::CLASS_DEFAULT;
}
/**
* Method perform an INSERT on the database, given a AbeResponses or Criteria object.
*
* @param mixed $values Criteria or AbeResponses 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 AbeResponses 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 AbeResponses or Criteria object.
*
* @param mixed $values Criteria or AbeResponses object containing data that is used to create the UPDATE statement.
* @param Connection $con The connection to use (specify Connection object to 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(AbeResponsesPeer::ABE_RES_UID);
$selectCriteria->add(AbeResponsesPeer::ABE_RES_UID, $criteria->remove(AbeResponsesPeer::ABE_RES_UID), $comparison);
} else {
// $values is AbeResponses object
$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 ABE_RESPONSES 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(AbeResponsesPeer::TABLE_NAME, $con);
$con->commit();
return $affectedRows;
} catch (PropelException $e) {
$con->rollback();
throw $e;
}
}
/**
* Method perform a DELETE on the database, given a AbeResponses or Criteria object OR a primary key value.
*
* @param mixed $values Criteria or AbeResponses 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(AbeResponsesPeer::DATABASE_NAME);
}
if ($values instanceof Criteria) {
$criteria = clone $values; // rename for clarity
} elseif ($values instanceof AbeResponses) {
$criteria = $values->buildPkeyCriteria();
} else {
// it must be the primary key
$criteria = new Criteria(self::DATABASE_NAME);
$criteria->add(AbeResponsesPeer::ABE_RES_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 AbeResponses 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 AbeResponses $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(AbeResponses $obj, $cols = null)
{
$columns = array();
if ($cols) {
$dbMap = Propel::getDatabaseMap(AbeResponsesPeer::DATABASE_NAME);
$tableMap = $dbMap->getTable(AbeResponsesPeer::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(AbeResponsesPeer::DATABASE_NAME, AbeResponsesPeer::TABLE_NAME, $columns);
}
/**
* Retrieve a single object by pkey.
*
* @param mixed $pk the primary key.
* @param Connection $con the connection to use
* @return AbeResponses
*/
public static function retrieveByPK($pk, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$criteria = new Criteria(AbeResponsesPeer::DATABASE_NAME);
$criteria->add(AbeResponsesPeer::ABE_RES_UID, $pk);
$v = AbeResponsesPeer::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(AbeResponsesPeer::ABE_RES_UID, $pks, Criteria::IN);
$objs = AbeResponsesPeer::doSelect($criteria, $con);
}
return $objs;
}
}
// BaseAbeResponsesPeer
// 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 {
BaseAbeResponsesPeer::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/AbeResponsesMapBuilder.php';
Propel::registerMapBuilder('classes.model.map.AbeResponsesMapBuilder');
}

View File

@@ -0,0 +1,44 @@
propel.targetPackage = classes.model
propel.packageObjectModel = true
propel.project = actionsByEmail
propel.database = mysql
propel.database.createUrl = mysql://root@localhost/
propel.database.url = mysql://root@localhost/actionsByEmail
propel.addGenericAccessors = true
propel.addGenericMutators = true
propel.addTimeStamp = false
propel.schema.validate = false
; directories
propel.home = .
propel.output.dir = .
propel.schema.dir = ${propel.output.dir}config
propel.conf.dir = ${propel.output.dir}config
propel.phpconf.dir = ${propel.output.dir}config
propel.sql.dir = ${propel.output.dir}data/sql
propel.runtime.conf.file = runtime-conf.xml
propel.php.dir = ${propel.output.dir}
propel.default.schema.basename = schema
propel.datadump.mapper.from = *schema.xml
propel.datadump.mapper.to = *data.xml
; builder settings
;_propel.builder.peer.class = addon.propel.builder.SfPeerBuilder
;propel.builder.object.class = addon.propel.builder.SfObjectBuilder
;propel.builder.objectstub.class = addon.propel.builder.SfExtensionObjectBuilder
;propel.builder.peerstub.class = addon.propel.builder.SfExtensionPeerBuilder
;propel.builder.objectmultiextend.class = addon.propel.builder.SfMultiExtendObjectBuilder
;propel.builder.mapbuilder.class = addon.propel.builder.SfMapBuilderBuilder
propel.builder.interface.class = propel.engine.builder.om.php5.PHP5InterfaceBuilder
propel.builder.node.class = propel.engine.builder.om.php5.PHP5NodeBuilder
propel.builder.nodepeer.class = propel.engine.builder.om.php5.PHP5NodePeerBuilder
propel.builder.nodestub.class = propel.engine.builder.om.php5.PHP5ExtensionNodeBuilder
propel.builder.nodepeerstub.class = propel.engine.builder.om.php5.PHP5ExtensionNodePeerBuilder
propel.builder.addIncludes = false
propel.builder.addComments = false
propel.builder.addBehaviors = false

View File

@@ -0,0 +1,44 @@
propel.targetPackage = model
propel.packageObjectModel = true
propel.project = actionsByEmail
propel.database = mysql
propel.database.createUrl = mysql://root@localhost/
propel.database.url = mysql://root@localhost/actionsByEmail
propel.addGenericAccessors = true
propel.addGenericMutators = true
propel.addTimeStamp = false
propel.schema.validate = false
; directories
propel.home = .
propel.output.dir = .
propel.schema.dir = ${propel.output.dir}config
propel.conf.dir = ${propel.output.dir}config
propel.phpconf.dir = ${propel.output.dir}config
propel.sql.dir = ${propel.output.dir}data/mysql
propel.runtime.conf.file = runtime-conf.xml
propel.php.dir = ${propel.output.dir}
propel.default.schema.basename = schema
propel.datadump.mapper.from = *schema.xml
propel.datadump.mapper.to = *data.xml
; builder settings
;_propel.builder.peer.class = addon.propel.builder.SfPeerBuilder
;propel.builder.object.class = addon.propel.builder.SfObjectBuilder
;propel.builder.objectstub.class = addon.propel.builder.SfExtensionObjectBuilder
;propel.builder.peerstub.class = addon.propel.builder.SfExtensionPeerBuilder
;propel.builder.objectmultiextend.class = addon.propel.builder.SfMultiExtendObjectBuilder
;propel.builder.mapbuilder.class = addon.propel.builder.SfMapBuilderBuilder
propel.builder.interface.class = propel.engine.builder.om.php5.PHP5InterfaceBuilder
propel.builder.node.class = propel.engine.builder.om.php5.PHP5NodeBuilder
propel.builder.nodepeer.class = propel.engine.builder.om.php5.PHP5NodePeerBuilder
propel.builder.nodestub.class = propel.engine.builder.om.php5.PHP5ExtensionNodeBuilder
propel.builder.nodepeerstub.class = propel.engine.builder.om.php5.PHP5ExtensionNodePeerBuilder
propel.builder.addIncludes = false
propel.builder.addComments = false
propel.builder.addBehaviors = false

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,328 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Autogenerated by CreoleToXMLSchema!-->
<database name="workflow">
<table name="ABE_CONFIGURATION">
<vendor type="mysql">
<parameter name="Name" value="ABE_CONFIGURATION"/>
<parameter name="Engine" value="MyISAM"/>
<parameter name="Version" value="10"/>
<parameter name="Row_format" value="Dynamic"/>
<parameter name="Auto_increment" value=""/>
<parameter name="Collation" value="utf8_general_ci"/>
<parameter name="Create_options" value=""/>
<parameter name="Comment" value="The plugin table for actionsByEmail"/>
</vendor>
<column name="ABE_UID" type="VARCHAR" size="32" required="true" primaryKey="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value="PRI"/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="PRO_UID" type="VARCHAR" size="32" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="PRO_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="TAS_UID" type="VARCHAR" size="32" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="TAS_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_TYPE" type="VARCHAR" size="10" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_TYPE"/>
<parameter name="Type" value="varchar(10)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_TEMPLATE" type="VARCHAR" size="100" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_TEMPLATE"/>
<parameter name="Type" value="varchar(100)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_DYN_TYPE" type="VARCHAR" size="10" required="true" default="NORMAL">
<vendor type="mysql">
<parameter name="Field" value="ABE_DYN_TYPE"/>
<parameter name="Type" value="varchar(10)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value="NORMAL"/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="DYN_UID" type="VARCHAR" size="32" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="DYN_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_EMAIL_FIELD" type="VARCHAR" size="255" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_ACTION_FIELD"/>
<parameter name="Type" value="varchar(255)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_ACTION_FIELD" type="VARCHAR" size="255" required="false" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_ACTION_FIELD"/>
<parameter name="Type" value="varchar(255)"/>
<parameter name="Null" value="YES"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_CASE_NOTE_IN_RESPONSE" type="INTEGER" required="false" default="0">
<vendor type="mysql">
<parameter name="Field" value="ABE_CASE_NOTE_IN_RESPONSE"/>
<parameter name="Type" value="int(1)"/>
<parameter name="Null" value="YES"/>
<parameter name="Key" value=""/>
<parameter name="Default" value="0"/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_CREATE_DATE" type="TIMESTAMP" required="true">
<vendor type="mysql">
<parameter name="Field" value="ABE_CREATE_DATE"/>
<parameter name="Type" value="datetime"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_UPDATE_DATE" type="TIMESTAMP" required="false">
<vendor type="mysql">
<parameter name="Field" value="ABE_CREATE_UPDATE"/>
<parameter name="Type" value="datetime"/>
<parameter name="Null" value="YES"/>
<parameter name="Key" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
</table>
<table name="ABE_REQUESTS">
<vendor type="mysql">
<parameter name="Name" value="ABE_REQUESTS"/>
<parameter name="Engine" value="MyISAM"/>
<parameter name="Version" value="10"/>
<parameter name="Row_format" value="Dynamic"/>
<parameter name="Auto_increment" value=""/>
<parameter name="Collation" value="utf8_general_ci"/>
<parameter name="Create_options" value=""/>
<parameter name="Comment" value="The plugin table for actionsByEmail"/>
</vendor>
<column name="ABE_REQ_UID" type="VARCHAR" size="32" required="true" primaryKey="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value="PRI"/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_UID" type="VARCHAR" size="32" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="APP_UID" type="VARCHAR" size="32" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="APP_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="DEL_INDEX" type="INTEGER" required="true" default="0">
<vendor type="mysql">
<parameter name="Field" value="DEL_INDEX"/>
<parameter name="Type" value="int(11)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value="0"/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_REQ_SENT_TO" type="VARCHAR" size="100" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_SENT_TO"/>
<parameter name="Type" value="varchar(100)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_REQ_SUBJECT" type="VARCHAR" size="150" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_SUBJECT"/>
<parameter name="Type" value="varchar(150)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_REQ_BODY" type="LONGVARCHAR" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_BODY"/>
<parameter name="Type" value="MEDIUMTEXT"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_REQ_DATE" type="TIMESTAMP" required="true">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_DATE"/>
<parameter name="Type" value="datetime"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_REQ_STATUS" type="VARCHAR" size="10" required="false" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_STATUS"/>
<parameter name="Type" value="varchar(10)"/>
<parameter name="Null" value="YES"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_REQ_ANSWERED" type="TINYINT" required="true" default="0">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_ANSWERED"/>
<parameter name="Type" value="TINYINT"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value="0"/>
<parameter name="Extra" value=""/>
</vendor>
</column>
</table>
<table name="ABE_RESPONSES">
<vendor type="mysql">
<parameter name="Name" value="ABE_RESPONSES"/>
<parameter name="Engine" value="MyISAM"/>
<parameter name="Version" value="10"/>
<parameter name="Row_format" value="Dynamic"/>
<parameter name="Auto_increment" value=""/>
<parameter name="Collation" value="utf8_general_ci"/>
<parameter name="Create_options" value=""/>
<parameter name="Comment" value="The plugin table for actionsByEmail"/>
</vendor>
<column name="ABE_RES_UID" type="VARCHAR" size="32" required="true" primaryKey="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_RES_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value="PRI"/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_REQ_UID" type="VARCHAR" size="32" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_REQ_UID"/>
<parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_RES_CLIENT_IP" type="VARCHAR" size="20" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_RES_CLIENT_IP"/>
<parameter name="Type" value="varchar(20)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_RES_DATA" type="LONGVARCHAR" required="true" default="0">
<vendor type="mysql">
<parameter name="Field" value="ABE_RES_DATA"/>
<parameter name="Type" value="text"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value="0"/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_RES_DATE" type="TIMESTAMP" required="true">
<vendor type="mysql">
<parameter name="Field" value="ABE_RES_DATE"/>
<parameter name="Type" value="datetime"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_RES_STATUS" type="VARCHAR" size="10" required="true" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_RES_STATUS"/>
<parameter name="Type" value="varchar(10)"/>
<parameter name="Null" value="NO"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
<column name="ABE_RES_MESSAGE" type="VARCHAR" size="255" required="false" default="">
<vendor type="mysql">
<parameter name="Field" value="ABE_RES_MESSAGE"/>
<parameter name="Type" value="varchar(255)"/>
<parameter name="Null" value="YES"/>
<parameter name="Key" value=""/>
<parameter name="Default" value=""/>
<parameter name="Extra" value=""/>
</vendor>
</column>
</table>
</database>

View File

@@ -0,0 +1,52 @@
<form id="{$form_id}" name="" action="{$form_action}" class="{$form_className}" method="post" encType="multipart/form-data" style="margin:0px;" onsubmit="return validateForm('{$form_objectRequiredFields}');"> <div class="borderForm" style="width:{$form_width}; padding-left:0; padding-right:0; border-width:{$form_border};">
<div class="boxTop"><div class="a"></div><div class="b"></div><div class="c"></div></div>
<div class="content" style="height:{$form_height};" >
<table width="99%">
<tr>
<td valign='top'>
<input type="hidden" class="notValidateThisFields" name="__notValidateThisFields__" id="__notValidateThisFields__" value="{$form_objectRequiredFields}" />
<input type="hidden" name="DynaformRequiredFields" id="DynaformRequiredFields" value="{$form_objectRequiredFields}" />
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr style="display: none">
<td colspan="2">{$form.IFORM}{$form.INDEX}{$form.ABE_UID}{$form.PRO_UID}{$form.TAS_UID}{$form.SYS_LANG}{$form.ABE_EMAIL_FIELD_VALUE}{$form.ABE_ACTION_FIELD_VALUE}</td>
</tr>
<tr>
<td class='FormLabel' width="{$form_labelWidth}">{$ABE_TYPE}</td>
<td class='FormFieldContent' width='{$form_fieldContentWidth}' >{$form.ABE_TYPE}</td>
</tr>
<tr>
<td class='FormLabel' width="{$form_labelWidth}"><font color="red">* </font>{$ABE_TEMPLATE}</td>
<td class='FormFieldContent' width='{$form_fieldContentWidth}' >{$form.ABE_TEMPLATE} {$form.EDIT}</td>
</tr>
<tr>
<td class='FormLabel' width="{$form_labelWidth}"><font color="red">* </font>{$DYN_UID}</td>
<td class='FormFieldContent' width='{$form_fieldContentWidth}' >{$form.DYN_UID}</td>
</tr>
<tr>
<td class='FormLabel' width="{$form_labelWidth}">{$ABE_EMAIL_FIELD}</td>
<td class='FormFieldContent' width='{$form_fieldContentWidth}' >{$form.ABE_EMAIL_FIELD}</td>
</tr>
<tr style="display: none;">
<td class='FormLabel' width="{$form_labelWidth}"><font color="red">* </font>{$ABE_ACTION_FIELD}</td>
<td class='FormFieldContent' width='{$form_fieldContentWidth}' >{$form.ABE_ACTION_FIELD}</td>
</tr>
<tr>
<td class='FormLabel' width="{$form_labelWidth}"></td>
<td>{$form.ABE_CASE_NOTE_IN_RESPONSE}</td>
</tr>
<tr>
<td class='FormButton' colspan="2" align="center">{$form.APPLY_CHANGES}</td>
</tr>
</table>
</td>
</tr>
</table>
<div class="FormRequiredTextMessage"><font color="red">* </font> {$REQUIRED_LABEL}</div> </div>
<div class="boxBottom"><div class="a"></div><div class="b"></div><div class="c"></div></div>
</div>
<script type="text/javascript">
{$form.JS}
</script>
</form>

View File

@@ -0,0 +1,67 @@
<?php
set_include_path(PATH_PLUGINS . 'actionsByEmail' . PATH_SEPARATOR . get_include_path());
require_once 'classes/model/AbeConfiguration.php';
// Get the configuration for the current task
if (isset($_REQUEST['data'])) {
$data = G::json_decode(stripslashes($_REQUEST['data']));
} else {
// ToDo: Trigger a error
}
$task = new Task();
$taskFields = $task->load($data->uid);
$criteria = new Criteria();
$criteria->add(AbeConfigurationPeer::PRO_UID, $taskFields['PRO_UID']);
$criteria->add(AbeConfigurationPeer::TAS_UID, $data->uid);
$result = AbeConfigurationPeer::doSelectRS($criteria);
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result->next();
if ($configuration = $result->getRow()) {
$configuration['ABE_EMAIL_FIELD_VALUE'] = $configuration['ABE_EMAIL_FIELD'];
$configuration['ABE_ACTION_FIELD_VALUE'] = $configuration['ABE_ACTION_FIELD'];
} else {
$configuration = array();
}
$configuration['PRO_UID'] = $taskFields['PRO_UID'];
$configuration['TAS_UID'] = $taskFields['TAS_UID'];
$configuration['SYS_LANG'] = SYS_LANG;
$configuration['IFORM'] = $data->iForm;
$configuration['INDEX'] = $data->index;
$templates = array();
$templates[] = 'dummy';
$path = PATH_DATA_MAILTEMPLATES . $taskFields['PRO_UID'] . PATH_SEP;
G::verifyPath($path, true);
if (defined('PARTNER_FLAG')) {
if (!file_exists($path . 'actionsByEmailPartner.html')) {
@copy(PATH_PLUGINS . 'actionsByEmail' . PATH_SEP . 'data' . PATH_SEP . 'actionsByEmailPartner.html', $path . 'actionsByEmail.html');
}
} else {
if (!file_exists($path . 'actionsByEmail.html')) {
@copy(PATH_PLUGINS . 'actionsByEmail' . PATH_SEP . 'data' . PATH_SEP . 'actionsByEmail.html', $path . 'actionsByEmail.html');
}
}
$directory = dir($path);
while ($object = $directory->read()) {
if (($object !== '.') && ($object !== '..') && ($object !== 'alert_message.html')) {
$templates[] = array('FILE' => $object, 'NAME' => $object);
}
}
global $_DBArray;
$_DBArray['ABE_TEMPLATES'] = $templates;
$_SESSION['_DBArray'] = $_DBArray;
// Render the form
global $G_PUBLISH;
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'actionsByEmail/configActionsByEmail', null, $configuration);

View File

@@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8"?>
<dynaForm type="xmlform" name="" width="550" height="300" enabletemplate="1" mode="edit" labelWidth="150">
<IFORM type="hidden"/>
<INDEX type="hidden"/>
<ABE_UID type="hidden"/>
<PRO_UID type="hidden"/>
<TAS_UID type="hidden"/>
<SYS_LANG type="hidden"/>
<ABE_EMAIL_FIELD_VALUE type="hidden"/>
<ABE_ACTION_FIELD_VALUE type="hidden"/>
<ABE_TYPE type="dropdown" required="0" defaultValue="text">
<en>Type
<option name="">- None -</option>
<option name="LINK">Link to fill a form</option>
<option name="FIELD">Use a field to generate actions links</option>
</en>
<pt-BR><![CDATA[Tipo]]><option name=""><![CDATA[- Nenhum -]]></option><option name="LINK"><![CDATA[Link para preencher um formulário]]></option><option name="FIELD"><![CDATA[Usar um campo para gerar links ações]]></option></pt-BR>
</ABE_TYPE>
<ABE_TEMPLATE type="dropdown" required="1" sqlconnection="dbarray" colWidth="30" titleAlign="left">
SELECT FILE, NAME FROM ABE_TEMPLATES
<en>Template
<option name=""> - Selec a Template - </option>
</en>
<pt-BR><![CDATA[Modelo]]><option name=""><![CDATA[- Escolha um modelo -]]></option></pt-BR></ABE_TEMPLATE>
<EDIT type="link" colWidth="40" value="@G::LoadTranslation(ID_EDIT)" link="#" onclick="editTemplateABE();"/>
<DYN_UID type="dropdown" required="1" readonly="0" mode="edit" btn_cancel="Cancel"><![CDATA[SELECT DYN_UID, C.CON_VALUE AS DYN_TITLE FROM DYNAFORM LEFT JOIN CONTENT AS C ON (DYN_UID = C.CON_ID AND C.CON_CATEGORY='DYN_TITLE' AND C.CON_LANG = '@#SYS_LANG') WHERE PRO_UID = '@#PRO_UID' AND DYN_TYPE = 'xmlform' ORDER BY DYN_TITLE ASC]]><en>Dynaform
<option name="">- Select a Dynaform -</option>
</en><pt-BR><![CDATA[Formulário Dinâmico]]><option name=""><![CDATA[- Escolha um Formulário Dinâmico -]]></option></pt-BR></DYN_UID>
<ABE_EMAIL_FIELD type="dropdown" required="0">
<en>Field with the email
<option name="">- Send to the email of the assigned user to the task -</option>
</en>
<pt-BR><![CDATA[Campo com o e-mail]]><option name=""><![CDATA[- Enviar para o e-mail do usuário atribuído à tarefa -]]></option></pt-BR>
</ABE_EMAIL_FIELD>
<ABE_ACTION_FIELD type="dropdown" required="0">
<en>Field to Send in the Email
<option name=""> - Select a Field - </option>
</en>
<pt-BR><![CDATA[Campo de enviar o e-mail]]><option name=""><![CDATA[- Escolha um campo -]]></option></pt-BR>
</ABE_ACTION_FIELD>
<ABE_CASE_NOTE_IN_RESPONSE type="checkbox" value="1" falsevalue="0" defaultvalue="0" readonly="0" labelonright="1" enablehtml="0" btn_cancel="Cancel" hint="" required="0" savelabel="0">
<en>Register a Case Note when the recipient submits the Response</en>
<pt-BR><![CDATA[Registrar um caso de nota quando o destinatário envia a resposta]]></pt-BR>
</ABE_CASE_NOTE_IN_RESPONSE>
<APPLY_CHANGES type="button" onclick="saveConfigurationABE();">
<en>Apply Changes</en>
<pt-BR><![CDATA[Aplicar alterações]]></pt-BR>
</APPLY_CHANGES>
<REQUIRED_LABEL type="text">
<pt-BR><![CDATA[Campo obrigatório]]></pt-BR>
<en><![CDATA[Required Field]]></en>
</REQUIRED_LABEL>
<JS type="javascript"><![CDATA[
var loadFieldsABE = function() {
var rpc = new leimnud.module.rpc.xmlhttp({
url: '../actionsByEmail/actionsByEmailAjax',
args: 'action=loadFields&PRO_UID=' + Pm.options.uid + '&DYN_UID=' + getField('DYN_UID').value
});
rpc.callback = function(rpc) {
var response = rpc.xmlhttp.responseText.parseJSON();
var ABE_EMAIL_FIELD = getField('ABE_EMAIL_FIELD');
ABE_EMAIL_FIELD.options.length = 0;
ABE_EMAIL_FIELD.options.add(new Option('- Send to the email of the assigned user to the task -', ''));
ABE_EMAIL_FIELD.selectedIndex = 0;
for (i = 0; i < response.emailFields.length; i++) {
ABE_EMAIL_FIELD.options.add(new Option(response.emailFields[i].label, response.emailFields[i].value));
}
ABE_EMAIL_FIELD.value = getField('ABE_EMAIL_FIELD_VALUE').value;
var ABE_ACTION_FIELD = getField('ABE_ACTION_FIELD');
ABE_ACTION_FIELD.options.length = 0;
ABE_ACTION_FIELD.options.add(new Option('- Select a Field -', ''));
ABE_ACTION_FIELD.selectedIndex = 0;
for (i = 0; i < response.actionFields.length; i++) {
ABE_ACTION_FIELD.options.add(new Option(response.actionFields[i].label, response.actionFields[i].value));
}
ABE_ACTION_FIELD.value = getField('ABE_ACTION_FIELD_VALUE').value;
};
rpc.make();
};
var editTemplateABE = function() {
if(getField('ABE_TEMPLATE').value == '') {
setFocus(getField('ABE_TEMPLATE'));
alert('Select a Template');
return false;
}
oPanel = new leimnud.module.panel;
oPanel.options = {
limit : true,
size : {w: 800, h: 600},
position: {x: 50, y: 50, center: true},
title : '',
control : {close: true, resize: false},
fx : {shadow: true, modal: true}
};
oPanel.make();
var oRPC = new leimnud.module.rpc.xmlhttp({
url: '../actionsByEmail/actionsByEmailAjax',
args: 'action=editTemplate&PRO_UID=' + Pm.options.uid + '&TEMPLATE=' + getField('ABE_TEMPLATE').value
});
oPanel.loader.show();
oRPC.callback = function (rpc) {
oPanel.loader.hide();
oPanel.addContent(rpc.xmlhttp.responseText);
var scs = rpc.xmlhttp.responseText.extractScript();scs.evalScript();
}.extend(this);
oRPC.make();
};
var saveConfigurationABE = function() {
if(getField('ABE_TYPE').value != '') {
if(getField('ABE_TEMPLATE').value == '') {
setFocus(getField('ABE_TEMPLATE'));
alert('Select a Template');
return false;
}
if(getField('DYN_UID').value == '') {
setFocus(getField('DYN_UID'));
alert('Select a DynaForm');
return false;
}
if(getField('ABE_TYPE').value == 'FIELD') {
if(getField('ABE_ACTION_FIELD').value == '') {
setFocus(getField('ABE_ACTION_FIELD'));
alert('Select the field to Send in the Email');
return false;
}
}
}
var rpc = new leimnud.module.rpc.xmlhttp({
url: '../actionsByEmail/actionsByEmailAjax',
args: 'action=saveConfiguration' +
'&ABE_UID=' + getField('ABE_UID').value +
'&PRO_UID=' + Pm.options.uid +
'&TAS_UID=' + getField('TAS_UID').value +
'&ABE_TYPE=' + getField('ABE_TYPE').value +
'&ABE_TEMPLATE=' + getField('ABE_TEMPLATE').value +
'&DYN_UID=' + getField('DYN_UID').value +
'&ABE_EMAIL_FIELD=' + getField('ABE_EMAIL_FIELD').value +
'&ABE_ACTION_FIELD=' + getField('ABE_ACTION_FIELD').value +
'&ABE_CASE_NOTE_IN_RESPONSE=' + (getField('ABE_CASE_NOTE_IN_RESPONSE').checked ? 1 : 0)
});
rpc.callback = function(rpc) {
var response = rpc.xmlhttp.responseText.parseJSON();
if (response.status == 'OK') {
getField('ABE_UID').value = response.ABE_UID;
alert('Changes saved.');
}
else {
alert(response.message);
}
};
rpc.make();
};
leimnud.event.add(getField('ABE_TYPE'), 'change', function() {
switch (getField('ABE_TYPE').value) {
case '':
hideRowById('ABE_TEMPLATE');
hideRowById('DYN_UID');
hideRowById('ABE_EMAIL_FIELD');
hideRowById('ABE_ACTION_FIELD');
hideRowById('ABE_CASE_NOTE_IN_RESPONSE');
break;
case 'LINK':
showRowById('ABE_TEMPLATE');
showRowById('DYN_UID');
showRowById('ABE_EMAIL_FIELD');
hideRowById('ABE_ACTION_FIELD');
showRowById('ABE_CASE_NOTE_IN_RESPONSE');
break;
case 'FIELD':
showRowById('ABE_TEMPLATE');
showRowById('DYN_UID');
showRowById('ABE_EMAIL_FIELD');
showRowById('ABE_ACTION_FIELD');
showRowById('ABE_CASE_NOTE_IN_RESPONSE');
break;
}
});
leimnud.event.add(getField('DYN_UID'), 'change', function() {
loadFieldsABE();
});
switch (getField('ABE_TYPE').value) {
case '':
hideRowById('ABE_TEMPLATE');
hideRowById('DYN_UID');
hideRowById('ABE_EMAIL_FIELD');
hideRowById('ABE_ACTION_FIELD');
hideRowById('ABE_CASE_NOTE_IN_RESPONSE');
break;
case 'LINK':
showRowById('ABE_TEMPLATE');
showRowById('DYN_UID');
showRowById('ABE_EMAIL_FIELD');
hideRowById('ABE_ACTION_FIELD');
showRowById('ABE_CASE_NOTE_IN_RESPONSE');
break;
case 'FIELD':
showRowById('ABE_TEMPLATE');
showRowById('DYN_UID');
showRowById('ABE_EMAIL_FIELD');
showRowById('ABE_ACTION_FIELD');
showRowById('ABE_CASE_NOTE_IN_RESPONSE');
break;
}
if (getField('DYN_UID').value != '') {
loadFieldsABE();
}
]]></JS>
</dynaForm>

View File

@@ -0,0 +1,18 @@
<table style="background-color: white; font-family: Arial,Helvetica,sans-serif; color: black; font-size: 11px; text-align: left;" cellpadding="10" cellspacing="0" width="100%">
<tr>
<td style="font-size: 14px;"><b>ACTIONS BY EMAIL</b></td>
</tr>
<tr>
<td style="vertical-align:middle;">
<hr>
<br />
@#__ABE__
<br />
<br />
<hr><b>This Business Process is powered by ProcessMaker.<b>
<br />
<a href="http://www.processmaker.com" style="color:#c40000;">www.processmaker.com</a>
<br />
</td>
</tr>
</table>

View File

@@ -0,0 +1,18 @@
<table style="background-color: white; font-family: Arial,Helvetica,sans-serif; color: black; font-size: 11px; text-align: left;" cellpadding="10" cellspacing="0" width="100%">
<tr>
<td style="font-size: 14px;"><b>AÇÕES POR EMAIL</b></td>
</tr>
<tr>
<td style="vertical-align:middle;">
<hr>
<br />
@#__ABE__
<br />
<br />
<hr><b>Este processo de negócio é alimentado por DocSystem.<b>
<br />
<a href="http://www.docsystemcorp.com/" style="color:#c40000;">www.docsystemcorp.com</a>
<br />
</td>
</tr>
</table>

View File

@@ -0,0 +1,58 @@
#-----------------------------------------------------------------------------
#-- ABE_CONFIGURATION
#-----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `ABE_CONFIGURATION`
(
`ABE_UID` VARCHAR(32) default '' NOT NULL,
`PRO_UID` VARCHAR(32) default '' NOT NULL,
`TAS_UID` VARCHAR(32) default '' NOT NULL,
`ABE_TYPE` VARCHAR(10) default '' NOT NULL,
`ABE_TEMPLATE` VARCHAR(100) default '' NOT NULL,
`ABE_DYN_TYPE` VARCHAR(10) default '' NOT NULL,
`DYN_UID` VARCHAR(32) default '' NOT NULL,
`ABE_EMAIL_FIELD` VARCHAR(255) default '' NOT NULL,
`ABE_ACTION_FIELD` VARCHAR(255) default '' ,
`ABE_CASE_NOTE_IN_RESPONSE` INTEGER default 0 NOT NULL,
`ABE_CREATE_DATE` DATETIME NOT NULL,
`ABE_UPDATE_DATE` DATETIME,
PRIMARY KEY (`ABE_UID`),
KEY `indexApp`(`PRO_UID`)
)Engine=MyISAM DEFAULT CHARSET='utf8' COMMENT='The application folder in Action By Email';
#-----------------------------------------------------------------------------
#-- ABE_REQUESTS
#-----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `ABE_REQUESTS`
(
`ABE_REQ_UID` VARCHAR(32) default '' NOT NULL,
`ABE_UID` VARCHAR(32) default '' NOT NULL,
`APP_UID` VARCHAR(32) default '' NOT NULL,
`DEL_INDEX` INTEGER default 0 NOT NULL,
`ABE_REQ_SENT_TO` VARCHAR(100) default '' NOT NULL,
`ABE_REQ_SUBJECT` VARCHAR(150) default '' NOT NULL,
`ABE_REQ_BODY` MEDIUMTEXT NOT NULL,
`ABE_REQ_DATE` DATETIME NOT NULL,
`ABE_REQ_STATUS` VARCHAR(10) default '',
`ABE_REQ_ANSWERED` TINYINT NOT NULL,
PRIMARY KEY (`ABE_REQ_UID`),
KEY `indexApp`(`ABE_UID`)
)Engine=MyISAM DEFAULT CHARSET='utf8' COMMENT='The Process folder in Action By Email';
#-----------------------------------------------------------------------------
#-- ABE_RESPONSES
#-----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `ABE_RESPONSES`
(
`ABE_RES_UID` VARCHAR(32) default '' NOT NULL,
`ABE_REQ_UID` VARCHAR(32) default '' NOT NULL,
`ABE_RES_CLIENT_IP` VARCHAR(20) default '' NOT NULL,
`ABE_RES_DATA` TEXT NOT NULL,
`ABE_RES_DATE` DATETIME NOT NULL,
`ABE_RES_STATUS` VARCHAR(10) default '' NOT NULL,
`ABE_RES_MESSAGE` VARCHAR(255) default '',
PRIMARY KEY (`ABE_RES_UID`),
KEY `indexApp`(`ABE_REQ_UID`)
)Engine=MyISAM DEFAULT CHARSET='utf8' COMMENT='The Process folder in Action By Email';

View File

@@ -0,0 +1,2 @@
# Sqlfile -> Database map
schema.sql=workflow

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

View File

@@ -0,0 +1,176 @@
<?php
/**
@mainpage Overview
@dontinclude overview.php
@section Introduction
Actions by Email Plugin es una extensi&oacute;n que permite la derivaci&oacute;n de casos por email en un determinado proceso .
@subpage PAGE_INSTALLATION_CONFIGURATION
- @ref SEC_ACTIONSBYEMAIL_OPTION
@subpage PAGE_EXAMPLE
- @ref SEC_PROCESS_CREATING
- @ref SEC_DYNAFORMGRID
- @ref SEC_CONFIGURATION
- @ref SEC_CASE_RUNNING
@subpage PAGE_REQUERIMENTS
- @ref SEC_PROCESSMAKER_VERSION
@subpage PAGE_GLOSARY
*/
/**
@page PAGE_INSTALLATION_CONFIGURATION Installation and Configuration
- Import the Action by Email plugin on the ADMIN tab.
- Enabled the Plugin.
@section SEC_ACTIONSBYEMAIL_OPTION Actions by Email Option
Una vez habilitado el plugin en propiedades de tarea se podra ver este tab donde se ingresar la informaci&oacute;n
necesaria para el uso del plugin.
<b>Nota</b>
Se debe verificar que en el tab <b>Notifications</b> que la opcion de <b>After routing notify the next assigned user(s).</b>
no este tiqueada, si estuviera el mensaje o template esten llenos y no vacios.
@image html CaseActionsByEmail.png "Actions by Email Option"
<b>Configuration Actions by Email</b>
Se procede a llenar el tab ActionsByEmail con las siguientes consideraciones:
@image html ProcessActions1.png "Configuration ActionsByEmail"
1. <b>Type</b>, se selecciona la forma en la que se enviaran los datos:
- <b>Link to fill a form</b>, enviara todo el formulario a el correo para ser llenado .
- <b>Use a field to generate actions links</b>, generara link de selecci&oacute;n de acuerdo al campo q se elija.
2. <b>Template</b>, selecciona el modelo de email que se enviara, se tiene uno por defecto q es actionsByEmail.html,
a su vez tambien posee la opcion de editar el template con el link edit.
3. <b>Dynaform</b>, seleccionas uno de los formularios que ya tengan creados.
4. <b>Field with the email</b>, es el campo donde se tendra el email que se debe seleccionar obligatoriamente.
5. <b>Field to Send in the Email</b>, esta opci&oacute;n solo se habilita cuando Type esta en Use a field to generate actions link,
aqui seleccionas el campo que se enviara en el email.
6. <b>Register a case note</b>, es la opci&oacute;n para recibir o no emails de aviso cuando se escribe un Case Notes en el proceso.
Finalmente solo presionas Apply Changes par poder guardar o modificar tu configuraci&oacute;n.
*/
/**
@page PAGE_EXAMPLE Example
@section SEC_PROCESS_CREATING Creating a Process
El proceso que se describe a continuación trata de mostrar el uso de este plugin.
Se debe resaltar que este plugin no funciona con Routing Rules Selection (donde el usuario asignado puede seleccionar
manualmente la tarea siguiente)
El proceso de ejemplo contempla cuatro tareas, como muestra el grafico.
@image html Process1.png "Creating a Process"
@section SEC_DYNAFORMGRID DynaForm
Teniendo formularios ya dise&ntilde;ados
@image html ProcessFrm1.png "Dynaform ABE.Form1 - Vista"
@section SEC_CONFIGURATION Configuration Actions by Email
Se procede a llenar el tab ActionsByEmail con las siguientes consideraciones:
@image html ProcessActions1.png "Configuration ActionsByEmail"
1. <b>Type</b>, se selecciona la forma en la que se enviaran los datos:
- <b>Link to fill a form</b>, enviara todo el formulario a el correo para ser llenado .
- <b>Use a field to generate actions links</b>, generara link de selecci&oacute;n de acuerdo al campo q se elija.
2. <b>Template</b>, selecciona el modelo de email que se enviara, se tiene uno por defecto q es actionsByEmail.html,
a su vez tambien posee la opcion de editar el template con el link edit.
3. <b>Dynaform</b>, seleccionas uno de los formularios que ya tengan creados.
4. <b>Field with the email</b>, es el campo donde se tendra el email que se debe seleccionar obligatoriamente.
5. <b>Field to Send in the Email</b>, esta opci&oacute;n solo se habilita cuando Type esta en Use a field to generate actions link,
aqui seleccionas el campo que se enviara en el email.
6. <b>Register a case note</b>, es la opci&oacute;n para recibir o no emails de aviso cuando se escribe un Case Notes en el proceso.
Finalmente solo presionas Apply Changes par poder guardar o modificar tu configuraci&oacute;n.
@image html ProcessActions2.png "Save configuration ActionsByEmail"
@section SEC_CASE_RUNNING Case Running
Bien al iniciar un nuevo caso tenemos lo siguiente:
Recordemos la configuraci&oacute;n para Task1 en este caso para la opci&oacute;n <b>Link to fill a form</b>:
@image html ConfigurationTask1.png "Configuration Task1"
en el correo que llega se debe hacer click en Please fill this form, que nos enviara al formulario para poder llenarlo.
@image html emailTask1.png "Email Task1"
@image html FormTask1.png "Form Task1"
@image html ResponseTask1.png "Response Task1"
Al haber habilitado Register Case Note le llegara otro email
@image html CaseNoteTask1.png "Case Note Task1"
Para verificar esto
@image html VerifyTask1.png "Verify Task1"
Ahora veamos para el caso de <b>Use a field to generate actions links</b>
Recordemos la configuraci&oacute;n para Task2, donde ponemos el campo Seleccione pais.
@image html ConfigurationTask2.png "Configuration Task2"
ahora en el correo se debe seleccionar una de la opciones q se muestra.
@image html emailTask2.png "Email Task2"
@image html ResponseTask2.png "Response Task2"
Para verificar
@image html VerifyTask2.png "Verify Task2"
*/
/**
@page PAGE_REQUERIMENTS Requeriments
@section SEC_PROCESSMAKER_VERSION ProcessMaker Requirements
ProcessMaker V 2.0.37 and later.
*/
/**
@page PAGE_GLOSARY Glosary
*/

View File

@@ -0,0 +1,3 @@
<?php
// ToDo: Render the tracking form, for the next release

View File

@@ -0,0 +1,5 @@
<?php
global $G_TMP_MENU;
$G_TMP_MENU->AddIdRawOption('PM_ACTIONS_BY_EMAIL_LOGS', '../actionsByEmail/ActionByEmail.php', "Actions By Email Log", '', '', 'logs' );

View File

@@ -0,0 +1,9 @@
[actionsByEmail]
name = "Actions by Email"
description = "It allows to perform actions on cases from an email sent to an user, in this first version it allows to fill out a form or select a value from one field to derivate the case later."
pluginFolder = "actionsByEmail"
setupPage = "actionsByEmail"
version = ""
pmVersion = ""
dependencies = ""
workspaces = ""

View File

@@ -0,0 +1,231 @@
var actionsByEmailGrid;
var store;
var win ;
new Ext.KeyMap(document, {
key: Ext.EventObject.F5,
fn: function(keycode, e) {
if (! e.ctrlKey) {
if (Ext.isIE) {
e.browserEvent.keyCode = 8;
}
e.stopEvent();
document.location = document.location;
} else {
Ext.Msg.alert(_('ID_REFRESH_LABEL'), _('ID_REFRESH_MESSAGE'));
}
}
});
Ext.onReady(function(){
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
Ext.QuickTips.init();
store = new Ext.data.GroupingStore( {
proxy : new Ext.data.HttpProxy({
url: '../actionsByEmail/actionsByEmailAjax',
method: 'POST'
}),
reader : new Ext.data.JsonReader( {
totalProperty: 'totalCount',
root: 'data',
fields : [
{name : 'ABE_UID'},
{name : 'ABE_REQ_UID'},
{name : 'APP_UID'},
{name : 'TAS_UID'},
{name : 'ABE_REQ_DATE'},
{name : 'ABE_REQ_SUBJECT'},
{name : 'APP_NUMBER'},
{name : 'USER'},
{name : 'ABE_REQ_SENT_TO'},
{name : 'ABE_REQ_STATUS'},
{name : 'ABE_REQ_ANSWERED'},
{name : 'ABE_RES_MESSAGE'}
]
})
});
store.setBaseParam( 'action', 'loadActionByEmail' );
actionsByEmailGrid = new Ext.grid.GridPanel( {
region: 'center',
layout: 'fit',
id: 'actionsByEmailGrid',
//width:800,
title : '',
stateful : true,
stateId : 'grid',
enableColumnResize: true,
enableHdMenu: true,
frame:false,
columnLines: true,
cm: new Ext.grid.ColumnModel({
defaults: {
sortable: true
},
columns: [
{id: 'ABE_UID', dataIndex: 'ABE_UID', hidden:true, hideable:false},
{header: _('ID_DATE').toUpperCase(), width: 100, dataIndex: 'ABE_REQ_DATE', sortable: true },
{header: "Case Number".toUpperCase(), width: 70, dataIndex: 'APP_NUMBER', sortable: true },
{header: _('ID_SUBJECT').toUpperCase(), width: 150, dataIndex: 'ABE_REQ_SUBJECT', sortable: true },
{header: _('ID_FROM').toUpperCase(), width: 110, dataIndex: 'USER', sortable: true },
{header: _('ID_TO').toUpperCase(), width: 110, dataIndex: 'ABE_REQ_SENT_TO', sortable: true },
{header: _('ID_STATUS').toUpperCase(), width: 40, dataIndex: 'ABE_REQ_STATUS', sortable: true },
{header: "Answered".toUpperCase(), width: 60, dataIndex: 'ABE_REQ_ANSWERED' },
{header: "View Response".toUpperCase(), width: 80, sortable: false, align: 'center', renderer: function(val){ return '<img src="/images/ext/default/s.gif" class="x-tree-node-icon ss_layout_header" unselectable="off" id="extdd-17" onclick="openForm()" '; }, dataIndex: 'somefieldofyourstore'},
{header: "Error message".toUpperCase(), width: 130, dataIndex: 'ABE_RES_MESSAGE',sortable: false }
]
}),
store: store,
tbar:[
{
text: "Resend Email",
iconCls: 'button_menu_ext ss_sprite ss_world',
handler:ForwardEmail
}
],
// paging bar on the bottom
bbar: new Ext.PagingToolbar({
pageSize: 25,
store: store,
displayInfo: true,
displayMsg: _('ID_DISPLATING_ACTIONSBYEMAIL') + ' {0} - {1} ' + _('ID_DISPLAY_OF') + ' {2}'//,
}),
viewConfig: {
forceFit: true
},
listeners: {
render: function(){
this.loadMask = new Ext.LoadMask(this.body, {msg:_('ID_LOADING_GRID')});
}
}
});
store.load({params:{ start : 0 , limit : 25 }});
actionsByEmailGrid.addListener('rowcontextmenu', onMessageContextMenu,this);
actionsByEmailGrid.on('rowcontextmenu', function (grid, rowIndex, evt) {
var sm = grid.getSelectionModel();
sm.selectRow(rowIndex, sm.isSelected(rowIndex));
var rowSelected = Ext.getCmp('actionsByEmailGrid').getSelectionModel().getSelected();
}, this);
actionsByEmailGrid.on('contextmenu', function (evt) {
evt.preventDefault();
}, this);
function onMessageContextMenu(grid, rowIndex, e) {
e.stopEvent();
var coords = e.getXY();
messageContextMenu.showAt([coords[0], coords[1]]);
}
var viewport = new Ext.Viewport({
layout: 'border',
autoScroll: true,
items: [
actionsByEmailGrid
]
});
});
function openForm(){
var rows = actionsByEmailGrid.getSelectionModel().getSelections();
var REQ_UID = '';
var ids = '';
for (i=0; i<rows.length; i++) {
if (i != 0 ) {
ids += ',';
}
ids += rows[i].get('APP_NUMBER') + ', ';
ids += rows[i].get('ABE_REQ_SUBJECT');
REQ_UID += rows[i].get('ABE_REQ_UID');
}
if ( REQ_UID != '' ) {
win = new Ext.Window({
id: 'win',
title: ids,
pageX: 100 ,
pageY: 100 ,
width: 500,
floatable: true,
autoHeight:true,
modal: true,
layout: 'fit',
autoLoad : {
url : '../actionsByEmail/actionsByEmailAjax',
params : { action:'viewForm',REQ_UID : REQ_UID },
scripts: true
},
plain: true,
buttons: [{
id: 'btn',
text: _('ID_CLOSE'),
handler: function() {
//var index = this.id.replace('btn', '');
win.hide();
}
}]}).show();
} else {
Ext.Msg.show({
title:'',
msg: TRANSLATIONS.ID_NO_SELECTION_WARNING,
buttons: Ext.Msg.INFO,
fn: function(){},
animEl: 'elId',
icon: Ext.MessageBox.INFO,
buttons: Ext.MessageBox.OK
});
}
}
function ForwardEmail(){
var rows = actionsByEmailGrid.getSelectionModel().getSelections();
var REQ_UID = '';
var ids = '';
for (i=0; i<rows.length; i++) {
if (i != 0 ) {
ids += ',';
}
REQ_UID += rows[i].get('ABE_REQ_UID');
ids += rows[i].get('APP_NUMBER') + ', ';
ids += rows[i].get('ABE_REQ_SUBJECT');
}
if ( REQ_UID != '' ) {
win = new Ext.Window({
id: 'win',
title: ids,
pageX: 100 ,
pageY: 100 ,
width: 500,
floatable: true,
autoHeight:true,
modal: true,
layout: 'fit',
autoLoad : {
url : '../actionsByEmail/actionsByEmailAjax',
params : { action:'forwardMail',REQ_UID :REQ_UID},
scripts: true
},
plain: true,
buttons: [{
id: 'btn',
text: _('ID_CLOSE'),
handler: function() {
win.hide();
}
}]}).show();
} else {
Ext.Msg.show({
title:'',
msg: "Select an item from the list",
buttons: Ext.Msg.INFO,
fn: function(){},
animEl: 'elId',
icon: Ext.MessageBox.INFO,
buttons: Ext.MessageBox.OK
});
}
}

View File

@@ -0,0 +1,109 @@
<?php
$G_PUBLISH = new Publisher();
try {
// Validations
if (!isset($_REQUEST['APP_UID'])) {
$_REQUEST['APP_UID'] = '';
}
if (!isset($_REQUEST['DEL_INDEX'])) {
$_REQUEST['DEL_INDEX'] = '';
}
if ($_REQUEST['APP_UID'] == '') {
throw new Exception('The parameter APP_UID is empty.');
}
if ($_REQUEST['DEL_INDEX'] == '') {
throw new Exception('The parameter DEL_INDEX is empty.');
}
$_REQUEST['APP_UID'] = G::decrypt(urldecode(utf8_encode($_REQUEST['APP_UID'])), URL_KEY);
$_REQUEST['DEL_INDEX'] = G::decrypt(urldecode(utf8_encode($_REQUEST['DEL_INDEX'])), URL_KEY);
$_REQUEST['FIELD'] = G::decrypt(urldecode(utf8_encode($_REQUEST['FIELD'])), URL_KEY);
$_REQUEST['VALUE'] = G::decrypt(urldecode(utf8_encode($_REQUEST['VALUE'])), URL_KEY);
$_REQUEST['ABER'] = G::decrypt(urldecode(utf8_encode($_REQUEST['ABER'])), URL_KEY);
G::LoadClass('case');
$cases = new Cases();
$caseFieldsABE = $cases->loadCase($_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX']);
if (is_null($caseFieldsABE['DEL_FINISH_DATE'])) {
$dataField = array();
$dataField[$_REQUEST['FIELD']] = $_REQUEST['VALUE'];
$caseFieldsABE ['APP_DATA'] = array_merge ( $caseFieldsABE ['APP_DATA'], $dataField );
$dataResponses = array();
$dataResponses['ABE_REQ_UID'] = $_REQUEST['ABER'];
$dataResponses['ABE_RES_CLIENT_IP'] = $_SERVER['REMOTE_ADDR'];
$dataResponses['ABE_RES_DATA'] = serialize($_REQUEST['VALUE']);
$dataResponses['ABE_RES_STATUS'] = 'PENDING';
$dataResponses['ABE_RES_MESSAGE'] = '';
try {
set_include_path(PATH_PLUGINS . 'actionsByEmail' . PATH_SEPARATOR . get_include_path());
require_once 'classes/model/AbeResponses.php';
$abeAbeResponsesInstance = new AbeResponses();
$dataResponses['ABE_RES_UID'] = $abeAbeResponsesInstance->createOrUpdate($dataResponses);
} catch (Exception $error) {
throw $error;
}
$cases->updateCase($_REQUEST['APP_UID'], $caseFieldsABE);
G::LoadClass('wsBase');
$ws = new wsBase();
$result = $ws->derivateCase($caseFieldsABE['CURRENT_USER_UID'], $_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX'], true);
$code = (is_array($result) ? $result['status_code'] : $result->status_code);
if ($code != 0 ) {
throw new Exception('An error occurred while the application was being processed.<br /><br />
Error code: '.$result->status_code.'<br />
Error message: '.$result->message.'<br /><br />');
}
// Update
$dataResponses['ABE_RES_STATUS'] = ($code == 0 ? 'SENT' : 'ERROR');
$dataResponses['ABE_RES_MESSAGE'] = ($code == 0 ? '-' : $result->message);
try {
$abeAbeResponsesInstance = new AbeResponses();
$abeAbeResponsesInstance->createOrUpdate($dataResponses);
} catch (Exception $error) {
throw $error;
}
$message = '<strong>The answer has been submited. Thank you</strong>';
//Save Cases Notes
include_once 'utils.php';
$dataAbeRequests = loadAbeRequest($_REQUEST['ABER']);
$dataAbeConfiguration = loadAbeConfiguration($dataAbeRequests['ABE_UID']);
if ($dataAbeConfiguration['ABE_CASE_NOTE_IN_RESPONSE'] == 1) {
$response = new stdclass();
$response->usrUid = $caseFieldsABE['APP_DATA']['USER_LOGGED'];
$response->appUid = $_REQUEST['APP_UID'];
$response->noteText = "Check the information that was sent for the receiver: " . $dataAbeRequests['ABE_REQ_SENT_TO'];
postNote($response);
}
$dataAbeRequests['ABE_REQ_ANSWERED'] = 1;
$code == 0 ? uploadAbeRequest($dataAbeRequests) : '';
} else {
$message = '<strong>The response has already been sent.</strong>';
}
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => $message));
} catch (Exception $error) {
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => $error->getMessage() . 'Please contact to your system administrator.'));
}
G::RenderPage('publish', 'blank');

View File

@@ -0,0 +1,39 @@
<?php
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
try {
// Validations
if (!isset($_REQUEST['APP_UID'])) {
$_REQUEST['APP_UID'] = '';
}
if (!isset($_REQUEST['DEL_INDEX'])) {
$_REQUEST['DEL_INDEX'] = '';
}
if ($_REQUEST['APP_UID'] == '') {
throw new Exception('The parameter APP_UID is empty.');
}
if ($_REQUEST['DEL_INDEX'] == '') {
throw new Exception('The parameter DEL_INDEX is empty.');
}
G::LoadClass('case');
$cases = new Cases();
$caseFields = $cases->loadCase(G::decrypt($_REQUEST['APP_UID'], URL_KEY),G::decrypt($_REQUEST['DEL_INDEX'], URL_KEY));
if (is_null($caseFields['DEL_FINISH_DATE'])) {
$action = 'dataFormPost.php?APP_UID=' . $_REQUEST['APP_UID'] . '&DEL_INDEX=' . $_REQUEST['DEL_INDEX'] . '&ABER=' . $_REQUEST['ABER'];
$G_PUBLISH->AddContent('dynaform', 'xmlform', $caseFields['PRO_UID'] . PATH_SEP . G::decrypt($_REQUEST['DYN_UID'], URL_KEY), '', $caseFields['APP_DATA'], $action, '../../gulliver/defaultAjaxDynaform');
} else {
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => '<strong>The form has already been filled and sent.</strong>'));
}
} catch (Exception $error) {
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => $error->getMessage()));
}
G::RenderPage('publish', 'blank');

View File

@@ -0,0 +1,202 @@
<?php
$G_PUBLISH = new Publisher();
try {
if ($_REQUEST['APP_UID'] == '') {
throw new Exception('The parameter APP_UID is empty.');
}
if ($_REQUEST['DEL_INDEX'] == '') {
throw new Exception('The parameter DEL_INDEX is empty.');
}
if ($_REQUEST['ABER'] == '') {
throw new Exception('The parameter ABER is empty.');
}
if (!isset($_REQUEST['form'])) {
$_REQUEST['form'] = array();
}
$_REQUEST['APP_UID'] = G::decrypt($_REQUEST['APP_UID'], URL_KEY);
$_REQUEST['DEL_INDEX'] = G::decrypt($_REQUEST['DEL_INDEX'], URL_KEY);
$_REQUEST['ABER'] = G::decrypt($_REQUEST['ABER'], URL_KEY);
G::LoadClass('case');
$case = new Cases();
$casesFields = $case->loadCase($_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX']);
$casesFields['APP_DATA'] = array_merge($casesFields['APP_DATA'], $_REQUEST['form']);
//Get user info
$current_user_uid = null;
$currentUsrName = null;
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(AppDelegationPeer::USR_UID);
$criteria->add(AppDelegationPeer::APP_UID, $_REQUEST["APP_UID"]);
$criteria->add(AppDelegationPeer::DEL_INDEX, $_REQUEST["DEL_INDEX"]);
$rsSQL = AppDelegationPeer::doSelectRS($criteria);
$rsSQL->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($rsSQL->next()) {
$row = $rsSQL->getRow();
$current_user_uid = $row["USR_UID"];
}
if ($current_user_uid != null) {
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(UsersPeer::USR_USERNAME);
$criteria->add(UsersPeer::USR_UID, $current_user_uid);
$rsSQL = UsersPeer::doSelectRS($criteria);
$rsSQL->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsSQL->next();
$row = $rsSQL->getRow();
$currentUsrName = $row["USR_USERNAME"];
$casesFields["APP_DATA"]["USER_LOGGED"] = $current_user_uid;
$casesFields["APP_DATA"]["USR_USERNAME"] = $currentUsrName;
}
foreach ($casesFields["APP_DATA"] as $index => $value) {
$_SESSION[$index] = $value;
}
//Update case info
$case->updateCase($_REQUEST['APP_UID'], $casesFields);
G::LoadClass('wsBase');
$wsBaseInstance = new wsBase();
$result = $wsBaseInstance->derivateCase($casesFields['CURRENT_USER_UID'], $_REQUEST['APP_UID'], $_REQUEST ['DEL_INDEX'], true);
$code = (is_array($result) ? $result['status_code'] : $result->status_code);
$dataResponses = array();
$dataResponses['ABE_REQ_UID'] = $_REQUEST['ABER'];
$dataResponses['ABE_RES_CLIENT_IP'] = $_SERVER['REMOTE_ADDR'];
$dataResponses['ABE_RES_DATA'] = serialize($_REQUEST['form']);
$dataResponses['ABE_RES_STATUS'] = 'PENDING';
$dataResponses['ABE_RES_MESSAGE'] = '';
try {
set_include_path(PATH_PLUGINS . 'actionsByEmail' . PATH_SEPARATOR . get_include_path());
require_once 'classes/model/AbeResponses.php';
$abeAbeResponsesInstance = new AbeResponses();
$dataResponses['ABE_RES_UID'] = $abeAbeResponsesInstance->createOrUpdate($dataResponses);
} catch (Exception $error) {
throw $error;
}
if ($code == 0) {
//Save Cases Notes
include_once 'utils.php';
$dataAbeRequests = loadAbeRequest($_REQUEST['ABER']);
$dataAbeConfiguration = loadAbeConfiguration($dataAbeRequests['ABE_UID']);
if ($dataAbeConfiguration['ABE_CASE_NOTE_IN_RESPONSE'] == 1) {
$response = new stdclass();
$response->usrUid = $casesFields['APP_DATA']['USER_LOGGED'];
$response->appUid = $_REQUEST['APP_UID'];
$response->noteText = "Check the information that was sent for the receiver: " . $dataAbeRequests['ABE_REQ_SENT_TO'];
postNote($response);
}
$dataAbeRequests['ABE_REQ_ANSWERED'] = 1;
$code == 0 ? uploadAbeRequest($dataAbeRequests) : '';
if (isset ( $_FILES ['form'] )) {
foreach ($_FILES ['form'] ['name'] as $fieldName => $value) {
if ($_FILES ['form'] ['error'] [$fieldName] == 0) {
$appDocument = new AppDocument ( );
if ( isset ( $_REQUEST['INPUTS'] [$fieldName] ) && $_REQUEST['INPUTS'] [$fieldName] != '' ) {
require_once 'classes/model/AppFolder.php';
require_once 'classes/model/InputDocument.php';
$inputDocument = new InputDocument();
$id = $inputDocument->load($_REQUEST['INPUTS'] [$fieldName]);
//Get the Custom Folder ID (create if necessary)
$oFolder=new AppFolder();
$folderId=$oFolder->createFromPath($id['INP_DOC_DESTINATION_PATH']);
//Tags
$fileTags=$oFolder->parseTags($id['INP_DOC_TAGS']);
$fields = array (
'APP_UID' => $_REQUEST['APP_UID'],
'DEL_INDEX' => $_REQUEST ['DEL_INDEX'],
'USR_UID' => $casesFields['APP_DATA']['USER_LOGGED'],
'DOC_UID' => $_REQUEST['INPUTS'] [$fieldName],
'APP_DOC_TYPE' => 'INPUT',
'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ),
'APP_DOC_COMMENT' => '',
'APP_DOC_TITLE' => '',
'APP_DOC_FILENAME' => $_FILES ['form'] ['name'] [$fieldName],
'FOLDER_UID' => $folderId,
'APP_DOC_TAGS' => $fileTags
);
} else {
$fields = array (
'APP_UID' => $_REQUEST['APP_UID'],
'DEL_INDEX' => $_REQUEST ['DEL_INDEX'],
'USR_UID' => $casesFields['APP_DATA']['USER_LOGGED'],
'DOC_UID' => - 1,
'APP_DOC_TYPE' => 'ATTACHED',
'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ),
'APP_DOC_COMMENT' => '',
'APP_DOC_TITLE' => '',
'APP_DOC_FILENAME' => $_FILES ['form'] ['name'] [$fieldName]
);
}
$appDocument->create($fields);
$docVersion = $appDocument->getDocVersion();
$appDocUid = $appDocument->getAppDocUid ();
$info = pathinfo ( $appDocument->getAppDocFilename () );
$extension = (isset ( $info ['extension'] ) ? $info ['extension'] : '');
$pathName = PATH_DOCUMENT . $_REQUEST['APP_UID'] . PATH_SEP;
$fileName = $appDocUid . '_'.$docVersion.'.' . $extension;
G::uploadFile ( $_FILES ['form'] ['tmp_name'] [$fieldName], $pathName, $fileName );
}
}
}
$assign = $result['message'];
$aMessage['MESSAGE'] = '<strong>The information was submitted. Thank you.</strong>';
} else {
throw new Exception('An error occurred while the application was being processed.<br /><br />
Error code: '.$result->status_code.'<br />
Error message: '.$result->message.'<br /><br />');
}
// Update
$dataResponses['ABE_RES_STATUS'] = ($code == 0 ? 'SENT' : 'ERROR');
$dataResponses['ABE_RES_MESSAGE'] = ($code == 0 ? '-' : $result->message);
try {
$abeAbeResponsesInstance = new AbeResponses();
$abeAbeResponsesInstance->createOrUpdate($dataResponses);
} catch (Exception $error) {
throw $error;
}
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', $aMessage);
} catch (Exception $error) {
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => $error->getMessage().'Please contact to your system administrator.'));
}
G::RenderPage('publish', 'blank');

View File

@@ -0,0 +1,84 @@
<?php
function postNote($httpData)
{
//extract(getExtJSParams());
$appUid = (isset($httpData->appUid))? $httpData->appUid : '';
$usrUid = (isset($httpData->usrUid))? $httpData->usrUid : '' ;
require_once ( "classes/model/AppNotes.php" );
$appNotes = new AppNotes();
$noteContent = addslashes($httpData->noteText);
$result = $appNotes->postNewNote($appUid, $usrUid, $noteContent, false);
//return true;
//die();
//send the response to client
@ini_set('implicit_flush', 1);
ob_start();
//echo G::json_encode($result);
@ob_flush();
@flush();
@ob_end_flush();
ob_implicit_flush(1);
//return true;
//send notification in background
$noteRecipientsList = array();
G::LoadClass('case');
$oCase = new Cases();
$p = $oCase->getUsersParticipatedInCase($appUid);
foreach ($p['array'] as $key => $userParticipated) {
$noteRecipientsList[] = $key;
}
$noteRecipients = implode(",", $noteRecipientsList);
$appNotes->sendNoteNotification($appUid, $usrUid, $noteContent, $noteRecipients);
}
function loadAbeRequest($AbeRequestsUid)
{
require_once 'classes/model/AbeRequests.php';
$criteria = new Criteria();
$criteria->add(AbeRequestsPeer::ABE_REQ_UID, $AbeRequestsUid);
$resultRequests = AbeRequestsPeer::doSelectRS($criteria);
$resultRequests->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$resultRequests->next();
$abeRequests = $resultRequests->getRow();
return $abeRequests;
}
function loadAbeConfiguration($AbeConfigurationUid)
{
require_once 'classes/model/AbeConfiguration.php';
$criteria = new Criteria();
$criteria->add(AbeConfigurationPeer::ABE_UID, $AbeConfigurationUid);
$result = AbeConfigurationPeer::doSelectRS($criteria);
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result->next();
$abeConfiguration = $result->getRow();
return $abeConfiguration;
}
function uploadAbeRequest($data)
{
require_once 'classes/model/AbeRequests.php';
try {
$abeRequestsInstance = new AbeRequests();
$abeRequestsInstance->createOrUpdate($data);
} catch (Exception $error) {
throw $error;
}
}

View File

@@ -0,0 +1,173 @@
{if $printTemplate}
{* this is the xmlform template *}
<form id="{$form->id}" name="{$form->name}" action="{$form->action}" class="{$form->className}" method="post" encType="multipart/form-data" style="margin:0px;" onsubmit="return validateForm('{$form->objectRequiredFields}');"> <div class="borderForm" style="width:{$form->width}; padding-left:0; padding-right:0; border-width:{$form->border};">
<div class="boxTop"><div class="a"></div><div class="b"></div><div class="c"></div></div>
<div class="content" style="height:{$form->height};" >
<table width="99%">
<tr>
<td valign='top'>
<input type="hidden" class="notValidateThisFields" name="__notValidateThisFields__" id="__notValidateThisFields__" value="{$form->objectRequiredFields}" />
<input type="hidden" name="DynaformRequiredFields" id="DynaformRequiredFields" value="{$form->objectRequiredFields}" />
<table cellspacing="0" cellpadding="0" border="0" width="100%">
{foreach from=$form->fields item=field}
{if ($field->type==='title')}
<tr>
<td class='FormTitle' colspan="2" align="{$field->align}">{$field->field}</td>
</tr>
{elseif ($field->type==='subtitle')}
<tr>
<td class='FormSubTitle' colspan="2" align="{$field->align}" id="form[{$field->name}]">
<span>{$field->field}</span>
{if (isset($field->showHide) && $field->showHide)}
<a style="float:right;" href="#" onclick="contractExpandSubtitle(this);return false;">Hide</a>
{/if}
</td>
</tr>
{elseif ($field->type==='button') || ($field->type==='submit') || ($field->type==='reset')}
<tr>
<td class='FormButton' colspan="2" align="{$field->align}">{$field->field}</td>
</tr>
{elseif ($field->type==='grid')}
<tr>
<td colspan="2"><br />{$field->field}</td>
</tr>
{elseif ($field->type==='checkbox') && ($field->labelOnRight)}
<tr>
<td class='FormLabel' width="{$form->labelWidth}"></td>
<td>{$field->field}</td>
</tr>
{elseif ($field->type==='phpvariable')}
{elseif ($field->type==='private')}
{elseif ($field->type==='javascript')}
{elseif ($field->type==='pmconnection')}
{elseif ($field->type==='hidden')}
<tr style="display: none">
<td colspan="2">{$field->field}</td>
</tr>
{elseif ($field->type==='')}
{elseif ($field->withoutLabel)}
<tr>
<td colspan="2" class="withoutLabel">{$field->field}</td>
</tr>
{elseif (isset($field->withoutValue) && $field->withoutValue)}
<tr>
<td class='FormLabel' colspan="2"><div align="{$field->align}">{$field->label}</div></td>
</tr>
{else}
<tr>
<td class='FormLabel' width="{$form->labelWidth}">{if (isset($field->required)&&$field->required&&$field->mode==='edit')}<font color="red">* </font>{/if}{$field->label}</td>
<td class='FormFieldContent' width='{$form->fieldContentWidth}' {* width="{math equation="parseFloat(x)-parseFloat(y)" x=$form->width y=$form->labelWidth}" *}>{$field->field}</td>
</tr>
{/if}
{/foreach}
</table>
</td>
</tr>
</table>
{if $hasRequiredFields}<div class="FormRequiredTextMessage"><font color="red">* </font>{php}echo (G::LoadTranslation('ID_REQUIRED_FIELD'));{/php}</div>{/if}
</div>
<div class="boxBottom"><div class="a"></div><div class="b"></div><div class="c"></div></div>
</div>
{foreach from=$form->fields item=field}
{if ($field->type==='javascript')}
<script type="text/javascript">
{$field->field}
</script>
{/if}
{/foreach}
</form>
{/if}
{if $printJSFile}
{* TODO: include file='xmlformScript.html' *}
var form_{$form->id};
var object_{$form->name};
var i;
if (typeof(__aObjects__) === 'undefined') {literal}{{/literal}
var __aObjects__ = [];
{literal}}{/literal}
function loadForm_{$form->id}(ajaxServer)
{literal}{{/literal}
if (typeof(G_Form)==='undefined') return alert('form.js was not loaded');
form_{$form->id}=new G_Form(document.getElementById('{$form->id}'),'{$form->id}');
object_{$form->name} = form_{$form->id};
__aObjects__.push(object_{$form->name});
var myForm=form_{$form->id};
if (myForm.aElements===undefined) alert("{$form->name}");
myForm.ajaxServer=ajaxServer;
//{$form->ajaxSubmit}
{if isset($form->ajaxSubmit) && ($form->ajaxSubmit)}
{literal}
var sub = new leimnud.module.app.submit({
form : myForm.element,{/literal}
inProgress: {$form->in_progress},
callback: {$form->callback}
{literal}
});
sub.sendObj = false;
{/literal}
{/if}
{foreach from=$form->fields item=field key=name}
i = myForm.aElements.length;
{if (($field->type==='dropdown') || $field->type==='listbox')}
myForm.aElements[i] = new G_DropDown(myForm, myForm.element.elements['form[{$name}]'],'{$name}');
myForm.aElements[i].setAttributes({$field->getAttributes()});
{$field->attachEvents("myForm.aElements[i].element")}
{elseif ($field->type==='text')}
myForm.aElements[i] = new G_Text(myForm, myForm.element.elements['form[{$name}]'],'{$name}');
myForm.aElements[i].setAttributes({$field->getAttributes()});
//alert('{$field->getAttributes()}');
{$field->attachEvents("myForm.aElements[i].element")}
{elseif ($field->type==='percentage')}
myForm.aElements[i] = new G_Percentage(myForm, myForm.element.elements['form[{$name}]'],'{$name}');
myForm.aElements[i].setAttributes({$field->getAttributes()});
{$field->attachEvents("myForm.aElements[i].element")}
{elseif ($field->type==='currency')}
myForm.aElements[i] = new G_Currency(myForm, myForm.element.elements['form[{$name}]'],'{$name}');
myForm.aElements[i].setAttributes({$field->getAttributes()});
{$field->attachEvents("myForm.aElements[i].element")}
{elseif ($field->type==='textarea')}
myForm.aElements[i] = new G_TextArea(myForm, myForm.element.elements['form[{$name}]'],'{$name}');
myForm.aElements[i].setAttributes({$field->getAttributes()});
{$field->attachEvents("myForm.aElements[i].element")}
{elseif ($field->type==='date')}
myForm.aElements[i] = new G_Date(myForm, myForm.element.elements['form[{$name}]'],'{$name}');
myForm.aElements[i].setAttributes({$field->getAttributes()});
if (myForm.aElements[i].mask) {literal}{{/literal}
myForm.aElements[i].mask = dateSetMask(myForm.aElements[i].mask);
{literal}}{/literal}
{$field->attachEvents("myForm.aElements[i].element")}
{elseif ($field->type==='hidden')}
myForm.aElements[i] = new G_Text(myForm, myForm.element.elements['form[{$name}]'],'{$name}');
myForm.aElements[i].setAttributes({$field->getAttributes()});
{$field->attachEvents("myForm.aElements[i].element")}
{elseif ($field->type==='grid')}
myForm.aElements[i] = new G_Grid(myForm, '{$name}');
grid_{$field->id}(myForm.aElements[i]);
grid_{$name} = myForm.aElements[i];
{$field->attachEvents("myForm.aElements[i].element")}
{else}
var element = getField("{$name}");
{$field->attachEvents("element")}
{/if}
{/foreach}
{foreach from=$form->fields item=field key=name}
{if isset($field->dependentFields) && ($field->dependentFields!='')}
{if ($field->type==='dropdown')}
myForm.getElementByName('{$name}').setDependentFields('{$field->dependentFields}');
{elseif ($field->type==='text')}
myForm.getElementByName('{$name}').setDependentFields('{$field->dependentFields}');
{elseif ($field->type==='percentage')}
myForm.getElementByName('{$name}').setDependentFields('{$field->dependentFields}');
{elseif ($field->type==='currency')}
myForm.getElementByName('{$name}').setDependentFields('{$field->dependentFields}');
{elseif ($field->type==='date')}
myForm.getElementByName('{$name}').setDependentFields('{$field->dependentFields}');
{/if}
{/if}
{/foreach}
{literal}}{/literal}
{/if}
{if $printJavaScript}
leimnud.event.add(window,'load',function(){literal}{{/literal}loadForm_{$form->id}('{$form->ajaxServer}');if (typeof(dynaformOnload) !== 'undefined') {literal}{dynaformOnload();}}{/literal});
{/if}

View File

@@ -163,6 +163,51 @@ class Process extends Api
return $response;
}
/**
* @url GET /:processUid/activity/:activityUid/feature-configuration
*/
public function getActivityFeatures($activityUid, $processUid)
{
$response = array();
try {
$task1 = new \Task();
$task2 = new \ProcessMaker\BusinessModel\Task();
$arrayData = $task1->load($activityUid);
$arrayData = array(
//"tas_uid" => $activityUid,
"tas_title" => $arrayData["TAS_TITLE"],
"tas_description" => $arrayData["TAS_DESCRIPTION"],
"tas_posx" => $arrayData["TAS_POSX"],
"tas_posy" => $arrayData["TAS_POSY"],
"tas_start" => $arrayData["TAS_START"],
"_extended" => array(
"properties" => $task2->getProperties($activityUid, true),
"steps" => array(
"steps" => $task2->getSteps($activityUid, true),
"conditions" => "...", //lo mismo que steps //$task->getSteps()
"triggers" => $task2->getTriggers($activityUid, true),
"users" => $task2->getUsers($activityUid, 1, true),
"users_adhoc" => $task2->getUsers($activityUid, 2, true)
)
)
);
//Response
$response["success"] = true;
$response["message"] = "Properties loaded successfully";
$response["data"] = array("activity" => $arrayData);
} catch (\Exception $e) {
//Response
$response["success"] = false;
$response["message"] = $e->getMessage();
}
return $response;
}
/**
* @url GET /:processUid/activity/:activityUid/properties

View File

@@ -59,6 +59,26 @@ class Activity extends Api
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @param string $prj_uid {@min 32} {@max 32}
* @param string $act_uid {@min 32} {@max 32}
* @param string $filter {@choice definition,,properties}
*
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
* @return array
*
* @url GET /:prj_uid/activity/:act_uid/feature-configuration
*/
public function doGetProjectActivityFeatureConfiguration($prj_uid, $act_uid, $filter = '')
{
try {
return array('status' => 200, 'message' => 'success');
} catch (\Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @param string $prj_uid {@min 32} {@max 32}