<?php
require_once(WCF_DIR.'lib/acp/form/ACPForm.class.php');
require_once(WCF_DIR.'lib/page/AbstractPage.class.php');
require_once(WCF_DIR.'lib/page/SortablePage.class.php');

/**
 * Download Database Admin Control Panel.
 * Listet alle Kategorien und Subkategorien auf.
 * (Sub-)Kategorien k�nnen hinzugef�gt, bearbeitet und gel�scht werden.
 * 
 * @author		Robert "Tatzelwurm" Hempel
 * @copyright	2007/2008 INSIDE das H�rspiel
 * @license 	GNU LGPL http://www.gnu.org/licenses/lgpl.txt
 * @package		de.inside.wcf.downloaddb
 */

class DownloadDBDataListPage extends SortablePage {

	public $templateName = 'downloadDBDataList';
	public $activeMenuItem = 'wcf.acp.menu.link.content.dldb';
	public $neededPermissions = 'admin.dldb.canChangeOptions';
	
	public $itemsPerPage = DOWNLOADDB_VIEW_MAX_DATA;
	public $defaultSortField = 'katID';
	public $deleteddataID = 0;
	
	// Datensatz Variablen
	public $dataID;
	public $dldbdata = array();
	
	public $position;
	
	public $action;
	private $valid = false;
	
	public $kategorien = array();
	public $subkategorien = array();
	
	public function readParameters() {
		parent::readParameters();
		if (isset($_REQUEST['dataID'])) 	$this->dataID 	= intval($_REQUEST['dataID']);
		if (isset($_REQUEST['action'])) 	$this->action 	= escapeString($_REQUEST['action']);
		// detect Data deletion
		if (isset($_REQUEST['deleteddataID'])) {
			$this->deleteddataID = intval($_REQUEST['deleteddataID']);
		}
	}
	
	public function validateSortField() {
		parent::validateSortField();

		switch ($this->sortField) {
			case 'dataID':
			case 'katID':
			case 'name':
			case 'downloads':
			case 'activ':
			case 'fileName':break;
			default: $this->sortField = $this->defaultSortField;
		}
	}

	public function readData() {
		parent::readData();
		$this->readDldbData();
	}
	
	public function assignVariables() {
		parent::assignVariables();

		$languagesArray = WCF::getLanguage()->getAvailableLanguages();
			
		for ($i = 0; $i < count($languagesArray); $i++) {
			$languageItems = $languagesArray[$i];
					
				$languageArray[] = array(
					'languageID' => $languageItems['languageID'],
					'languageCode' => ucfirst($languageItems['languageCode'])
				);
		}
		
		WCF::getTPL()->assign(array(
			'dldbdata' => $this->dldbdata,
			'deleteddataID' => $this->deleteddataID,
			'languageArray' => $languageArray
			));
	}
	
	public function show() {
		// enable menu item
		WCFACP::getMenu()->setActiveMenuItem($this->activeMenuItem);

		parent::show();
	}
	
	public function countItems() {
		$sql = "SELECT	COUNT(dataID) AS position
				FROM	wcf".WCF_N."_dldb_data";
		$row = WCF::getDB()->getFirstRow($sql);

		return $row['position'];
	}
	
	protected function readDldbData() {
		$sql = "SELECT		*,
					(SELECT name
					 FROM wcf".WCF_N."_dldb_kats
					 WHERE	`katID` = dldb_data.`katID`)
					 AS katName
				FROM		wcf".WCF_N."_dldb_data dldb_data
				ORDER BY	dldb_data.".$this->sortField." ".$this->sortOrder."
				LIMIT		".$this->itemsPerPage."
				OFFSET		".(($this->pageNo - 1) * $this->itemsPerPage);
		$result = WCF::getDB()->sendQuery($sql);
		while ($row = WCF::getDB()->fetchArray($result)) {
			$this->dldbdata[] = $row;
		}
	}
	
}
?>