Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Multilingual/Page/Section/Translation.php
Строк: 84
<?php
namespace ConcreteCoreMultilingualPageSection;

defined('C5_EXECUTE') or die("Access Denied.");

class 
Translation extends GettextTranslation
{
    public function 
getRecordID()
    {
        return 
$this->mtID;
    }

    public function 
updateTranslation($msgstr$msgstrPlurals = array())
    {
        
$msgstr = (string) $msgstr;
        
$data = array(
            
'msgstr' => (string) $msgstr,
            
'msgstrPlurals' => null,
            
'updated' => Core::make('helper/date')->toDB(),
        );
        if (
$this->hasPlural()) {
            if (!
is_array($msgstrPlurals)) {
                
$msgstrPlurals = array();
            }
            if (!empty(
$msgstrPlurals)) {
                
$data['msgstrPlurals'] = implode("x00"$msgstrPlurals);
            }
        }
        
$db Database::get();
        
$db->update('MultilingualTranslations'$data, array('mtID' => $this->mtID));
        
$this->setTranslation($msgstr);
        if (
$this->hasPlural()) {
            foreach (
$msgstrPlurals as $pluralIndex => $plural) {
                
$this->setPluralTranslation($plural$pluralIndex);
            }
        }
    }

    public static function 
getByRow($row)
    {
        
$result null;
        if (
$row && $row['mtID']) {
            
$result = new Translation($row['context'], $row['msgid'], $row['msgidPlural']);
            
$result->mtID $row['mtID'];
            
$result->mtSectionID $row['mtSectionID'];
            
$result->setTranslation($row['msgstr']);
            if (isset(
$row['comments'])) {
                foreach (
explode("n"$row['comments']) as $comment) {
                    
$result->addExtractedComment($comment);
                }
            }
            if (
$result->hasPlural() && isset($row['msgstrPlurals'])) {
                foreach (
explode("x00"$row['msgstrPlurals']) as $pluralIndex => $plural) {
                    
$result->setPluralTranslation($plural$pluralIndex);
                }
            }
            if (isset(
$row['reference'])) {
                foreach (
explode("n"$row['reference']) as $reference) {
                    if (
$reference !== '') {
                        
$line null;
                        
$p strrpos($reference':');
                        if (
$p) {
                            
$s substr($reference$p 1);
                            if (
preg_match('/^d+$/'$s)) {
                                
$line = (int) $s;
                                
$reference substr($reference0$p);
                            }
                        }
                        
$result->addReference($reference$line);
                    }
                }
            }
            if (isset(
$row['flags'])) {
                foreach (
explode("n"$row['flags']) as $flag) {
                    if (
$flag !== '') {
                        
$result->addFlag($flag);
                    }
                }
            }
        }

        return 
$result;
    }

    public static function 
getByString($msgid)
    {
        
$db Database::get();
        
$r $db->query('select mtID from MultilingualTranslations mt where msgid = ?', array($msgid));
        
$row $r->fetch();
        if (
$row && $row['mtID']) {
            return static::
getByRecordID($row['mtID']);
        }
    }

    public static function 
getByRecordID($mtID)
    {
        
$result null;
        
$db Database::get();
        
$r $db->query('select  * from MultilingualTranslations where mtID = ?', array($mtID));
        
$row $r->fetch();

        return 
self::getByRow($row);
    }
}
Онлайн: 3
Реклама