<?php
/**
 * @package framework
 * @subpackage tasks
 */
class i18nTextCollectorTask extends BuildTask {
	
	protected $title = "i18n Textcollector Task";
	
	protected $description = "
		Traverses through files in order to collect the 'entity master tables'
		stored in each module.

		Parameters:
		- locale: Sets default locale
		- writer: Custom writer class (defaults to i18nTextCollector_Writer_RailsYaml)
		- module: One or more modules to limit collection (comma-separated)
		- merge: Merge new strings with existing ones already defined in language files (default: FALSE)
	";
	
	public function init() {
		parent::init();
		
		$canAccess = (Director::isDev() || Director::is_cli() || Permission::check("ADMIN"));
		if(!$canAccess) return Security::permissionFailure($this);
	}
	
	/**
	 * This is the main method to build the master string tables with the original strings.
	 * It will search for existent modules that use the i18n feature, parse the _t() calls
	 * and write the resultant files in the lang folder of each module.
	 * 
	 * @uses DataObject->collectI18nStatics()
	 */	
	public function run($request) {
		increase_time_limit_to();
		$c = new i18nTextCollector($request->getVar('locale'));
		$writer = $request->getVar('writer');
		if($writer) $c->setWriter(new $writer());
		$restrictModules = ($request->getVar('module')) ? explode(',', $request->getVar('module')) : null;
		return $c->run($restrictModules, (bool)$request->getVar('merge'));
	}
}