Пример #1
0
 /**
  * Save separately the model attributes and polyglot ones
  *
  * @param Polyglot $model
  *
  * @return boolean|null
  */
 public function saving(Polyglot $model)
 {
     // Extract polyglot attributes
     $translated = $this->extractTranslatedAttributes($model);
     // If no localized attributes, continue
     if (empty($translated)) {
         return true;
     }
     // Save new model
     if (!$model->exists) {
         $model->save();
     }
     // Get the current lang and Lang model
     $lang = array_get($translated, 'lang', Lang::getLocale());
     $langModel = $model->{$lang};
     $translated['lang'] = $lang;
     // If no Lang model or the fallback was returned, create a new one
     if (!$langModel || $langModel->lang !== $lang) {
         $langModel = $model->getLangClass();
         $langModel = new $langModel($translated);
         $model->translations()->save($langModel);
         $model->setRelation($lang, $langModel);
     }
     $langModel->fill($translated);
     // Save and update model timestamp
     if ($model->exists && $model->timestamps && $langModel->getDirty()) {
         $time = $model->freshTimestamp();
         $model->setUpdatedAt($time);
     }
     if ($model->save() && $langModel->save()) {
         return true;
     }
 }
Пример #2
0
 /**
  * BelongToLang constructor.
  *
  * @param Builder  $query
  * @param Eloquent $parent
  * @param string   $foreignKey
  * @param string   $otherKey
  * @param string   $langKey
  * @param string   $relation
  * @param null     $lang
  * @param null     $fallback
  */
 public function __construct(Builder $query, Eloquent $parent, $foreignKey, $otherKey, $langKey, $relation, $lang = null, $fallback = null)
 {
     $this->lang = $lang ?: Lang::getLocale();
     $this->fallback = $fallback ?: Lang::getFallback();
     $this->langKey = $langKey ?: 'lang';
     $this->fallbackQuery = clone $query;
     parent::__construct($query, $parent, $foreignKey, $otherKey, $relation);
 }
Пример #3
0
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.services'), date('c', time()), 'monthly', '1');
     Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.seo'), date('c', time()), 'monthly', '1');
     Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.design'), date('c', time()), 'monthly', '1');
     Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.programming'), date('c', time()), 'monthly', '1');
     Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.contacts'), date('c', time()), 'monthly', '1');
     Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB'), date('c', time()), 'monthly', '1');
     return Sitemap::render();
 }
Пример #4
0
/**
 * If using the return method, it will return an array of the variable
 */
function lang($text = false, $vars = null, $value = null, $group = null, $locale = null, $force_add = false)
{
    $original_locale = Lang::getLocale();
    $params['value'] = $value ? $value : 0;
    $params['vars'] = $vars ? $vars : [];
    $params['locale'] = $locale ? $locale : $original_locale;
    $params['group'] = $group ? $group : 'general';
    $params['dynamic'] = false;
    if (preg_match('/dynamic_/', $params['group'])) {
        $params['group'] = preg_replace('/dynamic_/', '', $params['group']);
        $params['dynamic'] = true;
    }
    $hash = md5($text) . sha1($text);
    $file_namespace = 'dbtranslator';
    if (preg_match('/\\|/', $text)) {
        $choose = true;
    } else {
        $choose = false;
    }
    $config = config('db-translator');
    /**
     * Before anything lets change the locale to the intl locale
     */
    App::setLocale($params['locale']);
    /**
     * This will check the existence of the translation on the locale given, not the default
     */
    if (!$force_add) {
        if (Lang::has($file_namespace . '::' . $params['group'] . '.' . $hash)) {
            if ($choose) {
                $text = trans_choice($file_namespace . '::' . $params['group'] . '.' . $hash, $params['value'], $params['vars']);
                App::setLocale($original_locale);
                return $text;
            } else {
                $text = trans($file_namespace . '::' . $params['group'] . '.' . $hash, $params['vars']);
                App::setLocale($original_locale);
                return $text;
            }
        } else {
            /**
             * If we are using the database translations
             */
            if ($config['use_database']) {
                if (!Intl::whereText($text)->whereGroup($params['group'])->get()->count()) {
                    $intl = new Intl();
                    $intl->text = $text;
                    $intl->group = $params['group'];
                    $intl->md5sha1 = $hash;
                    $intl->dynamic = $params['dynamic'];
                    $intl->save();
                }
            } else {
                /**
                 * first we will check if the translation exists under the fallback language
                 */
                App::setLocale($config['default_locale']);
                if (!Lang::has($file_namespace . '::' . $params['group'] . '.' . $hash)) {
                    // if we don't find it, we should include the file for the original locale
                    // change it with the new array, and save it.
                    /**
                     * Determine if the file exists
                     */
                    if (Storage::disk($config['storage_driver'])->exists($config['default_locale'] . '/' . $params['group'] . '.php')) {
                        $lang_array = (require base_path('resources/lang/vendor/dbtranslator/' . $config['default_locale'] . '/' . $params['group'] . '.php'));
                        if (!isset($lang_array[$hash])) {
                            $lang_array[$hash] = $text;
                            $file = "<?php\n        return [\r\n";
                            foreach ($lang_array as $k => $v) {
                                $file .= "    \"" . $k . "\" => \"" . str_replace('"', '\\"', $v) . "\",\r\n";
                            }
                            $file .= "];";
                            Storage::disk($config['storage_driver'])->put($config['default_locale'] . '/' . $params['group'] . '.php', $file);
                        }
                    } else {
                        $file = "<?php\n    return [\r\n";
                        $file .= "    \"" . $hash . "\" => \"" . str_replace('"', '\\"', $text) . "\",\r\n";
                        $file .= "];";
                        Storage::disk($config['storage_driver'])->put($config['default_locale'] . '/' . $params['group'] . '.php', $file);
                    }
                }
                App::setLocale($params['locale']);
            }
            // now we will process the string
            if ($choose) {
                $params['vars']['count'] = $params['value'];
                $ms = new MessageSelector();
                $text = $ms->choose($text, $params['value'], $params['locale']);
                $params['vars'] = (new Collection($params['vars']))->sortBy(function ($value, $key) {
                    return mb_strlen($key) * -1;
                });
                foreach ($params['vars'] as $key => $value) {
                    $text = str_replace(':' . $key, $value, $text);
                }
                App::setLocale($original_locale);
                return $text;
            } else {
                if (count($params['vars'])) {
                    $params['vars'] = (new Collection($params['vars']))->sortBy(function ($value, $key) {
                        return mb_strlen($key) * -1;
                    });
                    foreach ($params['vars'] as $key => $value) {
                        $text = str_replace(':' . $key, $value, $text);
                    }
                }
                App::setLocale($original_locale);
                return $text;
            }
        }
    } else {
        if ($config['use_database']) {
            if (!Intl::whereText($text)->whereGroup($params['group'])->get()->count()) {
                $intl = new Intl();
                $intl->text = $text;
                $intl->group = $params['group'];
                $intl->md5sha1 = $hash;
                $intl->dynamic = $params['dynamic'];
                $intl->save();
            }
        }
    }
}
Пример #5
0
 public function scopeLocaled($query)
 {
     $query->where('locale', '=', Lang::getLocale());
 }
Пример #6
0
 public static function getCategories()
 {
     $posts = Post::where('lang', '=', Lang::getLocale())->where('published', '=', 1)->lists('id');
     $categories = Category::whereIn('post_id', $posts)->lists('name');
     return array_count_values($categories);
 }
Пример #7
0
 public static function news()
 {
     return Post::where('lang', '=', Lang::getLocale())->where('published', '=', 1)->orderBy('created_at', 'DESC')->take(3)->get();
 }
    /**
     * Administration Ajax Handler
     * @param Request $request
     * @return mixed
     * @author Vini Dubey
     */
    public function administrationAjaxHandler(Request $request)
    {
        $inputData = $request->input();
        $method = $inputData['method'];
        $ObjLanguageModel = Languages::getInstance();
        $ObjLocationModel = Location::getInstance();
        $ObjLanguageValuesModel = LanguageValues::getInstance();
        switch ($method) {
            case 'manageLanguage':
                $available_languages = $ObjLanguageModel->getAvailableLanguageDetails();
                return Datatables::of($available_languages)->addColumn('action', function ($available_languages) {
                    return '<div role="group" class="btn-group ">
                                            <button aria-expanded="false" data-toggle="dropdown"
                                                    class="btn btn-default dropdown-toggle" type="button">
                                                <i class="fa fa-cog"></i>&nbsp;
                                                <span class="caret"></span>
                                            </button>
                                            <ul role="menu" class="dropdown-menu">
                                                <li><a href="/admin/edit-language/' . $available_languages->lang_id . '""><i
                                                                class="fa fa-pencil"></i>&nbsp;' . trans('message.langedit') . '</a>
                                                </li>
                                              <li><a href="/admin/edit-language/' . $available_languages->lang_id . '""><i
                                                                class="fa fa-pencil"></i>&nbsp;' . trans('message.langexport') . '</a>
                                                </li>
                                            </ul>
                                        </div>
                                             &nbsp;&nbsp;
                                            <span class="tooltips" title="Delete Language Details." data-placement="top"> <a href="#" data-cid="' . $available_languages->lang_id . '" class="btn btn-danger delete-language" style="margin-left: 10%;">
                                                    <i class="fa fa-trash-o"></i>
                                                </a>
                                            </span>';
                })->addColumn('status', function ($available_languages) {
                    $button = '<td style="text-align: center">';
                    $button .= '<button class="btn ' . ($available_languages->status == 1 ? "btn-success" : "btn-danger") . ' language-status" data-id="' . $available_languages->lang_id . '">' . ($available_languages->status == 1 ? trans('message.langactive') : trans('message.langinactive')) . ' </button>';
                    $button .= '</td>';
                    return $button;
                })->addColumn('Add Langauge', function ($available_languages) {
                    return '<a href="/admin/multi-lang-text/' . $available_languages->lang_code . '">Add Converted Langauge Variables</a>';
                })->make();
                break;
            case 'changeLanguageStatus':
                $userId = $inputData['UserId'];
                $where = ['rawQuery' => 'lang_id = ?', 'bindParams' => [$userId]];
                $dataToUpdate['status'] = $inputData['status'];
                $updateResult = $ObjLanguageModel->updateLanguageStatus($dataToUpdate, $where);
                if ($updateResult == 1) {
                    echo json_encode(['status' => 'success', 'msg' => 'Status has been changed.']);
                } else {
                    echo json_encode(['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again.']);
                }
                break;
            case 'deleteLanguageStatus':
                $userId = $inputData['UserId'];
                $where = ['rawQuery' => 'lang_id = ?', 'bindParams' => [$userId]];
                $deleteStatus = $ObjLanguageModel->deleteLanguage($where);
                if ($deleteStatus) {
                    echo json_encode(['status' => 'success', 'msg' => 'Language Deleted']);
                } else {
                    echo json_encode(['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again . ']);
                }
                break;
            case 'manageLanguageValue':
                $manage_language_value = $ObjLanguageValuesModel->getLanguageValueDetails();
                return Datatables::of($manage_language_value)->addColumn('action', function ($manage_language_value) {
                    return '<div role="group" class="btn-group ">
                                            <button aria-expanded="false" data-toggle="dropdown"
                                                    class="btn btn-default dropdown-toggle" type="button">
                                                <i class="fa fa-cog"></i>&nbsp;
                                                <span class="caret"></span>
                                            </button>
                                            <ul role="menu" class="dropdown-menu">
                                                <li><a href="/admin/edit-language-value/' . $manage_language_value->lang_value_id . '""><i
                                                                class="fa fa-pencil"></i>&nbsp;' . trans('message.langedit') . '</a>
                                                </li>

                                            </ul>
                                        </div>
                                             &nbsp;&nbsp;
                                            <span class="tooltips" title="Delete Language Details." data-placement="top"> <a href="#" data-cid="' . $manage_language_value->lang_value_id . '" class="btn btn-danger delete-language" style="margin-left: 10%;">
                                                    <i class="fa fa-trash-o"></i>
                                                </a>
                                            </span>';
                })->addColumn('check', function ($manage_language_value) {
                    return '<input id="' . $manage_language_value->lang_value_id . '" class="questionCheckBox" type="checkbox" />';
                })->make();
                break;
            case 'multi-lang-text':
                $ObjLanguageValue = LanguageValues::getInstance();
                $lcode = Lang::getLocale();
                if ($lcode == 'en') {
                    $lcode = 'value';
                }
                $selectColumn = ['language_values.*'];
                $langDetail = $ObjLanguageValue->getAllLanguageVariable($selectColumn, $lcode);
                unset($lcode);
                $langInfo = json_decode(json_encode($langDetail), true);
                $lang = new Collection();
                $lcode = Lang::getLocale();
                if ($lcode == 'en') {
                    $lcode = 'en';
                }
                foreach ($langInfo as $key => $val) {
                    $lang->push(['lang_value_id' => $val['lang_value_id'], 'name' => $val['name'], 'value' => $val['value'], $lcode => $val[$lcode]]);
                }
                return Datatables::of($lang, $lcode)->editColumn('value', function ($lang) use($lcode) {
                    if ($lcode == 'en') {
                        //                            return '<td class="text-center"><input type="text" class="form-control" readonly="readonly" id="langValue"
                        //                                                                   value="' . $lang['value'] . '" name="lang_value"></td>';
                        return '<td class="text-center" style="display:none"><input type="text" class="form-control" style="display:none" id="lnagId"
                                                                                        value="' . $lang['lang_value_id'] . '"
                                                                                        name="lang_id[]"></td><td class="text-center" style="display:none"><input type="text" class="form-control" style="display:none" id="lnagId"
                                                                                        value="' . $lang['name'] . '"> <td class="text-center" ><input type="text" class="form-control" id="langName" readonly="readonly"                                                                                        value="' . $lang['name'] . '"
                                                                                       name="lang_name[]"></td>';
                    } else {
                        return '<td class="text-center" style="display:none"><input type="text" class="form-control" style="display:none" id="lnagId"
                                                                                        value="' . $lang['lang_value_id'] . '"
                                                                                        name="lang_id[]"></td> <td class="text-center" ><input type="text" class="form-control" style="display:none" id="langName"
                                                                                        value="' . $lang['name'] . '"
                                                                                        name="lang_name[]"></td>
                                    <td class="text-center"><input type="text" class="form-control" readonly="readonly" id="langValue"
                                                                   value="' . $lang['value'] . '" name="lang_value"></td>';
                    }
                })->editColumn($lcode, function ($lang) use($lcode) {
                    if ($lcode == 'en') {
                        return '<td class="text-center"><input type="text" class="form-control" id="langCode"
                                                                   value="' . $lang['value'] . '" name="convertname[]"></td>';
                    } else {
                        return '<td class="text-center"><input type="text" class="form-control" id="langCode"
                                                                   value="' . $lang[$lcode] . '" name="convertname[]"></td>';
                    }
                })->removeColumn('lang_value_id')->removeColumn('name')->make();
                break;
            case 'submitconvertlang':
                $ObjLanguageValue = LanguageValues::getInstance();
                $lcode = Lang::getLocale();
                if ($lcode == 'en') {
                    $lcode = 'value';
                }
                $postData = $request->all();
                $lang_name['name'] = $postData['lang_name'];
                $lang_id['lang_value_id'] = $postData['lang_id'];
                $convertName[$lcode] = $postData['convertname'];
                $case = implode(' ', array_map(function ($v, $k) {
                    return ' WHEN ' . $v . ' THEN "' . $k . '"';
                }, $postData['lang_id'], $postData['convertname']));
                if ($lcode == 'en') {
                    $lcode = 'value';
                    $updateData = [$lcode => DB::raw("(CASE lang_value_id {$case} END)")];
                } else {
                    $updateData = [$lcode => DB::raw("(CASE lang_value_id {$case} END)")];
                }
                $whereForUpdate = ['rawQuery' => 'lang_value_id IN(' . implode(',', $postData['lang_id']) . ')'];
                $updateLang = $ObjLanguageValue->updateLanguageValueStatus($updateData, $whereForUpdate);
                $langval = array_combine($lang_name['name'], $convertName[$lcode]);
                $whereForAllValues = ['rawQuery' => '1'];
                $selectedColumns = ['name', $lcode . ' AS code'];
                $array = $ObjLanguageValue->getAllLanguageVariableWhere($whereForAllValues, $selectedColumns);
                $case = '<?php return [';
                $case .= implode(',', array_map(function ($v) {
                    return "'" . $v->name . "'" . '=>' . "'" . $v->code . "'";
                }, $array));
                $case = rtrim($case, ',');
                $case .= '];';
                File::put(env('LANG_PATH') . '/' . Lang::getLocale() . '/message.php', $case);
                //                echo json_encode($updateLang) ?
                //                    ['status' => 'success', 'msg' => 'Language Updated.'] :
                //                    ['status' => 'error', 'msg' => 'Nothing to update.'];
                if ($updateLang) {
                    echo json_encode(['status' => 'success', 'msg' => 'Language Updated.']);
                } else {
                    echo json_encode(['status' => 'error', 'msg' => 'Nothing to update.']);
                }
                break;
            default:
                break;
        }
    }
Пример #9
0
 /**
  * Localize a "with" method
  *
  * @param Query  $query
  * @param string $relations ...
  *
  * @return Query
  */
 public function scopeWithLang()
 {
     $relations = func_get_args();
     $query = array_shift($relations);
     if (empty($relations)) {
         $relations = array(Lang::getLocale());
     }
     return $query->with($relations);
 }
Пример #10
0
 /**
  * @param $category
  * @param $page
  * @return $this
  */
 public function build($category, $page)
 {
     $morePage = 0;
     $posts = Post::get($category, $page);
     if ($category == null) {
         if (Config::get('app.max_post_per_page') * $page < Post::where('lang', '=', Lang::getLocale())->where('published', '=', 1)->count()) {
             $morePage = 1;
         }
     } else {
         $ids = Category::where('name', '=', $category)->lists('post_id');
         if (Config::get('app.max_post_per_page') * $page < Post::whereIn('id', $ids)->where('lang', '=', Lang::getLocale())->where('published', '=', 1)->count()) {
             $morePage = 1;
         }
     }
     $this->statistics->incrementPage('welcome');
     return view('welcome')->with(array('posts' => $posts, 'page' => $page, 'category' => $category, 'morePage' => $morePage));
 }
Пример #11
0
 /**
  *	Return the mail as html.
  *	@return string
  */
 public function show()
 {
     // Set the email's locale:
     $currentLocale = Lang::getLocale();
     $newLocale = $this->locale ?: Lang::getLocale();
     Lang::setLocale($newLocale);
     // Generate HTML:
     $html = View::make($this->view, $this->data)->render();
     $css = File::get($this->cssFile);
     $inliner = new CssInline($html, $css);
     $body = $inliner->convert();
     // Return App locale to former value:
     Lang::setLocale($currentLocale);
     return $body;
 }