示例#1
0
 /**
  * set the enabled status for the user
  *
  * @param bool $enabled
  */
 public function setEnabled($enabled)
 {
     $this->enabled = $enabled;
     if ($this->config) {
         $enabled = $enabled ? 'true' : 'false';
         $this->config->setUserValue($this->uid, 'core', 'enabled', $enabled);
     }
 }
示例#2
0
 /**
  * Get URL content
  * @param string $url Url to get content
  * @throws \Exception If the URL does not start with http:// or https://
  * @return string of the response or false on error
  * This function get the content of a page via curl, if curl is enabled.
  * If not, file_get_contents is used.
  */
 public function getUrlContent($url)
 {
     if (!$this->isHTTPURL($url)) {
         throw new \Exception('$url must start with https:// or http://', 1);
     }
     $proxy = $this->config->getSystemValue('proxy', null);
     $proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', null);
     if (function_exists('curl_init')) {
         $curl = curl_init();
         $max_redirects = 10;
         curl_setopt($curl, CURLOPT_HEADER, 0);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
         curl_setopt($curl, CURLOPT_URL, $url);
         curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
         curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
         curl_setopt($curl, CURLOPT_USERAGENT, self::USER_AGENT);
         if ($proxy !== null) {
             curl_setopt($curl, CURLOPT_PROXY, $proxy);
         }
         if ($proxyUserPwd !== null) {
             curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyUserPwd);
         }
         if (ini_get('open_basedir') === '' && ini_get('safe_mode') === false || strtolower(ini_get('safe_mode')) === 'off') {
             curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
             curl_setopt($curl, CURLOPT_MAXREDIRS, $max_redirects);
             $data = curl_exec($curl);
         } else {
             curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
             $mr = $max_redirects;
             if ($mr > 0) {
                 $newURL = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
                 $rcurl = curl_copy_handle($curl);
                 curl_setopt($rcurl, CURLOPT_HEADER, true);
                 curl_setopt($rcurl, CURLOPT_NOBODY, true);
                 curl_setopt($rcurl, CURLOPT_FORBID_REUSE, false);
                 curl_setopt($rcurl, CURLOPT_RETURNTRANSFER, true);
                 curl_setopt($rcurl, CURLOPT_USERAGENT, self::USER_AGENT);
                 do {
                     curl_setopt($rcurl, CURLOPT_URL, $newURL);
                     $header = curl_exec($rcurl);
                     if (curl_errno($rcurl)) {
                         $code = 0;
                     } else {
                         $code = curl_getinfo($rcurl, CURLINFO_HTTP_CODE);
                         if ($code == 301 || $code == 302) {
                             preg_match('/Location:(.*?)\\n/', $header, $matches);
                             $newURL = trim(array_pop($matches));
                         } else {
                             $code = 0;
                         }
                     }
                 } while ($code && --$mr);
                 curl_close($rcurl);
                 if ($mr > 0) {
                     curl_setopt($curl, CURLOPT_URL, $newURL);
                 }
             }
             if ($mr == 0 && $max_redirects > 0) {
                 $data = false;
             } else {
                 $data = curl_exec($curl);
             }
         }
         curl_close($curl);
     } else {
         $url = $this->getFinalLocationOfURL($url);
         $contextArray = $this->getDefaultContextArray();
         if ($proxy !== null) {
             $contextArray['http']['proxy'] = $proxy;
         }
         $ctx = stream_context_create($contextArray);
         $data = @file_get_contents($url, 0, $ctx);
     }
     return $data;
 }