diff -r 2d410dc8c1f3 -r 8e3a5a6fc63e web/wp-content/plugins/zdmultilang/zd_multilang.php --- a/web/wp-content/plugins/zdmultilang/zd_multilang.php Tue Mar 16 14:14:44 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1835 +0,0 @@ - $LanguageID) { - if ($LanguageID!=$ZdmlCache['DefLang']) echo ''.$LanguageID.' '; - } - } -} - -function zd_media_button() { - global $ZdmlCache, $PluginDIR; - $id=$_GET['post']; - if ($id) { - $BaseURL='admin.php?page='.plugin_basename (__FILE__); - if ($ZdmlCache['Languages']) foreach ($ZdmlCache['Languages'] as $Permalink => $LanguageID) { - if ($LanguageID!=$ZdmlCache['DefLang']) echo ''.$LanguageID.''; - } - } -} - -function zd_multilang_where_filter($filter) { - global $ZdmlCache, $locale,$display_untranslated, $wpdb, $wp_query; - - if ((get_option('show_on_front')=='page')&&(is_array($wp_query->query))&&(count($wp_query->query)<=1)&&(isset($wp_query->query['lang']))) { - $lang=$WP->query['lang']; - $filter=" AND ".$wpdb->posts.".ID = ".get_option('page_on_front'); - $wp_query->is_page=1; - $wp_query->is_home=0; - } - - if ($locale==$ZdmlCache['DefLang']) return $filter; - if (get_option($display_untranslated)=="hide") { - $filter.=" AND ".$wpdb->posts.".ID in (".$ZdmlCache['TranslatedPosts'][$locale].')'; - } - return $filter; -} - -function zd_multilang_np_where_filter($filter) { - global $ZdmlCache, $locale,$display_untranslated, $wpdb; - if ($locale==$ZdmlCache['DefLang']) return $filter; - if (get_option($display_untranslated)=="hide") { - $filter.=" AND p.ID in (".$ZdmlCache['TranslatedPosts'][$locale].')'; - } - return $filter; -} - -function zd_multilang_set_locale($WP) { - global $wp_query,$wpdb, $wp_rewrite,$default_language_option,$locale,$CurrentLanguagePermalink,$CurrentLang; - global $ZdmlCache; - - $language_table=$wpdb->prefix.'zd_ml_langs'; - $termtrans=$wpdb->prefix.'zd_ml_termtrans'; - $posttrans=$wpdb->prefix.'zd_ml_trans'; - $linktrans=$wpdb->prefix.'zd_ml_linktrans'; - - $ZdmlCache['DefLang']=get_option("zd_multilang_defaultlanguage"); - $ZdmlCache['InsertInPosts']=get_option("zd_multilang_lang_switcher"); - $ZdmlCache['ShowLanguages']=get_option("zd_multilang_langnames"); - $ZdmlCache['ShowFlags']=get_option("zd_multilang_show_flags"); - $ZdmlCache['SwitcherPosition']=get_option('zd_multilang_position'); - $ZdmlCache['Lang_Switch_Class']=(get_option("zd_multilang_switcher_class")!="") ? get_option("zd_multilang_switcher_class") : "lang_switch"; - - $TheLocale=$ZdmlCache['DefLang']; - - if (!isset($ZdmlCache['Languages'])) { - $query="SELECT * FROM $language_table ORDER BY LanguageName"; - $results=$wpdb->get_results($query, ARRAY_A); - if ($results) { - foreach ($results as $ID => $V) { - $ZdmlCache['Languages'][$V['LangPermalink']]=$V['LanguageID']; - $ZdmlCache['LanguageNames'][$V['LangPermalink']]=$V['LanguageName']; - $ZdmlCache['Options'][$V['LanguageID']]['blogname']=$V['BlogName']; - $ZdmlCache['Options'][$V['LanguageID']]['blogdescription']=$V['BlogDescription']; - } - } - } - else { - foreach ($ZdmlCache['Languages'] as $Permalink => $LangID) { - $results[$i]['LangPermalink']=$Permalink; - $results[$i]['LanguageID']=$LangID; - $i++; - } - } - - if ($_SERVER['HTTPS']) $QUERY="https://".$_SERVER['HTTP_HOST']; - else $QUERY="http://".$_SERVER['HTTP_HOST']; - $QUERY.=$_SERVER['REQUEST_URI']; - - if ($results) { - foreach ($results as $ID => $Lang) { - $regexp.=$Lang['LangPermalink']."|"; - } - $regexp=substr($regexp, 0, -1); - } - if (strstr($QUERY,"?")) $RegularExpression="`".get_bloginfo('url')."\/.*lang=($regexp)(.*)?`U"; - else $RegularExpression="`".get_bloginfo('url')."\/($regexp)\/(.*)?`U"; - - if (preg_match($RegularExpression,$QUERY,$res)==TRUE) { - $Lang=$res[1]; - $CurrentLanguagePermalink=$res[1]; - foreach ($ZdmlCache['Languages'] as $Permalink => $LangFound) { - if ($Permalink==$Lang) { - $Language= $LangFound; - break; - } - } - $CurrentLang=$Language; - if ($Language) $TheLocale=$Language; - } - $locale=$TheLocale; - - if (!isset($ZdmlCache['Terms'])) { - $query="SELECT tt.LanguageID, tt.name as t_name, tt.description as description, t.* FROM $termtrans tt RIGHT JOIN ".$wpdb->prefix."terms t on (tt.term_id=t.term_id)"; - $term=$wpdb->get_results($query, ARRAY_A); - foreach ($term as $ID => $Value) { - if ($Value['t_name']!=NULL) $ZdmlCache['Terms'][$Value['term_id']][$Value['LanguageID']]['name']=$Value['t_name']; - else $ZdmlCache['Terms'][$Value['term_id']][$Value['LanguageID']]['name']=$Value['name']; - $ZdmlCache['Terms'][$Value['term_id']][$Value['LanguageID']]['o_name']=$Value['name']; - $ZdmlCache['Terms'][$Value['term_id']][$Value['LanguageID']]['description']=$Value['description']; - } - } - - if (!isset($ZdmlCache['Links'])) { - $query="SELECT * from $linktrans"; - $links=$wpdb->get_results($query); - foreach ($links as $id => $Values) { - $ZdmlCache['Links'][$Values->link_id][$Values->LanguageID]['name']=$Values->link_name; - $ZdmlCache['Links'][$Values->link_id][$Values->LanguageID]['url']=$Values->link_url; - $ZdmlCache['Links'][$Values->link_id][$Values->LanguageID]['description']=$Values->link_description; - } - } - - if (!isset($ZdmlCache['TranslatedPosts'])) { - if ($ZdmlCache['Languages']) foreach ($ZdmlCache['Languages'] as $Permalink => $LangID) { - if ($LangID!=$ZdmlCache['DefLang']) { - $query="SELECT ID from $posttrans WHERE LanguageID='$LangID' and post_status='published'"; - $res=$wpdb->get_results($query, ARRAY_A); - if ($res) { - $ZdmlCache['TranslatedPosts'][$LangID]=""; - foreach ($res as $key => $V) { - $ZdmlCache['TranslatedPosts'][$LangID].=$V['ID'].","; - } - $ZdmlCache['TranslatedPosts'][$LangID]=substr($ZdmlCache['TranslatedPosts'][$LangID],0,-1); - } - } - } - } - - return $WP; -} - -function zd_multilang_permalink($permalink) { - global $wpdb, $wp_rewrite,$default_language_option, $CurrentLanguagePermalink,$CurrentLang,$permalink_default, $locale, $wp_query; - global $ZdmlCache; - $langstable=$wpdb->prefix.'zd_ml_langs'; - - $Lang=$CurrentLanguagePermalink; - if ($Lang=="") { - $CurrentLang=$ZdmlCache['DefLang']; - $query="SELECT LangPermalink FROM $langstable where LanguageID='$CurrentLang'"; - $CurrentLanguagePermalink=$wpdb->get_var($query); - $Lang=$CurrentLanguagePermalink; - } - $link=$permalink; - - $PermalinkDef=get_option($permalink_default); - if (($PermalinkDef=="no")&&($ZdmlCache['DefLang']==$locale)) return $link; - - if ($wp_rewrite->using_permalinks()) { - $url=get_bloginfo('url'); - $end=substr($link,strlen($url)); - if ($Lang=="") $link=$url.$end; - else $link=$url.'/'.$Lang.$end; - } else if ($Lang) $link.= ((!strpos($link,'?'))? '?': '') ."&lang=".$Lang; - - return $link; -} - -function zd_multilang_rewrite($permalink_structure) { - global $ZdmlCache; - global $wpdb, $wp_rewrite; - $langs=$wpdb->prefix.'zd_ml_langs'; - - $query="SELECT * FROM $langs order by LanguageID"; - $Lines=$wpdb->get_results($query, ARRAY_A); - if ($Lines) { - $regexp='('; - foreach ($Lines as $Value) { - $regexp.=$Value['LangPermalink'].'|'; - } - $regexp=substr($regexp,0,-1); - $regexp.=')'; - - if ($permalink_structure) foreach ($permalink_structure as $Rule => $Definition) { - $def=explode('?',$Definition); - $rule=$Definition; - if (preg_match_all('/(.*matches)\[([0-9]+)\]/U',$rule,$res)) { - $rule=""; - foreach ($res[1] as $index => $text) { - $rule.=$text.'['.($index+2).']'; - } - } - $rule.='&lang=$matches[1]'; - $new_rules[$regexp.'/'.$Rule]=$rule; - } - $new_rules2[$regexp.'/?']='index.php?lang=$matches[1]'; - if ($permalink_structure) $permalink_structure = $new_rules+ $new_rules2 + $permalink_structure; - } - return $permalink_structure; -} - -function zd_multilang_is_translated($id, $lang) { - global $ZdmlCache, $locale; - if ($lang==$ZdmlCache['DefLang']) return TRUE; - $Posts=explode(',',$ZdmlCache['TranslatedPosts'][$lang]); - foreach ($Posts as $key => $ID) { - if ($ID==$id) { - return TRUE; - } - } - return FALSE; -} - -function zd_multilang_install() { - global $ZdmlCache; - global $wpdb; - $termtrans=$wpdb->prefix.'zd_ml_termtrans'; - $langs=$wpdb->prefix.'zd_ml_langs'; - $posttrans=$wpdb->prefix.'zd_ml_trans'; - $linktrans=$wpdb->prefix.'zd_ml_linktrans'; - $commenttrans=$wpdb->prefix.'zd_ml_comments'; - - $dbversion=get_option('zd_multilang_dbschema'); - if ($dbversion<"125") { - $sql="CREATE TABLE $langs ( - LanguageID varchar(5) NOT NULL, - LanguageName varchar(100) character set utf8 NOT NULL, - LangPermalink varchar(50) NOT NULL UNIQUE, - BlogName longtext, - BlogDescription longtext, - primary key (LanguageID) - );"; - require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); - dbDelta($sql); - - $sql="CREATE TABLE $termtrans ( - term_id varchar(5) NOT NULL, - LanguageID varchar(5) NOT NULL, - name varchar(255) character set utf8 NOT NULL, - description longtext NOT NULL, - primary key (term_id,LanguageID) - );"; - require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); - dbDelta($sql); - - $sql="CREATE TABLE $posttrans ( - ID BIGINT(20) NOT NULL, - LanguageID varchar(5), - post_content longtext character set utf8, - post_excerpt text character set utf8, - post_title text character set utf8 NOT NULL, - post_status varchar(10), - primary key (ID, LanguageID) - );"; - require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); - dbDelta($sql); - - $sql="CREATE TABLE $linktrans ( - link_id BIGINT(20) NOT NULL, - LanguageID varchar(5), - link_url varchar(255), - link_name varchar(255) character set utf8, - link_description varchar(255) character set utf8, - primary key (link_id, LanguageID) - );"; - require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); - dbDelta($sql); - - $sql="UPDATE $posttrans set post_status='published' where post_status is NULL"; - $wpdb->query($sql); - - // Comment translations only should keep track of the language where a single comment has been submitted - $sql="CREATE TABLE $commenttrans ( - comment_id BIGINT(20) UNSIGNED NOT NULL, - post_id BIGINT(20) UNSIGNED NOT NULL, - LanguageID varchar(5), - primary key (comment_id) - );"; - require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); - dbDelta($sql); - - update_option('zd_multilang_dbschema',125); - update_option('zd_multilang_access',10); - } -} - -function zd_multilang_add_pages() { - global $Allowed_Access; - $Allowed_Access_Level=get_option($Allowed_Access); - add_menu_page('Zd_MultiLang', __('Translations','zd_multilang'), $Allowed_Access_Level, __FILE__, 'zd_multilang_page'); - add_submenu_page(__FILE__,__('Posts','zd_multilang'),__('Posts','zd_multilang'),$Allowed_Access_Level,__FILE__.'&fct=posts&tr=posts','zd_multilang_page'); - add_submenu_page(__FILE__,__('Pages','zd_multilang'),__('Pages','zd_multilang'),$Allowed_Access_Level,__FILE__.'&fct=posts&tr=pages','zd_multilang_page'); - add_submenu_page(__FILE__,__('Categories','zd_multilang'),__('Categories','zd_multilang'),$Allowed_Access_Level,__FILE__.'&fct=translations&tr=cat','zd_multilang_page'); - add_submenu_page(__FILE__,__('Tags','zd_multilang'),__('Tags','zd_multilang'),$Allowed_Access_Level,__FILE__.'&fct=translations&tr=tags','zd_multilang_page'); - add_submenu_page(__FILE__,__('Links','zd_multilang'),__('Links','zd_multilang'),$Allowed_Access_Level,__FILE__.'&fct=links','zd_multilang_page'); - add_submenu_page(__FILE__,__('Link Categories','zd_multilang'),__('Link Categories','zd_multilang'),$Allowed_Access_Level,__FILE__.'&fct=translations&tr=linkcat','zd_multilang_page'); - add_submenu_page(__FILE__,__('Languages','zd_multilang'),__('Languages','zd_multilang'),'manage_options',__FILE__.'&fct=languages','zd_multilang_page'); - add_submenu_page(__FILE__,__('Options','zd_multilang'),__('Options','zd_multilang'),'manage_options',__FILE__.'&fct=options','zd_multilang_page'); -} - -function zd_multilang_page() { - global $BaseURL, $current_user; - get_currentuserinfo(); - echo "\n".'
'; - if ($_POST['fct']) $_GET['fct']=$_POST['fct']; - switch ($_GET['fct']) { - case 'options': - if ($current_user->allcaps['manage_options']==1) - zd_multilang_options(); - else { - echo '

Only the administrator can edit the options

'; - zd_multilang_dashboard(); - } - break; - case 'edit': - if ($current_user->allcaps['manage_options']==1) - zd_multilang_edit_language(); - else { - echo '

Only the administrator can edit the options

'; - zd_multilang_dashboard(); - } - break; - case 'delete': - if ($current_user->allcaps['manage_options']==1) - zd_multilang_delete_language(); - else { - echo '

Only the administrator can edit the options

'; - zd_multilang_dashboard(); - } - break; - case 'posts': - zd_multilang_post_translations(); - break; - case 'translations'; - zd_multilang_term_translations(); - break; - case 'languages': - if ($current_user->allcaps['manage_options']==1) - zd_multilang_languages(); - else { - echo '

Only the administrator can edit the options

'; - zd_multilang_dashboard(); - } - break; - case 'links': - zd_multilang_link_translations(); - break; - default: - zd_multilang_dashboard(); - break; - } - echo "\n
"; -} - -function zd_multilang_dashboard() { - global $BaseURL, $current_user; - get_currentuserinfo();; - echo '

'.__('Language Dashboard','zd_multilang').'

'; - echo ''; - echo '
- - - - -
'; -} - -function zd_multilang_options() { - global $wpdb, $BaseURL,$default_language_option,$insert_lang_switch_option,$show_flags_option,$display_google_translate; - global $show_languages_option,$lang_switcher_class_option,$permalink_default,$display_untranslated, $display_original_option,$keep_separate_comments, $Allowed_Access,$Autosave_Option; - global $ZdmlCache; - - $language_table=$wpdb->prefix.'zd_ml_langs'; - $termtrans=$wpdb->prefix.'zd_ml_termtrans'; - $posttrans=$wpdb->prefix.'zd_ml_trans'; - $hidden_field="zd_multilang_update_options"; - $language_table= $wpdb->prefix.'zd_ml_langs'; - - echo '
- - - - -
'; - - if ($_POST[$hidden_field]) { - $OldLang=get_option($default_language_option); - $DefLang=$_POST['def_lang']; - $DisplayOriginal=$_POST['display_original']; - $InsertInPosts=$_POST['show_language_switcher']; - $Show_Languages=$_POST['show_languages']; - $Show_Flags=$_POST['show_flags']; - $Lang_Switch_Class=$_POST['lang_switch_class']; - $SwitcherPosition=$_POST['language_switcher_position']; - $KeepSeparateComments=$_POST['keep_separate_comments']; - $PermalinkDef=$_POST['permalink_for_default']; - $Exchange=$_POST['exchange_lang']; - $DisplayUntranslated=$_POST['display_untranslated']; - $DisplayGLink=$_POST['display_glink']; - $Allowed_Access_Level=$_POST['access_level']; - $Autosave=$_POST['autosave']; - - update_option('zd_multilang_position',$SwitcherPosition); - update_option($default_language_option,$DefLang); - update_option($display_original_option, $DisplayOriginal); - update_option($insert_lang_switch_option,$InsertInPosts); - update_option($show_languages_option,$Show_Languages); - update_option($show_flags_option,$Show_Flags); - update_option($lang_switcher_class_option,$Lang_Switch_Class); - update_option($permalink_default, $PermalinkDef); - update_option($display_untranslated,$DisplayUntranslated); - update_option($display_google_translate,$DisplayGLink); - update_option($keep_separate_comments, $KeepSeparateComments); - update_option($Allowed_Access,$Allowed_Access_Level); - update_option($Autosave_Option,$Autosave); - - echo '
'; - if ($Exchange=="on") { - $query="SELECT * FROM $posttrans where LanguageID='$DefLang'"; - $TrPosts=$wpdb->get_results($query, ARRAY_A); - $query="SELECT * FROM $termtrans where LanguageID='$DefLang'"; - $TrTerms=$wpdb->get_results($query, ARRAY_A); - - if ($TrPosts) foreach ($TrPosts as $key => $V) { - $query="SELECT * from ".$wpdb->posts." WHERE ID=".$V['ID']; - $res=$wpdb->get_row($query); - $OriginalTitle=$res->post_title; - $OriginalContent=$wpdb->escape($res->post_content); - $NewContent=$wpdb->escape($V['post_content']); - $NewTitle=$V['post_title']; - $q1="UPDATE ".$wpdb->posts." set post_title='$NewTitle', post_content='$NewContent' WHERE ID=".$V['ID']; - $wpdb->query($q1); - $q1="UPDATE $posttrans set post_title='$OriginalTitle', post_content='$OriginalContent', LanguageID='$OldLang' WHERE ID=".$V['ID']." and LanguageID='$DefLang'"; - $wpdb->query($q1); - } - if ($TrTerms) foreach ($TrTerms as $key => $V) { - $query="SELECT * from ".$wpdb->terms." WHERE term_id=".$V['term_id']; - $res=$wpdb->get_row($query); - $OriginalTerm=$res->name; - $NewTerm=$V['name']; - $q1="UPDATE ".$wpdb->terms." SET name='$NewTerm' WHERE term_id=".$V['term_id']; - $wpdb->query($q1); - $q1="UPDATE $termtrans SET name='$OriginalTerm', LanguageID='$OldLang' WHERE LanguageID='$DefLang' and term_id=".$V['term_id']; - - $wpdb->query($q1); - } - echo '

'.__('Default Languages Exchanged','zd_multilang').'

'; - } - echo '

'.__('Options updated','zd_multilang').'

'; - echo '
'; - } - $query="SELECT * FROM $language_table order by LanguageName"; - $Languages=$wpdb->get_results($query, ARRAY_A); - $DefaultLanguage=get_option($default_language_option); - $InsertInPosts=get_option($insert_lang_switch_option); - $ShowLanguages=get_option($show_languages_option); - $ShowFlags=get_option($show_flags_option); - $SwitcherPosition=get_option('zd_multilang_position'); - $DisplayUntranslated=get_option($display_untranslated); - $DisplayGlink=get_option($display_google_translate); - $DisplayOriginal=get_option($display_original_option); - $Lang_Switch_Class=(get_option($lang_switcher_class_option)!="") ? get_option($lang_switcher_class_option) : "lang_switch"; - $Allowed_Access_Level=get_option($Allowed_Access); - $Autosave=get_option($Autosave_Option); - - echo ''; - - echo "\n\t

".__('General Options','zd_multilang')."

"; - echo "\n\t".'
'; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo '
".__('Level required to translate items','zd_multilang').""; - echo ''; - echo "
".__('Default Language','zd_multilang').""; - echo ''; - echo "
".__('Exchange Languages','zd_multilang')."
".__('Only use this option if you want to switch old default language with new one. This will exchange translations between them','zd_multilang')."
"; - echo ''; - echo "
".__('Display Original post while translating','zd_multilang').""; - echo ''; - echo "
".__('Automatically save translation every 5 minutes','zd_multilang').""; - echo ''; - echo "
".__('Generate permalink for Default language','zd_multilang').""; - echo ''; - echo "
".__('Keep separate comments for each language','zd_multilang').""; - echo ''; - echo "
".__('Display untranslated posts','zd_multilang').""; - echo ''; - echo "
".__('If Yes, display link "Translate Original post with Google Translate"','zd_multilang').""; - echo ''; - echo "
'; - echo '

'.__('Language Switcher','zd_multilang').'

'; - echo "\n\t".''; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; echo "\n\t\t"; - echo "\n\t".'
".__('Show Language Switcher in post','zd_multilang').""; - echo ''; - echo "
".__('Language Switcher Position','zd_multilang').""; - echo ''; - echo "
".__('Show Language names in switcher','zd_multilang').""; - echo ''; - echo "
".__('Show Flags in switcher','zd_multilang').""; - echo ''; - echo "
".__('Language Switcher CSS class','zd_multilang').""; - echo ''; - echo "
'; - echo "\n\t".'

'; - echo "\n".'
'; -} - -function zd_multilang_edit_language() { - global $wpdb, $BaseURL,$default_language_option, $BaseURL, $PluginDIR, $wp_rewrite; - global $ZdmlCache; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $hidden_field="zd_multilang_edit_language"; - - - if ($_POST[$hidden_field]) { - $Action=$_POST[$hidden_field]; - $LangCode=$_POST['lang_code']; - $LangName=$_POST['lang_name']; - $LangPermalink=$_POST['lang_permalink']; - $BlogName=$_POST['blog_name']; - $BlogDesc=$_POST['blog_description']; - echo '

'; - if ($Action=="edit") { - $query="UPDATE $language_table set LanguageName='$LangName',LangPermalink='$LangPermalink', BlogName='$BlogName', BlogDescription='$BlogDesc' WHERE LanguageID='$LangCode'"; - $wpdb->query($query); - if ($_POST['def_lang']=="on") update_option($default_language_option,$LangCode); - echo __('Language Edited','zd_multilang'); - } - echo '

'; - zd_multilang_languages(); - return; - } - $DefaultLanguage=$ZdmlCache['DefLang']; - $Code=$_GET['lang']; - $query="SELECT * FROM $language_table where LanguageID='$Code'"; - $row=$wpdb->get_row($query, ARRAY_A); - - echo "

".__('Languages','zd_multilang').'


'; - echo "

".__('Edit Language','zd_multi').' '.$_GET['lang'].'

'; - echo "\n\t".'
'; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t".'
".__('Language Name','zd_multilang').""; - echo ''; - echo "
".__('Language Permalink','zd_multilang').""; - echo ''; - echo "
".__('Blog name','zd_multilang').""; - echo ''; - echo "
".__('Blog description','zd_multilang').""; - echo ''; - echo "
".__('Default Language','zd_multilang')." ?"; - if ($row['LanguageID']==$DefaultLanguage) $selected='checked="on"'; - else $selected=""; - echo ''; - echo "
'; - echo "\n\t".'

'; - echo "\n\t
"; -} - -function zd_multilang_languages() { - global $ZdmlCache; - global $wpdb, $BaseURL,$default_language_option, $BaseURL, $PluginDIR, $wp_rewrite; - $language_table= $wpdb->prefix.'zd_ml_langs'; - - $hidden_field="zd_multilang_add_language"; - - echo "

".__('Languages','zd_multilang').'


'; - - if ($_POST[$hidden_field]) { - $Action=$_POST[$hidden_field]; - $LangCode=$_POST['lang_code']; - $LangName=$_POST['lang_name']; - $LangPermalink=$_POST['lang_permalink']; - echo '

'; - if ($Action=="add") { - $query="INSERT INTO $language_table VALUES ('$LangCode','$LangName','$LangPermalink',NULL,NULL)"; - $wpdb->query($query); - if ($_POST['def_lang']=="on") update_option($default_language_option,$LangCode); - echo __('Language Added','zd_multilang'); - } - echo '


'; - } - - $DefaultLanguage=$ZdmlCache['DefLang']; - $query="SELECT * FROM $language_table order by LanguageName"; - $Languages=$wpdb->get_results($query, ARRAY_A); - if ($Languages) { - echo ''; - echo ''; - foreach ($Languages as $Index => $Values) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'.__('Action','zd_multilang').''.__('Language Name','zd_multilang').''.__('Language Code','zd_multilang').''.__('Permalink','zd_multilang').''.__('Default','zd_multilang').'
'.__('Edit','zd_multilang').' - '.__('Delete','zd_multilang').' '.$Values['LanguageName'].''.$Values['LanguageID'].''.$Values['LangPermalink'].' '; - if ($Values['LanguageID']==$DefaultLanguage) echo "".__('Default Language', 'zd_multilang').""; - echo '
'; - } - - echo "

".__('Add Language','zd_multilang').'

'; - echo "\n\t".'
'; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t\t"; - echo "\n\t".'
".__('Language Name','zd_multilang').""; - echo ''; - echo "
".__('Language Code','zd_multilang').""; - echo ''; - echo "
".__('Language Permalink','zd_multilang').""; - echo ''; - echo "
".__('Default Language','zd_multilang')." ?"; - echo ''; - echo "
'; - echo "\n\t".'

'; - echo "\n\t

".__('Show/Hide Available default codes','zd_multilang')."

"; - - $DefaultLanguagesCodes=array ( - 'ar' => array ('Arabian', 'ar'),'bn_BD' => array ('Bengali','bn'),'be_BY' => array ('Belarusian','be'), - 'bg_BG' => array ('Bulgarian','bg'),'ca' => array ('Catalan','ca'),'zh_CN' => array ('Chinese','cn'), - 'zh_HK' => array ('Hong Kong','hk'),'zh_TW' => array ('Taiwan','tw'),'hr' => array ('Croatian','hr'), - 'cz_CZ' => array ('Czech','cz'),'da_DK' => array ('Danish','dk'),'nl_NL' => array ('Dutch','nl'), - 'en_US' => array ('English','en'),'eu' => array ('Euskadi','eu'),'eo' => array ('Esperanto','eo'), - 'et' => array ('Estonian','et'),'fo' => array ('Faroe','fo'),'fi_FI' => array ('Finnish','fi'), - 'fr_FR' => array ('French','fr'),'gl_ES' => array ('Galician','gl'),'de_DE' => array ('German','de'), - 'el' => array ('Greek','gr'),'he_IL' => array ('Hebrew','il'),'hu_HU' => array ('Hungarian','hu'), - 'is_IS' => array ('Icelandic','is'),'id_ID' => array ('Indonesian','id'),'it_IT' => array ('Italian','it'), - 'ja' => array ('Japanese','jp'),'km_KH' => array ('Khmer','km'),'ko_KR' => array ('Korean','ko'), - 'ku' => array ('Kurdish','ku'),'lv' => array ('Latvian','lv'),'lt' => array ('Lithuanian','lt'), - 'mk_MK' => array ('Macedonian','mk'),'mg_MG' => array ('Malgasy','mg'),'ms_MY' => array ('Malay','my'), - 'nb_NO' => array ('Norwegian','no'),'pl_PL' => array ('Polish','pl'),'pt_BR' => array ('Brazilian Portuguese','br'), - 'pt_PT' => array ('European Portuguese','pt'),'ro' => array ('Romanian','ro'),'ru_RU' => array ('Russian','ru'), - 'sr_RS' => array ('Serbian','sr'),'si_LK' => array ('Sinhala','lk'),'sl_SI' => array ('Slovenian','sl'), - 'sk' => array ('Slovak','sk'),'es_ES' => array ('Spanish','es'),'sv_SE' => array ('Swedish','se'), - 'th' => array ('Thai','th'),'tr' => array ('Turkish','tr'),'ua_UA' => array ('Ukrainian','ua'), - 'uz_UZ' => array ('Uzbek','uz'),'vi_VN' => array ('Vietnamse','vn'),'cy' => array ('Welsh','cy') - ); - - echo ' -'; - - $wp_rewrite->flush_rules(); -} - -function zd_multilang_delete_language() { - global $ZdmlCache; - global $BaseURL, $wpdb,$default_language_option; - $DefaultLanguage=$ZdmlCache['DefLang']; - - $language_table= $wpdb->prefix.'zd_ml_langs';$termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - $LangCode=$_GET['lang']; - $query="DELETE FROM $language_table WHERE LanguageID='$LangCode'"; - $wpdb->query($query); - $query="DELETE FROM $termtrans_table WHERE LanguageID='$LangCode'"; - $wpdb->query($query); - - echo '

'; - echo __('Language deleted','zd_multilang'); - echo '

'; - zd_multilang_languages(); -} - -function zd_multilang_post_translations() { - global $ZdmlCache; - global $BaseURL, $wpdb,$default_language_option,$PluginDIR, $display_original_option; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - $posttrans=$wpdb->prefix.'zd_ml_trans'; - $hidden_field="zd_multilang_edit_translation"; - - $Autosave=get_option('zdmultilang_autosave'); - - echo "

".__('Posts & Pages','zd_multilang').'

'; - - $query="SELECT * FROM $language_table order by LanguageName"; - $Languages=$wpdb->get_results($query, ARRAY_A); - if (!$Languages) { - echo '

'.__('No languages defined, please define some first','zd_multilang').'

'; - return; - } - $DefaultLanguage=$ZdmlCache['DefLang']; - - if ($_POST['id']) { - list($ID, $Lang) = split("\.",$_POST['id']); - $Content=$_POST['content']; - $Title=$_POST['post_title']; - $Status=$_POST['post_status']; - $Excerpt=$_POST['post_excerpt']; - $var=$wpdb->get_var("SELECT ID from $posttrans WHERE ID='$ID' and LanguageID='$Lang'"); - if ($var==$ID) { - $query="UPDATE $posttrans set post_content='$Content', post_title='$Title', post_status='$Status', post_excerpt='$Excerpt' WHERE ID='$ID' and LanguageID='$Lang'"; - } else $query="INSERT INTO $posttrans (`ID`, `LanguageID`, `post_content`, `post_title`, `post_status`, `post_excerpt`) values ('$ID', '$Lang', '$Content', '$Title','$Status', '$Excerpt')"; - $wpdb->query($query); - echo '

'; - echo __('Post or Page updated','zd_multilang'); - echo '


'; - $_GET['id']=$_POST['id']; - } - if ($_GET['id']) { - list($ID, $Lang) = split('\.', $_GET['id']); - $query='SELECT * FROM '.$wpdb->prefix.'posts WHERE ID='.$ID; - $res=$wpdb->get_results($query); - $OriginalText=str_replace(array("\r","\n"),array ("",""), strip_tags($res[0]->post_content)); - $OriginalPost=$res[0]->post_content; - echo '
'; - $query="SELECT * FROM $posttrans WHERE LanguageID='$Lang' and ID=".$ID; - $res=$wpdb->get_results($query, ARRAY_A); - - if ($res[0]['post_status']==NULL) $res[0]['post_status']='draft'; - - $From=array_search($DefaultLanguage,$ZdmlCache['Languages']); - $To=array_search($Lang,$ZdmlCache['Languages']); - - echo '
'; - echo ''; - echo ''; - echo '
'; - echo '
-
-
-

-

- -

- -
-

- -
-

- -
'; - echo '
'; - - echo '
'; - echo '
'; - echo '

'.__('Title','zd_multilang').'

'; - echo '
'; - echo '
'; - echo '
'; - echo '

'.__('Translations','zd_multilang').'

'; - echo ''; - the_editor($res[0]['post_content']); - echo '
'; - echo '

'.__('Excerpt','zd_multilang').'

-
- -
'; - $DisplayOriginal=get_option($display_original_option); - if ($DisplayOriginal=='yes') { - $OriginalPost = apply_filters('the_content', $OriginalPost); - $OriginalPost = str_replace(']]>', ']]>', $OriginalPost); - echo '

'.__('Original post','zd_multilang').'

-
'.$OriginalPost.'
'; - } - echo '
'; - echo '
'; - if ($Autosave=='yes') { - wp_print_scripts('sack'); - echo ''; - } - echo '
-
'; - echo ''; - } else if ($_GET['tr']) { - switch ($_GET['tr']) { - case 'posts': - $query='SELECT * FROM '.$wpdb->prefix.'posts WHERE post_type="post" order by post_status, post_date desc'; - break; - case 'pages': - $query='SELECT * FROM '.$wpdb->prefix.'posts WHERE post_type="page" order by post_status, post_date desc'; - break; - default: - $query=""; - break; - } - - $q="SELECT * from $posttrans order by ID"; - $Translated=$wpdb->get_results($q, ARRAY_A); - if ($Translated) foreach ($Translated as $Idx => $Row) { - $Posts[$Row['ID']][$Row['LanguageID']]=$Row['post_status']; - } - - $results=$wpdb->get_results($query, ARRAY_A); - if ($results) { - echo ''; - echo ''; - foreach ($Languages as $Lang) { - if ($Lang['LanguageID']!=$DefaultLanguage) echo ''; - } - echo ''; - foreach ($results as $ID => $row) { - echo ''; - echo ''; - echo ''; - foreach ($Languages as $Lang) { - if ($Lang['LanguageID']!=$DefaultLanguage) { - echo ''; - } - } - echo ''; - } - echo '
'.__('Original title','zd_multilang').''.__('Published date', 'zd_multilang').''.$Lang['LanguageName'].'
'.$row['post_title'].''.date_i18n(get_option('date_format').' - '.get_option('time_format'),strtotime($row['post_date'])).''; - if ($Posts[$row['ID']][$Lang['LanguageID']]) echo ' '.__($Posts[$row['ID']][$Lang['LanguageID']],'zd_multilang'); - else echo ' '.__('Translate','zd_multilang'); - echo '
'; - } - } else { - $query="SELECT distinct(ID) from $posttrans"; - $res=$wpdb->get_results($query); - foreach ($res as $Line) { - $count++; - } - printf(__('%d posts or pages are translated','zd_multilang'),$count); - } -} - -function zd_multilang_autosave() { - global $wpdb; - $posttrans=$wpdb->prefix.'zd_ml_trans'; - list($ID, $Lang) = split("\.",$_POST['id']); - $Content=$_POST['content']; - $Title=$_POST['post_title']; - $Status=$_POST['post_status']; - $Excerpt=$_POST['post_excerpt']; - $var=$wpdb->get_var("SELECT ID from $posttrans WHERE ID='$ID' and LanguageID='$Lang'"); - if ($var==$ID) { - $query="UPDATE $posttrans set post_content='$Content', post_title='$Title', post_status='$Status', post_excerpt='$Excerpt' WHERE ID='$ID' and LanguageID='$Lang'"; - } else $query="INSERT INTO $posttrans (`ID`, `LanguageID`, `post_content`, `post_title`, `post_status`, `post_excerpt`) values ('$ID', '$Lang', '$Content', '$Title','$Status', '$Excerpt')"; - $wpdb->query($query); - die ('jQuery(\'#autosave_status\').html("Transaltion has been automatically saved at '.strftime("%H:%M on %Y/%m/%d").'"); - jQuery(\'#autosave_status\').show();'); -} - -function zd_multilang_link_translations() { - global $ZdmlCache, $locale; - global $BaseURL, $wpdb,$default_language_option,$PluginDIR; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - $linktrans=$wpdb->prefix.'zd_ml_linktrans'; - $hidden_field="zd_multilang_edit_link"; - - echo "

".__('Links','zd_multilang').'

'; - $DefLang=get_option($default_language_option); - if (isset($_POST['link_id'])) { - $_GET['link_id']=$_POST['link_id']; - $url=$_POST['link_url']; - $name=$_POST['link_name']; - $description=$_POST['link_description']; - $Language=$_POST['lng']; - $link_id=$_POST['link_id']; - $check="SELECT count(*) from $linktrans where link_id=$link_id and LanguageID='$Language'"; - $res=$wpdb->get_var($check); - if ($res) $query="UPDATE $linktrans set link_name='$name', link_url='$url', link_description='$description' WHERE link_id=$link_id and LanguageID='$Language'"; - else $query="INSERT INTO $linktrans VALUES ($link_id, '$Language', '$url', '$name', '$description')"; - $wpdb->query($query); - } - if (isset($_GET['link_id'])) { - $Language=$_GET['lng']; - $link_id=$_GET['link_id']; - $query="SELECT l.link_id, lt.link_url, lt.link_name, lt.link_description, lt.LanguageID, l.link_url o_url, l.link_name o_name, l.link_description o_desc FROM $linktrans lt RIGHT JOIN $wpdb->links l on (l.link_id=lt.link_id) where l.link_id=$link_id"; - $results=$wpdb->get_results($query); - $found=0; - if ($results) { - foreach ($results as $Link) { - if ($Link->LanguageID==$Language) { - $found=1; - break; - } - } - if (!$found) { - $Link->link_name=""; - $Link->link_url=""; - $Link->link_description=""; - } - echo ' - - - - - - -
'.$Link->o_name.''.$Link->o_url.''.$Link->o_desc.'
'; - echo '
- - - - - -

-
'; - } - } else { - $query="SELECT l.link_id, lt.LanguageID, lt.link_name, l.link_url o_url, l.link_name o_name FROM $linktrans lt RIGHT JOIN $wpdb->links l on (l.link_id=lt.link_id)"; - $results=$wpdb->get_results($query); - if ($results) - foreach ($results as $row) { - $Link[$row->link_id]['name_'.$row->LanguageID]=$row->link_name; - $Link[$row->link_id]['o_name']=$row->o_name; - $Link[$row->link_id]['o_url']=$row->o_url; - } - - echo ''; - echo ''; - foreach ($ZdmlCache['Languages'] as $LanguageID => $Lang) { - if ($Lang!=$DefLang) echo ''; - } - echo ''; - if ($Link) - foreach ($Link as $link_id => $L) { - echo ''; - echo ''; - foreach ($ZdmlCache['Languages'] as $LanguageID => $Lang) { - if ($Lang!=$DefLang) echo ''; - } - echo ''; - } - echo '
'.__('Original Link','zd_multilang').' '.$ZdmlCache['LanguageNames'][$LanguageID].'
'.$L['o_name'].' '.__('Translate','zd_multilang').'
'; - } -} - -function zd_multilang_term_translations() { - global $ZdmlCache; - global $BaseURL, $wpdb,$default_language_option,$PluginDIR; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - $hidden_field="zd_multilang_edit_translation"; - - echo "

".__('Translations','zd_multilang').'

'; - $Option=$_GET['tr']; - $DefaultLanguage=$ZdmlCache['DefLang']; - - $query="SELECT * FROM $language_table order by LanguageName"; - $Languages=$wpdb->get_results($query, ARRAY_A); - if (!$Languages) { - echo '

'.__('No languages defined, please define some first','zd_multilang').'

'; - return; - } - - if ($_POST[$hidden_field]=="update") { - $termid=$_POST['term_id']; - $Option=$_POST['tr']; - foreach ($Languages as $Lang) { - if ($Lang['LanguageID']!=$DefaultLanguage) { - $LangID=$Lang['LanguageID']; - $Translation=$_POST[$termid."_".$LangID]; - $Desc=$_POST['desc_'.$termid."_".$LangID]; - $query="SELECT name FROM $termtrans_table WHERE LanguageID='$LangID' and term_id='$termid' "; - $oldvalue=$wpdb->get_var($query); - if ($oldvalue) { - $query="UPDATE $termtrans_table set name='$Translation', description='$Desc' where term_id=$termid and LanguageID='$LangID'"; - } else { - if ($Translation) $query="INSERT INTO $termtrans_table VALUES ('$termid','$LangID','$Translation', '$Desc')"; - } - $wpdb->query($query); - $_GET['id']=$termid; - } - } - } - - if ($_GET['id']) { - $term_id=$_GET['id']; - $query="SELECT t.name, tt.term_id, tt.description FROM ".$wpdb->prefix."term_taxonomy tt, ".$wpdb->prefix."terms t WHERE t.term_id=tt.term_id and t.term_id=".$term_id." order by name"; - $res=$wpdb->get_row($query, ARRAY_A); - - $query="SELECT * FROM $termtrans_table WHERE term_id=$term_id"; - $Trans=$wpdb->get_results($query, ARRAY_A); - if ($Trans) foreach ($Trans as $Values) { - $Translations[$Values['LanguageID']]['term']=$Values['name']; - $Translations[$Values['LanguageID']]['desc']=$Values['description']; - } - - echo '
'; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t".''; - echo "\n\t".''; - - echo "\n\t".''; - echo ''; - foreach ($Languages as $Lang) { - if ($Lang['LanguageID']!=$DefaultLanguage) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo '
'.__('Original Term','zd_multilang').''.$res['name'].''.$res['description'].'
'.$Lang['LanguageName'].'
'; - echo "\n\t".'

'; - echo "
"; - } else { - switch ($Option) { - default: - $Option="cat"; - case 'cat': - $query="SELECT t.name, tt.term_id FROM ".$wpdb->prefix."term_taxonomy tt, ".$wpdb->prefix."terms t WHERE t.term_id=tt.term_id and taxonomy='category' order by name"; - $Results=$wpdb->get_results($query, ARRAY_A); - break; - case 'tags': - $query="SELECT t.name, tt.term_id FROM ".$wpdb->prefix."term_taxonomy tt, ".$wpdb->prefix."terms t WHERE t.term_id=tt.term_id and taxonomy='post_tag' order by name"; - $Results=$wpdb->get_results($query, ARRAY_A); - break; - case 'linkcat': - $query="SELECT t.name, tt.term_id FROM ".$wpdb->prefix."term_taxonomy tt, ".$wpdb->prefix."terms t WHERE t.term_id=tt.term_id and taxonomy='link_category' order by name"; - $Results=$wpdb->get_results($query, ARRAY_A); - break; - } - if ($Results) { - foreach ($Results as $Line) { - $in.=$Line['term_id'].","; - } - $in=substr($in, 0, -1); - $query="SELECT * FROM $termtrans_table WHERE term_id in ($in)"; - $Trans=$wpdb->get_results($query, ARRAY_A); - if ($Trans) foreach ($Trans as $Values) { - $Translations[$Values["term_id"]][$Values['LanguageID']]=$Values['name']; - } - echo ''; - echo ''; - foreach ($Languages as $Lang) { - if ($Lang['LanguageID']!=$DefaultLanguage) echo ''; - } - echo ''; - foreach ($Results as $Id => $Value) { - $term_id=$Value['term_id']; - echo ''; - foreach ($Languages as $Lang) { - if ($Lang['LanguageID']!=$DefaultLanguage) echo ''; - } - echo ''; - } - echo '
 '.__('Original Term','zd_multilang').' '.$Lang['LanguageName'].'
'.$Value['name'].''.$Translations[$term_id][$Lang['LanguageID']].'
'; - } - } -} - -function zd_multilang_translate_term($args="", $taxonomy="") { - global $ZdmlCache, $locale; - global $BaseURL, $wpdb,$default_language_option,$PluginDIR,$CurrentLanguagePermalink,$CurrentLang; - - if ($ZdmlCache['DefLang']==$locale) return $args; - - if ($ZdmlCache['Terms']) { - if ($ZdmlCache['Terms'][$args->term_id][$locale]) { - $args->cat_name=$ZdmlCache['Terms'][$args->term_id][$locale]['name']; - $args->name=$ZdmlCache['Terms'][$args->term_id][$locale]['name']; - $args->description=$ZdmlCache['Terms'][$args->term_id][$locale]['description']; - } - } - return $args; -} - -function zd_multilang_translate_link_cat($terms="") { - global $ZdmlCache, $locale; - global $BaseURL, $wpdb,$default_language_option,$PluginDIR,$CurrentLanguagePermalink,$CurrentLang; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - $DefaultLanguage=$ZdmlCache['DefLang']; - - if ($ZdmlCache['DefLang']==$locale) return $terms; - - $termes=explode("\n",$terms); - $term_list=""; - foreach ($termes as $ID => $term) { - preg_match_all("|(.*)(.*)(.*)|i", $term,$res); - $t=""; - foreach ($ZdmlCache['Terms'] as $termid => $Values) { - foreach ($Values as $LangID => $V) { - if (($t=="")&&($LangID==$locale)&&($V['o_name']==$res[2][0])) { - $t=$V['name']; - } - } - } - if ($t=="") $term_list.=$res[0][0]."\n"; - else $term_list.=$res[1][0].$t.$res[3][0]."\n"; - echo $res[3][0]; - } - return $term_list."\n"; -} - -function zd_multilang_postlink($arg) { - global $locale, $ZdmlCache, $wpdb; - $posttrans=$wpdb->prefix.'zd_ml_trans'; - - preg_match_all("|(.*)(.*)(.*)|ms",$arg,$res); - $postname=$res[2][0]; - - $query="SELECT pt.post_title FROM $posttrans pt, $wpdb->posts p WHERE pt.ID=p.ID and LanguageID='".$locale."' AND p.post_title='$postname' and pt.post_status='published'"; - $title=$wpdb->get_var($query); - $link=$res[1][0]; - if ($title) return $link.$title.$res[3][0]; - return $arg; -} - -function zd_multilang_translate_cat($term="") { - global $ZdmlCache, $locale; - global $BaseURL, $wpdb,$default_language_option,$PluginDIR,$CurrentLanguagePermalink,$CurrentLang; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - $DefaultLanguage=$ZdmlCache['DefLang']; - - if ($ZdmlCache['DefLang']==$locale) return $term; - - if ($ZdmlCache['Terms']) { - foreach ($ZdmlCache['Terms'] as $TermID => $V) { - foreach ($ZdmlCache['Terms'][$TermID] as $Language => $V) { - if (($Language==$locale)&&($V['o_name']==$term)) { - return $V['name']; - } - } - } - } - return $term; -} - -function zd_multilang_cat($arg) { - global $ZdmlCache, $locale; - $termid=$arg->term_id; - - if (isset($ZdmlCache['Terms'][$termid][$locale])) { - $arg->name=$ZdmlCache['Terms'][$termid][$locale]['name']; - $arg->description=$ZdmlCache['Terms'][$termid][$locale]['description']; - $arg->category_description=$ZdmlCache['Terms'][$termid][$locale]['description']; - } - return $arg; -} - -function zd_multilang_cat_desc($arg, $arg2) { - if (is_object($arg2)) { - $cat=zd_multilang_cat($arg2); - return $cat->description; - } - return $arg; -} - -function zd_multilang_translate_bookmarks($links) { - global $ZdmlCache, $locale; - if (!is_admin()) { - foreach ($links as $Idx => $Datas) { - $termid=$Datas->term_taxonomy_id; - $linkid=$Datas->link_id; - if ($ZdmlCache['Terms'][$termid][$locale]['description']) $links[$Idx]->description=$ZdmlCache['Terms'][$termid][$locale]['description']; - if ($ZdmlCache['Links'][$linkid][$locale]['description']) $links[$Idx]->link_description=$ZdmlCache['Links'][$linkid][$locale]['description']; - if ($ZdmlCache['Links'][$linkid][$locale]['name']) $links[$Idx]->link_name=$ZdmlCache['Links'][$linkid][$locale]['name']; - if ($ZdmlCache['Links'][$linkid][$locale]['url']) $links[$Idx]->link_url=$ZdmlCache['Links'][$linkid][$locale]['url']; - } - } - return $links; -} - -function zd_multilang_translate_list_bookmarks($bm) { - global $ZdmlCache, $locale; - $bookmarks=explode("\n",$bm); - $bm_return=array(); - foreach ($bookmarks as $line) { - if (preg_match_all('|()(.*)()|U',$line,$res)) { - $bm_return[]=$res[1][0].zd_multilang_translate_cat($res[2][0]).$res[3][0]; - } else { - $bm_return[]=$line; - } - } - return implode("\n",$bm_return); -} - -function zd_multilang_translate_post($posts) { - global $ZdmlCache; - global $BaseURL, $wpdb,$default_language_option, $wp_query, $wp_rewrite,$insert_lang_switch_option,$CurrentLanguagePermalink,$CurrentLang; - global $locale, $display_google_translate; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - $posttrans=$wpdb->prefix.'zd_ml_trans'; - - $Lang = $CurrentLanguagePermalink; - if ($Lang=="") $Language=$ZdmlCache['DefLang']; - $Language=$CurrentLang; - - if ($ZdmlCache['DefLang']!=$CurrentLang) { - foreach ($posts as $Idc => $Post) { - $post_list.=$Post->ID.','; - } - $post_list=substr($post_list,0, -1); - $query="SELECT post_content, post_title, ID, post_excerpt FROM $posttrans WHERE LanguageID='".$Language."' AND ID in (".$post_list.") AND post_status='published'"; - $rows=$wpdb->get_results($query, ARRAY_A); - if ($rows) foreach ($rows as $Id => $P) { - $row[$P['ID']]->post_content=$P['post_content']; - $row[$P['ID']]->post_title=$P['post_title']; - $row[$P['ID']]->post_excerpt=$P['post_excerpt']; - } - } - - foreach ($posts as $Idx => $Post) { - $postid=$Post->ID; - if ($row[$Post->ID]) { - $posts[$Idx]->post_content=$row[$Post->ID]->post_content; - $posts[$Idx]->post_excerpt=$row[$Post->ID]->post_excerpt; - if ($ZdmlCache['SwitcherPosition']=="footer") $posts[$Idx]->post_content.=zd_multilang_lang_switcher($posts[$Idx]->ID); - else $posts[$Idx]->post_content=zd_multilang_lang_switcher($posts[$Idx]->ID).$posts[$Idx]->post_content; - $posts[$Idx]->post_title=$row[$Post->ID]->post_title; - } else { - if ((!zd_multilang_is_translated($postid,$Language))&&($ZdmlCache['DefLang']!=$locale)&&(get_option($display_google_translate)=="show")) { - $posts[$Idx]->post_content="

".__('Translate original post with Google Translate',"zd_multilang").'

' - .$posts[$Idx]->post_content; - } - if ($ZdmlCache['SwitcherPosition']=="footer") $posts[$Idx]->post_content.=zd_multilang_lang_switcher($posts[$Idx]->ID); - else $posts[$Idx]->post_content=zd_multilang_lang_switcher($posts[$Idx]->ID).$posts[$Idx]->post_content; - } - // always get the appropriate number of comments (otherwise it won't work with default language) - $comment_count = zd_multilang_get_comment_count ($Post->ID, $Post); - if ($comment_count !== false) - $posts[$Idx]->comment_count = $comment_count; - } - return $posts; -} - -function zd_multilang_translate_tags($Tags) { - global $ZdmlCache; - global $BaseURL, $wpdb,$default_language_option,$PluginDIR,$CurrentLanguagePermalink,$CurrentLang; - $language_table= $wpdb->prefix.'zd_ml_langs'; - $termtrans_table = $wpdb->prefix.'zd_ml_termtrans'; - - $Lang = $CurrentLanguagePermalink; - if ($Lang=="") $Language=$ZdmlCache['DefLang']; - $Language=$CurrentLang; - - if ($ZdmlCache['DefLang']==$CurrentLang) return $Tags; - - foreach ($Tags as $ID => $args) { - if ($ZdmlCache['Terms']) { - foreach ($ZdmlCache['Terms'] as $TermID => $V) { - if (($TermID==$args->term_id) and ($V['LanguageID']==$Language)) - $Tags[$ID]->name=$V['name']; - } - } - } - return $Tags; -} - -function zd_multilang_lang_switcher($post_id) { - global $ZdmlCache; - global $wpdb,$wp_rewrite,$display_untranslated; - global $insert_lang_switch_option,$insert_lang_switch_option,$show_flags_option,$show_languages_option,$lang_switcher_class_option,$permalink_default, $locale; - - if (get_option($insert_lang_switch_option)=="show") { - $PluginDIR = get_bloginfo('wpurl').'/'.PLUGINDIR . '/' . dirname(plugin_basename (__FILE__)); - $language_table= $wpdb->prefix.'zd_ml_langs'; - - $langswitch_class=get_option($lang_switcher_class_option); - if ($langswitch_class) $class=' class="'.$langswitch_class.'"'; - $retour=""; - - if (!isset($ZdmlCache['Languages'])) { - $query="SELECT * FROM $language_table ORDER BY LanguageName"; - $results=$wpdb->get_results($query, ARRAY_A); - if ($results) { - foreach ($results as $ID => $V) - $ZdmlCache['Languages'][$V['LangPermalink']]=$V['LanguageID']; - } - } - else { - foreach ($ZdmlCache['Languages'] as $Permalink => $LangID) { - $results[$i]['LangPermalink']=$Permalink; - $results[$i]['LanguageID']=$LangID; - $i++; - } - } - if ($results) { - foreach ($results as $ID => $Lang) { - $regexp.=$Lang['LangPermalink']."|"; - } - $regexp=substr($regexp, 0, -1); - } - $QUERY=get_permalink($post_id); - if ($results) foreach ($results as $ID => $row) { - if (get_option($permalink_default)=="no") { - $regexp=""; - if ($results) { - foreach ($results as $ID => $Lang) { - if ($Lang['LanguageID']!=$ZdmlCache['DefLang']) $regexp.=$Lang['LangPermalink']."|"; - } - $regexp=substr($regexp, 0, -1); - } - if ($wp_rewrite->using_permalinks()) { - if ($ZdmlCache['DefLang']==$row['LanguageID']) $QUERY=preg_replace("`".get_bloginfo('url')."\/($regexp)\/(.*)`U",get_bloginfo('url')."/${3}",$QUERY); - else { - if ($locale==$ZdmlCache['DefLang']) { - $QUERY=preg_replace("`".get_bloginfo('url')."\/(.*)`U",get_bloginfo('url').'/'.$row['LangPermalink']."/${2}",$QUERY); - } else $QUERY=preg_replace("`".get_bloginfo('url')."\/($regexp)\/(.*)`U",get_bloginfo('url').'/'.$row['LangPermalink']."/${3}",$QUERY); - } - } else { - if ($ZdmlCache['DefLang']==$row['LanguageID']) $QUERY=preg_replace("`(".get_bloginfo('url')."\/.*)&lang=($regexp)(.*)`U",'${1}'."${3}",$QUERY); - else { - if ($locale==$ZdmlCache['DefLang']) { - $QUERY=preg_replace("`(".get_bloginfo('url')."\/.*)$`U",'${1}&lang='.$row['LangPermalink'],$QUERY); - } else $QUERY=preg_replace("`(".get_bloginfo('url')."\/.*lang=)($regexp)(.*)`U",'${1}'.$row['LangPermalink']."${3}",$QUERY); - } - } - } else { - if ($wp_rewrite->using_permalinks()) { - if ($QUERY!=get_bloginfo('url').'/') $QUERY=preg_replace("`".get_bloginfo('url')."\/($regexp)\/(.*)`U",get_bloginfo('url').'/'.$row['LangPermalink']."/${3}",$QUERY); - else $QUERY.=$row['LangPermalink'].'/'; - } else { - $QUERY=preg_replace("`(".get_bloginfo('url')."\/.*lang=)($regexp)(.*)`U",'${1}'.$row['LangPermalink']."${3}",$QUERY); - } - } - if ((zd_multilang_is_translated($post_id,$row['LanguageID']))&&($locale!=$row['LanguageID'])) { - $retour.=""; - $retour.=''; - if (get_option($show_flags_option)=="show") $retour.=''.$ZdmlCache['LanguageNames'][$row['LangPermalink']].''; - if (get_option($show_languages_option)=="show") $retour.=$ZdmlCache['LanguageNames'][$row['LangPermalink']]; - $retour.=''; - $retour.=''; - } - } - $retour.=''; - return $retour; - } - return ""; -} - -/******** Short Circuit Options ********/ -function zd_multilang_blogname($value) { - $v=zd_multilang_option("blogname"); - if ($v) return $v; - return $value; -} -function zd_multilang_blogdescription($value) { - $v=zd_multilang_option("blogdescription"); - if ($v) return $v; - return $value; -} - -function zd_multilang_option($optionname) { - global $locale, $ZdmlCache; - return $ZdmlCache['Options'][$locale][$optionname]; -} - - -/******* Widgets *******/ - -function zd_multilang_menu($show_name=true, $show_flags=true) { - global $wpdb,$wp_rewrite,$locale; // ... MG - Oct. 27, 2008 - need locale for check below ... - $PluginDIR = get_bloginfo('wpurl').'/'.PLUGINDIR . '/' . dirname(plugin_basename (__FILE__)); - $language_table= $wpdb->prefix.'zd_ml_langs'; - - $query="SELECT * FROM $language_table ORDER BY LanguageName"; - $results=$wpdb->get_results($query, ARRAY_A); - - if ($results) { - foreach ($results as $ID => $Lang) { - $regexp.=$Lang['LangPermalink']."|"; - } - $regexp=substr($regexp, 0, -1); - } - $retour=""; - if ($results) foreach ($results as $ID => $row) { - if ($wp_rewrite->using_permalinks()) { // ... MG - Oct. 27, 2008 - not on the home page when switching language - deal with it ... - if ( is_front_page() && !is_paged() ) $QUERY=get_bloginfo('url').'/'.$row['LangPermalink'].'/'; - else $QUERY=str_replace('/'.substr($locale,0,2).'/', '/'.$row['LangPermalink'].'/', $_SERVER['REQUEST_URI']); - } else { - if ( is_front_page() && !is_paged() ) $QUERY=get_bloginfo('url').'/?lang='.$row['LangPermalink']; - else $QUERY=str_replace('lang='.substr($locale,0,2), 'lang='.$row['LangPermalink'], $_SERVER['REQUEST_URI']); - } - if ( $locale != $row['LanguageID'] ) {// ... MG - Oct. 27, 2008 - no need to display the flag for active language ... - $retour.='
  • '; - if ($show_flags) $retour.=''; - if ($show_name) $retour.=' '.$row['LanguageName']; - $retour.='
  • '; - } - } - return $retour; -} - -function zd_multilang_widget($args) { - global $ZdmlCache; - global $wpdb,$wp_rewrite; - global $insert_lang_switch_option,$insert_lang_switch_option,$show_flags_option,$show_languages_option,$lang_switcher_class_option,$permalink_default, $locale; - $PluginDIR = get_bloginfo('wpurl').'/'.PLUGINDIR . '/' . dirname(plugin_basename (__FILE__)); - $language_table= $wpdb->prefix.'zd_ml_langs'; - - extract($args); - $WidgetTitle=get_option('zdml_widget_title'); - $WidgetOptions=get_option('zdml_widget_options'); - if (!$WidgetTitle) echo $before_widget.$before_title.__('Language','zd_multilang').$after_title; - else echo $before_widget.$before_title.$WidgetTitle.$after_title; - - echo '
      '; - echo zd_multilang_menu($WidgetOptions,get_option('zdml_widget_options_flag')); - echo '
    '; - - echo $after_widget; -} - -function zd_multilang_widget_options() { - global $ZdmlCache; - global $wpdb; - if ((isset($_POST['zdml_widget_title']))||(isset($_POST['zdml_sname']))) { - update_option('zdml_widget_title',$_POST['zdml_widget_title']); - $Options=($_POST['zdml_sname']=='on') ? '1' : '0'; - update_option('zdml_widget_options',$Options); - $Options=($_POST['zdml_sflag']=='on') ? '1' : '0'; - update_option('zdml_widget_options_flag',$Options); - } - $WidgetTitle=get_option('zdml_widget_title'); - $WidgetOptions=(get_option('zdml_widget_options')==1)? 'checked="checked"': ''; - $WidgetFlagOptions=(get_option('zdml_widget_options_flag')==1)? 'checked="checked"': ''; - echo '

    '; - echo '

    '; - echo '

    '; -} - - -/** comments */ -/** Author of this section Pau Sanchez **/ - - /** - * When a new comment is created, we should add it to the database, no matter if it has been approved or not - */ - function zd_multilang_insert_comment ($comment_id, $comment) { - global $locale, $wpdb; - $commenttrans=$wpdb->prefix.'zd_ml_comments'; - - // escape comment pulled from DB - $post_id = $comment->comment_post_ID; - - $wpdb->query( $wpdb->prepare("INSERT INTO $commenttrans (comment_id, post_id, LanguageID) VALUES (%d, %d, %s)", $comment_id, $post_id, $locale) ); - return true; - } - - /** - * When the post is deleted, we should delete it from the database - */ - function zd_multilang_delete_comment ($comment_id) { - global $locale, $wpdb; - $commenttrans=$wpdb->prefix.'zd_ml_comments'; - $wpdb->query( $wpdb->prepare("DELETE FROM $commenttrans WHERE comment_ID = %d LIMIT 1", $comment_id) ); - return true; - } - - /** - * Filter comments for the wp-content themes only (for the current language), not for the admin - */ - function zd_multilang_comments_array ($comments, $post_id) - { - global $locale, $wpdb, $keep_separate_comments; - - if (empty ($comments) || !is_array ($comments) || (get_option($keep_separate_comments) != 'yes')) - return $comments; - - $commenttrans=$wpdb->prefix.'zd_ml_comments'; - - // get ALL comments for current post, no matter the language - // this is to allow compability with old posts before installing the plugin - $query=$wpdb->prepare ("SELECT * FROM $commenttrans WHERE post_id = %d", $post_id); - $results=$wpdb->get_results($query, ARRAY_A); - - // no i18n comments? - if ($results === NULL) - return $comments; - - // create a map of comment IDs written in current language - // and another list of comments written in any other language (it will make sense later) - $commentsInLocale = array(); - $commentsNotInLocale = array(); - foreach ($results as $row) { - if (strcasecmp ($row['LanguageID'], $locale) == 0) - $commentsInLocale[] = $row ['comment_id']; - else - $commentsNotInLocale[] = $row ['comment_id']; - } - - // now generate the new list of commets (please note that comments is an array of objects) - $oldComments = $comments; - $comments = array (); - - foreach ($oldComments as $comment) - { - // if the comment is written in the current $locale OR we have no information - // about which language was used (not in our table), display comment - if ( - in_array ($comment->comment_ID, $commentsInLocale) || - !in_array ($comment->comment_ID, $commentsNotInLocale) // this makes the plugin compatible with old comments - ) - { - $comments [] = $comment; - } - } - - // intersect posts in current language with comments provided - return $comments; - } - - /** - * This is an internal function, be careful to avoid calling this function if it's not needed - * Returns the number of comments in current locale or FALSE if it could not retrieve the number of comments - * (only when keep_separate_comments = false and no $Post is passed) - */ - function zd_multilang_get_comment_count ($post_id, $Post = NULL) - { - global $locale, $wpdb, $keep_separate_comments; - - // do not keep separate comments - if (get_option($keep_separate_comments) != 'yes') { - if ($Post !== NULL) { - return $Post->comment_count; - } - - // in theory this should never happen - return false; - } - - $commenttrans = $wpdb->prefix.'zd_ml_comments'; - - // check if it's the admin interface => in the admin interface show the actual number of comments (no matter the language) - $isAdminInterface = (strpos ($_SERVER['PHP_SELF'], '/wp-admin/') !== false); - if ($isAdminInterface) { - if ($Post === NULL) { - $Post = get_post ($post_id); - if ($Post === NULL) - return 0; - } - return $Post->comment_count; - } - - // this is a bit tricky, it could be optimized, but will be clearer if left seprate - $comment_count = 0; - - // 1st sum all comments in current language - $query=$wpdb->prepare ("SELECT COUNT(*) AS total FROM $commenttrans WHERE post_id = %d AND LanguageID = %s", $post_id, $locale); - $results=$wpdb->get_results($query, ARRAY_A); - if ($results !== NULL) - $comment_count += $results[0]['total']; - - // 2nd sum all comments that are not available in any language - $query=$wpdb->prepare ( - "SELECT COUNT(*) AS total FROM wp_comments AS c1 WHERE (comment_post_ID = %d) AND NOT EXISTS (SELECT * FROM wp_zd_ml_comments AS c2 WHERE c1.comment_ID = c2.comment_id)", - $post_id - ); - $results=$wpdb->get_results($query, ARRAY_A); - if ($results !== NULL) - $comment_count += $results[0]['total']; - - return $comment_count; - } - - // filter that returns the appropriate number of comments (themes usually use comments_number function) - function zd_multilang_get_comments_number($count) - { - global $id; - $comment_count = zd_multilang_get_comment_count($id); - return ($comment_count === false ? $count : $comment_count); - } - - /** misc */ - - // function to return the current locale (to avoid using global variables) - function zd_multilang_get_locale () { - global $locale; - return $locale; - } - -function zd_multilang_initwidget() { - global $ZdmlCache; - if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') ) - return; - register_sidebar_widget(array('Zd Multilang','widgets'),'zd_multilang_widget'); - register_widget_control(array('Zd Multilang', 'widgets'), 'zd_multilang_widget_options'); -} -add_action('widgets_init', 'zd_multilang_initwidget'); - -?>