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, 30 August 2018

Santa Monica will allow Lime, Bird, Lyft and JUMP to operate e-scooters

The city of Santa Monica’s Shared Mobility Device Selection Committee officially awarded Bird, LimeLyft and JUMP Bikes, which Uber acquired in April, permits to operate both electric scooters and/or bikes in the city as part of its 16-month pilot program beginning Sept. 17. 

The city will allow Bird to manage 750 scooters, as well as Lime. Lyft and JUMP were granted permission to release 250 scooters each, as well as 500 bikes. A decision out of San Francisco, which is similarly launching a scooter pilot program this fall, is expected today.

Earlier this month, the committee had officially recommended that only Lyft and JUMP receive permits to David Martin, the city’s director of planning and community developmentLime and Bird, however, followed up immediately with a protest, asking their riders to speak out against the recommendations in hopes of reversing course. Looks like that strategy was successful.

“Bird is honored to have called Santa Monica our home since we first launched shared electric scooters less than 12 months ago,” Bird founder and CEO Travis VanderZanden said in a statement. “We have a shared mission of reducing congestion and emissions, and look forward to continuing partnering with the City and to serve our community. Bird is committed to providing Santa Monica residents and visitors the accessible, equitable, and responsible transportation option that they deserve.”

And here’s what Lyft had to say: “We are thrilled to have been awarded permits for both bikes and scooters by the City of Santa Monica,” Lyft’s bike and scooter policy lead Caroline Samponaro told TechCrunch. “The city’s decision to collaborate with Lyft deepens a partnership that will reduce vehicle congestion, increase public transportation trips and provide equitable transportation solutions to all residents of Santa Monica.”

Uber and Lime did not immediately reply to a request for comment. We will update the story when we hear back. The other contenders for a Santa Monica shared mobility permit: Hopr, Razor, Scoot, Skip, Spin, Cloud, Drop and Goin,’ did not receive permits and will not legally be able to operate scooters in Santa Monica.

Martin’s decision to stand by the committee’s recommendation is good news for Lyft and Uber, who are already the dominant players in the ride-hailing space and are now poised to dominate the scooter market as well. It’s also worth noting that Uber and Lime struck a deal this summer that will involve Uber pasting its logo on Lime scooters and investing $355 million in the company.

The city’s decision was based on several factors, including each company’s experience operating shared mobility devices, the company’s proposed operations plan and how appropriate it was to Santa Monica specifically and the company’s ability to launch operations in a timely manner. Additionally, the committee took into account the company’s history with compliance with local law.

Bird has been a contentious company among Santa Monica city leaders because of the nature of its entry. Taking a queue from Uber, Bird erupted onto the scene without official permission. Granted, at the time, the city didn’t have an official process for regulating bike-share and e-scooter startups.

 

 



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support