<?php

/**
 * Filecreator
 *
 * @author Arkadiusz Rychlik <a.rychlik at eppe.com.pl>
 */
class Rtn_Module_Tool_Filecreator {

	static public function create($filename,$data) {
		$date = date('Y-m-d H:i:s');
		
		if(strpos($filename, '.php') !== FALSE){			
		$file = <<<EOF
<?php
/**
 * Generated: {$date}
 * @author Rtn_Module_Tool
 */
\n
EOF;
		}
		else{
			$file = '';
		}

		switch($filename){
			case 'configs/module.ini':
				$file .= <<<EOF
[production]
hasMenu = false

[qa : production]

[development : production]
EOF;
			break;
		
			case 'classes/Bootstrap.php':
				$file .= <<<EOF
class {$data->moduleName}_Bootstrap extends Zend_Application_Module_Bootstrap {

	protected function _initControllerDirectory() {
		Zend_Controller_Front::getInstance()->setControllerDirectory(
			MODULES_PATH . '{$data->moduleName}/classes/Controller/'
		);
	}
}
EOF;
			break;
		
			case 'classes/Module/Module.php':
				$file .= <<<EOF
class {$data->moduleName}_Module_Module extends Eppe_Module_ModuleAbstract implements Eppe_Module_ModuleInterface {
}
EOF;
			break;
		
			case 'classes/Module/Acl.php':
				$file .= <<<EOF
class {$data->moduleName}_Module_Acl extends Eppe_Module_AclAbstract implements Eppe_Module_AclInterface {
}
EOF;
			break;
		
			case 'classes/Module/Initer.php':
				$file .= <<< EOF
class {$data->moduleName}_Module_Initer extends Rtn_Module_Initer {

	static \$moduleName = '{$data->moduleName}';
	static \$initers = array('DB', 'Acl');
}
EOF;
			break;
		
			case 'classes/Module/Menu.php':
				$file .= <<< EOF
class {$data->moduleName}_Module_Menu extends Eppe_Module_MenuAbstract implements Eppe_Module_MenuInterface {

	public function setNavigation() {
		// zawartość czysto przykładowa
		\$this->navigation =
				array(
					array(
						'label' => __('{$data->moduleName}'),
						'module' => '{$data->moduleName}',
						'controller' => 'index',
						'action' => 'index',
						'resource' => '{$data->moduleName}',
						'route' => 'default'
					)
		);
	}

}
				
EOF;
				
			break;
		
			case 'classes/Module/Route.php':
				$file .= <<< EOF
class {$data->moduleName}_Module_Route extends Eppe_Module_RouteAbstract {

	public function getRoutes() {
		return [
//			'nazwa_route' => new Zend_Route...
		];
	}

}
EOF;
			break;
		
		
			case 'classes/Module/Initer/Acl.php':
				$file .= <<< EOF
class {$data->moduleName}_Module_Initer_Acl extends Rtn_Module_Initer_Acl {

	static \$roles = []; // wprowadzamy tablice nowyc ról
	static \$moduleName = '{$data->moduleName}';
	static \$acls = array(
// przykład		'admin_auth.ajax-login' => '*',
// przykład		'admin_index.index' => array('admin'),
	);

}
EOF;
			break;
		
			case 'classes/Module/Initer/DB.php':
				$file .= <<< EOF
class {$data->moduleName}_Module_Initer_DB {

	static \$sql_before = "
		SET foreign_key_checks = 0;
-- przykład		DROP TABLE IF EXISTS draft;
-- przykład		DROP TABLE IF EXISTS role;
		SET foreign_key_checks = 1;
	";
	static \$sql_after = "
-- przykład		ALTER TABLE  `role` ADD UNIQUE (  `name` );
-- przykład		ALTER TABLE `user` ADD UNIQUE `email` (`email`);
	";

	static function init() {
		empty(static::\$sql_before) || R::exec(static::\$sql_before);
		empty(static::\$sql_after) || R::exec(static::\$sql_after);
	}

}
EOF;
			break;
		
		
		
		}
		
		return $file;
	}
	
	
	
}
