'ASC', 'STGPOOL_NAME'=>'ASC', ); protected $_has_one = array( 'MEDIA'=>array('foreign_key'=>'VOLUME_NAME','far_key'=>'VOLUME_NAME'), 'STGPOOL'=>array('foreign_key'=>'STGPOOL_NAME','far_key'=>'STGPOOL_NAME'), ); protected $_has_many = array( 'VOLUMEUSAGE'=>array('foreign_key'=>'VOLUME_NAME','far_key'=>'VOLUME_NAME'), ); protected $_display_filters = array( 'LAST_READ_DATE'=>array( array('TSM_ORM::date',array(':value','d-M-Y')), ), 'LAST_WRITE_DATE'=>array( array('TSM_ORM::date',array(':value','d-M-Y')), ), ); // Show the number of filespaces on a volume // $dtype is BACKUP or ARCHIVE public function getFSOnVol($dtype) { return $this->VOLUMEUSAGE->where('COPY_TYPE','=',$dtype)->find_all()->count(); } // Show the number of nodes on a volume // $dtype is BACKUP or ARCHIVE public function getNodesOnVol($dtype) { return $this->VOLUMEUSAGE->select('NODE_NAME')->distinct(TRUE)->where('COPY_TYPE','=',$dtype)->find_all()->count(); } public function isScratch() { return $this->SCRATCH === 'YES' ? TRUE : FALSE; } public function location() { return $this->display('LOCATION'); } // Age of a volume, based on last read/write access. public function age() { if ((! $this->LAST_READ_DATE AND ! $this->LAST_WRITE_DATE) OR $this->STATUS == 'EMPTY') return 0; else return (int)((time()-(strtotime(strtotime($this->LAST_READ_DATE) > strtotime($this->LAST_WRITE_DATE) ? $this->LAST_WRITE_DATE : $this->LAST_READ_DATE)))/86400); } public function recycle() { return Kohana::$config->load('config')->tsmtapeage < $this->age() ? TRUE : FALSE; } } ?>