| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 | 
							- <?php
 
- /*
 
-  * @file
 
-  * Contains translator entity class.
 
-  */
 
- /**
 
-  * Entity class for the tmgmt_translator entity.
 
-  *
 
-  * @ingroup tmgmt_translator
 
-  */
 
- class TMGMTTranslator extends Entity {
 
-   /**
 
-    * The ID of the translator.
 
-    *
 
-    * @var integer
 
-    */
 
-   public $tid;
 
-   /**
 
-    * Machine readable name of the translator.
 
-    *
 
-    * @var string
 
-    */
 
-   public $name;
 
-   /**
 
-    * Label of the translator.
 
-    *
 
-    * @var string
 
-    */
 
-   public $label;
 
-   /**
 
-    * Description of the translator.
 
-    *
 
-    * @var string
 
-    */
 
-   public $description;
 
-   /**
 
-    * Weight of the translator.
 
-    *
 
-    * @var int
 
-    */
 
-   public $weight;
 
-   /**
 
-    * Plugin name of the translator.
 
-    *
 
-    * @type string
 
-    */
 
-   public $plugin;
 
-   /**
 
-    * Translator type specific settings.
 
-    *
 
-    * @var array
 
-    */
 
-   public $settings;
 
-   /**
 
-    * The supported target languages caches.
 
-    *
 
-    * @var array
 
-    */
 
-   protected $languageCache;
 
-   /**
 
-    * The supported language pairs caches.
 
-    *
 
-    * @var array
 
-    */
 
-   protected $languagePairsCache;
 
-   /**
 
-    * Whether the language cache in the database is outdated.
 
-    *
 
-    * @var boolean
 
-    */
 
-   protected $languageCacheOutdated;
 
-   /**
 
-    * {@inheritdoc}
 
-    */
 
-   public function __construct(array $values = array()) {
 
-     parent::__construct($values, 'tmgmt_translator');
 
-   }
 
-   /**
 
-    * Returns the translator plugin controller of this translator.
 
-    *
 
-    * @return TMGMTTranslatorPluginControllerInterface
 
-    */
 
-   public function getController() {
 
-     if (!empty($this->plugin)) {
 
-       return tmgmt_translator_plugin_controller($this->plugin);
 
-     }
 
-     return FALSE;
 
-   }
 
-   /**
 
-    * Returns the supported target languages for this translator.
 
-    *
 
-    * @return array
 
-    *   An array of supported target languages in ISO format.
 
-    */
 
-   public function getSupportedTargetLanguages($source_language) {
 
-     if ($controller = $this->getController()) {
 
-       if (isset($this->pluginInfo['cache languages']) && empty($this->pluginInfo['cache languages'])) {
 
-         // This plugin doesn't support language caching.
 
-         return $controller->getSupportedTargetLanguages($this, $source_language);
 
-       }
 
-       else {
 
-         // Retrieve the supported languages from the cache.
 
-         if (empty($this->languageCache) && $cache = cache_get('languages:' . $this->name, 'cache_tmgmt')) {
 
-           $this->languageCache = $cache->data;
 
-         }
 
-         // Even if we successfully queried the cache it might not have an entry
 
-         // for our source language yet.
 
-         if (!isset($this->languageCache[$source_language])) {
 
-           $this->languageCache[$source_language] = $controller->getSupportedTargetLanguages($this, $source_language);
 
-           $this->languageCacheOutdated = TRUE;
 
-         }
 
-       }
 
-       return $this->languageCache[$source_language];
 
-     }
 
-   }
 
-   /**
 
-    * Gets the supported language pairs for this translator.
 
-    *
 
-    * @return array
 
-    *   List of language pairs where a pair is an associative array of
 
-    *   source_language and target_language.
 
-    *   Example:
 
-    *   array(
 
-    *     array('source_language' => 'en-US', 'target_language' => 'de-DE'),
 
-    *     array('source_language' => 'en-US', 'target_language' => 'de-CH'),
 
-    *   )
 
-    */
 
-   public function getSupportedLanguagePairs() {
 
-     if ($controller = $this->getController()) {
 
-       if (isset($this->pluginInfo['cache languages']) && empty($this->pluginInfo['cache languages'])) {
 
-         // This plugin doesn't support language caching.
 
-         return $controller->getSupportedLanguagePairs($this);
 
-       }
 
-       else {
 
-         // Retrieve the supported languages from the cache.
 
-         if (empty($this->languagePairsCache) && $cache = cache_get('language_pairs:' . $this->name, 'cache_tmgmt')) {
 
-           $this->languagePairsCache = $cache->data;
 
-         }
 
-         // Even if we successfully queried the cache data might not be yet
 
-         // available.
 
-         if (empty($this->languagePairsCache)) {
 
-           $this->languagePairsCache = $controller->getSupportedLanguagePairs($this);
 
-           $this->languageCacheOutdated = TRUE;
 
-         }
 
-       }
 
-       return $this->languagePairsCache;
 
-     }
 
-   }
 
-   /**
 
-    * Clears the language cache for this translator.
 
-    */
 
-   public function clearLanguageCache() {
 
-     cache_clear_all('languages:' . $this->name, 'cache_tmgmt');
 
-     cache_clear_all('language_pairs:' . $this->name, 'cache_tmgmt');
 
-   }
 
-   /**
 
-    * Check whether this translator can handle a particular translation job.
 
-    *
 
-    * @param $job
 
-    *   The TMGMTJob entity that should be translated.
 
-    *
 
-    * @return boolean
 
-    *   TRUE if the job can be processed and translated, FALSE otherwise.
 
-    */
 
-   public function canTranslate(TMGMTJob $job) {
 
-     if ($controller = $this->getController()) {
 
-       return $controller->canTranslate($this, $job);
 
-     }
 
-     return FALSE;
 
-   }
 
-   /**
 
-    * Checks whether a translator is available.
 
-    *
 
-    * @return boolean
 
-    *   TRUE if the translator plugin is available, FALSE otherwise.
 
-    */
 
-   public function isAvailable() {
 
-     if ($controller = $this->getController()) {
 
-       return $controller->isAvailable($this);
 
-     }
 
-     return FALSE;
 
-   }
 
-   /**
 
-    * Returns if the plugin has any settings for this job.
 
-    */
 
-   public function hasCheckoutSettings(TMGMTJob $job) {
 
-     if ($controller = $this->getController()) {
 
-       return $controller->hasCheckoutSettings($job);
 
-     }
 
-     return FALSE;
 
-   }
 
-   /**
 
-    * @todo Remove this once http://drupal.org/node/1420364 is done.
 
-    */
 
-   public function getNotAvailableReason() {
 
-     if ($controller = $this->getController()) {
 
-       return $controller->getNotAvailableReason($this);
 
-     }
 
-     return FALSE;
 
-   }
 
-   /**
 
-    * @todo Remove this once http://drupal.org/node/1420364 is done.
 
-    */
 
-   public function getNotCanTranslateReason(TMGMTJob $job) {
 
-     if ($controller = $this->getController()) {
 
-       return $controller->getNotCanTranslateReason($job);
 
-     }
 
-     return FALSE;
 
-   }
 
-   /**
 
-    * Retrieves a setting value from the translator settings. Pulls the default
 
-    * values (if defined) from the plugin controller.
 
-    *
 
-    * @param $name
 
-    *   The name of the setting.
 
-    *
 
-    * @return
 
-    *   The setting value or $default if the setting value is not set. Returns
 
-    *   NULL if the setting does not exist at all.
 
-    */
 
-   public function getSetting($name) {
 
-     if (isset($this->settings[$name])) {
 
-       return $this->settings[$name];
 
-     }
 
-     elseif ($controller = $this->getController()) {
 
-       $defaults = $controller->defaultSettings();
 
-       if (isset($defaults[$name])) {
 
-         return $defaults[$name];
 
-       }
 
-     }
 
-   }
 
-   /**
 
-    * Maps local language to remote language.
 
-    *
 
-    * @param $language
 
-    *   Local language code.
 
-    *
 
-    * @return string
 
-    *   Remote language code.
 
-    *
 
-    * @ingroup tmgmt_remote_languages_mapping
 
-    */
 
-   public function mapToRemoteLanguage($language) {
 
-     return $this->getController()->mapToRemoteLanguage($this, $language);
 
-   }
 
-   /**
 
-    * Maps remote language to local language.
 
-    *
 
-    * @param $language
 
-    *   Remote language code.
 
-    *
 
-    * @return string
 
-    *   Local language code.
 
-    *
 
-    * @ingroup tmgmt_remote_languages_mapping
 
-    */
 
-   public function mapToLocalLanguage($language) {
 
-     return $this->getController()->mapToLocalLanguage($this, $language);
 
-   }
 
-   /**
 
-    * Updates the language cache if it has changed.
 
-    */
 
-   public function __destruct() {
 
-     if ($controller = $this->getController()) {
 
-       $info = $controller->pluginInfo();
 
-       if (!isset($info['language cache']) || !empty($info['language cache']) && !empty($this->languageCacheOutdated)) {
 
-         cache_set('languages:' . $this->name, $this->languageCache, 'cache_tmgmt');
 
-         cache_set('language_pairs:' . $this->name, $this->languagePairsCache, 'cache_tmgmt');
 
-       }
 
-     }
 
-   }
 
- }
 
 
  |