$ddNormalDisplay[DD_DISPLAY_OPTION]) * @param $ddCategoryOptions -> $ddNormalDisplay[DD_CATEORY_OPTION] * */ function dd_IsDisplayOptionAllow($ddDisplayOptions, $ddCategoryOptions){ //get display option $dd_display_home = $ddDisplayOptions[DD_DISPLAY_OPTION_HOME]; $dd_display_page = $ddDisplayOptions[DD_DISPLAY_OPTION_PAGE]; $dd_display_post = $ddDisplayOptions[DD_DISPLAY_OPTION_POST]; $dd_display_category = $ddDisplayOptions[DD_DISPLAY_OPTION_CAT]; $dd_display_tag = $ddDisplayOptions[DD_DISPLAY_OPTION_TAG]; $dd_display_archive = $ddDisplayOptions[DD_DISPLAY_OPTION_ARCHIVE]; //TODO: can it display in feed? $dd_display_feed = DD_DISPLAY_OFF; if(is_home() && ($dd_display_home==DD_DISPLAY_ON)){ return true; }else if(is_feed() && ($dd_display_feed==DD_DISPLAY_ON)){ return true; }else if(is_single() && ($dd_display_post==DD_DISPLAY_ON)){ //check category allow return dd_IsCategoryAllow($ddCategoryOptions); }else if(is_category() && ($dd_display_category==DD_DISPLAY_ON)){ return true; }else if(is_page() && ($dd_display_page==DD_DISPLAY_ON)){ return true; }else if(is_tag() && ($dd_display_tag==DD_DISPLAY_ON)){ return true; }else if(is_archive() && ($dd_display_archive==DD_DISPLAY_ON)){ return true; }else{ return false; } } /** * Genaric function to get text base on id and key * @param $id - array key * @param $key - array key */ function dd_GetText($id, $key){ if($id==DD_DISPLAY_OPTION){ switch($key){ case DD_DISPLAY_OPTION_HOME : return DD_DISPLAY_OPTION_LABEL_HOME; break; case DD_DISPLAY_OPTION_POST : return DD_DISPLAY_OPTION_LABEL_POST; break; case DD_DISPLAY_OPTION_PAGE : return DD_DISPLAY_OPTION_LABEL_PAGE; break; case DD_DISPLAY_OPTION_CAT : return DD_DISPLAY_OPTION_LABEL_CAT; break; case DD_DISPLAY_OPTION_TAG : return DD_DISPLAY_OPTION_LABEL_TAG; break; case DD_DISPLAY_OPTION_ARCHIVE : return DD_DISPLAY_OPTION_LABEL_ARCHIVE; break; default: return DD_DEFAULT_TEXT; break; } }else if($id==DD_LINE_UP_OPTION){ switch($key){ case DD_LINE_UP_OPTION_SELECT_HORIZONTAL : return DD_LINE_UP_OPTION_LABEL_HORIZONTAL; break; case DD_LINE_UP_OPTION_SELECT_VERTICAL : return DD_LINE_UP_OPTION_LABEL_VERTICAL; break; default: return DD_DEFAULT_TEXT; break; } } } /** * Merge two arrays, $newArray's new key will remain, but value will override by $mergeArray * $a = array('abcArray' => array('a'=>'1','b'=>'2','c'=>'3')); * $b = array('abcArray' => array('a'=>'1','b'=>'3')); * $result = dd_array_merge_subkey($a,$b); * $result = array('abcArray' => array('a'=>'1','b'=>'3','c'=>'3')); */ function dd_array_merge_subkey($newArray, $oldArray){ foreach(array_keys($newArray) as $key){ foreach(array_keys($newArray[$key]) as $subkey){ //echo '

' . $key . '-' . $subkey . '

'; if(isset($oldArray[$key][$subkey])){ $newArray[$key][$subkey] = $oldArray[$key][$subkey]; } } } return $newArray; } //initial the value function dd_initialIt(){ //http://codex.wordpress.org/Function_Reference/register_activation_hook dd_clear_form_global_config(); dd_clear_form_normal_display(); dd_clear_form_float_display(); } //global config, clear form function dd_clear_form_global_config($type=""){ global $ddGlobalConfig; $old_ddGlobalConfig = get_option(DD_GLOBAL_CONFIG); if($old_ddGlobalConfig==DD_EMPTY_VALUE || $type==DD_FUNC_TYPE_RESET){ //reset all value update_option(DD_GLOBAL_CONFIG, $ddGlobalConfig); }else{ //in case new key is added during plugin initilization, merge new and old array $result = dd_array_merge_subkey($ddGlobalConfig,$old_ddGlobalConfig); update_option(DD_GLOBAL_CONFIG, $result); } } //normal display, clear form function dd_clear_form_normal_display($type=""){ global $ddNormalDisplay,$ddNormalButtons; /********* Normal Display **************/ $old_ddNormalDisplay = get_option(DD_NORMAL_DISPLAY_CONFIG); if($old_ddNormalDisplay==DD_EMPTY_VALUE || $type==DD_FUNC_TYPE_RESET){ //reset all value update_option(DD_NORMAL_DISPLAY_CONFIG, $ddNormalDisplay); }else{ //in case new key is added during plugin initilization, merge new and old array $result = dd_array_merge_subkey($ddNormalDisplay,$old_ddNormalDisplay); update_option(DD_NORMAL_DISPLAY_CONFIG, $result); } if(get_option(DD_NORMAL_BUTTON)==DD_EMPTY_VALUE || $type==DD_FUNC_TYPE_RESET){ //reset all value update_option(DD_NORMAL_BUTTON, $ddNormalButtons); }else{ //in case any new class is added during plugin initilization, //new class properties will not added until the save operation $old_ddNormalButtons = get_option(DD_NORMAL_BUTTON); $result = dd_array_merge_subkey($ddNormalButtons,$old_ddNormalButtons); //add for final display foreach($result[DD_NORMAL_BUTTON_DISPLAY] as $key => $value){ if(($value->getOptionAppendType()!=DD_SELECT_NONE)){ $result[DD_NORMAL_BUTTON_FINAL][$key] = $value; } } update_option(DD_NORMAL_BUTTON, $result); } } //float display, clear form function dd_clear_form_float_display($type=""){ global $ddFloatDisplay,$ddFloatButtons; /********* Float Display **************/ $old_ddFloatDisplay = get_option(DD_FLOAT_DISPLAY_CONFIG); if($old_ddFloatDisplay==DD_EMPTY_VALUE || $type==DD_FUNC_TYPE_RESET){ //reset all value update_option(DD_FLOAT_DISPLAY_CONFIG, $ddFloatDisplay); }else{ //in case new key is added during plugin initilization, merge new and old array $result = dd_array_merge_subkey($ddFloatDisplay,$old_ddFloatDisplay); update_option(DD_FLOAT_DISPLAY_CONFIG, $result); } if(get_option(DD_FLOAT_BUTTON)==DD_EMPTY_VALUE || $type==DD_FUNC_TYPE_RESET){ //reset all value update_option(DD_FLOAT_BUTTON, $ddFloatButtons); }else{ //in case any new class is added during plugin initilization, //new class properties will not added until the save operation $old_ddFloatButtons = get_option(DD_FLOAT_BUTTON); $result = dd_array_merge_subkey($ddFloatButtons,$old_ddFloatButtons); //add for final display foreach($result[DD_FLOAT_BUTTON_DISPLAY] as $key => $value){ if(($value->getOptionAjaxLeftFloat()!=DD_DISPLAY_OFF)){ $result[DD_FLOAT_BUTTON_FINAL][$key] = $value; } } update_option(DD_FLOAT_BUTTON, $result); } } /** * Validate whether allow buttons to display * @return true page excluded, do not display */ function dd_isThisPageExcluded($content){ if (preg_match("/" . DD_DISABLED . "/i", $content)) { return true; } else { return false; } } /** * Check if the current category allow to display button * @param $category_options -> $ddNormalDisplay[DD_CATEORY_OPTION]) */ function dd_IsCategoryAllow($category_options){ $catOptions = $category_options[DD_CATEORY_OPTION_RADIO]; $catOptionsInclude = $category_options[DD_CATEORY_OPTION_TEXT_INCLUDE]; $catOptionsExclude = $category_options[DD_CATEORY_OPTION_TEXT_EXCLUDE]; if($catOptions == DD_CATEORY_OPTION_RADIO_INCLUDE){ return dd_IsCategoryInclude($catOptionsInclude); }else if($catOptions == DD_CATEORY_OPTION_RADIO_EXCLUDE){ return !dd_IsCategoryExclude($catOptionsExclude); }else{ return dd_IsCategoryInclude($catOptionsInclude); } } /** * * @param $category_allow - categories allow to display * @return true = allow, false = disallow */ function dd_IsCategoryInclude($category_allow){ $category_allow = trim(strtolower($category_allow)); //echo 'Category allow : ' . $category_allow; if($category_allow == '' || ($category_allow==strtolower(DD_ALL_VALUE))){ return true; } $cats_allow = explode(",", strtolower($category_allow)); foreach((get_the_category()) as $post_category) { //echo '
category name : ' . $post_category->cat_name; foreach($cats_allow as $cat_allow){ $post_category_name = strtolower($post_category->cat_name); //echo '
Category allow loop : ' . $cat_allow . '
current category name : ' . $post_category_name; if($post_category_name==trim($cat_allow)){ //echo ' match'; return true; }else{ //echo ' not match'; } } } return false; } /** * * @param $category_disallow - categories disallow to display * @return true = disallow, false = allow */ function dd_IsCategoryExclude($category_disallow){ $category_disallow = trim(strtolower($category_disallow)); //echo 'Category disallow : ' . $category_disallow; if($category_disallow == '' || ($category_disallow==strtolower(DD_NONE_VALUE))){ return false; } $cats_disallow = explode(",", strtolower($category_disallow)); foreach((get_the_category()) as $post_category) { //echo '
category name : ' . $post_category->cat_name; foreach($cats_disallow as $cat_disallow){ $post_category_name = strtolower($post_category->cat_name); //echo '
Category allow loop : ' . $cat_disallow . '
current category name : ' . $post_category_name; if($post_category_name==trim($cat_disallow)){ //echo ' match'; return true; }else{ //echo ' not match'; } } } return false; } function get_server() { $protocol = 'http'; if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') { $protocol = 'https'; } $host = $_SERVER['HTTP_HOST']; $baseUrl = $protocol . '://' . $host; if (substr($baseUrl, -1)=='/') { $baseUrl = substr($baseUrl, 0, strlen($baseUrl)-1); } return $baseUrl; } function getCurPageURL() { $pageURL = 'http'; if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } return $pageURL; } //get normal display settings $ddNormalDisplayTemp = get_option(DD_NORMAL_DISPLAY_CONFIG); //if diggdigg excerp is allow if($ddNormalDisplayTemp[DD_EXCERP_OPTION][DD_EXCERP_OPTION_DISPLAY]==DD_DISPLAY_ON){ remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'dd_exclude_js_trim_excerpt'); } //clone from wordpress 3.0.1 wp_trim_excerpt, add extra js filter function dd_exclude_js_trim_excerpt($text) { // Only generate excerpt if it does not exist if($text==''){ $text = get_the_content(''); $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); //exclude js script , in order to display button in the_excerpt() mode $text = preg_replace('@]*?>.*?@si', '', $text); //exclude css , in order to display ajax float button in the_excerpt() mode $text = preg_replace('@]*?>.*?@si', '', $text); $text = str_replace(']]>', ']]>', $text); $text = strip_tags($text); $excerpt_length = apply_filters('excerpt_length', 55); $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]'); $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY); if ( count($words) > $excerpt_length ) { array_pop($words); $text = implode(' ', $words); $text = $text . $excerpt_more; } else { $text = implode(' ', $words); } } return $text; } /*************** Digg Digg Admin menu ***************/ add_action('admin_init', 'dd_admin_init'); add_action('admin_menu', 'dd_admin_menu'); /** * Menu Handling */ function dd_admin_menu() { $page = add_menu_page('Digg Digg', 'Digg Digg', 'manage_options', 'dd_button_setup'); add_submenu_page('dd_button_setup', 'Digg Digg --> Global Configuration', 'Global Config', 'manage_options', 'dd_button_setup', 'dd_button_global_setup'); add_submenu_page('dd_button_setup', 'Digg Digg --> Normal Button Configuration ', 'Normal Display', 'manage_options', 'dd_button_normal_setup', 'dd_button_normal_setup'); add_submenu_page('dd_button_setup', 'Digg Digg --> Floating Button Configuration', 'Floating Display', 'manage_options', 'dd_button_floating_setup', 'dd_button_floating_setup'); add_submenu_page('dd_button_setup', 'Digg Digg --> Toolbar Configuration', 'Toolbar Display', 'manage_options', 'dd_button_toolbar_setup', 'dd_button_toolbar_setup'); add_submenu_page('dd_button_setup', 'Digg Digg --> Manual Placement', 'Manual Placement', 'manage_options', 'dd_button_manual_setup', 'dd_button_manual_setup'); add_submenu_page('dd_button_setup', 'Digg Digg --> FAQ', 'FAQ', 'manage_options', 'dd_button_faq_setup', 'dd_button_faq_setup'); /* Load css style for all digg digg menu page */ add_action('admin_print_styles', 'dd_admin_styles'); } //admin page function dd_admin_init() { wp_register_style('dd_admin_style', DD_PLUGIN_URL . '../css/diggdigg-style-admin.css'); } function dd_admin_styles(){ wp_enqueue_style('dd_admin_style'); } /*************** Digg Digg Admin menu ***************/ //not implement yet //make sure wordpress > 2.3 and PHP >= 5 function dd_check_version(){ global $wp_version; echo '

Current PHP version: ' . phpversion() . '

'; echo '

Current Wordpress version: ' . $wp_version . '

'; $exit_msg="

Digg Digg requires WordPress 2.3 or newer. Please update!

"; if (version_compare($wp_version,"2.3",">")) { exit ($exit_msg); } } ?>