diff --git a/src/ProposalGoogle.php b/src/ProposalGoogle.php deleted file mode 100644 index dcdeacd..0000000 --- a/src/ProposalGoogle.php +++ /dev/null @@ -1,100 +0,0 @@ -key = dcCore::app()->blog->settings->get(My::id())->get('google_proposal_key'); - - $this->setName(__('Google')); - $this->setDesc(__('Google Translation Tool API')); - $this->setActive(!empty($this->key)); - } - - public function form() - { - return - '

' . - '

' . __('You must have on Google API console:') . '

' . - ''; - } - - public function save() - { - $key = empty($_POST['translater_google_proposal_key']) ? - '' : $_POST['translater_google_proposal_key']; - - dcCore::app()->blog->settings->get(My::id())->put('google_proposal_key', $key, 'string', '', true, true); - } - - public function translate($str, $from, $to) - { - try { - $data = [ - 'key' => $this->key, - 'q' => $str, - 'source' => $from, - 'target' => $to, - ]; - - $path = ''; - $client = netHttp::initClient($this->api, $path); - $client->setUserAgent($this->agent); - $client->useGzip(false); - $client->setPersistReferers(false); - $client->get($path, $data); - - $rs = $client->getContent(); - - if ($client->getStatus() != 200) { - throw new Exception(__('Failed to query service.')); - } - - if (null === ($dec = json_decode($rs))) { - throw new Exception('Failed to decode result'); - } - - if ('' == @$dec->data->translations[0]->translatedText) { - throw new Exception('No data response'); - } - - return $dec->data->translations[0]->translatedText; - } catch (Exception $e) { - } - - return ''; - } -} diff --git a/src/ProposalMicrosoft.php b/src/ProposalMicrosoft.php deleted file mode 100644 index bb0ad13..0000000 --- a/src/ProposalMicrosoft.php +++ /dev/null @@ -1,234 +0,0 @@ -setActive(false); - $this->client = dcCore::app()->blog->settings->get(My::id())->get('microsoft_proposal_client'); - $this->secret = dcCore::app()->blog->settings->get(My::id())->get('microsoft_proposal_secret'); - - $this->setName(__('Bing')); - $this->setDesc(__('Microsoft Bing translation tool')); - $this->setActive(!empty($this->client) && !empty($this->secret)); - } - - public function form() - { - return - '

' . - '

' . - '

' . __('You must have:') . '

' . - ''; - } - - public function save() - { - $client = empty($_POST['translater_microsoft_proposal_client']) ? - '' : $_POST['translater_microsoft_proposal_client']; - $secret = empty($_POST['translater_microsoft_proposal_secret']) ? - '' : $_POST['translater_microsoft_proposal_secret']; - - dcCore::app()->blog->settings->get(My::id())->put('microsoft_proposal_client', $client, 'string', '', true, true); - dcCore::app()->blog->settings->get(My::id())->put('microsoft_proposal_secret', $secret, 'string', '', true, true); - } - - public function translate($str, $from, $to) - { - try { - return $this->doYourFuckingJob($this->client, $this->secret, $str, $from, $to); - } catch (Exception $e) { - } - - return ''; - } - - // - // Microsoft fucking oAuth - // - - private function doYourFuckingJob($client, $secret, $str, $from, $to) - { - try { - $translatedStr = ''; - //Client ID of the application. - $clientID = $client; - //Client Secret key of the application. - $clientSecret = $secret; - //OAuth Url. - $authUrl = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/'; - //Application Scope Url - $scopeUrl = 'http://api.microsofttranslator.com'; - //Application grant type - $grantType = 'client_credentials'; - - //Get the Access token. - $accessToken = $this->getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl); - //Create the authorization Header string. - $authHeader = 'Authorization: Bearer ' . $accessToken; - - //Set the params.// - $fromLanguage = $from; - $toLanguage = $to; - $inputStr = $str; - $contentType = 'text/plain'; - $category = 'general'; - - $params = 'text=' . urlencode($inputStr) . '&to=' . $toLanguage . '&from=' . $fromLanguage; - $translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?$params"; - - //Get the curlResponse. - $curlResponse = $this->curlRequest($translateUrl, $authHeader); - - //Interprets a string of XML into an object. - $xmlObj = simplexml_load_string($curlResponse); - foreach ((array) $xmlObj[0] as $val) { - $translatedStr = $val; - } - - return (string) $translatedStr; - /* - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "
From $fromLanguageTo $toLanguage
" . $inputStr . "" . $translatedStr . "
"; - */ - } catch (Exception $e) { - throw $e; - } - } - - /* - * Get the access token. - * - * @param string $grantType Grant type. - * @param string $scopeUrl Application Scope URL. - * @param string $clientID Application client ID. - * @param string $clientSecret Application client ID. - * @param string $authUrl Oauth Url. - * - * @return string. - */ - private function getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl) - { - try { - //Initialize the Curl Session. - $ch = curl_init(); - //Create the request Array. - $paramArr = [ - 'grant_type' => $grantType, - 'scope' => $scopeUrl, - 'client_id' => $clientID, - 'client_secret' => $clientSecret, - ]; - //Create an Http Query.// - $paramArr = http_build_query($paramArr); - //Set the Curl URL. - curl_setopt($ch, CURLOPT_URL, $authUrl); - //Set HTTP POST Request. - curl_setopt($ch, CURLOPT_POST, true); - //Set data to POST in HTTP "POST" Operation. - curl_setopt($ch, CURLOPT_POSTFIELDS, $paramArr); - //CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec(). - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - //CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate. - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - //Execute the cURL session. - $strResponse = curl_exec($ch); - //Get the Error Code returned by Curl. - $curlErrno = curl_errno($ch); - if ($curlErrno) { - $curlError = curl_error($ch); - curl_close($ch); - - throw new Exception($curlError); - } - //Close the Curl Session. - curl_close($ch); - //Decode the returned JSON string. - $objResponse = json_decode($strResponse); - if (@$objResponse->error) { - throw new Exception($objResponse->error_description); - } - - return $objResponse->access_token; - } catch (Exception $e) { - throw $e; - } - } - - /* - * Create and execute the HTTP CURL request. - * - * @param string $url HTTP Url. - * @param string $authHeader Authorization Header string. - * @param string $postData Data to post. - * - * @return string. - * - */ - private function curlRequest($url, $authHeader) - { - //Initialize the Curl Session. - $ch = curl_init(); - //Set the Curl url. - curl_setopt($ch, CURLOPT_URL, $url); - //Set the HTTP HEADER Fields. - curl_setopt($ch, CURLOPT_HTTPHEADER, [$authHeader,'Content-Type: text/xml']); - //CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec(). - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - //CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate. - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - //Execute the cURL session. - $curlResponse = curl_exec($ch); - //Get the Error Code returned by Curl. - $curlErrno = curl_errno($ch); - if ($curlErrno) { - $curlError = curl_error($ch); - curl_close($ch); - - throw new Exception($curlError); - } - //Close a cURL session. - curl_close($ch); - - return $curlResponse; - } -} diff --git a/src/ProposalTranslater.php b/src/ProposalTranslater.php deleted file mode 100644 index 2012bb9..0000000 --- a/src/ProposalTranslater.php +++ /dev/null @@ -1,122 +0,0 @@ -setup(); - } - - /** - Set name of this tool - - @param string $name Tool's name - */ - final protected function setName($name) - { - $this->name = (string) $name; - } - - /** - Get name of this tool - - @return string Tool's name - */ - final public function getName() - { - return $this->name; - } - - /** - Set description of this tool - - @param string $desc Tool's description - */ - final protected function setDesc($desc) - { - $this->desc = (string) $desc; - } - - /** - Get description of this tool - - @return string Tool's description - */ - final public function getDesc() - { - return $this->desc; - } - - /** - Set tool as (un)active - - @param boolean $active True to set it as active - */ - final protected function setActive($active) - { - $this->active = (bool) $active; - } - - /** - Check if this tool is active - - @return boolean True if it is active - */ - final public function isActive() - { - return $this->active; - } - - /** - Set tool's info - using setName(),setDesc(),setActive() - */ - abstract protected function setup(); - - /** - Get configuration interface - - @return string Form field - */ - abstract public function form(); - - /** - Save configuration - */ - abstract public function save(); - - /** - Translate a string from a language to another - - @param string $str Trimed UTF-8 string to translate - @param string $from Source language code - @param string $to Destination language code - @return string Translated string - */ - abstract public function translate($str, $from, $to); -} diff --git a/src/Rest.php b/src/Rest.php deleted file mode 100644 index c367c0f..0000000 --- a/src/Rest.php +++ /dev/null @@ -1,74 +0,0 @@ -proposal->hasTool($tool)) { - throw new Exception(__('Failed to get translation tool')); - } - if (!$translater->proposal->getTool($tool)->isActive()) { - throw new Exception(__('Translation tool is not configured')); - } - - $str_out = (string) $translater->proposal->getTool($tool)->translate($str_in, $from, $to); - } - - $x = new xmlTag('proposal'); - $x->lang_from = $from; - $x->lang_to = $to; - $x->tool = $tool; - $x->str_from = $str_in; - $x->str_to = text::toUTF8(html::decodeEntities($str_out)); - $rsp->insertNode($x); - } catch (Exception $e) { - dcCore::app()->error->add($e->getMessage()); - } - - return $rsp; - } -} diff --git a/src/Settings.php b/src/Settings.php index 5c353c7..70140a8 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -63,12 +63,6 @@ class Settings // Filename of exported lang public readonly string $export_filename; - // Default service for external proposal tool - public readonly bool $proposal_tool; - - // Default lang for external proposal tool - public readonly bool $proposal_lang; - /** * Constructor set up plugin settings */ @@ -91,8 +85,6 @@ class Settings $this->parse_userinfo = (string) ($s->get('parse_userinfo') ?? 'displayname, email'); $this->import_overwrite = (bool) ($s->get('import_overwrite') ?? false); $this->export_filename = (string) ($s->get('export_filename') ?? 'type-module-l10n-timestamp'); - $this->proposal_tool = (bool) ($s->get('proposal_tool') ?? 'google'); - $this->proposal_lang = (bool) ($s->get('proposal_lang') ?? 'en'); } public function getSetting(string $key): mixed diff --git a/src/TranslaterProposals.php b/src/TranslaterProposals.php deleted file mode 100644 index db80b7e..0000000 --- a/src/TranslaterProposals.php +++ /dev/null @@ -1,63 +0,0 @@ -callBehavior('addTranslaterProposalTool', $this); - } - - public function addTool($id) - { - if (!class_exists($id)) { - return; - } - - $r = new ReflectionClass($id); - $p = $r->getParentClass(); - - if (!$p || $p->name != 'translaterProposalTool') { - return; - } - - $this->stack[$id] = new $id(); - } - - public function getTools() - { - return $this->stack; - } - - public function getTool($id) - { - return array_key_exists($id, $this->stack) ? $this->stack[$id] : null; - } - - public function hasTool($id) - { - return array_key_exists($id, $this->stack); - } -}