'Wiaas Delivery Process Step Order', 'is_numeric' => true, 'update_entry_meta_callback' => null, 'is_default_column' => false, // this column will be displayed by default on the entry list 'filter' => array( 'operators' => array( 'is' ), ), ); return $entry_meta; } function action_gflow_after_workflow_complete($entry_id, $form, $final_status) { $entry = GFAPI::get_entry($entry_id); $parent_entry_id = $entry['wiaas_delivery_process_id']; if (empty($parent_entry_id)) { return; } $api = new Gravity_Flow_API( $form['id'] ); $current_step = $api->get_current_step( $entry ); if ( empty( $current_step ) ) { $parent_entry_id = absint( $parent_entry_id ); $parent_entry = GFAPI::get_entry( $parent_entry_id ); $parent_api = new Gravity_Flow_API( $parent_entry['form_id'] ); $parent_api->process_workflow( $parent_entry_id ); } } add_action( 'rest_api_init', 'wiaas_action_rest_api_init' ); function wiaas_action_rest_api_init() { register_rest_route( 'wiaas', 'next-delivery-steps', array( 'methods' => 'GET', 'callback' => 'get_next_actions_for_user', 'permission_callback' => null, ) ); register_rest_route( 'wiaas', 'order-delivery-process/(?P[\d]+)', array( 'args' => array( 'id' => array( 'description' => __( 'Unique identifier for the resource.', 'wiaas' ), 'type' => 'integer', ), ), array( 'methods' => 'GET', 'callback' => 'get_delivery_process_for_order', 'permission_callback' => null, ) ) ); } function get_next_actions_for_user() { $current_user = wp_get_current_user(); $field_filters = array(); $field_filters[] = array( 'key' => 'workflow_user_id_' . $current_user->ID, 'value' => 'pending', ); $user_roles = gravity_flow()->get_user_roles(); foreach ( $user_roles as $user_role ) { $field_filters[] = array( 'key' => 'workflow_role_' . $user_role, 'value' => 'pending', ); } $field_filters['mode'] = 'any'; $search_criteria = array(); $search_criteria['field_filters'] = $field_filters; $search_criteria['status'] = 'active'; $form_ids = gravity_flow()->get_workflow_form_ids(); $total_count = 7; $entries = GFAPI::get_entries( $form_ids, $search_criteria, null, null, $total_count ); $data = array(); foreach ($entries as $entry) { $step = gravity_flow()->get_step( $entry['workflow_step'] ); $data[] = array( 'idOrder' => $entry['wiaas_delivery_order_id'], 'orderNumber' => $entry['wiaas_delivery_order_id'], 'status' => $entry['workflow_final_status'], 'stepAction' => $step->get_name(), ); } $response = new WP_REST_Response( $data ); return $response; } function get_delivery_process_for_order($data) { $order_id = $data["id"]; $process = GFAPI::get_entry(161); $api = new Gravity_Flow_API($process['form_id']); $steps_info = $api->get_steps(); $response = array(); foreach ( $steps_info as $step_info ) { $step = $api->get_step( $step_info->get_id(), $process ); $info = $step->get_feed_meta(); $response[] = array( 'step_id' => $step->get_id(), 'step_form_entry_id' => $step->get_target_form_entry_id() ?: null, 'short_desc' => $info['step_name'], 'full_desc' => $info['description'], 'action_code' => $step->get_delivery_action_type(), 'step_type' => $step->get_delivery_action_type() === 'manual' ? 'manual' : 'extraAction', 'status' => $step->get_status() ?: 'inactive', 'order_id' => $order_id, 'actual_date' => $step->get_target_actual_date(), 'comments' => $step->get_target_step_comments(), ); } return new WP_REST_Response( $response ); }