Educourserun.php 3.28 KB
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;

use Auth;

class Educourserun extends Model{

	protected $table = 'educourseruns';


	public $dataarr=array();
	public $logarr=array();
	public $prgarr=array();

	public function rdecode()
	{
	  $this->dataarr=json_decode($this->data,true);
	  $this->logarr=json_decode($this->rlog,true);
	  $this->prgarr=json_decode($this->progress,true);
	  return $this;
	}
	public function save(array $attributes = array())
	{
	  if(!empty($this->dataarr))$this->data=json_encode($this->dataarr);
	  if(!empty($this->logarr))$this->rlog=json_encode($this->logarr);
	  if(!empty($this->prgarr))$this->progress=json_encode($this->prgarr);

	  parent::save($attributes);
	}
	
	public function checkarr($i,$j,$k)
	{
	  if(!isset($this->prgarr))$this->prgarr=array();
	  if(!isset($this->prgarr[$i]))$this->prgarr[$i]=array();
	  if(!isset($this->prgarr[$i][1]))$this->prgarr[$i][1]=array();
	  if(!isset($this->prgarr[$i][1][$j]))$this->prgarr[$i][1][$j]=array();
	  if(!isset($this->prgarr[$i][1][$j][1]))$this->prgarr[$i][1][$j][1]=array();
	  if(!isset($this->prgarr[$i][1][$j][1][$k]))$this->prgarr[$i][1][$j][1][$k]=array();
	  if(!isset($this->prgarr[$i][1][$j][1][$k][0]))$this->prgarr[$i][1][$j][1][$k][0]=array();
	  if(!isset($this->prgarr[$i][1][$j][1][$k][1]))$this->prgarr[$i][1][$j][1][$k][1]=array();
	}
	public function allFeedback()
	{
	  if(!isset($this->logarr['feedback'])) $this->logarr['feedback']=array();

	  $restotal=array();
	  $restotal[0]=0;//contains total count;
	  $restotal[1]=0;
	  $restotal[2]=0;
	  $restotal[3]=0;
	  $restotal[4]=0;
	  $restotal[5]=0;
	  if(isset($this->logarr['feedback']))foreach($this->logarr['feedback'] as $tuid=>$tuarr)
	  {
	    for($i=1;$i<=5;$i++)
	    {
				if(!isset($tuarr[$i]))$tuarr[$i]=0;
				$restotal[$i]+=$tuarr[$i];
			}
	    $restotal[0]++;
	  }
	  
	  return $restotal;
	}
	
	
	
	protected static function boot()
	{
		parent::boot();

		static::addGlobalScope('groupacl', function(\Illuminate\Database\Eloquent\Builder $builder)
		{
			if(Auth::check())
			{
				$builder->whereIn('group',Auth::user()->getAccessList("group",true,false,false));
			}
		});
		
		static::creating(function($model)
		{
			if(Auth::check())
			{
				if($model->group=='')$model->group=Auth::user()->group;
				if($model->group=='')$model->group="Default";
				
				$groupacl=Auth::user()->getAccessList("group",false,true,false);
				if(!in_array($model->group,$groupacl))
				{
					throw new \Exception("No Access to Create [".Auth::user()->id."] : (".implode(",",$groupacl).") in $model->group");
					return false;
				}
			}
			else if($model->group=='')$model->group="Default";
		});
		static::updating(function($model)
		{
			if(Auth::check())
			{
				$original = $model->getOriginal();
				if($original['group']=='')$original['group']='Default';
				
				if($model->group=='')$model->group=Auth::user()->group;
				if($model->group=='')$model->group="Default";
				
				$groupacl=Auth::user()->getAccessList("group",false,true,false);
				if(!in_array($original['group'],$groupacl)||!in_array($model->group,$groupacl))
				{
					throw new \Exception("No Access to Update [".Auth::user()->id."] : (".implode(",",$groupacl).") in $model->group");
					return false;
				}
			}
			else if($model->group=='')$model->group="Default";
		});
	}
}