/** * Get the filename of the cached image * * @param Media $mediaobject * @return filename */ protected function cacheFileName(Media $mediaobject) { return $this->cacheDir() . $this->tree_id . '-' . $mediaobject->getXref() . '-' . filemtime($mediaobject->getServerFilename()) . '.' . $mediaobject->extension(); }
/** * Create a new media object, from inline media data. * * @param int $level * @param string $gedrec * @param Tree $tree * * @return string */ public static function createMediaObject($level, $gedrec, Tree $tree) { if (preg_match('/\\n\\d FILE (.+)/', $gedrec, $file_match)) { $file = $file_match[1]; } else { $file = ''; } if (preg_match('/\\n\\d TITL (.+)/', $gedrec, $file_match)) { $titl = $file_match[1]; } else { $titl = ''; } // Have we already created a media object with the same title/filename? $xref = Database::prepare("SELECT m_id FROM `##media` WHERE m_filename = ? AND m_titl = ? AND m_file = ?")->execute(array($file, $titl, $tree->getTreeId()))->fetchOne(); if (!$xref) { $xref = $tree->getNewXref('OBJE'); // renumber the lines $gedrec = preg_replace_callback('/\\n(\\d+)/', function ($m) use($level) { return "\n" . ($m[1] - $level); }, $gedrec); // convert to an object $gedrec = str_replace("\n0 OBJE\n", '0 @' . $xref . "@ OBJE\n", $gedrec); // Fix Legacy GEDCOMS $gedrec = preg_replace('/\\n1 FORM (.+)\\n1 FILE (.+)\\n1 TITL (.+)/', "\n1 FILE \$2\n2 FORM \$1\n2 TITL \$3", $gedrec); // Fix FTB GEDCOMS $gedrec = preg_replace('/\\n1 FORM (.+)\\n1 TITL (.+)\\n1 FILE (.+)/', "\n1 FILE \$3\n2 FORM \$1\n2 TITL \$2", $gedrec); // Create new record $record = new Media($xref, $gedrec, null, $tree); Database::prepare("INSERT INTO `##media` (m_id, m_ext, m_type, m_titl, m_filename, m_file, m_gedcom) VALUES (?, ?, ?, ?, ?, ?, ?)")->execute(array($xref, $record->extension(), $record->getMediaType(), $record->getTitle(), $record->getFilename(), $tree->getTreeId(), $gedrec)); } return "\n" . $level . ' OBJE @' . $xref . '@'; }