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();

Thursday, 31 January 2019

After bans from Apple and Google, Sarahah debuts Enoff, an iOS app for anonymous feedback at work

Sarahah, the anonymous messaging app founded in Saudi Arabia that became an unexpected viral sensation with teens, clocking up over 300 million registered users before getting banned by Apple and Google over bullying, is making a return to the App Store — but not as you might think.

The startup has launched a new, free iOS app called Enoff (pronounced “enough”) aimed at organizations, tapping into the wave of employee activism and speaking out about unfair practices to provide a way for people in a team to give anonymous, one-way feedback to bosses and human resources reps.

Available also on the web, the aim is to provide a way to give feedback in cases of harassment, corruption and other tricky workplace situations where employees might fear repercussions for speaking out.

[gallery ids="1777180,1777181"]

Enoff is going head to head with a number of alternatives already in the market for giving “anonymous” feedback in the workplace, including other apps like Blind as well as incumbent solutions that business might already have in place for getting feedback. But it’s also a return to the startup’s roots: the original Sarahah was originally built to let employees provide honest feedback anonymously to bosses, before it inadvertently got hijacked and turned into a hit with consumers.

This does not signal an end to Sarahah itself. Despite its origins in Saudi Arabia and all the potential controversy that might come along with that, the eponymous app now has 320 million registered users with concentrations especially in the US, UK, India, Egypt and Japan, according to CEO and founder Zain al-Alabdin Tawfiq. And it has been getting rebuilt to provide better safeguards and blocks against bullying, harassment and other negative uses that raised the ire of parents and many others.

Specifically, Sarahah is now tapping into APIs from bigger tech companies like Google to develop better filters that go beyond keywords to flag content based on sentiment and inference. (Tawfiq said that the company is also building its own technology, although with only 10 employees currently working for the startup, it’s slow work to create anything new in-house on top of running the app that already exists.)

The plan is to launch Enoff while resubmitting Sarahah to Apple’s App Store and the Google Play Android store in coming months to hopefully get it listed again. These days, people are using the app primarily via the web, where they can get to a user’s profile by following links on other platforms, Tawfiq said. Sarahah currenly sees “millions” of active users each month.

“We are working on improving the platform and protection measures,” Tawfiq said, of the bullying that eventually brought the original app down, he described it as “a very limited use case, but we’re working on fixing it.”

To coincide with the launch of Enoff and the work on rebuilding Sarahah, Tawfiq said the startup is working on raising a Series A round of funding to hire more staff, as well as pay for the infrastructure to provide the bigger app and build more of a business around it. He would not comment on how much Sarahah is raising, nor how much it has raised from private backers to date.

Enoff works like this: a company or organization initially registers its domain, which includes on-boarding where a person has to upload identification to get verified to become the company representative on the site. Once an organization has been added, a code to communicate with the representative can be shared with employees, clients, or partners. These individuals then register and can start to provide feedback.

That feedback, in turn, never gets shared with anyone except for whoever is the administrator of that organization, essentially running it like an open-ended tips line going to a single mailbox.

Tawfiq confirmed that Enoff will be free to use with no plans to add any paid tiers to the app, but Sarahah itself is quietly building other kinds of monetization into the wider platform. He notes that select advertising is now running in Sarahah and over time the plan will be to introduce wider data analytics services tapping into the platform’s wider trove of anonymous information, an area he refers to as “corporate solutions” that will draw on the fact that many organizations — Netflix is one — are already using Sarahah to run feedback campaigns, by providing more targeted analytics and sentiment analysis.

“The service we provide right now is generic, so individuals and companies get the same experience, but we have a great opportunity to provide added value services for companies to give them more benefits from the feedback they receive,” Tawfiq said. “We believe that the billions of messages that are available in Sarahah can be extracted, to find a lot of useful information to help companies improve their processes.”

In all, Sarahah’s continuing popularity points not only to how — despite its issues — we still seem to be craving, as an internet culture, more forums for revealing our thoughts; but that sometimes the simplest solutions, even if flawed, continue to have sticky attraction.

“I think that Sarahah was born with a clear objective. It’s different from other platforms because it was created to break down barriers around giving candid feedback,” Tawfiq said. “Focusing on this objective will help us grow our business even when other services like us have failed.”



from TechCrunch https://tcrn.ch/2RrEQcQ
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support