|  |  | 
 |  |  |    function __construct($msg, $httpcode, $content) { | 
 |  |  |       $this->httpcode = $httpcode; | 
 |  |  |       $this->content = $content; | 
 |  |  |       parent::__construct($msg); | 
 |  |  |       parent::__construct($msg.' Błąd '.$httpcode); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    function __get($name) { | 
 |  |  | 
 |  |  | } | 
 |  |  |  | 
 |  |  | class BotAPIGG extends config { | 
 |  |  |    private $token; | 
 |  |  |    private static $token; | 
 |  |  |     | 
 |  |  |    const STATUS_DOSTEPNY = 2; | 
 |  |  |    const STATUS_DOSTEPNY_DESC = 4; | 
 |  |  | 
 |  |  |    const STATUS_INVISIBLE = 20; | 
 |  |  |    const STATUS_INVISIBLE_DESC = 22; | 
 |  |  |     | 
 |  |  |    private function httpQuery($address, $useToken = TRUE, $curlopts = array()) { | 
 |  |  |    private function httpQuery($address, $curlopts = array(), $useToken = TRUE, $parseXML = TRUE) { | 
 |  |  |       if(!is_array($curlopts)) { | 
 |  |  |          $curlopts = array(); | 
 |  |  |       } | 
 |  |  | 
 |  |  |       $tok2 = $tok = curl_exec($dane); | 
 |  |  |       $info = curl_getinfo($dane); | 
 |  |  |        | 
 |  |  |       try { | 
 |  |  |          libxml_use_internal_errors(TRUE); | 
 |  |  |          $tok = new SimpleXMLElement($tok); | 
 |  |  |       if($parseXML) { | 
 |  |  |          try { | 
 |  |  |             libxml_use_internal_errors(TRUE); | 
 |  |  |             $tok = new SimpleXMLElement($tok); | 
 |  |  |          } | 
 |  |  |          catch(Exception $e) { | 
 |  |  |             throw new BotAPIGGXMLException('Otrzymano błędny XML od botmastera.', $tok2); | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          if(!$tok) { | 
 |  |  |             if($info['http_code'] != 200) { | 
 |  |  |                throw new BotAPIGGHTTPException('Nie udało się wykonać zapytania HTTP.', $info['http_code'], $tok2); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                throw new BotAPIGGXMLException('Otrzymano błędny XML od botmastera.', $tok2); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       catch(Exception $e) { | 
 |  |  |          throw new BotAPIGGXMLException('Otrzymano błędny XML od botmastera.', $tok2); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       if(!$tok) { | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          if($info['http_code'] != 200) { | 
 |  |  |             throw new BotAPIGGHTTPException('Nie udało się wykonać zapytania HTTP.', $info['http_code'], $tok2); | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             throw new BotAPIGGXMLException('Otrzymano błędny XML od botmastera.', $tok2); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |        | 
 |  |  | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    function getToken($force = FALSE) { | 
 |  |  |       if($force || !$this->token) { | 
 |  |  |       if($force || self::$token === NULL) { | 
 |  |  |          $auth = $this->APIs['Gadu-Gadu']; | 
 |  |  |           | 
 |  |  |          $tok = $this->httpQuery('https://botapi.gadu-gadu.pl/botmaster/getToken/'.$auth['numer'], FALSE, array( | 
 |  |  |          $tok = $this->httpQuery('https://botapi.gadu-gadu.pl/botmaster/getToken/'.$auth['numer'],  array( | 
 |  |  |             CURLOPT_USERPWD => $auth['login'].':'.$auth['haslo'], | 
 |  |  |             CURLOPT_HTTPAUTH => CURLAUTH_BASIC, | 
 |  |  |          )); | 
 |  |  |          ), FALSE); | 
 |  |  |           | 
 |  |  |          if($tok->errorMsg) { | 
 |  |  |             throw new BotAPIGGReplyException('Pobieranie tokena nie powiodło się.', $tok); | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          $this->token = array('token' => (string)$tok->token, 'host' => (string)$tok->server, 'port' => (int)$tok->port); | 
 |  |  |          self::$token = array('token' => (string)$tok->token, 'host' => (string)$tok->server, 'port' => (int)$tok->port); | 
 |  |  |       } | 
 |  |  |        | 
 |  |  |       return $this->token; | 
 |  |  |       return self::$token; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    function setStatus($status, $desc = '') { | 
 |  |  |       $auth = $this->APIs['Gadu-Gadu']; | 
 |  |  |       $token = $this->getToken(); | 
 |  |  |        | 
 |  |  |       $tok = $this->httpQuery('https://'.$token['host'].'/setStatus/'.$auth['numer'], FALSE, array( | 
 |  |  |          CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded'), | 
 |  |  |       $tok = $this->httpQuery('https://'.$token['host'].'/setStatus/'.$auth['numer'], array( | 
 |  |  |          CURLOPT_POST => TRUE, | 
 |  |  |          CURLOPT_POSTFIELDS => 'token='.urlencode($token['token']).'&status='.urlencode($status).'&desc='.urlencode($desc), | 
 |  |  |          CURLOPT_POSTFIELDS => http_build_query(array( | 
 |  |  |             'status' => $status, | 
 |  |  |             'desc' => $desc, | 
 |  |  |          ), '', '&'), | 
 |  |  |       )); | 
 |  |  |        | 
 |  |  |       if( (string)$tok->status != '0') { | 
 |  |  | 
 |  |  |    function setUrl($url) { | 
 |  |  |       $auth = $this->APIs['Gadu-Gadu']; | 
 |  |  |        | 
 |  |  |       $tok = $this->httpQuery('https://botapi.gadu-gadu.pl/botmaster/setUrl/'.$auth['numer'], TRUE, array( | 
 |  |  |       $tok = $this->httpQuery('https://botapi.gadu-gadu.pl/botmaster/setUrl/'.$auth['numer'], array( | 
 |  |  |          CURLOPT_POST => TRUE, | 
 |  |  |          CURLOPT_POSTFIELDS => $url, | 
 |  |  |       )); | 
 |  |  | 
 |  |  |       return $tok; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    function getImage($hash) { | 
 |  |  |       $auth = $this->APIs['Gadu-Gadu']; | 
 |  |  |       $token = $this->getToken(); | 
 |  |  | 		 | 
 |  |  |       $tok = $this->httpQuery('https://botapi.gadu-gadu.pl/botmaster/getImage/'.$auth['numer'], array( | 
 |  |  |          CURLOPT_POST => TRUE, | 
 |  |  |          CURLOPT_POSTFIELDS => http_build_query(array('hash' => $hash), '', '&'), | 
 |  |  |       ), TRUE, FALSE); | 
 |  |  | 		 | 
 |  |  |       return $tok; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  |    function existsImage($hash) { | 
 |  |  |       $auth = $this->APIs['Gadu-Gadu']; | 
 |  |  |       $token = $this->getToken(); | 
 |  |  | 		 | 
 |  |  |       $tok = $this->httpQuery('https://botapi.gadu-gadu.pl/botmaster/existsImage/'.$auth['numer'], array( | 
 |  |  |          CURLOPT_POST => TRUE, | 
 |  |  |          CURLOPT_POSTFIELDS => http_build_query(array('hash' => $hash), '', '&'), | 
 |  |  |       )); | 
 |  |  | 		 | 
 |  |  |       if( (string)$tok->status != '0') { | 
 |  |  |          return FALSE; | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return TRUE; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  |    function putImage($path) { | 
 |  |  |       $auth = $this->APIs['Gadu-Gadu']; | 
 |  |  |       $token = $this->getToken(); | 
 |  |  | 		 | 
 |  |  |       $tok = $this->httpQuery('https://botapi.gadu-gadu.pl/botmaster/putImage/'.$auth['numer'], array( | 
 |  |  |          CURLOPT_HTTPHEADER => array('Content-Type: image/x-any'), | 
 |  |  |          CURLOPT_POST => TRUE, | 
 |  |  |          CURLOPT_POSTFIELDS => file_get_contents($path), | 
 |  |  |       )); | 
 |  |  | 		 | 
 |  |  |       if( (string)$tok->status != '0') { | 
 |  |  |          throw new BotAPIGGReplyException('Przesyłanie obrazka do botmastera nie powiodło się.', $tok); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return (string)$tok->hash; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  |    /** | 
 |  |  |     * Wysyła wiadomość do podanych użytkowników | 
 |  |  |     * @param array $toURL Lista adresatów wiadomości w postaci: array('Gadu-Gadu://NUMER@gadu-gadu.pl', ...) | 
 |  |  | 
 |  |  |     * @param array $params Parametry przekazywane funkcji. Aktualnie dostępne: | 
 |  |  |     * array( 'SendToOffline' => (bool)TRUE/FALSE ) | 
 |  |  |     */ | 
 |  |  | 	 | 
 |  |  |    function sendMessage($toURL, BotMsg $msg, $params = array()) { | 
 |  |  |       $to = array(); | 
 |  |  |       foreach($toURL as $url) { | 
 |  |  | 
 |  |  |             continue; | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          if($url['user']=='' || !ctype_digit($url['user'])) { | 
 |  |  |          if($url['user'] == '' || !ctype_digit($url['user'])) { | 
 |  |  |             throw new Exception('Nieznany użytkownik sieci Gadu-Gadu, któremu należy dostarczyć wiadomość.'); | 
 |  |  |          } | 
 |  |  |           | 
 |  |  | 
 |  |  |       while(!empty($to)) { | 
 |  |  |          $to_part = implode(',', array_splice($to, -5000)); | 
 |  |  |           | 
 |  |  |          $tok = $this->httpQuery('https://'.$token['host'].'/sendMessage/'.$auth['numer'], FALSE, array( | 
 |  |  |          $tok = $this->httpQuery('https://'.$token['host'].'/sendMessage/'.$auth['numer'], array( | 
 |  |  |             CURLOPT_HTTPHEADER => $headers, | 
 |  |  |             CURLOPT_POST => TRUE, | 
 |  |  |             CURLOPT_POSTFIELDS => 'token='.urlencode($token['token']).'&to='.urlencode($to_part).'&msg='.urlencode($msg->getGG(FALSE)), | 
 |  |  |             CURLOPT_POSTFIELDS => array( | 
 |  |  |                'to' => $to_part, | 
 |  |  |                'msg' => $msg->getGG(FALSE), | 
 |  |  |             ), | 
 |  |  |          )); | 
 |  |  |           | 
 |  |  |          if((string)$tok->status == '18') { | 
 |  |  |             $tok = $this->httpQuery('https://'.$token['host'].'/sendMessage/'.$auth['numer'], FALSE, array( | 
 |  |  |                CURLOPT_HTTPHEADER => $headers, | 
 |  |  |                CURLOPT_POST => TRUE, | 
 |  |  |                CURLOPT_POSTFIELDS => 'token='.urlencode($token['token']).'&to='.urlencode($to_part).'&msg='.urlencode($msg->getGG(FALSE)), | 
 |  |  |                CURLOPT_POSTFIELDS => array( | 
 |  |  |                   'to' => $to_part, | 
 |  |  |                   'msg' => $msg->getGG(TRUE), | 
 |  |  |                ), | 
 |  |  |             )); | 
 |  |  |          } | 
 |  |  |           |