Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Friday, 29 May 2020

Twitter screens Trump’s Minneapolis threat-tweet for glorifying violence

After applying a fact-checking label Tuesday to a misleading vote-by-mail tweet made by US president Donald Trump, Twitter is on a roll and has labeled another of the president’s tweets — this time screening his words from casual view with what it calls a “public interest notice” that states the tweet violated its rules about glorifying violence. 

Here’s how the tweet appears without further interaction:

The public interest notice replaces the substance of what Trump wrote, meaning a user has to actively click through to view the offending tweet.

Engagement options are also limited as a result by this label, meaning users can only retweet the offending tweet with a comment; they cannot like it, reply to it or vanilla retweet it.

Twitter’s notice goes on to explain why it has not removed the offending tweet entirely — and this is where the public interest element of the policy kicks in — with the company writing: “Twitter has determined that it may be in the public’s interest for the Tweet to remain accessible.” 

Twitter appears to be shrugging off the president’s decision yesterday to sign an executive order targeting the legal shield which internet companies rely on to protect them from liability for user-created content — doubling down on displeasing Trump who has accused social media platforms generally of deliberately suppressing conservative views, despite plenty of evidence that ad-targeting platform algorithms actually boost outrage-fuelled content and views — which tends, conversely, to amplify conservative viewpoints.

In the latest clash, Trump had tweeted in reference to violent demonstrations taking place in Minneapolis sparked by the killing of a black man, George Floyd, by a white police officer — with the president claiming that “THUGS are dishonoring the memory of George Floyd” before threatening to send in the “Military”.

“Any difficulty and we will assume control but, when the looting starts, the shooting starts. Thank you!” Trump added — making a bald threat to use military force against civilians.

Twitter has wrestled with the issue of how to handle world leaders who break its content rules for years. Most often as a result of Trump who routinely uses its platform to bully all manner of targets — from rival politicians to hated journalists, disobedient business leaders, and even actors who displease him — as well as to dispense direct and sometimes violent threats.

Since being elected, Trump has also used Twitter’s global platform as a foreign policy weapon, firing military threats at the likes of North Korea and Iran in tweet form.

Back in 2018, for example, he teased North Korean leader Kim Jong-Un with button-pushing nuclear destruction (see below tweet) — before going on to “fall in love” with the dictator when he met him in person.

Twitter’s go-to defence for not taking offending Trump tweets down in the past has been that, as US president, the substance of what the man tweets — however mad, bad and dangerous — is inherently newsworthy.

However, more recently, the company has created a policy tool that allows it to intervene — defining terms last summer around “public interest” content on Twitter.

It warned then (almost a full year ago, in June 2019) that it might place a public interest notice on tweets that would otherwise violate its rules (and therefore merit a takedown) — in order to “to provide additional context and clarity”, rather than removing the offensive tweet.

Fast forward a year and the tech giant has started applying labels to Trump’s tweets — beginning with a fact-check label earlier this week, related to the forthcoming US election, and following up now with a public interest notice related to Trump glorifying violence.

So, finally, the tech giant seems to be inching towards drawing a limit-line around Trump in near real-time.

Explaining its decision to badge the US president’s threat to order the military to shoot looters in Minneapolis, the company writes: “This Tweet violates our policies regarding the glorification of violence based on the historical context of the last line, its connection to violence, and the risk it could inspire similar actions today.”

“We’ve taken action in the interest of preventing others from being inspired to commit violent acts, but have kept the Tweet on Twitter because it is important that the public still be able to see the Tweet given its relevance to ongoing matters of public importance,” Twitter goes on.

It also links to its policy against tweets that glorify violence — which states unequivocally [in bold]: “You may not threaten violence against an individual or a group of people.”

Back in June, when Twitter announced the ‘abusive behavior’ label, it also warned that tweets which get screened with a public interest notice will not benefit from any algorithmic acceleration, writing: “We’ll also take steps to make sure the Tweet is not algorithmically elevated on our service, to strike the right balance between enabling free expression, fostering accountability, and reducing the potential harm caused by these Tweets.”

However the newsworthiness of Twitter’s decision to finally apply its own rules vis-a-vis Trump will ensure there’s plenty of non-algorithmic amplification.

We reached out to the company with questions about its decision to apply a public interest screen on Trump’s latest tweet but at the time of writing it had not responded.

On Wednesday night, Twitter CEO and co-founder, Jack Dorsey, put out a series of tweets defending its decision to apply a fact-check label to Trump’s earlier misleading tweets about vote-by-mail.

“This does not make us an “arbiter of truth”,” wrote Dorsey. “Our intention is to connect the dots of conflicting statements and show the information in dispute so people can judge for themselves. More transparency from us is critical so folks can clearly see the why behind our actions.”

Dorsey’s remarks followed pointed comments made by Facebook CEO Mark Zuckerberg to Fox News, seeking to contrast Facebook’s claimed ‘neutrality’ when policing its platform with Twitter’s policy of taking a stance on issues such as political advertising (which Twitter does not allow).

“I just believe strongly that Facebook shouldn’t be the arbiter of truth of everything that people say online,” Zuckerberg told the conservative news station. “Private companies… especially these platform companies, shouldn’t be in the position of doing that.”

It’s notable that Dorsey used Zuckerberg’s exact turn of phrase — “arbiter of truth” — to reject Facebook’s attack on Twitter’s policy as a straw man argument.



from TechCrunch https://ift.tt/2XaZ4gY
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support