add(self::CATALOGUE, $catalogue); $c->add(self::INDEX, $index); $c->add(self::LANGUAGE_ID, $languageId); return self::doSelectOne($c); } public static function doSelectOne(Criteria $c) { $results = self::doSelect($c); return $results ? $results[0] : null; } /** * Zwraca tablicę domyślnych tłumaczeń * * @param Criteria $c * @return LanguageTranslation[] */ public static function doSelect(Criteria $c) { if (null === self::$lastCriteria || !self::$lastCriteria->equals($c)) { $results = array(); $language = LanguagePeer::retrieveByPK($c->get(self::LANGUAGE_ID)); $languageEditor = new stLanguageEditor($language); $searchPhrase = $c->get(self::BACKEND_PHRASE) ? trim($c->get(self::BACKEND_PHRASE), '% ') : null; $searchTranslation = $c->get(self::USER_PHRASE_TRANSLATION) ? trim($c->get(self::USER_PHRASE_TRANSLATION), '% ') : null; $searchCatalogue = $c->get(self::CATALOGUE) ? trim($c->get(self::CATALOGUE), '% ') : null; $searchIndex = $c->get(self::INDEX) ? trim($c->get(self::INDEX), '% ') : null; if ($searchPhrase || $searchTranslation) { $phrases = $languageEditor->search($searchPhrase, $searchTranslation, $searchCatalogue); } else { $phrases = $languageEditor->getPhrases($searchCatalogue, $searchIndex); } foreach ($phrases as $catalogue => $data) { foreach ($data as $index => $phrase) { $languageTranslation = new LanguageTranslation(); $languageTranslation->setCatalogue($catalogue); $languageTranslation->setIndex($index); $languageTranslation->setPhrase($phrase['phrase']); $languageTranslation->setDefaultPhraseTranslation($phrase['shop']); $languageTranslation->setUserPhraseTranslation(isset($phrase['user']) ? $phrase['user'] : null); $languageTranslation->setBackendPhrase($phrase['backend_phrase']); $languageTranslation->setLanguage($languageEditor->getLanguage()); $results[] = $languageTranslation; } } if ($searchPhrase) { usort($results, function(LanguageTranslation $t1, LanguageTranslation $t2) { return mb_strlen($t1->getPhrase()) > mb_strlen($t2->getPhrase()); }); } self::$lastCriteria = $c; self::$lastResults = array_slice($results, $c->getOffset(), $c->getLimit() > 0 ? $c->getLimit() : null); } return self::$lastResults; } public static function doCount(Criteria $c) { $results = self::doSelect($c); return count($results); } public static function getMapBuilder() { return BasePeer::getMapBuilder('plugins.stLanguagePlugin.lib.model.LanguageTranslationMapBuilder'); } public static function translateFieldName($name, $fromType, $toType) { return $name; } } // static code to register the map builder for this Peer with the main Propel class if (Propel::isInit()) { // the MapBuilder classes register themselves with Propel during initialization // so we need to load them here. try { LanguageTranslationPeer::getMapBuilder(); } catch (Exception $e) { Propel::log('Could not initialize Peer: ' . $e->getMessage(), Propel::LOG_ERR); } } else { // even if Propel is not yet initialized, the map builder class can be registered // now and then it will be loaded when Propel initializes. Propel::registerMapBuilder('plugins.stLanguagePlugin.lib.model.LanguageTranslationMapBuilder'); }