Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/single_page/dashboard/system/multilingual/setup.php
Строк: 225
<?php

namespace ConcreteControllerSinglePageDashboardSystemMultilingual;
use 
ConcreteCorePageControllerDashboardPageController;
use 
Core;
use 
ConcreteCoreMultilingualPageSectionSection;
use 
Config;
use 
Localization;
use 
Loader;
use 
Page;

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

class 
Setup extends DashboardPageController
{
    public 
$helpers = array('form');
    protected 
$pagesToCopy = array();

    public function 
view()
    {
        
$ll Core::make('localization/languages');
        
$cl Core::make('lists/countries');
        
$languages $ll->getLanguageList();

        
$this->set('pages'Section::getList());
        
$this->set('languages'$languages);
        
$this->set('countries'$cl->getCountries());
        
$this->set('ch'Core::make('multilingual/interface/flag'));

        
$this->set('defaultLocale'Config::get('concrete.multilingual.default_locale'));
        
$defaultSourceLanguage '';
        
$defaultSourceCountry '';
        
$defaultSourceLocale Config::get('concrete.multilingual.default_source_locale');
        if (
$defaultSourceLocale) {
            if (
strpos($defaultSourceLocale'_') === false) {
                
$defaultSourceLanguage $defaultSourceLocale;
            } else {
                list(
$defaultSourceLanguage$defaultSourceCountry) = explode('_'$defaultSourceLocale);
            }
        }
        
$this->set('defaultSourceLanguage'$defaultSourceLanguage);
        
$this->set('defaultSourceCountry'$defaultSourceCountry);
        
$this->set('redirectHomeToDefaultLocale'Config::get('concrete.multilingual.redirect_home_to_default_locale'));
        
$this->set('useBrowserDetectedLocale'Config::get('concrete.multilingual.use_browser_detected_locale'));
        
$this->set('keepUsersLocale'Config::get('concrete.multilingual.keep_users_locale') ? 0);
    }

    protected function 
populateCopyArray($startingPage)
    {
        
$db Loader::db();
        if (
$startingPage->isAlias()) {
            
$cID $startingPage->getCollectionPointerOriginalID();
        } else {
            
$cID $startingPage->getCollectionID();
        }

        
$q "select cID from Pages where cParentID = ? order by cDisplayOrder asc";
        
$r $db->query($q, array($cID));
        while (
$row $r->fetchRow()) {
            
$c Page::getByID($row['cID'], 'RECENT');
            if (!
$c->getAttribute('multilingual_exclude_from_copy')) {
                
$this->pagesToCopy[] = $c;
                
$this->populateCopyArray($c);
            }
        }
    }

    public function 
get_countries_for_language()
    {
        
$result = array();
        
$language $this->get('language');
        if (
is_string($language) && strlen($language)) {
            
$cl Core::Make('lists/countries');
            
$result $cl->getCountriesForLanguage($language);
        }
        echo 
json_encode($result);
        die();
    }

    public function 
load_icon()
    {
        
$ll Core::make('localization/languages');
        
$ch Core::make('multilingual/interface/flag');
        
$msCountry $this->post('msCountry');

        
$flag $ch->getFlagIcon($msCountry);
        if (
$flag) {
            
$html $flag;
        } else {
            
$html "<div><strong>" t('None') . "</strong></div>";
        }

        print 
$html;
        exit;
    }

    public function 
multilingual_content_enabled()
    {
        
$this->set('message't('Multilingual content enabled'));
        
$this->view();
    }

    public function 
multilingual_content_updated()
    {
        
$this->set('message't('Multilingual content updated'));
        
$this->view();
    }

    public function 
locale_section_removed()
    {
        
$this->set('message't('Section removed.'));
        
$this->view();
    }

    public function 
default_locale_updated()
    {
        
$this->set('message't('Default Section settings updated.'));
        
$this->view();
    }

    public function 
set_default()
    {
        if (
Loader::helper('validation/token')->validate('set_default')) {
            
$ll Core::make('localization/languages');
            
$languages $ll->getLanguageList();
            
$cl Core::Make('lists/countries');
            
$countries $cl->getCountries();
            
$lc Section::getByLocale($this->post('defaultLocale'));
            if (
is_object($lc)) {
                
Config::save('concrete.multilingual.default_locale'$this->post('defaultLocale'));
                
Config::save('concrete.multilingual.redirect_home_to_default_locale'$this->post('redirectHomeToDefaultLocale'));
                
Config::save('concrete.multilingual.use_browser_detected_locale'$this->post('useBrowserDetectedLocale'));
                
Config::save('concrete.multilingual.keep_users_locale', !!$this->post('keepUsersLocale'));
                
$defaultSourceLocale '';
                
$s $this->post('defaultSourceLanguage');
                if (
is_string($s) && array_key_exists($s$languages)) {
                    
$defaultSourceLocale $s;
                    
$s $this->post('defaultSourceCountry');
                    if (
is_string($s) && array_key_exists($s$countries)) {
                        
$defaultSourceLocale .= '_' $s;
                    }
                }
                
Config::save('concrete.multilingual.default_source_locale'$defaultSourceLocale);
                
$this->redirect('/dashboard/system/multilingual/setup''default_locale_updated');
            } else {
                
$this->error->add(t('Invalid Section'));
            }
        } else {
            
$this->error->add(Loader::helper('validation/token')->getErrorMessage());
        }
        
$this->view();
    }

    public function 
remove_locale_section($sectionID false$token false)
    {
        if (
Loader::helper('validation/token')->validate(''$token)) {
            
$lc Section::getByID($sectionID);
            if (
is_object($lc)) {
                
$lc->unassign();
                
$this->redirect('/dashboard/system/multilingual/setup''locale_section_removed');
            } else {
                
$this->error->add(t('Invalid section'));
            }
        } else {
            
$this->error->add(Loader::helper('validation/token')->getErrorMessage());
        }
        
$this->view();
    }

    public function 
add_content_section()
    {
        if (
Loader::helper('validation/token')->validate('add_content_section')) {
            if ((!
Loader::helper('validation/numbers')->integer($this->post('pageID'))) || $this->post('pageID') < 1) {
                
$this->error->add(t('You must specify a page for this multilingual content section.'));
            } else {
                
$pc Page::getByID($this->post('pageID'));
            }

            if (!
$this->error->has()) {
                
$lc Section::getByID($this->post('pageID'));
                if (
is_object($lc)) {
                    
$this->error->add(t('A multilingual section page at this location already exists.'));
                }
            }

            if (!
$this->error->has()) {
                if (
$this->post('msLanguage')) {
                    
$combination $this->post('msLanguage') . '_' $this->post('msCountry');
                    
$locale Section::getByLocale($combination);
                    if (
is_object($locale)) {
                        
$this->error->add(t('This language/region combination already exists.'));
                    }
                }
            }

            if (!
$this->error->has()) {
                
Section::assign($pc$this->post('msLanguage'), $this->post('msCountry'));
                
$this->redirect('/dashboard/system/multilingual/setup''multilingual_content_updated');
            }
        } else {
            
$this->error->add(Loader::helper('validation/token')->getErrorMessage());
        }
        
$this->view();
    }
}
Онлайн: 0
Реклама