Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Updater/Migrations/Migrations/Version20141219000000.php
Строк: 275
<?php

namespace ConcreteCoreUpdaterMigrationsMigrations;

use 
ConcreteCorePermissionAccessEntityType;
use 
ConcreteCorePermissionCategory;
use 
DoctrineDBALMigrationsAbstractMigration;
use 
DoctrineDBALSchemaSchema;
use 
ConcreteCoreConversationFlagTypeFlagType;
use 
ConcreteCoreBlockBlockTypeBlockType;
use 
AuthenticationType;
use 
Exception;
use 
Page;
use 
SinglePage;
use 
ConcreteCorePermissionKeyKey as PermissionKey;

class 
Version20141219000000 extends AbstractMigration
{
    public function 
getDescription()
    {
        return 
'5.7.3';
    }

    public function 
up(Schema $schema)
    {
        
$ft FlagType::getByhandle('spam');
        if (!
is_object($ft)) {
            
FlagType::add('spam');
        }

        
$bt BlockType::getByHandle('image_slider');
        
$bt->refresh();

        
$types = array(Type::getByHandle('group'), Type::getByHandle('user'), Type::getByHandle('group_set'), Type::getByHandle('group_combination'));
        
$categories = array(Category::getByHandle('conversation'), Category::getByHandle('conversation_message'));
        foreach (
$categories as $category) {
            foreach (
$types as $pe) {
                if (
is_object($category) && is_object($pe)) {
                    
$category->associateAccessEntityType($pe);
                }
            }
        }

        try {
            
$gat AuthenticationType::getByHandle('google');
        } catch (
Exception $e) {
            
$gat AuthenticationType::add('google''Google');
            if (
is_object($gat)) {
                
$gat->disable();
            }
        }

        
// fix register page permissions
        
$g1 Group::getByID(GUEST_GROUP_ID);
        
$register Page::getByPath('/register'"RECENT");
        
$register->assignPermissions($g1, array('view_page'));

        
// add new permissions, set it to the same value as edit page permissions on all pages.
        
$epk PermissionKey::getByHandle('edit_page_permissions');
        
$msk PermissionKey::getByHandle('edit_page_multilingual_settings');
        
$ptk PermissionKey::getByHandle('edit_page_page_type');
        if (!
is_object($msk)) {
            
$msk PermissionKey::add('page''edit_page_multilingual_settings''Edit Multilingual Settings''Controls whether a user can see the multilingual settings menu, re-map a page or set a page as ignored in multilingual settings.'falsefalse);
        }
        if (!
is_object($ptk)) {
            
$ptk PermissionKey::add('page''edit_page_page_type''Edit Page Type''Change the type of an existing page.'falsefalse);
        }
        
$db Database::get();
        
$r $db->Execute('select cID from Pages where cInheritPermissionsFrom = "OVERRIDE" order by cID asc');
        while (
$row $r->FetchRow()) {
            
$c Page::getByID($row['cID']);
            if (
is_object($c) && !$c->isError()) {
                
$epk->setPermissionObject($c);
                
$msk->setPermissionObject($c);
                
$ptk->setPermissionObject($c);
                
$rpa $epk->getPermissionAccessObject();
                if (
is_object($rpa)) {
                    
$pt $msk->getPermissionAssignmentObject();
                    if (
is_object($pt)) {
                        
$pt->clearPermissionAssignment();
                        
$pt->assignPermissionAccess($rpa);
                    }
                    
$pt $ptk->getPermissionAssignmentObject();
                    if (
is_object($pt)) {
                        
$pt->clearPermissionAssignment();
                        
$pt->assignPermissionAccess($rpa);
                    }
                }
            }
        }

        
// add new page type permissions
        
$epk PermissionKey::getByHandle('edit_page_type_permissions');
        
$msk PermissionKey::getByHandle('edit_page_type');
        
$dsk PermissionKey::getByHandle('delete_page_type');
        if (!
is_object($msk)) {
            
$msk PermissionKey::add('page_type''edit_page_type''Edit Page Type'''falsefalse);
        }
        if (!
is_object($dsk)) {
            
$dsk PermissionKey::add('page_type''delete_page_type''Delete Page Type'''falsefalse);
        }
        
$list ConcreteCorePageTypeType::getList();
        foreach (
$list as $pagetype) {
            
$epk->setPermissionObject($pagetype);
            
$msk->setPermissionObject($pagetype);
            
$dsk->setPermissionObject($pagetype);
            
$rpa $epk->getPermissionAccessObject();
            if (
is_object($rpa)) {
                
$pt $msk->getPermissionAssignmentObject();
                if (
is_object($pt)) {
                    
$pt->clearPermissionAssignment();
                    
$pt->assignPermissionAccess($rpa);
                }
                
$pt $dsk->getPermissionAssignmentObject();
                if (
is_object($pt)) {
                    
$pt->clearPermissionAssignment();
                    
$pt->assignPermissionAccess($rpa);
                }
            }
        }

        
// add new multilingual tables.
        
$sm $db->getSchemaManager();
        
$schemaTables $sm->listTableNames();
        if (!
in_array('MultilingualPageRelations'$schemaTables)) {
            
$mpr $schema->createTable('MultilingualPageRelations');
            
$mpr->addColumn('mpRelationID''integer', array('notnull' => true'unsigned' => true'default' => 0));
            
$mpr->addColumn('cID''integer', array('notnull' => true'unsigned' => true'default' => 0));
            
$mpr->addColumn('mpLanguage''string', array('notnull' => true'default' => ''));
            
$mpr->addColumn('mpLocale''string', array('notnull' => true));
            
$mpr->setPrimaryKey(array('mpRelationID''cID''mpLocale'));
        }
        if (!
in_array('MultilingualSections'$schemaTables)) {
            
$mus $schema->createTable('MultilingualSections');
            
$mus->addColumn('cID''integer', array('notnull' => true'unsigned' => true'default' => 0));
            
$mus->addColumn('msLanguage''string', array('notnull' => true'default' => ''));
            
$mus->addColumn('msCountry''string', array('notnull' => true'default' => ''));
            
$mus->setPrimaryKey(array('cID'));
        }
        if (!
in_array('MultilingualTranslations'$schemaTables)) {
            
$mts $schema->createTable('MultilingualTranslations');
            
$mts->addColumn('mtID''integer', array('autoincrement' => true'unsigned' => true));
            
$mts->addColumn('mtSectionID''integer', array('unsigned' => true'notnull' => true'default' => 0));
            
$mts->addColumn('msgid''text', array('notnull' => false));
            
$mts->addColumn('msgstr''text', array('notnull' => false));
            
$mts->addColumn('context''text', array('notnull' => false));
            
$mts->addColumn('comments''text', array('notnull' => false));
            
$mts->addColumn('reference''text', array('notnull' => false));
            
$mts->addColumn('flags''text', array('notnull' => false));
            
$mts->addColumn('updated''datetime', array('notnull' => false));
            
$mts->setPrimaryKey(array('mtID'));
        }

        
// block type
        
$bt BlockType::getByHandle('switch_language');
        if (!
is_object($bt)) {
            
$bt BlockType::installBlockType('switch_language');
        }

        
// single pages
        
$sp Page::getByPath('/dashboard/system/multilingual');
        if (!
is_object($sp) || $sp->isError()) {
            
$sp SinglePage::add('/dashboard/system/multilingual');
            
$sp->update(array('cName' => 'Multilingual'));
            
$sp->setAttribute('meta_keywords''multilingual, localization, internationalization, i18n');
        }
        
$sp Page::getByPath('/dashboard/system/multilingual/setup');
        if (!
is_object($sp) || $sp->isError()) {
            
$sp SinglePage::add('/dashboard/system/multilingual/setup');
            
$sp->update(array('cName' => 'Multilingual Setup'));
        }
        
$sp Page::getByPath('/dashboard/system/multilingual/page_report');
        if (!
is_object($sp) || $sp->isError()) {
            
$sp SinglePage::add('/dashboard/system/multilingual/page_report');
            
$sp->update(array('cName' => 'Page Report'));
        }
        
$sp Page::getByPath('/dashboard/system/multilingual/translate_interface');
        if (!
is_object($sp) || $sp->isError()) {
            
$sp SinglePage::add('/dashboard/system/multilingual/translate_interface');
            
$sp->update(array('cName' => 'Translate Interface'));
        }
        
$sp Page::getByPath('/dashboard/pages/types/attributes');
        if (!
is_object($sp) || $sp->isError()) {
            
$sp SinglePage::add('/dashboard/pages/types/attributes');
            
$sp->update(array('cName' => 'Page Type Attributes'));
        }
    }

    public function 
down(Schema $schema)
    {
    }
}
Онлайн: 0
Реклама