You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					354 lines
				
				9.2 KiB
			
		
		
			
		
	
	
					354 lines
				
				9.2 KiB
			| 
								 
											13 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @link http://www.yiiframework.com/
							 | 
						||
| 
								 | 
							
								 * @copyright Copyright (c) 2008 Yii Software LLC
							 | 
						||
| 
								 | 
							
								 * @license http://www.yiiframework.com/license/
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace yii\console\controllers;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use Yii;
							 | 
						||
| 
								 | 
							
								use yii\console\Exception;
							 | 
						||
| 
								 | 
							
								use yii\console\Controller;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @author Qiang Xue <qiang.xue@gmail.com>
							 | 
						||
| 
								 | 
							
								 * @since 2.0
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								class AssetController extends Controller
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								{
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									public $defaultAction = 'compress';
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									public $bundles = array();
							 | 
						||
| 
								 | 
							
									public $extensions = array();
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @var array
							 | 
						||
| 
								 | 
							
									 * ~~~
							 | 
						||
| 
								 | 
							
									 * 'all' => array(
							 | 
						||
| 
								 | 
							
									 *     'css' => 'all.css',
							 | 
						||
| 
								 | 
							
									 *     'js' => 'js.css',
							 | 
						||
| 
								 | 
							
									 *     'depends' => array( ... ),
							 | 
						||
| 
								 | 
							
									 * )
							 | 
						||
| 
								 | 
							
									 * ~~~
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public $targets = array();
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									public $assetManager = array();
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									public $jsCompressor = 'java -jar compiler.jar --js {from} --js_output_file {to}';
							 | 
						||
| 
								 | 
							
									public $cssCompressor = 'java -jar yuicompressor.jar {from} -o {to}';
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
									public function actionCompress($configFile, $bundleFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$this->loadConfiguration($configFile);
							 | 
						||
| 
								 | 
							
										$bundles = $this->loadBundles($this->bundles, $this->extensions);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$targets = $this->loadTargets($this->targets, $bundles);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$this->publishBundles($bundles, $this->publishOptions);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$timestamp = time();
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										foreach ($targets as $target) {
							 | 
						||
| 
								 | 
							
											if (!empty($target->js)) {
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
												$this->buildTarget($target, 'js', $bundles, $timestamp);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
											if (!empty($target->css)) {
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
												$this->buildTarget($target, 'css', $bundles, $timestamp);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$targets = $this->adjustDependency($targets, $bundles);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$this->saveTargets($targets, $bundleFile);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected function loadConfiguration($configFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										foreach (require($configFile) as $name => $value) {
							 | 
						||
| 
								 | 
							
											if (property_exists($this, $name)) {
							 | 
						||
| 
								 | 
							
												$this->$name = $value;
							 | 
						||
| 
								 | 
							
											} else {
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
												throw new Exception("Unknown configuration option: $name");
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										if (!isset($this->assetManager['basePath'])) {
							 | 
						||
| 
								 | 
							
											throw new Exception("Please specify 'basePath' for the 'assetManager' option.");
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										}
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										if (!isset($this->assetManager['baseUrl'])) {
							 | 
						||
| 
								 | 
							
											throw new Exception("Please specify 'baseUrl' for the 'assetManager' option.");
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected function loadBundles($bundles, $extensions)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$result = array();
							 | 
						||
| 
								 | 
							
										foreach ($bundles as $name => $bundle) {
							 | 
						||
| 
								 | 
							
											$bundle['class'] = 'yii\\web\\AssetBundle';
							 | 
						||
| 
								 | 
							
											$result[$name] = Yii::createObject($bundle);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										foreach ($extensions as $path) {
							 | 
						||
| 
								 | 
							
											$manifest = $path . '/assets.php';
							 | 
						||
| 
								 | 
							
											if (!is_file($manifest)) {
							 | 
						||
| 
								 | 
							
												continue;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											foreach (require($manifest) as $name => $bundle) {
							 | 
						||
| 
								 | 
							
												if (!isset($result[$name])) {
							 | 
						||
| 
								 | 
							
													$bundle['class'] = 'yii\\web\\AssetBundle';
							 | 
						||
| 
								 | 
							
													$result[$name] = Yii::createObject($bundle);
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return $result;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									protected function loadTargets($targets, $bundles)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										// build the dependency order of bundles
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$registered = array();
							 | 
						||
| 
								 | 
							
										foreach ($bundles as $name => $bundle) {
							 | 
						||
| 
								 | 
							
											$this->registerBundle($bundles, $name, $registered);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										$bundleOrders = array_combine(array_keys($registered), range(0, count($bundles) - 1));
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
										// fill up the target which has empty 'depends'.
							 | 
						||
| 
								 | 
							
										$referenced = array();
							 | 
						||
| 
								 | 
							
										foreach ($targets as $name => $target) {
							 | 
						||
| 
								 | 
							
											if (empty($target['depends'])) {
							 | 
						||
| 
								 | 
							
												if (!isset($all)) {
							 | 
						||
| 
								 | 
							
													$all = $name;
							 | 
						||
| 
								 | 
							
												} else {
							 | 
						||
| 
								 | 
							
													throw new Exception("Only one target can have empty 'depends' option. Found two now: $all, $name");
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											} else {
							 | 
						||
| 
								 | 
							
												foreach ($target['depends'] as $bundle) {
							 | 
						||
| 
								 | 
							
													if (!isset($referenced[$bundle])) {
							 | 
						||
| 
								 | 
							
														$referenced[$bundle] = $name;
							 | 
						||
| 
								 | 
							
													} else {
							 | 
						||
| 
								 | 
							
														throw new Exception("Target '{$referenced[$bundle]}' and '$name' cannot contain the bundle '$bundle' at the same time.");
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (isset($all)) {
							 | 
						||
| 
								 | 
							
											$targets[$all]['depends'] = array_diff(array_keys($registered), array_keys($referenced));
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// adjust the 'depends' order for each target according to the dependency order of bundles
							 | 
						||
| 
								 | 
							
										// create an AssetBundle object for each target
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										foreach ($targets as $name => $target) {
							 | 
						||
| 
								 | 
							
											if (!isset($target['basePath'])) {
							 | 
						||
| 
								 | 
							
												throw new Exception("Please specify 'basePath' for the '$name' target.");
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											if (!isset($target['baseUrl'])) {
							 | 
						||
| 
								 | 
							
												throw new Exception("Please specify 'baseUrl' for the '$name' target.");
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											usort($target['depends'], function ($a, $b) use ($bundleOrders) {
							 | 
						||
| 
								 | 
							
												if ($bundleOrders[$a] == $bundleOrders[$b]) {
							 | 
						||
| 
								 | 
							
													return 0;
							 | 
						||
| 
								 | 
							
												} else {
							 | 
						||
| 
								 | 
							
													return $bundleOrders[$a] > $bundleOrders[$b] ? 1 : -1;
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											});
							 | 
						||
| 
								 | 
							
											$target['class'] = 'yii\\web\\AssetBundle';
							 | 
						||
| 
								 | 
							
											$targets[$name] = Yii::createObject($target);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return $targets;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @param \yii\web\AssetBundle[] $bundles
							 | 
						||
| 
								 | 
							
									 * @param array $options
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									protected function publishBundles($bundles, $options)
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									{
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										if (!isset($options['class'])) {
							 | 
						||
| 
								 | 
							
											$options['class'] = 'yii\\web\\AssetManager';
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										$am = Yii::createObject($options);
							 | 
						||
| 
								 | 
							
										foreach ($bundles as $bundle) {
							 | 
						||
| 
								 | 
							
											$bundle->publish($am);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									 * @param \yii\web\AssetBundle $target
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									 * @param string $type either "js" or "css"
							 | 
						||
| 
								 | 
							
									 * @param \yii\web\AssetBundle[] $bundles
							 | 
						||
| 
								 | 
							
									 * @param integer $timestamp
							 | 
						||
| 
								 | 
							
									 * @throws Exception
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									protected function buildTarget($target, $type, $bundles, $timestamp)
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									{
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$outputFile = strtr($target->$type, array(
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
											'{ts}' => $timestamp,
							 | 
						||
| 
								 | 
							
										));
							 | 
						||
| 
								 | 
							
										$inputFiles = array();
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
										foreach ($target->depends as $name) {
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
											if (isset($bundles[$name])) {
							 | 
						||
| 
								 | 
							
												foreach ($bundles[$name]->$type as $file) {
							 | 
						||
| 
								 | 
							
													$inputFiles[] = $bundles[$name]->basePath . '/' . $file;
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											} else {
							 | 
						||
| 
								 | 
							
												throw new Exception("Unknown bundle: $name");
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if ($type === 'js') {
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
											$this->compressJsFiles($inputFiles, $target->basePath . '/' . $outputFile);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										} else {
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
											$this->compressCssFiles($inputFiles, $target->basePath . '/' . $outputFile);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										}
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$target->$type = array($outputFile);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected function adjustDependency($targets, $bundles)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										$map = array();
							 | 
						||
| 
								 | 
							
										foreach ($targets as $name => $target) {
							 | 
						||
| 
								 | 
							
											foreach ($target->depends as $bundle) {
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
												$map[$bundle] = $name;
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										foreach ($targets as $name => $target) {
							 | 
						||
| 
								 | 
							
											$depends = array();
							 | 
						||
| 
								 | 
							
											foreach ($target->depends as $bn) {
							 | 
						||
| 
								 | 
							
												foreach ($bundles[$bn]->depends as $bundle) {
							 | 
						||
| 
								 | 
							
													$depends[$map[$bundle]] = true;
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											unset($depends[$name]);
							 | 
						||
| 
								 | 
							
											$target->depends = array_keys($depends);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// detect possible circular dependencies
							 | 
						||
| 
								 | 
							
										foreach ($targets as $name => $target) {
							 | 
						||
| 
								 | 
							
											$registered = array();
							 | 
						||
| 
								 | 
							
											$this->registerBundle($targets, $name, $registered);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										foreach ($map as $bundle => $target) {
							 | 
						||
| 
								 | 
							
											$targets[$bundle] = Yii::createObject(array(
							 | 
						||
| 
								 | 
							
												'class' => 'yii\\web\\AssetBundle',
							 | 
						||
| 
								 | 
							
												'depends' => array($target),
							 | 
						||
| 
								 | 
							
											));
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										return $targets;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									protected function registerBundle($bundles, $name, &$registered)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if (!isset($registered[$name])) {
							 | 
						||
| 
								 | 
							
											$registered[$name] = false;
							 | 
						||
| 
								 | 
							
											$bundle = $bundles[$name];
							 | 
						||
| 
								 | 
							
											foreach ($bundle->depends as $depend) {
							 | 
						||
| 
								 | 
							
												$this->registerBundle($bundles, $depend, $registered);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											unset($registered[$name]);
							 | 
						||
| 
								 | 
							
											$registered[$name] = true;
							 | 
						||
| 
								 | 
							
										} elseif ($registered[$name] === false) {
							 | 
						||
| 
								 | 
							
											throw new Exception("A circular dependency is detected for target '$name'.");
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected function saveTargets($targets, $bundleFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$array = array();
							 | 
						||
| 
								 | 
							
										foreach ($targets as $name => $target) {
							 | 
						||
| 
								 | 
							
											foreach (array('js', 'css', 'depends', 'basePath', 'baseUrl') as $prop) {
							 | 
						||
| 
								 | 
							
												if (!empty($target->$prop)) {
							 | 
						||
| 
								 | 
							
													$array[$name][$prop] = $target->$prop;
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										$array = var_export($array, true);
							 | 
						||
| 
								 | 
							
										$version = date('Y-m-d H:i:s', time());
							 | 
						||
| 
								 | 
							
										file_put_contents($bundleFile, <<<EOD
							 | 
						||
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								 * This file is generated by the "yiic script" command.
							 | 
						||
| 
								 | 
							
								 * DO NOT MODIFY THIS FILE DIRECTLY.
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								 * @version $version
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								return $array;
							 | 
						||
| 
								 | 
							
								EOD
							 | 
						||
| 
								 | 
							
										);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									protected function compressJsFiles($inputFiles, $outputFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										if (is_string($this->jsCompressor)) {
							 | 
						||
| 
								 | 
							
											$tmpFile = $outputFile . '.tmp';
							 | 
						||
| 
								 | 
							
											$this->combineJsFiles($inputFiles, $tmpFile);
							 | 
						||
| 
								 | 
							
											$log = shell_exec(strtr($this->jsCompressor, array(
							 | 
						||
| 
								 | 
							
												'{from}' => $tmpFile,
							 | 
						||
| 
								 | 
							
												'{to}' => $outputFile,
							 | 
						||
| 
								 | 
							
											)));
							 | 
						||
| 
								 | 
							
											@unlink($tmpFile);
							 | 
						||
| 
								 | 
							
										} else {
							 | 
						||
| 
								 | 
							
											$log = call_user_func($this->jsCompressor, $this, $inputFiles, $outputFile);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected function compressCssFiles($inputFiles, $outputFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
										if (is_string($this->cssCompressor)) {
							 | 
						||
| 
								 | 
							
											$tmpFile = $outputFile . '.tmp';
							 | 
						||
| 
								 | 
							
											$this->combineCssFiles($inputFiles, $tmpFile);
							 | 
						||
| 
								 | 
							
											$log = shell_exec(strtr($this->cssCompressor, array(
							 | 
						||
| 
								 | 
							
												'{from}' => $inputFiles,
							 | 
						||
| 
								 | 
							
												'{to}' => $outputFile,
							 | 
						||
| 
								 | 
							
											)));
							 | 
						||
| 
								 | 
							
										} else {
							 | 
						||
| 
								 | 
							
											$log = call_user_func($this->cssCompressor, $this, $inputFiles, $outputFile);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function combineJsFiles($files, $tmpFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$content = '';
							 | 
						||
| 
								 | 
							
										foreach ($files as $file) {
							 | 
						||
| 
								 | 
							
											$content .= "/*** BEGIN FILE: $file ***/\n"
							 | 
						||
| 
								 | 
							
												. file_get_contents($file)
							 | 
						||
| 
								 | 
							
												. "/*** END FILE: $file ***/\n";
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										file_put_contents($tmpFile, $content);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function combineCssFiles($files, $tmpFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// todo: adjust url() references in CSS files
							 | 
						||
| 
								 | 
							
										$content = '';
							 | 
						||
| 
								 | 
							
										foreach ($files as $file) {
							 | 
						||
| 
								 | 
							
											$content .= "/*** BEGIN FILE: $file ***/\n"
							 | 
						||
| 
								 | 
							
												. file_get_contents($file)
							 | 
						||
| 
								 | 
							
												. "/*** END FILE: $file ***/\n";
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										file_put_contents($tmpFile, $content);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function actionTemplate($configFile)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$template = <<<EOD
							 | 
						||
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								return array(
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									'bundles' => require('path/to/bundles.php'),
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									'extensions' => require('path/to/namespaces.php'),
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									'targets' => array(
							 | 
						||
| 
								 | 
							
										'all' => array(
							 | 
						||
| 
								 | 
							
											'basePath' => __DIR__,
							 | 
						||
| 
								 | 
							
											'baseUrl' => '/test',
							 | 
						||
| 
								 | 
							
											'js' => 'all-{ts}.js',
							 | 
						||
| 
								 | 
							
											'css' => 'all-{ts}.css',
							 | 
						||
| 
								 | 
							
										),
							 | 
						||
| 
								 | 
							
									),
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									'assetManager' => array(
							 | 
						||
| 
								 | 
							
										'basePath' => __DIR__,
							 | 
						||
| 
								 | 
							
										'baseUrl' => '/test',
							 | 
						||
| 
								 | 
							
									),
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								EOD;
							 | 
						||
| 
								 | 
							
										file_put_contents($configFile, $template);
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
									}
							 | 
						||
| 
								 
											13 years ago
										 
									 | 
							
								}
							 |