view Settings.class.php @ 100:6619fefc7056

make config.xml writable by anyone if it exists.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Thu, 04 Mar 2010 17:11:02 +0900
parents 36ac7c416bd7
children a18df712fc7e
line wrap: on
line source

<?php
include_once('config.php');

class Settings extends SimpleXMLElement {

	const CONFIG_XML = "/settings/config.xml";

	public static function factory() {

		if( file_exists( INSTALL_PATH . self::CONFIG_XML ) ) {
			$xmlfile = file_get_contents(INSTALL_PATH . self::CONFIG_XML);
			$obj = new self($xmlfile);

			// 8月14日以降に追加した設定項目の自動生成

			// キーワード自動録画の録画モード
			if( $obj->exists("autorec_mode") == 0 ) {
				$obj->autorec_mode = 0;
				$obj->save();
			}
			// CSの録画
			if( $obj->exists("cs_rec_flg") == 0 ) {
				$obj->cs_rec_flg = 0;
				$obj->save();
			}
			return $obj;
		}
		else {
			// 初回起動
			$xmlfile = '<?xml version="1.0" encoding="UTF-8" ?><epgrec></epgrec>';
			$xml = new self($xmlfile);

			// 旧config.phpを読み取って設定
			if(defined("SPOOL") ) $xml->spool = SPOOL;
			else $xml->spool = "/video";

			if(defined("THUMBS") ) $xml->thumbs = THUMBS;
			else $xml->thumbs = "/thumbs";

			if(defined("INSTALL_URL")) $xml->install_url = INSTALL_URL;
			else $xml->install_url = "http://localhost/epgrec";

			if(defined("BS_TUNERS")) $xml->bs_tuners = BS_TUNERS;
			else $xml->bs_tuners = 0;

			if(defined("GR_TUNERS")) $xml->gr_tuners = GR_TUNERS;
			else $xml->gr_tuners = 1;

			if(defined("CS_REC_FLG")) $xml->cs_rec_flg = CS_REC_FLG;
			else $xml->cs_rec_flg = 0;

			if(defined("USE_KUROBON")) $xml->use_kurobon = USE_KUROBON ? 1 : 0;
			else $xml->use_kurobon = 0;

			if(defined("FORMER_TIME")) $xml->former_time = FORMER_TIME;
			else $xml->former_time = 20;

			if(defined("EXTRA_TIME")) $xml->extra_time = EXTRA_TIME;
			else $xml->extra_time = 0;

			if(defined("FORCE_CONT_REC")) $xml->force_cont_rec = FORCE_CONT_REC ? 1 : 0;
			else $xml->force_cont_rec = 0;

			if(defined("REC_SWITCH_TIME")) $xml->rec_switch_time = REC_SWITCH_TIME;
			else $xml->rec_switch_time = 5;

			if(defined("USE_THUMBS")) $xml->use_thumbs = USE_THUMBS ? 1 : 0;
			else $xml->use_thumbs = 0;

			if(defined("MEDIATOMB_UPDATE")) $xml->mediatomb_update = MEDIATOMB_UPDATE ? 1 : 0;
			else $xml->mediatomb_update = 0;

			if(defined("FILENAME_FORMAT")) $xml->filename_format = FILENAME_FORMAT;
			else $xml->filename_format = "%TYPE%%CH%_%ST%_%ET%";

			if(defined("DB_HOST")) $xml->db_host = DB_HOST;
			else $xml->db_host = "localhost";

			if(defined("DB_NAME")) $xml->db_name = DB_NAME;
			else $xml->db_name = "yourdbname";

			if(defined("DB_USER")) $xml->db_user = DB_USER;
			else $xml->db_user = "yourname";

			if(defined("DB_PASS")) $xml->db_pass = DB_PASS;
			else $xml->db_pass = "yourpass";

			if(defined("TBL_PREFIX")) $xml->tbl_prefix = TBL_PREFIX;
			else $xml->tbl_prefix = "Recorder_";

			if(defined("EPGDUMP")) $xml->epgdump = EPGDUMP;
			else $xml->epgdump = "/usr/local/bin/epgdump";

			if(defined("AT")) $xml->at = AT;
			else $xml->at = "/usr/bin/at";

			if(defined( "ATRM" )) $xml->atrm = ATRM;
			else $xml->atrm = "/usr/bin/atrm";

			if(defined( "SLEEP" )) $xml->sleep = SLEEP;
			else $xml->sleep = "/bin/sleep";

			if(defined( "FFMPEG" )) $xml->ffmpeg = FFMPEG;
			else $xml->ffmpeg = "/usr/bin/ffmpeg";

			if(defined("TEMP_DATA" )) $xml->temp_data = TEMP_DATA;
			else $xml->temp_data = "/tmp/__temp.ts";

			if(defined("TEMP_XML")) $xml->temp_xml = TEMP_XML;
			else $xml->temp_xml = "/tmp/__temp.xml";

			// index.phpで使う設定値
			// 表示する番組表の長さ(時間)
			$xml->program_length = 8;
			// 1局の幅
			$xml->ch_set_width = 150;
			// 1分あたりの高さ
			$xml->height_per_hour = 120;

			// 8月14日版以降に追加した設定項目

			// キーワード自動録画の録画モード
			$xml->autorec_mode = 0;

			$xml->save();

			return $xml;
		}
	}

	public function exists( $property ) {
		return (int)count( $this->{$property} );
	}

	public function post() {
		global $_POST;

		foreach( $_POST as $key => $value ) {

			if( $this->exists($key) ) {
				$this->{$key} = trim($value);
			}
		}
	}

	public function save() {
		$this->asXML(INSTALL_PATH . self::CONFIG_XML);
	}
}
?>