/**
  * Automatic translator via Google translate
  */
 function autotranslate()
 {
     if ($_POST['translate'] && $_POST['locale']) {
         set_time_limit(1800);
         $LOCALE_RES = $_POST['locale'];
         $base_url = 'http://ajax.googleapis.com/ajax/services/language/translate' . '?v=1.0';
         $vars = db()->query_fetch_all("SELECT id,value FROM " . db('locale_vars') . " WHERE id NOT IN( \n\t\t\t\t\tSELECT var_id FROM " . db('locale_translate') . " \n\t\t\t\t\tWHERE locale = '" . $LOCALE_RES . "' AND value != '' \n\t\t\t\t)");
         $_info = [];
         $max_threads = 4;
         $buffer = [];
         $translated = [];
         _debug_log("LOCALE_NUM_VARS: " . count($vars));
         foreach ((array) $vars as $A) {
             $translated = [];
             $url = $base_url . "&q=" . urlencode(str_replace("_", " ", $A["value"])) . "&langpair=en%7C" . $LOCALE_RES;
             $_temp[$url] = $A["id"];
             if (count($buffer) < $max_threads) {
                 $buffer[$url] = $url;
                 continue;
             }
             foreach ((array) common()->multi_request($buffer) as $url => $response) {
                 $response_array = json_decode($response);
                 $response_text = trim($response_array->responseData->translatedText);
                 $ID = $_temp[$url];
                 $source = str_replace("_", " ", $vars[$ID]["value"]);
                 _debug_log("LOCALE: " . ++$j . " ## " . $ID . " ## " . $source . " ## " . $response_text . " ## " . $url);
                 if (_strlen($response_text) && $response_text != $source) {
                     $translated[$ID] = $response_text;
                 }
             }
             if ($translated) {
                 $Q = db()->query("DELETE FROM " . db('locale_translate') . " \n\t\t\t\t\t\tWHERE locale = '" . _es($LOCALE_RES) . "' \n\t\t\t\t\t\t\tAND var_id IN(" . implode(",", array_keys($translated)) . ")");
             }
             foreach ((array) $translated as $_id => $_value) {
                 db()->REPLACE('locale_translate', ['var_id' => intval($_id), 'value' => _es($_value), 'locale' => _es($LOCALE_RES)]);
             }
             $buffer = [];
             $_temp = [];
         }
         cache_del('locale_translate_' . $LOCALE_RES);
         return js_redirect('./?object=' . $_GET['object']);
     }
     $Q = db()->query('SELECT * FROM ' . db('locale_langs') . ' ORDER BY name');
     while ($A = db()->fetch_assoc($Q)) {
         $locales[$A['locale']] = $A['name'];
     }
     $replace = ['locale_box' => common()->select_box('locale', $locales), 'locale_editor_url' => './?object=locale_editor', 'form_action' => './?object=' . $_GET['object'] . '&action=' . $_GET['action']];
     return tpl()->parse($_GET['object'] . '/autotranslate', $replace);
 }
 function payment_callback()
 {
     //		main()->NO_GRAPHICS = true;
     _debug_log(print_r($_POST, 1));
 }
示例#3
0
 /**
  * Multiple accounts checker
  */
 function _check_multi_accounts()
 {
     if (empty($_SESSION[$this->VAR_USER_ID]) || empty($_SESSION[$this->VAR_USER_GROUP_ID])) {
         return false;
     }
     $_SPECIAL_NAME = 'accounts';
     if (empty($_COOKIE[$_SPECIAL_NAME])) {
         return $this->_set_special_cookie($_SESSION[$this->VAR_USER_ID]);
     }
     $cookie_users = [];
     foreach (explode('_', $_COOKIE[$_SPECIAL_NAME]) as $_user_id) {
         $cookie_users[$_user_id] = $_user_id;
     }
     if ($_COOKIE[$_SPECIAL_NAME] == $_SESSION[$this->VAR_USER_ID] || count($cookie_users) > 1 && isset($cookie_users[$_SESSION[$this->VAR_USER_ID]])) {
         return false;
     }
     $data = db()->query_fetch('SELECT * FROM ' . db('check_multi_accounts') . ' WHERE user_id=' . intval($_SESSION[$this->VAR_USER_ID]));
     if (isset($cookie_users[$_SESSION[$this->VAR_USER_ID]])) {
         unset($cookie_users[$_SESSION[$this->VAR_USER_ID]]);
     }
     $matching_users = implode(',', $cookie_users);
     if (empty($data)) {
         db()->insert_safe('check_multi_accounts', ['user_id' => intval($_SESSION[$this->VAR_USER_ID]), 'matching_users' => $matching_users, 'last_update' => time(), 'cookie_match' => 1]);
     } else {
         db()->update_safe('check_multi_accounts', ['matching_users' => $matching_users, 'last_update' => time(), 'cookie_match' => 1], 'user_id=' . intval($_SESSION[$this->VAR_USER_ID]));
     }
     $this->_set_special_cookie($_COOKIE[$_SPECIAL_NAME] . '_' . $_SESSION[$this->VAR_USER_ID]);
     main()->_HAS_MULTI_ACCOUNTS = true;
     _debug_log('_check_multi_accounts: found possible multi-account, old_id=' . $last_id . ',new_id=' . $_SESSION[$this->VAR_USER_ID] . ',cookie=' . $_COOKIE[$_SPECIAL_NAME], E_NOTICE);
 }
示例#4
0
文件: yf_utf8.class.php 项目: yfix/yf
 /**
  * Convert data to UTF-8
  * Requires the iconv, GNU recode or mbstring PHP extension.
  *
  * @param $data The data to be converted.
  * @param $encoding The encoding that the data is in
  * @return  Converted data or FALSE.
  */
 function convert_to_utf8($data, $encoding)
 {
     if (function_exists('iconv')) {
         $out = iconv($encoding, 'utf-8', $data);
     } else {
         if (function_exists('mb_convert_encoding')) {
             $out = mb_convert_encoding($data, 'utf-8', $encoding);
         } else {
             if (function_exists('recode_string')) {
                 $out = recode_string($encoding . '..utf-8', $data);
             } else {
                 _debug_log(t('Unsupported encoding %s. Please install iconv, GNU recode or mbstring for PHP.', ['%s' => $encoding]));
                 return FALSE;
             }
         }
     }
     return $out;
 }