/** * Get coords by user IP * @return type */ public function ajaxGetCoordsByIp() { $objResponse = new JAXResponse(); $config = CFactory::getConfig(); $curl = new CCurl(); /* Because this function is called by ajax. We can't detect real vistor IP in this function than we need to get it from session */ $ip = JFactory::getSession()->get('jomsocial_userip'); /** * We do request to 3rd service with our IP to get coords than return ajax to update current coords * We can use many method here to get fews of coords. Just update it into our javascript * @todo We can allow extend via addon files ? */ /** * @url http://www.ipinfodb.com/ip_location_api.php */ $ipinfodbAPIKey = $config->get('geolocation_ipinfodb_key', '40955706fc1ec858891c0a7e1c76672d02c766cf7cee9b3e3bf00bcb1575d252'); $ipinfodbRequestUrl = 'http://api.ipinfodb.com/v3/ip-city/?key=' . $ipinfodbAPIKey . '&format=json'; if ($ip) { $ipinfodbRequestUrl .= '&ip=' . $ip; } $response = $curl->post($ipinfodbRequestUrl); $body = $response->getBody(); if ($body) { $body = json_decode($body); /* We'll response data as much as we have */ if ($body->latitude != 0 && $body->longitude != 0) { $coords['coords'] = $body; $objResponse->addScriptCall('joms.location.updateCoords', $coords); } } return $objResponse->sendResponse(); }
public static function fromContent($content) { $urls = self::fetchUrlsFromContent($content); /** * Crawle data * We only work with first url */ if (count($urls) > 0) { $url = array_shift($urls); $curl = new CCurl(); $header = $curl->getHeaderOnly($url); if (strpos($header['Content-Type'], ';') !== false) { $header = explode(';', $header['Content-Type']); $header = trim($header[0]); } else { $header = $header['Content-Type']; } switch ($header) { case 'text/html': /* now we do curl again to get body */ /** * @todo Somehow it's bug here that incorrect body content */ //$curl->setCurl(CURLOPT_HEADER); /* ya don't need header again */ $response = $curl->get($url); $body = $response->getBody(); /* get meta object */ $metasParser = new CParserMetas(); $metasParser->setContent($body); $graphObject = $metasParser->extract(); /* Do image fetch into local and resize */ $images = $graphObject->get('image'); /** * @todo allow config save dir */ if (is_array($images)) { $saveDir = JPATH_ROOT . '/images/community/activities'; /* Create save dir if not exists */ if (!JFolder::exists($saveDir)) { JFolder::create($saveDir); } /* Do copy into local */ $localImages = array(); foreach ($images as $image) { /* Hashing remote image url to use as fileName */ $localFileName = md5($image); /* Get file extension */ $locaFileExt = JFile::getExt($image); /* Generate local filename from hashed and extesion */ $localFile = $localFileName . '.' . $locaFileExt; /* Local thumbnail filename by adding _thumb */ $localThumbFile = $localFileName . '_thumb.' . $locaFileExt; /* Do save local */ copy($image, $saveDir . '/' . $localFile); /* Get image file informantion */ $info = getimagesize($saveDir . '/' . $localFile); /* Get image type than use it to createThumb */ $imgType = image_type_to_mime_type($info[2]); /* Do make thumb */ CImageHelper::createThumb($saveDir . '/' . $localFile, $saveDir . '/' . $localThumbFile, $imgType); $localImages[] = array('image' => $localFile, 'thumb' => $localThumbFile); } /* Save back */ $graphObject->set('localImages', $localImages); } return $graphObject; break; default: break; } } }