<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 *
 * @package    PTA
 * @subpackage Volume
 * @category   Models
 * @author     Deon George
 * @copyright  (c) 2010 phpTSMadmin Development Team
 * @license    http://phptsmadmin.sf.net/license.html
 */
class Model_VOLUME extends TSM_ORM {
	protected $_table_name = 'VOLUMES';
	protected $_primary_key = 'VOLUME_NAME';
	protected $_sorting = array(
		'VOLUME_NAME'=>'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;
	}
}
?>