%PDF- %PDF-
Direktori : /var/www/pn/beta/64801_wp-content/plugins/wysija-newsletters/helpers/ |
Current File : /var/www/pn/beta/64801_wp-content/plugins/wysija-newsletters/helpers/wp_tools.php |
<?php defined('WYSIJA') or die('Restricted access'); class WYSIJA_help_wp_tools extends WYSIJA_object{ function __construct(){ parent::__construct(); } /** * add wysija's default capabilities to the admin and super admin roles */ function set_default_rolecaps(){ //add role capabilities //get the "administrator" role object $rolesadmin=array('administrator','super_admin'); foreach($rolesadmin as $roladm){ $role = get_role($roladm); if(!$role) continue; //add wysija's capabilities to it so that other widgets can reuse it $arr=array('wysija_newsletters','wysija_subscribers','wysija_config','wysija_theme_tab','wysija_style_tab', 'wysija_stats_dashboard'); foreach($arr as $arrkey){ if(!$role->has_cap($arrkey)) $role->add_cap( $arrkey ); } } } /** * get an array of WordPress roles with a numbered index * @global type $wp_roles * @return array */ function wp_get_roles() { //Careful WordPress global global $wp_roles; $all_roles = $wp_roles->roles; $editable_roles = apply_filters('editable_roles', $all_roles); $rolearray=array(); $sum=6; foreach($editable_roles as $keyrol => $roledetails){ switch($keyrol){ case 'super_admin': $index=1; break; case 'administrator': $index=2; break; case 'editor': $index=3; break; case 'author': $index=4; break; case 'contributor': $index=5; break; case 'subscriber': $index=6; break; default: $sum++; $index=$sum; } $rolearray[$index]=array('key'=>$keyrol,'name'=>$roledetails['name']); } ksort($rolearray); return $rolearray; } /** * get an array of WordPress roles with a special capability of that role as index * @global type $wp_roles * @return array */ function wp_get_editable_roles() { //Careful WordPress global global $wp_roles; $all_roles = $wp_roles->roles; $editable_roles = apply_filters('editable_roles', $all_roles); $possible_values=array(); foreach ( $all_roles as $role => $details ) { $name = translate_user_role($details['name'] ); switch($role){ case 'administrator': $keyrole='switch_themes'; break; case 'editor': $keyrole='moderate_comments'; break; case 'author': $keyrole='upload_files'; break; case 'contributor': $keyrole='edit_posts'; break; case 'subscriber': $keyrole='read'; break; default: $keyrole=$role; } $possible_values[$keyrole]=$name; //$possible_values[key($details['capabilities'])]=$name; } return $possible_values; } /** * get roles by name ? Not so sure why use that function * @global type $wp_roles * @return array */ function wp_get_all_roles() { //Careful WordPress global global $wp_roles; $all_roles = $wp_roles->get_names(); return $all_roles; } /** * check whether there is a caching plugin active on this site, we were using that function at some point, it can be useful * @global type $cache_enabled * @global type $super_cache_enabled * @return boolean */ function is_caching_active(){ $checkPlugins=array( 'wp-super-cache/wp-cache.php' , 'w3-total-cache/w3-total-cache.php', 'quick-cache/quick-cache.php', 'hyper-cache/plugin.php' ); foreach($checkPlugins as $pluginFileName){ if(WYSIJA::is_plugin_active($pluginFileName)){ switch($pluginFileName){ case 'wp-super-cache/wp-cache.php': global $cache_enabled, $super_cache_enabled; if(!(WP_CACHE && $cache_enabled && $super_cache_enabled)) continue(2); break; case 'w3-total-cache/w3-total-cache.php': $config = & w3_instance("W3_Config"); if(!(WP_CACHE && $config->get_boolean("pgcache.enabled"))) continue(2); break; case 'quick-cache/quick-cache.php': if(!(WP_CACHE && $GLOBALS["WS_PLUGIN__"]["qcache"]["o"]["enabled"])) continue(2); break; case 'hyper-cache/plugin.php': if(!(WP_CACHE)) continue(2); break; default: continue(2); } return true; } } return false; } /** * extends the get_permalink of WordPress since at the beginning we had a lot of problems with people who didn't have pretty urls activated etc.. * @param int $pageid * @param array $params pass an array of parameters to the url * @param boolean $simple leading to the home not sure in which case we need that again * @return string */ function get_permalink($pageid,$params=array(),$simple=false){ $post = get_post($pageid); $url=get_permalink($post); if(!$url){ //we need to recreate the subscription page $values=array(); $helperInstall=WYSIJA::get('install','helper'); $helperInstall->createPage($values); $modelConf=WYSIJA::get('config','model'); $modelConf->save($values); $post = get_post($values['confirm_email_link']); $url=get_permalink($post); } $paramsquery=parse_url($url); if($params!==false) $params[$post->post_type]=$post->post_name; //make a simple url leading to the home if($simple){ $url=site_url(); // make sure we have a trailing slash at the end if($url{strlen($url) - 1} !== '/') $url .= '/'; } if(isset($paramsquery['query'])){ $myparams=explode('&',$paramsquery['query']); //get the param from the url obtain in permalink and transfer it to our url foreach($myparams as $paramvalu){ $splitkeyval=explode('=',$paramvalu); $params[$splitkeyval[0]]=$splitkeyval[1]; } } // make sure we include the port if it's specified if(isset($paramsquery['port']) && strlen(trim($paramsquery['port'])) > 0) { $port = ':'.(int)$paramsquery['port']; } else { $port = ''; } // build url $url = sprintf('%s://%s%s%s', $paramsquery['scheme'], $paramsquery['host'], $port, $paramsquery['path']); if($params) { if(strpos($url, '?') !== false) $charStart='&'; else $charStart='?'; $url.=$charStart; $paramsinline=array(); foreach($params as $k => $v){ if(is_array($v)) $v = http_build_query(array($k => $v)); $paramsinline[]=$k.'='.$v; } $url.=implode('&',$paramsinline); } // Transform relative URLs in Absolute URLs (Protect from external URL transforming plugins) $parsed_url = parse_url($url); if (empty($parsed_url['scheme'])) { $url = get_bloginfo('url') . $url; } return $url; } /** * return a list of post types * @return mixed */ function get_post_types($return_type = 'objects') { $args=array( 'public' => true, '_builtin' => false, 'show_in_menu'=>true, 'show_ui'=>true, ); return get_post_types($args, $return_type); } /** * return a list of post types * @return mixed */ function get_post_statuses(){ return array_merge(get_post_statuses(), array('future'=>__('Scheduled',WYSIJA))); } /** * get a multidimensionnal array that returns the categories per CPT */ function get_categories() { // For now we wont need the post types as we only "post" $post_types = get_post_types( array(), 'names' ); // Grab all taxonomies $taxonomies = get_object_taxonomies( $post_types, 'object' ); // Get all terms from the taxonomies $terms = get_terms( array_keys( $taxonomies ), array( 'order_by' => 'name', 'show_count' => false, 'hide_empty' => false, ) ); // backwards compatibility later lets use `term_id` foreach ( $terms as $key => $term ){ $term->id = $term->term_id; $terms[$key] = (array) $term; } // Create a response with the needed structure $response = array(); // If the Post Type has categories associated it will have the terms foreach ( $post_types as $post_type ){ foreach( $terms as $term ) { if ( ! in_array( $post_type, $taxonomies[ $term['taxonomy'] ]->object_type ) ){ continue; } $term['name'] = esc_attr( $taxonomies[ $term['taxonomy'] ]->labels->singular_name . ": " . $term['name'] ); $response[ $post_type ][] = $term; } if ( isset( $response[ $post_type ] ) && is_array( $response[ $post_type ] ) ) { usort( $response[ $post_type ], array( $this, 'sort_by_name' ) ); } } return $response; } function get_post_category_ids( $post = null ) { if ( ! is_object( $post ) || ! is_a( $post, 'WP_Post' ) ) { return array(); } return wp_get_post_terms( $post->ID, get_object_taxonomies( $post->post_type ), array( 'fields' => 'ids' )); } function get_post_categories( $post = null ) { if ( ! is_array( $post ) || empty($post['ID'] )) { return array(); } $post_categories = get_the_category($post['ID']); $post_categories_names = array(); foreach ($post_categories as $post_category) { $post_categories_names[] = $post_category->name; } return $post_categories_names; } }