Cleaner re-implementation of loop-detection for asset-assigned-assets (#4553)

* Cleaner re-implementation of loop-detection for asset-assigned-assets

* Get rid of the other static and pass it along recursively too.
This commit is contained in:
Brady Wetherington 2017-12-04 23:00:55 -08:00 committed by snipe
parent d7f2bceea2
commit 4584990cc3
2 changed files with 3 additions and 6 deletions

View file

@ -109,7 +109,7 @@ class SyncAssetLocations extends Command
$assigned_asset_asset->unsetEventDispatcher();
$assigned_asset_asset->save();
} else {
$output['warn'][] ='Asset Assigned asset ' . $assigned_asset_asset->assetLoc()->id. ' ('.$assigned_asset_asset->asset_tag.') does not seem to have a valid location';
$output['warn'][] ='Asset Assigned asset ' . $assigned_asset_asset->id. ' ('.$assigned_asset_asset->asset_tag.') does not seem to have a valid location';
}
$bar->advance();

View file

@ -257,13 +257,10 @@ class Asset extends Depreciable
/**
* Get the asset's location based on the assigned user
**/
public function assetLoc()
public function assetLoc($iterations = 1,$first_asset = null)
{
static $iterations=0;
static $first_asset;
if (!empty($this->assignedType())) {
if ($this->assignedType() == self::ASSET) {
$iterations++;
if(!$first_asset) {
$first_asset=$this;
}
@ -272,7 +269,7 @@ class Asset extends Depreciable
}
$assigned_to=Asset::find($this->assigned_to); //have to do this this way because otherwise it errors
if ($assigned_to) {
return $assigned_to->assetLoc();
return $assigned_to->assetLoc($iterations + 1, $first_asset);
} // Recurse until we have a final location
}
if ($this->assignedType() == self::LOCATION) {