00001 <?php
00002
00012 class spunQ_Configuration implements spunQ_IConfiguration {
00013
00019 private $sourceFolders = NULL;
00020
00025 private $typeParser;
00026
00031 private $languageFile = NULL;
00032
00037 private $configurations = array();
00038
00042 public function __construct() {
00043 return NULL;
00044 }
00045
00053 public function addConfigurationFile(spunQ_IConfiguration $file) {
00054 array_unshift($this->configurations, $file);
00055 return $this;
00056 }
00057
00063 public function addConfigurationFiles(array $files) {
00064 $this->configurations = array_merge(array_reverse($files), $this->configurations);
00065 return $this;
00066 }
00067
00071 public function getKeysStartingWith($prefix) {
00072 $result = array();
00073 foreach ($this->configurations as $config) {
00074 $result += $config->getKeysStartingWith($prefix);
00075 }
00076 return $result;
00077 }
00078
00082 public function getStringsForPrefix($prefix) {
00083 $result = array();
00084 foreach ($this->configurations as $config) {
00085 $result += $config->getStringsForPrefix($prefix);
00086 }
00087 return $result;
00088 }
00089
00093 public function getStringValue($key, $default = NULL) {
00094 foreach ($this->configurations as $config) {
00095 $result = $config->getStringValue($key, NULL);
00096 if ($result !== NULL) {
00097 return $result;
00098 }
00099 }
00100 return $default;
00101 }
00102
00106 public function getMultipleStringValues($prefix) {
00107 foreach ($this->configurations as $config) {
00108 $result = $config->getMultipleStringValues($prefix);
00109 if (!empty($result)) {
00110 return $result;
00111 }
00112 }
00113 return array();
00114 }
00115
00119 public function getBooleanValue($key, $default = false) {
00120 foreach ($this->configurations as $config) {
00121 $result = $config->getBooleanValue($key, NULL);
00122 if ($result !== NULL) {
00123 return $result;
00124 }
00125 }
00126 return $default;
00127 }
00128
00132 public function getMultipleBooleanValues($key) {
00133 $result = array();
00134 foreach ($this->configurations as $config) {
00135 $result += $config->getMultipleBooleanValues($key);
00136 }
00137 return $result;
00138 }
00139
00143 public function getFileValue($key, $default = NULL) {
00144 foreach ($this->configurations as $config) {
00145 $result = $config->getFileValue($key, NULL);
00146 if ($result !== NULL) {
00147 return $result;
00148 }
00149 }
00150 return $default;
00151 }
00152
00156 public function getMultipleFileValues($prefix) {
00157 $result = array();
00158 foreach ($this->configurations as $config) {
00159 $result += $config->getMultipleFileValues($prefix);
00160 }
00161 return $result;
00162 }
00163
00167 public function getFolderValue($key, $default = NULL) {
00168 foreach ($this->configurations as $config) {
00169 $result = $config->getFolderValue($key, NULL);
00170 if ($result !== NULL) {
00171 return $result;
00172 }
00173 }
00174 return $default;
00175 }
00176
00180 public function getMultipleFolderValues($prefix) {
00181 $result = array();
00182 foreach ($this->configurations as $config) {
00183 $result += $config->getMultipleFolderValues($prefix);
00184 }
00185 return $result;
00186 }
00187
00192 public function getSourceFolders() {
00193 if ($this->sourceFolders === NULL) {
00194 $this->sourceFolders = array();
00195 foreach (spunQ_Module::getAll() as $name => $module) {
00196 if ($module->getSourceFolder()->exists()) {
00197 $this->sourceFolders[$name] = spunQ_SourceFolder::createSourceFolder($module->getSourceFolder()->getPath(), $name);
00198 }
00199 }
00200 foreach ($this->getMultipleFolderValues('spunQ.sources') as $name => $folder) {
00201 $this->sourceFolders[$name] = spunQ_SourceFolder::createSourceFolder($folder->getPath(), $name);
00202 }
00203 }
00204 return $this->sourceFolders;
00205 }
00206
00211 public function getTypeParser() {
00212 if ($this->typeParser === NULL) {
00213 $this->typeParser = new spunQ_ReflectionTypeParser();
00214 }
00215 return $this->typeParser;
00216 }
00217
00222 public function getJsMinifier() {
00223 return NULL;
00224 }
00225
00230 public function getCssMinifier() {
00231 return NULL;
00232 }
00233
00237 public function getLastModificationTime() {
00238 $max = -1;
00239 foreach ($this->configurations as $config) {
00240 $max = max($max, $config->getLastModificationTime());
00241 }
00242 return $max;
00243 }
00244
00245 }