/** * Read from a file * * @deprecated Use img.io.MetaDataReader instead * @param io.File file * @param var default default void what should be returned in case no data is found * @return img.util.IptcData * @throws lang.FormatException in case malformed meta data is encountered * @throws lang.ElementNotFoundException in case no meta data is available * @throws img.ImagingException in case reading meta data fails */ public static function fromFile(File $file) { if (FALSE === getimagesize($file->getURI(), $info)) { $e = new ImagingException('Cannot read image information from ' . $file->getURI()); xp::gc(__FILE__); throw $e; } if (!isset($info['APP13'])) { if (func_num_args() > 1) { return func_get_arg(1); } throw new ElementNotFoundException('Cannot get IPTC information from ' . $file->getURI() . ' (no APP13 marker)'); } if (!($iptc = iptcparse($info['APP13']))) { throw new FormatException('Cannot parse IPTC information from ' . $file->getURI()); } // Parse creation date if (3 == sscanf(@$iptc['2#055'][0], '%4d%2d%d', $year, $month, $day)) { $created = Date::create($year, $month, $day, 0, 0, 0); } else { $created = NULL; } with($i = new self()); $i->setTitle(@$iptc['2#005'][0]); $i->setUrgency(@$iptc['2#010'][0]); $i->setCategory(@$iptc['2#015'][0]); $i->setSupplementalCategories(@$iptc['2#020']); $i->setKeywords(@$iptc['2#025']); $i->setSpecialInstructions(@$iptc['2#040'][0]); $i->setDateCreated($created); $i->setAuthor(@$iptc['2#080'][0]); $i->setAuthorPosition(@$iptc['2#085'][0]); $i->setCity(@$iptc['2#090'][0]); $i->setState(@$iptc['2#095'][0]); $i->setCountry(@$iptc['2#101'][0]); $i->setOriginalTransmissionReference(@$iptc['2#103'][0]); $i->setHeadline(@$iptc['2#105'][0]); $i->setCredit(@$iptc['2#110'][0]); $i->setSource(@$iptc['2#115'][0]); $i->setCopyrightNotice(@$iptc['2#116'][0]); $i->setCaption(@$iptc['2#120'][0]); $i->setWriter(@$iptc['2#122'][0]); return $i; }
/** * create Article instance from data supplied in $articleData * * @param array $articleData * @return Article */ private static function createInstance(array $articleData) { $article = new self(); // set identification $article->alias = $articleData['Alias']; $article->id = $articleData['articlesID']; // set category $article->category = ArticleCategory::getInstance($articleData['articlecategoriesID']); /* * set admin information (cast type explicitly to ensure lookup by adminID) * exceptions with invalid user ids are caught and ignored */ if ($articleData['createdBy']) { try { $article->createdBy = User::getInstance((int) $articleData['createdBy']); } catch (\InvalidArgumentException $e) { } catch (UserException $e) { } } if ($articleData['updatedBy']) { try { $article->updatedBy = User::getInstance((int) $articleData['updatedBy']); } catch (\InvalidArgumentException $e) { } catch (UserException $e) { } } if ($articleData['publishedBy']) { try { $article->publishedBy = User::getInstance((int) $articleData['publishedBy']); } catch (\InvalidArgumentException $e) { } catch (UserException $e) { } } // set date information if (!empty($articleData['Display_from'])) { $article->displayFrom = new \DateTime($articleData['Display_from']); } if (!empty($articleData['Display_until'])) { $article->displayUntil = new \DateTime($articleData['Display_until']); } if (!empty($articleData['Article_Date'])) { $article->articleDate = new \DateTime($articleData['Article_Date']); } if (!empty($articleData['firstCreated'])) { $article->firstCreated = new \DateTime($articleData['firstCreated']); } if (!empty($articleData['lastUpdated'])) { $article->lastUpdated = new \DateTime($articleData['lastUpdated']); } // flags and sort $article->published = $articleData['published']; $article->customFlags = $articleData['customFlags']; $article->customSort = $articleData['customSort']; // set various text fields $article->setHeadline($articleData['Headline']); $article->setData($articleData); // backup values to check whether record was changed $article->previouslySavedValues = new \stdClass(); $article->previouslySavedValues->headline = $article->headline; $article->previouslySavedValues->category = $article->category; $article->previouslySavedValues->data = $article->data; $article->previouslySavedValues->displayFrom = $article->displayFrom; $article->previouslySavedValues->displayUntil = $article->displayUntil; $article->previouslySavedValues->articleDate = $article->articleDate; $article->previouslySavedValues->published = $article->published; $article->previouslySavedValues->customFlags = $article->customFlags; $article->previouslySavedValues->customSort = $article->customSort; return $article; }