133 lines
4.6 KiB
PHP
133 lines
4.6 KiB
PHP
<?php
|
|
|
|
class LanguageTranslationPeer
|
|
{
|
|
const TABLE_NAME = 'st_language_translation';
|
|
|
|
const CATALOGUE = self::TABLE_NAME.'.catalogue';
|
|
const INDEX = self::TABLE_NAME.'.index';
|
|
const PHRASE = self::TABLE_NAME.'.phrase';
|
|
const BACKEND_PHRASE = self::TABLE_NAME.'.backend_phrase';
|
|
const DEFAULT_PHRASE_TRANSLATION = self::TABLE_NAME.'.default_phrase_translation';
|
|
const USER_PHRASE_TRANSLATION = self::TABLE_NAME.'.user_phrase_translation';
|
|
const LANGUAGE_ID = self::TABLE_NAME.'.language_id';
|
|
|
|
/**
|
|
* Ostatnio wykonane kryteria
|
|
*
|
|
* @var Criteria
|
|
*/
|
|
protected static $lastCriteria = null;
|
|
|
|
protected static $lastResults = null;
|
|
|
|
public static function retrieveByPK($catalogue, $index, $languageId)
|
|
{
|
|
$c = new Criteria();
|
|
$c->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');
|
|
} |