Overview

Packages

  • application
    • commands
    • components
      • actions
      • filters
      • leftWidget
      • permissions
      • sortableWidget
      • util
      • webupdater
      • x2flow
        • actions
        • triggers
      • X2GridView
      • X2Settings
    • controllers
    • models
      • embedded
    • modules
      • accounts
        • controllers
        • models
      • actions
        • controllers
        • models
      • calendar
        • controllers
        • models
      • charts
        • models
      • contacts
        • controllers
        • models
      • docs
        • components
        • controllers
        • models
      • groups
        • controllers
        • models
      • marketing
        • components
        • controllers
        • models
      • media
        • controllers
        • models
      • mobile
        • components
      • opportunities
        • controllers
        • models
      • products
        • controllers
        • models
      • quotes
        • controllers
        • models
      • services
        • controllers
        • models
      • template
        • models
      • users
        • controllers
        • models
      • workflow
        • controllers
        • models
      • x2Leads
        • controllers
        • models
  • None
  • system
    • base
    • caching
    • console
    • db
      • ar
      • schema
    • validators
    • web
      • actions
      • auth
      • helpers
      • widgets
        • captcha
        • pagers
  • zii
    • widgets
      • grid

Classes

  • AutomaticTranslationCommand
  • ConsoleFormatterUtil
  • CronCommand
  • CryptSetupCommand
  • DummyCommand
  • ExportFixtureCommand
  • MigrateCustomCommand
  • SampleDataCommand
  • UpdateCommand
  • UpdaterPackageCommand
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: 
  3: /*****************************************************************************************
  4:  * X2Engine Open Source Edition is a customer relationship management program developed by
  5:  * X2Engine, Inc. Copyright (C) 2011-2016 X2Engine Inc.
  6:  * 
  7:  * This program is free software; you can redistribute it and/or modify it under
  8:  * the terms of the GNU Affero General Public License version 3 as published by the
  9:  * Free Software Foundation with the addition of the following permission added
 10:  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
 11:  * IN WHICH THE COPYRIGHT IS OWNED BY X2ENGINE, X2ENGINE DISCLAIMS THE WARRANTY
 12:  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 13:  * 
 14:  * This program is distributed in the hope that it will be useful, but WITHOUT
 15:  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 16:  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
 17:  * details.
 18:  * 
 19:  * You should have received a copy of the GNU Affero General Public License along with
 20:  * this program; if not, see http://www.gnu.org/licenses or write to the Free
 21:  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 22:  * 02110-1301 USA.
 23:  * 
 24:  * You can contact X2Engine, Inc. P.O. Box 66752, Scotts Valley,
 25:  * California 95067, USA. or at email address contact@x2engine.com.
 26:  * 
 27:  * The interactive user interfaces in modified source and object code versions
 28:  * of this program must display Appropriate Legal Notices, as required under
 29:  * Section 5 of the GNU Affero General Public License version 3.
 30:  * 
 31:  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
 32:  * these Appropriate Legal Notices must retain the display of the "Powered by
 33:  * X2Engine" logo. If the display of the logo is not reasonably feasible for
 34:  * technical reasons, the Appropriate Legal Notices must display the words
 35:  * "Powered by X2Engine".
 36:  *****************************************************************************************/
 37: 
 38: /**
 39:  *
 40:  * @package application.commands
 41:  */
 42: class AutomaticTranslationCommand extends CConsoleCommand {
 43: 
 44:     private $_find;
 45:     private $_consolidate;
 46:     private $_update;
 47:     private $_merge;
 48:     private $_assimilate;
 49: 
 50:     public function run($args) {
 51:         $this->attachBehaviors(array(
 52:             'X2TranslationBehavior' => array('class' => 'X2TranslationBehavior'),
 53:         ));
 54:         
 55:         list($action, $options, $args) = $this->resolveRequest($args);
 56:         $this->parseOptions($options);
 57:         if($this->_assimilate){
 58:             $this->assimilateLanguageFiles();
 59:         }
 60:         if ($this->_find) {
 61:             $this->addMissingTranslations();
 62:             $this->outputMissingStats();
 63:         }
 64:         if ($this->_consolidate) {
 65:             $this->consolidateMessages();
 66:             $this->outputConsolidationStats();
 67:         }
 68:         if ($this->_update) {
 69:             $this->updateTranslations();
 70:             $this->outputTranslationStats();
 71:         }
 72:         if($this->_merge){
 73:             $this->mergeCustomTranslations();
 74:             $this->outputMergeStats();
 75:         }
 76:         $this->outputErrors();
 77:     }
 78: 
 79:     private function parseOptions($args) {
 80:         if (isset($args['verbose'])) {
 81:             $this->verbose = true;
 82:         }
 83: 
 84:         if (!isset($args['mode'])) {
 85:             $args['mode'] = 'fcu';
 86:         }
 87:         if (strpos($args['mode'], 'f') !== false) {
 88:             $this->_find = true;
 89:         }
 90:         if (strpos($args['mode'], 'c') !== false) {
 91:             $this->_consolidate = true;
 92:         }
 93:         if (strpos($args['mode'], 'u') !== false) {
 94:             $this->_update = true;
 95:         }
 96:         if (strpos($args['mode'], 'm') !== false) {
 97:             $this->_merge = true;
 98:         }
 99:         if(strpos($args['mode'], 'a') !== false){
100:             $this->_assimilate = true;
101:         }
102:     }
103: 
104:     private function outputMissingStats() {
105:         echo $this->newMessages." new messages were found and added to the translation files.\n\n";
106:     }
107: 
108:     private function outputConsolidationStats() {
109:         echo $this->addedToCommon." messages were added to the common file.\n";
110:         echo $this->messagesRemoved." messages were removed from other files.\n\n";
111:     }
112: 
113:     private function outputTranslationStats() {
114:         setlocale(LC_MONETARY, 'en_US');
115:         echo $this->characterCount . ' characters were translated, resulting in approximately ' . money_format('%n',
116:                 (($this->characterCount) / 2000000) * 20) . " in fees to Google.\n";
117:         if($this->limitReached){
118:             echo 'Limit reached. Untranslated messages still remain.' . "\n\n";
119:         }else{
120:             echo 'Automated translation complete.' . "\n\n";
121:         }
122:     }
123:     
124:     private function outputMergeStats(){
125:         echo $this->customMessageCount." custom translations incorporated into base code.\n\n";
126:     }
127: 
128:     private function outputErrors() {
129:         if (isset($this->errors['missingFiles'])) {
130:             echo 'Error - Unable to find the following requested translation files:' . "\n";
131:             foreach ($this->errors['missingFiles'] as $file) {
132:                 echo $file . "\n";
133:             }
134:             echo "\n";
135:         }
136:         if(isset($this->errors['missingAttributes'])){
137:             echo 'Error - Unable to find associated files for the following models:'."\n";
138:             foreach($this->errors['missingAttributes'] as $modelName){
139:                 echo $modelName . "\n";
140:             }
141:             echo "\n";
142:         }
143:     }
144: 
145: }
146: 
X2CRM Documentation API documentation generated by ApiGen 2.8.0