function _externals($params) { $p2 = $params; $p2['user'] = $p2['user']->std(); $p2['chaturl'] = 'http://' . $_SERVER['HTTP_HOST'] . '/'; $body = json_encode($p2); $user = $params['user']; //Immediate::debug(htmlspecialchars(print_r($params,1)));return false; $externals = DB::get()->col("SELECT value FROM options WHERE grouping = 'external'"); foreach ($externals as $url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // The URL. curl_setopt($ch, CURLOPT_MAXREDIRS, 5); // Maximum number of redirections to follow. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follow 302's and the like. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return the data from the stream. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_POST, true); // POST mode. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('p' => $body))); // Immediate::create() // ->js("addSystem({user_id:{$user->id}, data: '" . addslashes($body) . "', cssclass: 'error', username: '******', nickname: '{$user->nickname}', status: " . microtime(true) . ", js:''}, '#notices');do_scroll();"); $response = curl_exec($ch); if (curl_errno($ch) !== 0) { Immediate::create()->js("addSystem({user_id:{$user->id}, data: 'External \\'" . addslashes($url) . "\\' failed, with a curl error, " . curl_errno($ch) . ".', cssclass: 'error', username: '******', nickname: '{$user->nickname}', status: " . microtime(true) . ", js:''}, '#notices');do_scroll();"); } elseif (curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) { //die('Not 200 response code'); Immediate::create()->js("addSystem({user_id:{$user->id}, data: 'External \\'" . addslashes($url) . "\\' failed, with HTTP error code " . curl_getinfo($ch, CURLINFO_HTTP_CODE) . ".', cssclass: 'error', username: '******', nickname: '{$user->nickname}', status: " . microtime(true) . ", js:''}, '#notices');do_scroll();"); } else { Immediate::debug(htmlspecialchars($response)); //return false; try { $xml = new SimpleXMLElement($response); foreach ($xml->result as $result) { $status = Status::create(); foreach ($result->attributes() as $k => $v) { switch ($k) { case 'append': break; case 'user': $remote_user = DB::get()->val("SELECT id FROM users WHERE username = ?", array($v)); if (!$remote_user) { $remote_user = min(-1, DB::get()->val("SELECT min(id) FROM users") - 1); DB::get()->query("INSERT INTO users (id, username) VALUES (?, ?)", array($remote_user, $v)); DB::get()->query("UPDATE users SET id = ? WHERE username = ?", array($remote_user, $v)); } $status->user_id = $remote_user; break; default: $status->{$k} = $v; break; } } $status->data((string) $result); if (isset($result['append']) && $result['append'] == 'pre') { $status->insert(); } else { $this->statuses[] = $status; } if ($xml['silent'] == 'true') { return true; } } } catch (Exception $e) { Immediate::debug('RESPONSE: ' . htmlspecialchars($response)); } } curl_close($ch); return false; } }