getKey('basepath') . '/?') === false) { $this->_error = 'Trying to shorten a URL not pointing to our PrivateBin instance.'; return; } // Init the CURL session $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $conf->getKey("apiurl", "yourls")); curl_setopt($ch, CURLOPT_HEADER, 0); // No header in the result curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return, do not echo result curl_setopt($ch, CURLOPT_POST, 1); // This is a POST request curl_setopt($ch, CURLOPT_POSTFIELDS, array( // Data to POST 'signature' => $conf->getKey("signature", "yourls"), 'format' => 'json', 'action' => 'shorturl', 'url' => $link )); // Fetch and return content $data = curl_exec($ch); curl_close($ch); if ($data === false || !is_string($data)) { $this->_error = 'Error calling YOURLS. Probably a configuration issue, like wrong or missing "apiurl" or "signature".'; return; } try { $data = Json::decode($data); } catch (Exception $e) { $this->_error = $e->getMessage(); return; } if ( !is_null($data) && array_key_exists('statusCode', $data) && array_key_exists('shorturl', $data) && $data['statusCode'] == 200 ) { $this->_url = $data['shorturl']; } else { $this->_error = 'Error parsing YOURLS response.'; } } /** * Returns the (untranslated) error message * * @access public * @return string */ public function getError() { return $this->_error; } /** * Returns the shortened URL * * @access public * @return string */ public function getUrl() { return $this->_url; } /** * Returns true if any error has occurred * * @access public * @return bool */ public function isError() { return !empty($this->_error); } }