| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- <?php
 
- /**
 
-  *
 
-  * Cube Framework $Id$ 8ayRqQn16Y9D2mRwM9m/NmlHqAWKvGZGjuwEFXObHjc=
 
-  *
 
-  * @link        http://codecu.be/framework
 
-  * @copyright   Copyright (c) 2014 CodeCube SRL
 
-  * @license     http://codecu.be/framework/license Commercial License
 
-  *
 
-  * @version     1.0
 
-  */
 
- /**
 
-  * composite translate adapter
 
-  * will combine the sentences from multiple adapters, based on the data inserted
 
-  */
 
- namespace Ppb\Translate\Adapter;
 
- use Cube\Translate\Adapter,
 
-     Cube\Config\AbstractConfig,
 
-     Cube\Locale;
 
- class Composite extends Adapter\AbstractAdapter
 
- {
 
-     public function addTranslation($options = array())
 
-     {
 
-         if (!is_array($options) && !($options instanceof AbstractConfig)) {
 
-             throw new \InvalidArgumentException("The translation object requires an
 
-                 array or an object of type \Cube\ConfigAbstract.");
 
-         }
 
-         else {
 
-             if ($options instanceof AbstractConfig) {
 
-                 $options = $options->getData();
 
-             }
 
-             if (!isset($options['path'])) {
 
-                 throw new \InvalidArgumentException("The 'path' key must be set.");
 
-             }
 
-             $locale = (isset($options['locale'])) ? $options['locale'] : null;
 
-             if (Locale::isLocale($locale) === false) {
 
-                 throw new \InvalidArgumentException(
 
-                     sprintf("Add translation method error: '%s' is an invalid locale.", $locale));
 
-             }
 
-             if (!array_key_exists($locale, $this->_translate)) {
 
-                 $this->_translate[$locale] = array();
 
-             }
 
-             if (!empty($options['sources'])) {
 
-                 foreach ($options['sources'] as $source) {
 
-                     if (!isset($source['adapter'])) {
 
-                         throw new \InvalidArgumentException("The 'adapter' sub-key must be set.");
 
-                     }
 
-                     if (!isset($source['extension'])) {
 
-                         throw new \InvalidArgumentException("The 'extension' sub-key must be set.");
 
-                     }
 
-                     $translateAdapter = $source['adapter'];
 
-                     if (!class_exists($translateAdapter)) {
 
-                         throw new \InvalidArgumentException(
 
-                             sprintf("Class %s doesn't exist", $translateAdapter));
 
-                     }
 
-                     /** @var \Cube\Translate\Adapter\AbstractAdapter $adapter */
 
-                     $adapter = new $translateAdapter(array(
 
-                         'file'   => $options['path'] . '.' . $source['extension'],
 
-                         'locale' => $locale,
 
-                     ));
 
-                     $translation = $adapter->getTranslate();
 
-                     foreach ($translation as $locale => $sentences) {
 
-                         $this->_translate[$locale] = array_merge($this->_translate[$locale], $sentences);
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         return $this;
 
-     }
 
- }
 
 
  |