71 lines
1.8 KiB
PHP
71 lines
1.8 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App;
|
||
|
|
|
||
|
|
use Illuminate\Database\Eloquent\Model;
|
||
|
|
|
||
|
|
class Directory extends Model
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* The table associated with the model.
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
*/
|
||
|
|
protected $table = 'directories';
|
||
|
|
protected $fillable = [
|
||
|
|
'parent_id', 'name', 'year', 'user_id', 'title', 'description', 'by_admin'
|
||
|
|
];
|
||
|
|
|
||
|
|
public static function getPath($did)
|
||
|
|
{
|
||
|
|
if(!isset($did) || $did==null)
|
||
|
|
return '';
|
||
|
|
|
||
|
|
$directory = Directory::find($did);
|
||
|
|
if($directory)
|
||
|
|
{
|
||
|
|
if($directory->parent_id == 0)
|
||
|
|
return $directory->name;
|
||
|
|
else
|
||
|
|
return Directory::getPath($directory->parent_id) . ' / ' . $directory->name;
|
||
|
|
}
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function getPathArray($did)
|
||
|
|
{
|
||
|
|
if(!isset($did) || $did==null)
|
||
|
|
return [];
|
||
|
|
|
||
|
|
$directory = Directory::find($did);
|
||
|
|
if($directory)
|
||
|
|
{
|
||
|
|
if($directory->parent_id == 0)
|
||
|
|
return [$directory->id => $directory->name];
|
||
|
|
else
|
||
|
|
return Directory::getPathArray($directory->parent_id) + [$directory->id => $directory->name];
|
||
|
|
}
|
||
|
|
return [];
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function getPathToRoot($did, $show_itself=false)
|
||
|
|
{
|
||
|
|
if(!isset($did) || $did==null)
|
||
|
|
return [];
|
||
|
|
|
||
|
|
$directory = Directory::find($did);
|
||
|
|
if($directory)
|
||
|
|
{
|
||
|
|
$directory =($show_itself) ? $directory : Directory::find($directory->parent_id);
|
||
|
|
if($directory)
|
||
|
|
{
|
||
|
|
if($directory->parent_id == 0)
|
||
|
|
return [$directory->id];
|
||
|
|
else
|
||
|
|
return array_merge([$directory->id], Directory::getPathToRoot($directory->parent_id));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return [];
|
||
|
|
}
|
||
|
|
}
|