Changeset 26367


Ignore:
Timestamp:
06/15/10 16:08:43 (7 years ago)
Author:
jval
Message:

Add complete support for changing between different multilang workflow configurations, refs #1626

Location:
branches/ragnaroek/midcom/midcom.core/midcom
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/ragnaroek/midcom/midcom.core/midcom/config/midcom_config.php

    r26302 r26367  
    691691 * same or partly the same content tree.) This is because lang0 and auto
    692692 * workflow related code is only active when either of the settings is set.
     693 *
     694 * Note: If you later disable this feature and execute the multilangs.php or
     695 * multilang.php script automatically generated lang0 content is deleted. If
     696 * you want duplicate langX content to be deleted instead (so that master
     697 * content is left to lang0 instead of langX - please note that you might of
     698 * course get mixed language contents to lang0 then - it's a feature not a
     699 * bug), define this setting as array('') before you run the script. (Naturally
     700 * you can remove it after you've executed the script.)
    693701 *
    694702 * If disabled, define an empty array or false/null.
     
    752760 * content (if lang0 has same content as langX) which you naturally don't
    753761 * want to happen if you actually use lang0 content for something.
     762 *
     763 * Note: If you later disable this feature and execute the multilangs.php or
     764 * multilang.php script automatically generated langX content is deleted.
    754765 *
    755766 * If disabled, define an empty array or false/null.
  • branches/ragnaroek/midcom/midcom.core/midcom/services/multilang.php

    r26366 r26367  
    427427            }
    428428
    429             if (   !$lang0
     429            if (   $lang0 !== true
    430430                && !$GLOBALS['midcom_config']['multilang_lang0_langs']
    431431                && !isset($langs['']))
     
    475475    }
    476476
    477     function syncs($object, $is_update = true)
    478     {
    479         if (!self::is_real()) return;
     477    function syncs($object, $is_update = null)
     478    {
     479        if (!self::is_real()) return;
     480
     481        $auto = true;
     482        if (is_null($is_update))
     483        {
     484            $is_update = true;
     485            $auto = false;
     486        }
    480487
    481488        static $domain;
     
    485492        }
    486493
    487         $auto = false;
    488 
    489494        if ($GLOBALS['midcom_config']['multilang_auto_langs'])
    490495        {
    491             $auto = true;
    492496            self::sync($object, self::langs($GLOBALS['midcom_config']['multilang_auto_langs']), $domain, $is_update, false);
    493497        }
     
    495499        if ($GLOBALS['midcom_config']['multilang_lang0_langs'])
    496500        {
    497             $auto = true;
    498501            self::sync($object, self::langs($GLOBALS['midcom_config']['multilang_lang0_langs']), $domain, $is_update, true);
    499502        }
     
    501504        if (!$auto)
    502505        {
    503             self::sync($object, self::langs(array('', self::get_lang())), $domain, $is_update, 'disabled');
     506            if ($languages = $object->get_languages())
     507            {
     508                $real_lang = self::get_lang();
     509
     510                $object_langs = array();
     511                foreach ($languages as $language)
     512                {
     513                    if (!$object->get_parameter($domain, $language->code))
     514                    {
     515                        $object_langs[] = $language->code;
     516                    }
     517                }
     518
     519                foreach ($languages as $language)
     520                {
     521                    if (   $GLOBALS['midcom_config']['multilang_auto_langs']
     522                        && in_array($language->code, $GLOBALS['midcom_config']['multilang_auto_langs']))
     523                    {
     524                        continue;
     525                    }
     526
     527                    if (   $GLOBALS['midcom_config']['multilang_lang0_langs']
     528                        && in_array($language->code, $GLOBALS['midcom_config']['multilang_lang0_langs']))
     529                    {
     530                        continue;
     531                    }
     532
     533                    $langs = array($language->code);
     534
     535                    $delete = false;
     536                    if (!in_array($language->code, $object_langs))
     537                    {
     538                        $delete = true;
     539                    }
     540                    else if ($GLOBALS['midcom_config']['multilang_lang0_langs'] == array(''))
     541                    {
     542                        array_unshift($langs, '');
     543                    }
     544
     545                    midgard_connection::set_lang($language->code);
     546                    self::sync($object, self::langs($langs), $domain, $is_update, 'disabled');
     547                    midgard_connection::set_lang($real_lang);
     548
     549                    if ($delete)
     550                    {
     551                        self::is_real(false);
     552                        $default_lang = self::get_default_lang();
     553                        if ($lang = array_shift($object_langs))
     554                        {
     555                            // Not at all needed but prefer lang0 if it can be used
     556                            if (   $lang != ''
     557                                && $language->code != '')
     558                            {
     559                                if (in_array('', $object_langs))
     560                                {
     561                                    $lang = '';
     562                                }
     563                            }
     564                            midgard_connection::set_default_lang($lang);
     565                        }
     566                        else
     567                        {
     568                            continue;
     569                        }
     570                        midgard_connection::set_lang($language->code);
     571                        $object->delete();
     572                        midgard_connection::set_default_lang($default_lang);
     573                        midgard_connection::set_lang($real_lang);
     574                        self::is_real(true);
     575                    }
     576                }
     577            }
    504578        }
    505579    }
Note: See TracChangeset for help on using the changeset viewer.