<?php
class MyModule extends CharcoalComponent implements IModule
{
	/*
	 * モジュールの処理を実行する
	 */
	public function execute( $action, IEvent $event )
	{
		// データファイルのパスを取得
		$data_file = _webapp_path( s('data'), s('data.txt') );
		
		// データファイルの読み込み
		$data_list = array();
		if ( is_file($data_file) ){
			// ファイルの内容を取得
			$fp = fopen( $data_file, "r" );
			while ( $line = fgets($fp) ) {
				$data = explode( ',', $line );
				if ( count($data) >= 2 ){
					$id = $data[0];
					$name = $data[1];
					$data_list[$id] = $name;
				}
			}
			fclose($fp);
		}

		$modified = FALSE;

		switch ( $action ){
		case 'list':
			{
				return $data_list;
			}
			break;
		case 'add':
			{
				// シーケンスファイルの読み込み
				$seq_file = _webapp_path( s('data'), s('seq.txt') );
				if ( is_file($seq_file) ){
					// ファイルの内容を取得
					$fp = fopen( $seq_file, "r" );
					$line = fgets($fp);
					fclose($fp);
					$seq = intval($line);
				}
				else{
					$seq = 0;
				}

				$name = $event->get( s('name') );
				$id = ++ $seq;
				$data_list[$id] = $name;

				$modified = TRUE;

				// シーケンスファイルの保存
				$fp = fopen($seq_file, 'w');
				fwrite( $fp, $seq );
				fclose($fp);
			}
			break;
		case 'delete':
			{
				$id = $event->get( s('id') );
				unset( $data_list[$id] );

				$modified = TRUE;
			}
			break;
		}

		// データファイルの保存
		if ( $modified ){
			$fp = fopen($data_file, 'w');
			foreach( $data_list as $id => $name ){
				$line = "$id,$name\n";
				fwrite( $fp, $line );
			}
			fclose($fp);
		}
	}
}
