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>