steveosoule
3/8/2016 - 2:20 AM

mv-activity

mv-activity

<mvt:if expr="ISNULL g.mvActivity">
	<mvt:exit/>
</mvt:if>

<mvt:assign name="g.Activity_Max_Items" value="10" />

<mvt:comment><!-- Load Activity --></mvt:comment>
	<mvt:item name="customfields" param="Read_Basket('recent_categories', l.settings:activity:recent_categories)" />
	<mvt:item name="customfields" param="Read_Basket('recent_products', l.settings:activity:recent_products)" />
	<mvt:item name="customfields" param="Read_Basket('recent_searches', l.settings:activity:recent_searches)" />
	<mvt:item name="customfields" param="Read_Basket('recent_adprs', l.settings:activity:recent_adprs)" />
	<mvt:item name="customfields" param="Read_Basket('recent_logs', l.settings:activity:recent_logs)" />

<mvt:comment><!-- Save List of Recent Categories --></mvt:comment>
	<mvt:if expr="g.Screen EQ 'CTGY'">
		<mvt:foreach iterator="recent_category" array="activity:recent_categories">
			<mvt:if expr="l.settings:category:code EQ l.settings:recent_category:code">
				<mvt:assign name="l.settings:activity:category_in_history" value="1" />
			</mvt:if>
		</mvt:foreach>

		<mvt:if expr="l.settings:activity:category_in_history">
			<mvt:foreach iterator="recent_category" array="activity:recent_categories">
				<mvt:if expr="l.settings:category:code EQ l.settings:recent_category:code">
					<mvt:assign name="l.settings:recent_category:timestamp" value="s.dyn_time_t" />
				</mvt:if>
			</mvt:foreach>
		<mvt:else>
			<mvt:assign name="l.recent_category:code" value="l.settings:category:code" />
			<mvt:assign name="l.recent_category:timestamp" value="s.dyn_time_t" />
			<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:recent_categories, l.recent_category, 1 )" />
			<mvt:if expr="miva_array_elements(l.settings:activity:recent_categories) GT g.Activity_Max_Items">
				<mvt:assign name="l.index" value="miva_array_pop( l.settings:activity:recent_categories)" />
			</mvt:if>
		</mvt:if>

		<mvt:do file="g.module_library_utilities" name="l.null" value="QuickSortArray(l.settings:activity:recent_categories, ':timestamp', -1)" />
		<mvt:item name="customfields" param="Write_Basket('recent_categories', l.settings:activity:recent_categories)" />
	</mvt:if>

<mvt:comment><!-- Save List of Recently Viewed Products --></mvt:comment>
	<mvt:if expr="g.Screen EQ 'PROD'">
		<mvt:foreach iterator="recent_product" array="activity:recent_products">
			<mvt:if expr="l.settings:product:code EQ l.settings:recent_product:code">
				<mvt:assign name="l.settings:activity:product_in_history" value="1" />
			</mvt:if>
		</mvt:foreach>

		<mvt:if expr="l.settings:activity:product_in_history">
			<mvt:foreach iterator="recent_product" array="activity:recent_products">
				<mvt:if expr="l.settings:product:code EQ l.settings:recent_product:code">
					<mvt:assign name="l.settings:recent_product:timestamp" value="s.dyn_time_t" />
				</mvt:if>
			</mvt:foreach>
		<mvt:else>
			<mvt:assign name="l.recent_product:code" value="l.settings:product:code" />
			<mvt:assign name="l.recent_product:timestamp" value="s.dyn_time_t" />
			<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:recent_products, l.recent_product, 1 )" />
			<mvt:if expr="miva_array_elements(l.settings:activity:recent_products) GT g.Activity_Max_Items">
				<mvt:assign name="l.index" value="miva_array_pop( l.settings:activity:recent_products)" />
			</mvt:if>
		</mvt:if>

		<mvt:do file="g.module_library_utilities" name="l.null" value="QuickSortArray(l.settings:activity:recent_products, ':timestamp', -1)" />
		<mvt:item name="customfields" param="Write_Basket('recent_products', l.settings:activity:recent_products)" />
	</mvt:if>

<mvt:comment><!-- Save List of Recent Searches --></mvt:comment>
	<mvt:if expr="g.Screen EQ 'SEARCH' AND g.q">
		<mvt:foreach iterator="recent_search" array="activity:recent_searches">
			<mvt:if expr="g.q EQ l.settings:recent_search:query">
				<mvt:assign name="l.settings:activity:search_in_history" value="1" />
			</mvt:if>
		</mvt:foreach>

		<mvt:if expr="l.settings:activity:search_in_history">
			<mvt:foreach iterator="recent_search" array="activity:recent_searches">
				<mvt:if expr="g.q EQ l.settings:recent_search:query">
					<mvt:assign name="l.settings:recent_search:timestamp" value="s.dyn_time_t" />
				</mvt:if>
			</mvt:foreach>
		<mvt:else>
			<mvt:assign name="l.recent_search:query" value="g.q" />
			<mvt:assign name="l.recent_search:timestamp" value="s.dyn_time_t" />
			<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:recent_searches, l.recent_search, 1 )" />
			<mvt:if expr="miva_array_elements(l.settings:activity:recent_searches) GT g.Activity_Max_Items">
				<mvt:assign name="l.index" value="miva_array_pop( l.settings:activity:recent_searches)" />
			</mvt:if>
		</mvt:if>

		<mvt:do file="g.module_library_utilities" name="l.null" value="QuickSortArray(l.settings:activity:recent_searches, ':timestamp', -1)" />
		<mvt:item name="customfields" param="Write_Basket('recent_searches', l.settings:activity:recent_searches)" />
	</mvt:if>

<mvt:comment><!-- Save List of Recently ADPR products --></mvt:comment>
	<mvt:foreach iterator="item" array="basket:items">
		<mvt:comment><!-- Determine if product was just added to cart --></mvt:comment>
			<mvt:assign name="l.settings:item:was_just_added" value="1" />
			<mvt:if expr="l.settings:item:product:code NE g.Product_Code">
				<mvt:assign name="l.settings:item:was_just_added" value="0" />
				<mvt:foreachcontinue/>
			</mvt:if>
			<mvt:if expr="miva_array_elements(g.Product_Attributes)">
				<mvt:assign name="l.settings:item:option_counter" value="0" />
				<mvt:foreach iterator="option" array="item:options">
					<mvt:assign name="l.settings:item:option_counter" value="l.settings:item:option_counter + 1" />
					<mvt:if expr="l.settings:option:attr_code NE g.Product_Attributes[l.settings:item:option_counter]:code">
						<mvt:assign name="l.settings:item:was_just_added" value="0" />
						<mvt:foreachcontinue/>
					</mvt:if>
					<mvt:if expr="l.settings:option:option_id">
						<mvt:if expr="l.settings:option:opt_code NE g.Product_Attributes[l.settings:item:option_counter]:value">
							<mvt:assign name="l.settings:item:was_just_added" value="0" />
							<mvt:foreachcontinue/>
						</mvt:if>
					<mvt:elseif expr="NOT ISNULL l.settings:option:data">
						<mvt:if expr="l.settings:option:data NE g.Product_Attributes[l.settings:item:option_counter]:value">
							<mvt:assign name="l.settings:item:was_just_added" value="0" />
							<mvt:foreachcontinue/>
						</mvt:if>
					<mvt:elseif expr="NOT ISNULL l.settings:option:data_long">
						<mvt:if expr="l.settings:option:data_long NE g.Product_Attributes[l.settings:item:option_counter]:value">
							<mvt:assign name="l.settings:item:was_just_added" value="0" />
							<mvt:foreachcontinue/>
						</mvt:if>
					</mvt:if>
				</mvt:foreach>
			</mvt:if>

		<mvt:comment><!-- If the product was just added to the cart, then save to Basket Custom Field for Recently ADPRs --></mvt:comment>
			<mvt:if expr="l.settings:item:was_just_added">
				<mvt:foreach iterator="recent_adpr" array="activity:recent_adprs">
					<mvt:if expr="l.settings:item:product:code EQ l.settings:recent_adpr:code">
						<mvt:assign name="l.settings:activity:product_in_history" value="1" />
					</mvt:if>
				</mvt:foreach>

				<mvt:if expr="l.settings:activity:product_in_history">
					<mvt:foreach iterator="recent_adpr" array="activity:recent_adprs">
						<mvt:if expr="l.settings:item:product:code EQ l.settings:recent_adpr:code">
							<mvt:assign name="l.settings:recent_adpr:timestamp" value="s.dyn_time_t" />
						</mvt:if>
					</mvt:foreach>
				<mvt:else>
					<mvt:assign name="l.recent_adpr:code" value="l.settings:item:product:code" />
					<mvt:assign name="l.recent_adpr:timestamp" value="s.dyn_time_t" />
					<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:recent_adprs, l.recent_adpr, 1 )" />
					<mvt:if expr="miva_array_elements(l.settings:activity:recent_adprs) GT g.Activity_Max_Items">
						<mvt:assign name="l.index" value="miva_array_pop( l.settings:activity:recent_adprs)" />
					</mvt:if>
				</mvt:if>

				<mvt:do file="g.module_library_utilities" name="l.null" value="QuickSortArray(l.settings:activity:recent_adprs, ':timestamp', -1)" />
				<mvt:item name="customfields" param="Write_Basket('recent_adprs', l.settings:activity:recent_adprs)" />
			</mvt:if>
	</mvt:foreach>

<mvt:comment><!-- Load List of Customer's Recent Orders --></mvt:comment>
	<mvt:if expr="g.Basket:cust_id">
		<mvt:comment>
			<!--
			<MvFUNCTION NAME = "OrderList_Load_Customer_Offset" PARAMETERS = "cust_id, sort_by, offset, max, nextoffset var, orders var" STANDARDOUTPUTLEVEL = "">
			sort_by: InvAsc, OrdDtAsc, OrdTotAsc, InvDesc, OrdDtDesc, OrdTotDesc
			-->
		</mvt:comment>
		<mvt:do file="g.Module_Library_DB" name="l.null" value="OrderList_Load_Customer_Offset( g.Basket:cust_id, 'OrdDtDesc', 0, g.Activity_Max_Items, l.NextOrderOffset, l.settings:activity:recent_orders )" />​

		<mvt:comment><!-- Load Customer's Recent Order Items --></mvt:comment>
		<mvt:if expr="miva_array_elements( l.settings:activity:recent_orders )">
			<mvt:foreach iterator="recent_order" array="activity:recent_orders">
				<mvt:assign name="l.recent_order:order_id" value="l.settings:recent_order:id" />
				<mvt:assign name="l.recent_order:timestamp" value="l.settings:recent_order:orderdate" />
				<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:recent_order_ids, l.recent_order, -1 )" />
				<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:all, l.recent_order, -1 )" />

				<mvt:do file="g.Module_Library_DB" name="l.null" value="OrderItemList_Load_Order( l.settings:recent_order:id, l.settings:recent_order:items )" />​
				<mvt:foreach iterator="recent_order_item" array="recent_order:items">
					<mvt:if expr="miva_array_find( l.settings:recent_order_item:code, l.settings:activity:recent_order_item_codes, 1 ) EQ 0">
						<mvt:assign name="l.recent_order_item:code" value="l.settings:recent_order_item:code" />
						<mvt:assign name="l.recent_order_item:timestamp" value="l.settings:recent_order:orderdate" />
						<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:recent_order_items, l.settings:recent_order_item, -1 )" />
						<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:recent_order_item_codes, l.recent_order_item, -1 )" />
						<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:all, l.recent_order_item, -1 )" />
					</mvt:if>
				</mvt:foreach>
			</mvt:foreach>
		</mvt:if>
	</mvt:if>

<mvt:comment><!-- Basket Items --></mvt:comment>
	<mvt:assign name="l.counter" value="1" />
	<mvt:foreach iterator="item" array="basket:items">
		<mvt:if expr="l.settings:item:product:id">
			<mvt:assign name="l.basket_item:code" value="l.settings:item:product:code" />
			<mvt:assign name="l.basket_item:timestamp" value="s.dyn_time_t + l.counter" />
			<mvt:assign name="l.counter" value="l.counter + 1" />
			<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:basket_item_codes, l.basket_item, -1 )" />
		</mvt:if>
	</mvt:foreach>


<mvt:comment>
	<mvt:assign name="l.settings:activity:basket" value="l.settings:basket" />
	<mvt:assign name="l.settings:activity:global_minibasket" value="l.settings:global_minibasket" />
	<mvt:assign name="l.settings:activity:page" value="l.settings:page" />
	<mvt:assign name="l.settings:activity:customer" value="l.settings:customer" />
</mvt:comment>
<mvt:assign name="l.settings:activity:breadcrumbs" value="l.settings:breadcrumbs" />


<mvt:comment><!-- Consolidate various activities into one log array --></mvt:comment>
	<mvt:foreach iterator="recent_category" array="activity:recent_categories">
		<mvt:assign name="l.settings:recent_category:action" value="'Visited Category'" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:all, l.settings:recent_category, -1 )" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:basket, l.settings:recent_category, -1 )" />
	</mvt:foreach>
	<mvt:foreach iterator="recent_product" array="activity:recent_products">
		<mvt:assign name="l.settings:recent_product:action" value="'Visited Product'" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:all, l.settings:recent_product, -1 )" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:basket, l.settings:recent_product, -1 )" />
	</mvt:foreach>
	<mvt:foreach iterator="recent_searche" array="activity:recent_searches">
		<mvt:assign name="l.settings:recent_searche:action" value="'Searched for Query'" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:all, l.settings:recent_searche, -1 )" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:basket, l.settings:recent_searche, -1 )" />
	</mvt:foreach>
	<mvt:foreach iterator="recent_adpr" array="activity:recent_adprs">
		<mvt:assign name="l.settings:recent_adpr:action" value="'Added Product to Cart'" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:all, l.settings:recent_adpr, -1 )" />
		<mvt:assign name="l.index" value="miva_array_insert( l.settings:activity:log:basket, l.settings:recent_adpr, -1 )" />
	</mvt:foreach>
	<mvt:do file="g.Module_Library_Utilities" name="l.null" value="QuickSortArray(l.settings:activity:log:all, ':timestamp', -1)" />

	<mvt:if expr="miva_array_elements( l.settings:activity:log:basket ) NE miva_array_elements( l.settings:activity:recent_logs )">
		<mvt:item name="customfields" param="Write_Basket('recent_logs', l.settings:activity:log:basket)" />
	</mvt:if>

<mvt:comment>
	<textarea><mvt:do file="g.Module_JSON" name="l.result" value="JSON_Output( l.settings:activity )" /></textarea>
</mvt:comment>

<mvt:if expr="miva_array_elements(l.settings:activity:log:all)">
	<div class="breaker"></div>
		<h2>Recent Activity:</h2>
		<mvt:foreach iterator="log_item" array="activity:log:all">
			<p>&mvt:log_item;</p>
		</mvt:foreach>
	<div class="breaker"></div>
</mvt:if>