public static function getLocationHierarchy($locations, $parent_id = null) { $op = array(); foreach ($locations as $location) { if ($location['parent_id'] == $parent_id) { $op[$location['id']] = array('name' => $location['name'], 'parent_id' => $location['parent_id']); // Using recursion $children = Location::getLocationHierarchy($locations, $location['id']); if ($children) { $op[$location['id']]['children'] = $children; } } } return $op; }
/** * Makes a form view to edit location information. * * @author [A. Gianotto] [<*****@*****.**>] * @see LocationsController::postCreate() method that validates and stores * @param int $locationId * @since [v1.0] * @return View */ public function getEdit($locationId = null) { // Check if the location exists if (is_null($location = Location::find($locationId))) { return redirect()->to('admin/settings/locations')->with('error', trans('admin/locations/message.does_not_exist')); } // Show the page $locations = Location::orderBy('name', 'ASC')->get(); $location_options_array = Location::getLocationHierarchy($locations); $location_options = Location::flattenLocationsArray($location_options_array); $location_options = array('' => 'Top Level') + $location_options; return View::make('locations/edit', compact('location'))->with('location_options', $location_options); }