Vsch\TranslationManager\Manager::firstOrNewTranslation PHP Méthode

firstOrNewTranslation() public méthode

public firstOrNewTranslation ( $attributes = null )
    function firstOrNewTranslation($attributes = null)
    {
        $checkDB = true;
        /* @var $query Builder */
        $translation = null;
        if ($this->preloadedGroupKeys && array_key_exists('group', $attributes) && $this->preloadedGroup === $attributes['group'] && array_key_exists('locale', $attributes) && array_key_exists('key', $attributes) && array_key_exists($attributes['locale'], $this->preloadedGroupLocales)) {
            $checkDB = false;
            if (array_key_exists($attributes['key'], $this->preloadedGroupKeys) && array_key_exists($attributes['locale'], $this->preloadedGroupKeys[$attributes['key']])) {
                $translation = $this->preloadedGroupKeys[$attributes['key']][$attributes['locale']];
            }
        }
        if ($checkDB) {
            $query = $this->translation->on($this->getConnectionName());
            foreach ($attributes as $attribute => $value) {
                $query = $query->where($attribute, $value);
            }
            $translation = $query->first();
        }
        if (!$translation) {
            $translation = new Translation();
            $translation->fill($attributes);
            $translation->setConnection($this->getConnectionName());
        }
        return $translation;
    }

Usage Example

 public function postEdit($group)
 {
     if (!in_array($group, $this->manager->config(Manager::EXCLUDE_GROUPS_KEY))) {
         $name = \Request::get('name');
         $value = \Request::get('value');
         list($locale, $key) = explode('|', $name, 2);
         if ($this->isLocaleEnabled($locale)) {
             $translation = $this->manager->firstOrNewTranslation(array('locale' => $locale, 'group' => $group, 'key' => $key));
             $markdownSuffix = $this->manager->config(Manager::MARKDOWN_KEY_SUFFIX);
             $isMarkdownKey = $markdownSuffix != '' && ends_with($key, $markdownSuffix) && $key !== $markdownSuffix;
             if (!$isMarkdownKey) {
                 // strip off trailing spaces and eol's and &nbsps; that seem to be added when multiple spaces are entered in the x-editable textarea
                 $value = trim(str_replace(" ", ' ', $value));
             }
             $value = $value !== '' ? $value : null;
             $translation->value = $value;
             $translation->status = $translation->isDirty() && $value != $translation->saved_value ? Translation::STATUS_CHANGED : Translation::STATUS_SAVED;
             $translation->save();
             if ($isMarkdownKey) {
                 $markdownKey = $key;
                 $markdownValue = $value;
                 $key = substr($markdownKey, 0, -strlen($markdownSuffix));
                 $translation = $this->manager->firstOrNewTranslation(array('locale' => $locale, 'group' => $group, 'key' => $key));
                 $value = $markdownValue !== null ? \Markdown::convertToHtml(str_replace(" ", ' ', $markdownValue)) : null;
                 $translation->value = $value;
                 $translation->status = $translation->isDirty() && $value != $translation->saved_value ? Translation::STATUS_CHANGED : Translation::STATUS_SAVED;
                 $translation->save();
             }
         }
     }
     return array('status' => 'ok');
 }
All Usage Examples Of Vsch\TranslationManager\Manager::firstOrNewTranslation