steveosoule
7/14/2016 - 6:25 PM

Example Scheduled Task Module

Example Scheduled Task Module

<MvFUNCTION NAME = "Module_Description" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.module:code"		VALUE = "call_url_stsk">
	<MvASSIGN NAME = "l.module:name"		VALUE = "HTTP Request to URL">
	<MvASSIGN NAME = "l.module:provider"	VALUE = "Miva Merchant">
	<MvASSIGN NAME = "l.module:version"		VALUE = "9.0003">
	<MvASSIGN NAME = "l.module:api_ver"		VALUE = "9.05">
	<MvASSIGN NAME = "l.module:description" VALUE = "This Scheduled Task allows you to setup a URL which will get called via an http request when the task is run.">
	<MvASSIGN NAME = "l.module:features"	VALUE = "util, vis_util, scheduledtask">
</MvFUNCTION>

<MvCOMMENT>
|
| Feature util
|
</MvCOMMENT>

<MvFUNCTION NAME = "StoreUtilityModule_Action" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "StoreUtilityModule_LeftNavigation" PARAMETERS = "module var, indent" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "StoreUtilityModule_Screen" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "StoreUtilityModule_Validate" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvCOMMENT>
|
| Feature vis_util
|
</MvCOMMENT>

<MvFUNCTION NAME = "Module_Utility_Content" PARAMETERS = "module var, tab, load_fields" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Module_Utility_Head" PARAMETERS = "module var, tab" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Module_Utility_Tabs" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = "">
</MvFUNCTION>

<MvFUNCTION NAME = "Module_Utility_Update" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">	
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Module_Utility_Validate" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvCOMMENT>
|
| Scheduled Task Feature (scheduledtask)
|
</MvCOMMENT>

<MvFUNCTION NAME = "ScheduledTaskModule_Capabilities" PARAMETERS = "module var, capabilities var" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.capabilities:provision_settings" VALUE = 1>	<MvCOMMENT> This allows you to set module specific provision settings </MvCOMMENT>
	<MvCOMMENT> OR </MvCOMMENT>
	<MvASSIGN NAME = "l.capabilities:provision" VALUE = 1> <MvCOMMENT> This allows you to add the schedule task via provisioning </MvCOMMENT>
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Operations" PARAMETERS = "module var, operations var" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.operations" INDEX = 1 MEMBER = "code"		VALUE = "call_url">
	<MvASSIGN NAME = "l.operations" INDEX = 1 MEMBER = "descrip"	VALUE = "HTTP Request to URL">

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Fields" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.fields" VALUE = "">

		<MvIF EXPR = "{ l.task:operation EQ 'call_url' }">
		<MvASSIGN NAME = "g.ScheduledTasks_Call_Url_Field"	VALUE = "{ l.task:config:call_url_field }">
		<MvASSIGN NAME = "l.fields" 								VALUE = "call_url_field">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.fields }">
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Invalid" PARAMETERS = "module var, field_id" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Prompt" PARAMETERS = "module var, field_id" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.prompt" 		VALUE = "">

	<MvIF EXPR = "{ l.field_id EQ 'call_url_field' }">
		<MvASSIGN NAME = "l.prompt" 	VALUE = "<b>URL to Hit:</b>">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.prompt }">
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Field" PARAMETERS = "module var, field_id" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.field_id EQ 'call_url_field' }">
		<MvCOMMENT> This can be a input, checkbox, select, radio option or text area </MvCOMMENT>

		<input type="text" name="ScheduledTasks_Call_Url_Field" id="ScheduledTasks_Call_Url_Field" value="{ encodeentities( g.ScheduledTasks_Call_Url_Field ) }">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Validate" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
	<MvIF EXPR = "{ l.task:operation EQ 'call_url' }">
		<MvASSIGN NAME = "g.ScheduledTasks_Call_Url_Field" VALUE = "{ trim( g.ScheduledTasks_Call_Url_Field ) }">

		<MvIF EXPR = "{ ISNULL g.ScheduledTasks_Call_Url_Field }">
			<MvFUNCTIONRETURN VALUE = "{ [ g.Module_Admin ].FieldError( '', 'ScheduledTasks_Call_Url_Field', 'Please enter a URL' ) }">
		</MvIF>

		<MvIF EXPR = "{ NOT (('http://' CIN g.ScheduledTasks_Call_Url_Field) OR ('https://' CIN g.ScheduledTasks_Call_Url_Field)) }">
			<MvFUNCTIONRETURN VALUE = "{ [ g.Module_Admin ].FieldError( '', 'ScheduledTasks_Call_Url_Field', 'The URL must start with http:// or https://' ) }">
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Update" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
	<MvIF EXPR = "{ l.task:operation EQ 'call_url' }">
		<MvASSIGN NAME = "l.task:config:call_url_field" VALUE = "{ g.ScheduledTasks_Call_Url_Field }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Delete" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Execute" PARAMETERS = "module var, task var" STANDARDOUTPUTLEVEL = "">
	<MvIF EXPR = "{ l.task:operation EQ 'call_url' }">
		<MvFUNCTIONRETURN VALUE = "{ Task_Run( l.task ) }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ [ g.Module_Library_Utilities ].Error( 'MER-URL-TASK-1', 'Unsupported operation' ) }">
</MvFUNCTION>

<MvFUNCTION NAME = "ScheduledTaskModule_Provision_Settings" PARAMETERS = "module var, task var, provide_xml var" STANDARDOUTPUTLEVEL = "">
	<MvCOMMENT>
	<MvIF EXPR = "{ l.task:operation EQ 'test_task' }">
		<MvIF EXPR = "{ NOT [ g.Module_Feature_PRV_AD ].PRV_Tag_Number( 'O', l.provide_xml, 'TestTaskField', l.task:config:test_task_field, -1, -1 ) }">
			<MvFUNCTIONRETURN VALUE = 0>
		</MvIF>

		<MvIF EXPR = "{ l.task:config:test_task_field LT 1 OR l.task:config:test_task_field GT 30 }">
			<MvFUNCTIONRETURN VALUE = "{ [ g.Module_Feature_PRV_AD ].PRV_LogMessage( l.provide_xml, 'Test task field must be between 1 and 30' ) }">
		</MvIF>
	</MvIF>
	</MvCOMMENT>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvCOMMENT>
|
| Helper functions
|
</MvCOMMENT>

<MvFUNCTION NAME = "Task_Run" PARAMETERS = " task var" STANDARDOUTPUTLEVEL = "">
	<MvCOMMENT>Use MvCALL to call URL. Response is Ignored.</MvCOMMENT>

	
	<MIVA MvCALL_Error = "nonfatal, nodisplay">
	<MvCAPTURE VARIABLE = "l.response">
		
			<MvCALL METHOD		= "POST"
			ACTION			= "{ l.task:config:call_url_field }"
			FIELDS			= "">

			<MvEVAL EXPR = "{ s.callvalue }">
			</MvCALL>
		
	</MvCAPTURE>
	<MIVA MvCALL_Error = "fatal, display">

	<MvCOMMENT>If Error, handle</MvCOMMENT>
	<MvIF EXPR = "{ g.MvCALL_Error }">
		<MvFUNCTIONRETURN VALUE = "{ [ g.Module_Library_Utilities ].Error( 'MER-URL-TASK-2', 'Failed To Reqest URL: ' $ MvCALL_Error ) }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>