示例#1
0
 /**
  * Returns a 3D or 4D WKT 
  */
 protected function getWktFromFileUpload($request)
 {
     $path = sfConfig::get('sf_upload_dir') . DIRECTORY_SEPARATOR . c2cTools::generateUniqueName();
     $status = $request->moveFile('gps_data', $path);
     $type = c2cTools::getFileType($path);
     c2cTools::log("File uploaded to: {$path} with status: {$status} and a file type of: {$type}");
     $finalPath = $path;
     $wkt = NULL;
     // we rename file according to true type
     // FIXME as for now we only accept gpx,
     // this is kinda redundant...
     if ($type) {
         $status = rename($path, "{$path}.{$type}");
         if ($status) {
             $finalPath = $path . '.' . $type;
             c2cTools::log("File renamed: {$finalPath}");
             $wkt = $this->getWktFromFile($finalPath, $type);
             c2cTools::log("wkt computed");
         }
     }
     // we clear temp file :
     unlink($finalPath);
     //c2cTools::log("getWktFromFileUpload has generated this WKT: $wkt");
     return $wkt;
 }
示例#2
0
 private function handleImage($image_name, $tmp_name, $temp_dir, $index = 1)
 {
     // copy the image to the temp directory
     $filename = $tmp_name;
     $unique_filename = c2cTools::generateUniqueName();
     $file_ext = Images::detectExtension($filename);
     $new_location = $temp_dir . $unique_filename . $file_ext;
     if (!move_uploaded_file($filename, $new_location)) {
         return array('error' => array('field' => 'image_file', 'msg' => 'Failed moving uploaded file'));
     }
     // svg
     if ($file_ext == '.svg') {
         if (!SVG::rasterize($temp_dir, $unique_filename, $file_ext)) {
             return array('error' => array('field' => 'image_file', 'msg' => 'Failed rasterizing svg file'));
         }
     }
     // if jpg, check if we need orientation changes
     if ($file_ext == '.jpg') {
         Images::correctOrientation($new_location);
     }
     // generate thumbnails
     Images::generateThumbnails($unique_filename, $file_ext, $temp_dir);
     // look iptc for a possible title (jpeg only)
     if ($file_ext == '.jpg') {
         $size = getimagesize($new_location, $info);
         if (isset($info['APP13'])) {
             $iptc = iptcparse($info['APP13']);
             if (isset($iptc['2#105'])) {
                 $image_title = trim($iptc['2#105'][0]);
             } else {
                 if (isset($iptc['2#120'])) {
                     $image_title = trim($iptc['2#120'][0]);
                 }
             }
         }
     }
     if (isset($image_title)) {
         $encoding = mb_detect_encoding($image_title, "UTF-8, ISO-8859-1, ISO-8859-15", true);
         if ($encoding !== false) {
             if ($encoding != 'UTF-8') {
                 $image_title = mb_convert_encoding($image_title, 'UTF-8', $encoding);
             } else {
                 $image_title = $image_title;
             }
         }
         // if encoding could not be detected, rather not try to put it as prefilled title
     }
     // we are also interested at this point on the exif date in order to reorder images on the client side
     if ($file_ext == '.jpg' && ($exif = exif_read_data($new_location))) {
         if (isset($exif['DateTimeOriginal'])) {
             $image_date = str_replace(' ', ':', $exif['DateTimeOriginal']);
             $image_date = explode(':', $image_date);
             $image_date = mktime($image_date[3], $image_date[4], $image_date[5], $image_date[1], $image_date[2], $image_date[0]);
         }
     }
     return array('image_filename' => $unique_filename . $file_ext, 'default_license' => $this->getDefaultImageLicense($this->getRequestParameter('document_id'), $this->getRequestParameter('mod')), 'image_number' => (intval($this->getRequestparameter('image_number')) + 1) * 1000 + $index, 'image_title' => isset($image_title) ? $image_title : null, 'image_datetime' => isset($image_date) && $image_date ? $image_date : null);
 }