public function sitemapXML()
 {
     static $mlp_installed;
     if (!isset($mlp_installed)) {
         $mlp_installed = is_callable('l10n_installed') ? call_user_func('l10n_installed', true) : false;
     }
     $out = '<?xml version="1.0" encoding="utf-8"?>';
     $out .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
     // Homepage
     $out .= $this->urlXML(hu);
     // Excluded sections
     $excluded = $GLOBALS['prefs']['jmd_sitemap_exclude'];
     $excluded = unserialize($excluded);
     foreach ($excluded as $key => $value) {
         $notIn[$key] = "'{$value}'";
     }
     $notIn = implode(',', $notIn);
     $notIn .= ",'default'";
     // List sections
     $site_langs = array();
     if ($mlp_installed) {
         $site_langs = MLPLanguageHandler::get_site_langs();
     }
     $sections = safe_column("name", "txp_section", "name not in({$notIn})");
     foreach ($sections as $section) {
         if ($mlp_installed) {
             foreach ($site_langs as $lang) {
                 $lang = substr($lang, 0, 2) . '/';
                 $loc = hu . $lang . urlencode($section) . '/';
                 $out .= $this->urlXML($loc);
             }
         } else {
             $loc = pagelinkurl(array('s' => $section));
             $out .= $this->urlXML($loc);
         }
     }
     // Articles
     $fields = 'ID as thisid, Section as section, Title as title,
         url_title, unix_timestamp(Posted) as posted,
         unix_timestamp(LastMod) as lastmod';
     if ($mlp_installed) {
         $fields .= ', l10n_lang';
     }
     $articles = getRows("select {$fields} from " . safe_pfx('textpattern') . " where Status = 4 and Posted<= now() and section not in({$notIn})");
     if ($articles) {
         include_once txpath . '/publish/taghandlers.php';
         foreach ($articles as $article) {
             $loc = permlinkurl($article);
             if ($mlp_installed) {
                 $loc = str_replace(hu, hu . substr($article['l10n_lang'], 0, 2) . '/', $loc);
             }
             $lastmod = date('c', $article['lastmod']);
             $out .= $this->urlXML($loc, $lastmod);
         }
     }
     $out .= '</urlset>';
     return $out;
 }
Exemple #2
0
 function get_site_default_lang()
 {
     /*
     Returns a string containing the ISO-639-1 language to be used as the site's default.
     */
     $lang_codes = MLPLanguageHandler::get_site_langs();
     return $lang_codes[0];
 }
Exemple #3
0
function _l10n_inject_js()
{
    $ltr = doSlash(gTxt('l10n-ltr'));
    $rtl = doSlash(gTxt('l10n-rtl'));
    $toggle_title = doSlash(gTxt('l10n-toggle'));
    $langs = MLPLanguageHandler::get_installation_langs();
    $langs = MLPLanguageHandler::do_fleshout_dirs($langs);
    $langs = _l10n_php2js_array('langs', $langs);
    $fn = <<<end_js
var {$langs}
\tvar search_box   = null;
\tvar search_term  = null;
\tvar result_div   = null;
\tvar result_list  = null;
\tvar cresult_div  = null;
\tvar result_num   = null;
\tvar csearch_box  = null;
\tvar csearch_lang = null;
\tvar str_edit_div = null;
\tvar sbn_lang_sel = null;
\tvar last_req     = "";

\tvar\txml_manager = false;
\tif( window.XMLHttpRequest )
\t\t{
\t\txml_manager = new XMLHttpRequest();
\t\t}

function addLoadEvent(func)
\t{
\tvar oldonload = window.onload;
\tif (typeof window.onload != 'function')
\t\t{
\t\twindow.onload = func;
\t\t}
\telse
\t\t{
\t\twindow.onload = function()
\t\t\t{
\t\t\toldonload();
\t\t\tfunc();
\t\t\t}
\t\t}
\t}

function l10nSetCookie(name, value, days)
\t{
\tif (days)
\t\t{
\t\tvar date = new Date();
\t\tdate.setTime(date.getTime() + (days*24*60*60*1000));
\t\tvar expires = '; expires=' + date.toGMTString();
\t\t}
\telse
\t\t{
\t\tvar expires = '';
\t\t}

\tdocument.cookie = name + '=' + value + expires + '; path=/';
\t}

function l10nGetCookie(name)
\t{
\tvar nameEQ = name + '=';

\tvar ca = document.cookie.split(';');

\tfor (var i = 0; i < ca.length; i++)
\t\t{
\t\tvar c = ca[i];

\t\twhile (c.charAt(0)==' ')
\t\t\t{
\t\t\tc = c.substring(1, c.length);
\t\t\t}

\t\tif (c.indexOf(nameEQ) == 0)
\t\t\t{
\t\t\treturn c.substring(nameEQ.length, c.length);
\t\t\t}
\t\t}

\treturn null;
\t}

addLoadEvent( function(){l10n_js_init();} );
function l10n_js_init()
\t{
\tif (!document.getElementById)
\t\t{
\t\treturn false;
\t\t}

\tsearch_box   = document.getElementById('l10n_search_by_name');
\tresult_div   = document.getElementById('l10n_div_sbn_result_list');
\tresult_num   = document.getElementById('l10n_result_count');
\tcsearch_box  = document.getElementById('l10n_search_by_content');
\tcresult_div  = document.getElementById('l10n_sbc_result_list');
\tcsearch_lang = document.getElementById('sbc_lang_selection');
\tstr_edit_div = document.getElementById('l10n_div_string_edit');
\tsbn_lang_sel = document.getElementById('sbn_lang_selection');

\tif( search_box == null )
\t\treturn;

\taddEvent( search_box , 'keyup' , l10nRefineResultsEventHandler , false );

\tvar search_type = getCookie( 'l10n_string_search_by' );
\tif( search_type == null || search_type == '' || search_type == 'name' )
\t\t{
\t\tvar selection = getCookie( 'l10n_string_search_by_subtype' );
\t\tif( selection == null || selection == 'all' )
\t\t\t{
\t\t\tsbn_lang_sel.disabled = true;
\t\t\tselection = '';
\t\t\t}
\t\telse
\t\t\t{
\t\t\tsbn_lang_sel.disabled = false;
\t\t\tselection = sbn_lang_sel.value;
\t\t\t}
\t\tdo_name_search( selection );
\t\t}
\telse
\t\t{
\t\tresult_div.className="l10n_hidden";
\t\tcresult_div.className="l10n_visible";
\t\tdo_content_search();
\t\t}
\t}

function l10nRefineResultsEventHandler(event)
\t{
\tl10nRefineResults();
\t}

function l10nRefineResults()
\t{
\tvar result_list  = document.getElementById('l10n_sbn_result_list');
\tvar target = trim( search_box.value );
\ttarget = target.toLowerCase()
\tvar t_len = target.length;

\t//
\t// Iterate over all strings showing those that match, hiding those that don't...
\t//
\tvar item = result_list.firstChild;
\tvar visible = 0;
\twhile( item != null )
\t\t{
\t\tvar match_text = item.id;
\t\tvar tmp = match_text.substring(0,t_len)
\t\tvar match = (tmp == target);

\t\tif( match )
\t\t\t{
\t\t\titem.className = 'l10n_visible';
\t\t\t++visible;
\t\t\t}
\t\telse
\t\t\t{
\t\t\titem.className = 'l10n_hidden';
\t\t\t}

\t\titem = item.nextSibling;
\t\t}
\tvar result_num   = document.getElementById('l10n_result_count');
\tresult_num.innerHTML = visible;
\tl10nSetCookie( 'search_string_name_live' , target , 365 );
\t}

function trim(term)
\t{
\tvar len = term.length;
\tvar lenm1 = len - 1;

\twhile (term.substring(0,1) == ' ')
\t\t{
\t\tterm = term.substring(1, term.length);
\t\t}
\twhile (term.substring(term.length-1, term.length) == ' ')
\t\t{
\t\tterm = term.substring(0,term.length-1);
\t\t}
\treturn term;
\t}

function make_xml_req(req,req_receiver)
\t{
\tif( !xml_manager || (req_receiver == null) )
\t\treturn false;

\tif( (last_req != req) && (req != '') )
\t\t{
\t\tif( xml_manager && xml_manager.readyState < 4 )
\t\t\t{
\t\t\txml_manager.abort();
\t\t\t}
\t\tif( window.ActiveXObject )
\t\t\t{
\t\t\txml_manager = new ActiveXObject("Microsoft.XMLHTTP");
\t\t\t}

\t\txml_manager.onreadystatechange = req_receiver;
\t\txml_manager.open("GET", req);
\t\txml_manager.send(null);
\t\tlast_req = req;
\t\t}
\t}

function do_name_search( lang )
\t{
\tvar req = "?event=l10n&tab=snippets&step=l10n_search_for_names&l10n-sfn=" + lang;
\tmake_xml_req( req , ns_result_handler );
\t}
function ns_result_handler()
\t{
\tif (xml_manager.readyState == 4)
\t\t{
\t\tvar results = xml_manager.responseText;
\t\tresult_div.innerHTML = results;
\t\tl10nRefineResults();
\t\t}
\t}

function do_content_search()
\t{
\tvar search_term = encodeURI(csearch_box.value);
\tvar search_lang = csearch_lang.value;
\tvar query       = search_term + search_lang;

\tif( search_term != '' )
\t\t{
\t\tvar req = "?event=l10n&tab=snippets&step=l10_search_for_content&l10n-sfc=" + search_term + "&l10n-lang=" + search_lang;
\t\tmake_xml_req( req , cs_result_handler );
\t\tl10nSetCookie( 'search_string_content' , search_term , 365 );
\t\tl10nSetCookie( 'search_string_lang' , search_lang , 365 );
\t\t}
\t}

function cs_result_handler()
\t{
\tif (xml_manager.readyState == 4)
\t\t{
\t\tvar results = xml_manager.responseText;
\t\tcresult_div.innerHTML = results;
\t\t}
\t}

function do_string_edit(id)
\t{
\tvar req = "?event=l10n&tab=snippets&XMLHTTP=true&id=" + id;
\tmake_xml_req( req , string_edit_handler );
\t}


function string_edit_handler()
\t{
\tif (xml_manager.readyState == 4)
\t\t{
\t\tvar results = xml_manager.responseText;
\t\tstr_edit_div.innerHTML = results;
        window.scrollTo(0,128);
\t\t}
\t}

function update_search( id )
\t{
\tvar by_name = document.getElementById('l10n_div_s_by_n');
\tvar by_cont = document.getElementById('l10n_div_s_by_c');
\tif( id == 'sbn_radio_button' )
\t\t{
\t\tby_name.className="l10n_visible";
\t\tby_cont.className="l10n_hidden";
\t\tresult_div.className="l10n_visible";
\t\tcresult_div.className="l10n_hidden";
\t\tl10nSetCookie( 'l10n_string_search_by' , 'name' , 365 );
\t\tvar selection = l10nGetCookie( 'l10n_string_search_by_subtype' );
\t\tif( selection == null || selection == 'all' )
\t\t\tselection = '';
\t\telse
\t\t\tselection = sbn_lang_sel.value;
\t\tdo_name_search( selection );
\t\t}
\telse if ( id == 'sbc_radio_button' )
\t\t{
\t\tby_name.className="l10n_hidden";
\t\tby_cont.className="l10n_visible";
\t\tresult_div.className="l10n_hidden";
\t\tcresult_div.className="l10n_visible";
\t\tl10nSetCookie( 'l10n_string_search_by' , 'cont' , 365 );
\t\tdo_content_search();
\t\t}
\telse if( id == 'sbn_missing_radio_button' )
\t\t{
\t\tsbn_lang_sel.disabled = false;
\t\tvar selection = sbn_lang_sel.value;
\t\tl10nSetCookie( 'l10n_string_search_by_subtype' , 'missing' , 365 );
\t\tdo_name_search( selection );
\t\t}
\telse if( id == 'sbn_all_radio_button' )
\t\t{
\t\tsbn_lang_sel.disabled = true;
\t\tl10nSetCookie( 'l10n_string_search_by_subtype' , 'all' , 365 );
\t\tdo_name_search( '' );
\t\t}
\t}
function on_sbn_lang_change()
\t{
\tvar selection = sbn_lang_sel.value;
\tl10nSetCookie( 'search_string_name_lang' , selection , 365 );
\tdo_name_search( selection );
\t}

function toggleTextElements()
\t{
\ttoggleDirection('title');
\ttoggleDirection('body');
\ttoggleDirection('excerpt');
\t}

function togglePreview()
\t{
\ttoggleDirection('article-main');
\t}

function toggleDirection(id)
\t{
\tif (!document.getElementById)
\t\t{
\t\treturn false;
\t\t}

\tvar textarea = document.getElementById(id + '-data');
\tif( textarea == null )
\t\ttextarea = document.getElementById(id);
\tvar toggler  = document.getElementById(id + '-toggle');

\tif (textarea.style.direction == 'ltr')
\t\t{
\t\ttextarea.style.direction = 'rtl';
\t\tif( toggler != null )
\t\t\ttoggler.innerHTML = '{$rtl}';
\t\t}
\telse
\t\t{
\t\ttextarea.style.direction = 'ltr';
\t\tif( toggler != null )
\t\t\ttoggler.innerHTML = '{$ltr}';
\t\t}
\t}
function resetToggleDir( id , dir )
\t{
\tvar e = document.getElementById(id);
\tif( e == null )
\t\treturn;

\te.style.direction = dir;
\t}
function on_lang_selection_change()
\t{
\tvar selection = document.getElementById('l10n_lang_selector').value;
\tvar dir = langs[selection];

\tl10nSetCookie( 'rendition_lang_selection' , selection , 365 );

\tresetToggleDir( 'title', dir );
\tresetToggleDir( 'body', dir );
\tresetToggleDir( 'excerpt', dir );
\tresetToggleDir( 'article-main', dir );

\tvar toggler = document.getElementById('title-toggle');
\tif( toggler != null )
\t\ttoggler.innerHTML = '{$toggle_title}';

\tvar toggler  = document.getElementById('article-main-toggle');
\tif( toggler != null )
\t\ttoggler.innerHTML = '{$toggle_title}';
\t}

end_js;
    return $fn;
}
 function _upgrade_table($table, $table_key)
 {
     global $l10n_wiz_upgrade;
     $keys = safe_rows('*', $table, "1=1");
     foreach ($keys as $key) {
         $index = $key[$table_key];
         #	Pull all gbp_l10n rows that are associated with this key...
         $ttable = PFX . $table;
         $rows = safe_rows('id,entry_value,language', 'gbp_l10n', "`entry_column` = 'title' AND `entry_id`='{$index}' AND `table` = '{$ttable}'");
         if (empty($rows)) {
             continue;
         }
         #	Build up values for each field...
         $set = array();
         foreach ($rows as $row) {
             $lang = MLPLanguageHandler::find_lang($row['language'], $l10n_wiz_upgrade);
             $field = _l10n_make_field_name('title', $lang);
             $f_value = doSlash($row['entry_value']);
             $set[] = "`{$field}`='{$f_value}'";
             if ($lang === $l10n_wiz_upgrade[0]) {
                 $set[] = "`title`='{$f_value}'";
             }
         }
         #	Write the row back...
         $set = join(', ', $set);
         safe_update($table, $set, "`{$table_key}`='{$index}'");
         #	Delete the gbp_l10n entries used...
         safe_delete('gbp_l10n', "`entry_column` = 'title' AND `entry_id`='{$index}' AND `table` = '{$ttable}'");
     }
 }
Exemple #5
0
function l10n_rendition_lang($atts)
{
    global $thisarticle, $rs;
    $r = '';
    $lang = $thisarticle[L10N_COL_LANG] ? $thisarticle[L10N_COL_LANG] : @$rs[L10N_COL_LANG];
    if (!$lang) {
        return $r;
    }
    $lang = MLPLanguageHandler::compact_code($lang);
    switch ($atts['length']) {
        case 'long':
            $r = $lang['long'];
            break;
        default:
            $r = $lang['short'];
            break;
    }
    return $r;
}