/** * Get EXIF data from an image * @since Version 3.10.0 * @param \Railpage\Images\Image $imageObject * @param boolean $force * @return array */ public function getImageExif(Image $imageObject, $force = false) { Debug::LogCLI("Fetching EIXF data for image ID " . $imageObject->id); if (!$force && isset($imageObject->meta['exif']) && $imageObject->meta['exif_format_version'] >= self::EXIF_FORMAT_VERSION) { $imageObject->meta['exif']['camera_make'] = self::normaliseCameraMake($imageObject->meta['exif']['camera_make']); $imageObject->meta['exif']['camera_model'] = self::normaliseCameraModel($imageObject->meta['exif']['camera_model']); $imageObject->meta['exif']['camera'] = ImageFactory::CreateCamera($imageObject->meta['exif']['camera_id'])->getArray(); return $imageObject->meta['exif']; } /** * Fetch EXIF from the image provider API */ $Provider = $imageObject->getProvider(); $exif = $Provider->getExif($imageObject->photo_id); $exif_formatted = $this->getExifIDs($exif); $imageObject->meta['exif'] = $exif_formatted; $imageObject->meta['exif_format_version'] = self::EXIF_FORMAT_VERSION; $imageObject->commit(); /** * Insert into our database */ $query = "INSERT INTO image_exif ( \r\n image_id, camera_id, lens_id, lens_sn_id,\r\n aperture, exposure_id, exposure_program_id, \r\n focal_length, iso, white_balance_id\r\n ) VALUES (\r\n %d, %d, %d, %d, \r\n %s, %d, %d, \r\n %s, %s, %s\r\n ) ON DUPLICATE KEY UPDATE\r\n camera_id = VALUES(camera_id), lens_id = VALUES(lens_id),\r\n lens_sn_id = VALUES(lens_sn_id), aperture = VALUES(aperture),\r\n exposure_id = VALUES(exposure_id), exposure_program_id = VALUES(exposure_program_id),\r\n focal_length = VALUES(focal_length), iso = VALUES(iso), \r\n white_balance_id = VALUES(white_balance_id)"; $query = sprintf($query, $this->db->quote($imageObject->id), $this->db->quote($exif_formatted['camera_id']), $this->db->quote($exif_formatted['lens_id']), $this->db->quote($exif_formatted['lens_sn_id']), $this->db->quote($exif_formatted['aperture']), $this->db->quote($exif_formatted['exposure_id']), $this->db->quote($exif_formatted['exposure_program_id']), $this->db->quote($exif_formatted['focal_length']), $this->db->quote($exif_formatted['iso_speed']), $this->db->quote($exif_formatted['white_balance_id'])); $this->db->query($query); return $exif_formatted; }
/** * Update the author for a specific image * @since Version 3.10.0 * @param \Railpage\Images\Image $imageObject * @return \Railpage\Images\Image */ public static function updateAuthor(Image $imageObject) { if ($id = UserUtility::findFromFlickrNSID($imageObject->author->id)) { $imageObject->author->railpage_id = $id; $imageObject->author->User = UserFactory::CreateUser($imageObject->author->railpage_id); $imageObject->commit(); } return $imageObject; }