JamesRathbun.com Sitemap and Navigation
 |
- index.php
- WordPress › ReadMe
- wp-activate.php
- 302 Found
- wp-blog-header.php
- wp-comments-post.php
- wp-config-sample.php
- wp-config.php
- wp-cron.php
- <?php printf( __('Links for %s'), esc_attr(get_bloginfo('name', 'display')) ); ?>
- wp-load.php
- <?php bloginfo('name'); ?> › <?php echo $title; ?>
- wp-mail.php
- wp-pass.php
- wp-register.php
- wp-settings.php
- wp-signup.php
- wp-trackback.php
- xmlrpc.php
- index.php
- index.php
- advanced-cache.php
- wp-cache-config.php
- /wp-content/cache/
- wp-cache-52cb25a0ff98806afd65efddd32b6575.html

- wp-cache-a8a28fc732d525a4451bdd05d6ff9954.html
- /wp-content/cache/meta/
- /wp-content/cache/supercache/
- Welcome to James Rathbun.com
- /wp-content/cache/supercache/192.168.170.1/
- /wp-content/cache/supercache/65.40.115.134/
- /wp-content/cache/supercache/agaxuiwnmp/
- /wp-content/cache/supercache/ahefbhtyzo/
- /wp-content/cache/supercache/ailljusvho/
- /wp-content/cache/supercache/akpzzcdmjb/
- /wp-content/cache/supercache/akzmdhdqyo/
- /wp-content/cache/supercache/axvoice/
- /wp-content/cache/supercache/aztwpkdbmu/
- /wp-content/cache/supercache/bgvkhabqtc/
- /wp-content/cache/supercache/breakc.om/
- /wp-content/cache/supercache/bxkiacrkoz/
- /wp-content/cache/supercache/cejrbjyrbf/
- /wp-content/cache/supercache/cfvghlzrib/
- /wp-content/cache/supercache/cgysinfedl/
- /wp-content/cache/supercache/crfafctyzx/
- /wp-content/cache/supercache/desdpmrfwl/
- /wp-content/cache/supercache/dgbvhkkssx/
- /wp-content/cache/supercache/dgcotlduvy/
- /wp-content/cache/supercache/djgxlksfqu/
- /wp-content/cache/supercache/dppwdthyuw/
- /wp-content/cache/supercache/dqfaojxxxm/
- /wp-content/cache/supercache/dsnlvvdscs/
- /wp-content/cache/supercache/dvlcrhsgzv/
- /wp-content/cache/supercache/dwjmwtrhht/
- /wp-content/cache/supercache/dwzkiududb/
- /wp-content/cache/supercache/dzlvqblpqz/
- /wp-content/cache/supercache/eddjphjcsa/
- /wp-content/cache/supercache/eesxxukcpz/
- /wp-content/cache/supercache/eiaqpsvehe/
- /wp-content/cache/supercache/ekackrvrxa/
- /wp-content/cache/supercache/eqzhnbmnbs/
- /wp-content/cache/supercache/faq.jamesrathbun.com/
- /wp-content/cache/supercache/faqwfouhih/
- /wp-content/cache/supercache/fatali.jamesrathbun.com/
- /wp-content/cache/supercache/fgkmfwwnkc/
- /wp-content/cache/supercache/fhjhamjejn/
- /wp-content/cache/supercache/fmawfhrtpe/
- /wp-content/cache/supercache/forum.therusticcraftsman.com/
- /wp-content/cache/supercache/fziktzchgb/
- /wp-content/cache/supercache/gate.jamesrathbun.com/
- /wp-content/cache/supercache/gfwprofzcv/
- /wp-content/cache/supercache/google.vom/
- /wp-content/cache/supercache/gyaxmiphvi/
- /wp-content/cache/supercache/gylqvojblb/
- /wp-content/cache/supercache/gyviexcezz/
- /wp-content/cache/supercache/hdyvgbkgvo/
- /wp-content/cache/supercache/hfwvzknqhy/
- /wp-content/cache/supercache/hjmucqkkbd/
- /wp-content/cache/supercache/hnrenejcst/
- /wp-content/cache/supercache/ibmfrpsbyi/
- /wp-content/cache/supercache/ihqakvzxmx/
- /wp-content/cache/supercache/ihuvwvqaai/
- /wp-content/cache/supercache/iietthqghr/
- /wp-content/cache/supercache/iptsjqifnz/
- /wp-content/cache/supercache/iqhjamlrrk/
- /wp-content/cache/supercache/irysuaqytw/
- /wp-content/cache/supercache/jaodrgpahg/
- /wp-content/cache/supercache/jbrmbicwts/
- /wp-content/cache/supercache/jddkkxgzrk/
- /wp-content/cache/supercache/jhsysoihbm/
- /wp-content/cache/supercache/jmqvophrkw/
- /wp-content/cache/supercache/jsqmyqyumk/
- /wp-content/cache/supercache/kadjeugrsq/
- /wp-content/cache/supercache/kdbnmkpqub/
- /wp-content/cache/supercache/kjnqbgvyau/
- /wp-content/cache/supercache/kqjdsvvxfl/
- /wp-content/cache/supercache/krjlfakuhd/
- /wp-content/cache/supercache/kwgaiwkkfg/
- /wp-content/cache/supercache/lairjyvazf/
- /wp-content/cache/supercache/lbodmrfoft/
- /wp-content/cache/supercache/ligswmqppy/
- /wp-content/cache/supercache/llfofpnpde/
- /wp-content/cache/supercache/lnyfwxwons/
- /wp-content/cache/supercache/lnzsclxdaq/
- /wp-content/cache/supercache/lodpvgpijg/
- /wp-content/cache/supercache/lovrooizkf/
- /wp-content/cache/supercache/lqddaasagw/
- /wp-content/cache/supercache/lqnvuokgsm/
- /wp-content/cache/supercache/mchddbowlf/
- /wp-content/cache/supercache/mckvmqiokw/
- /wp-content/cache/supercache/mnshejjzxa/
- /wp-content/cache/supercache/msgmkruarh/
- /wp-content/cache/supercache/mvlgukochv/
- /wp-content/cache/supercache/mwkbdzxlrf/
- /wp-content/cache/supercache/mxsfcclyiv/
- /wp-content/cache/supercache/nnvspiqxtm/
- /wp-content/cache/supercache/npcyossiby/
- /wp-content/cache/supercache/nqfxmkrffk/
- /wp-content/cache/supercache/nsnjhjvjiw/
- /wp-content/cache/supercache/osixazvzaw/
- /wp-content/cache/supercache/pbx.jamesrathbun.com/
- /wp-content/cache/supercache/povzzipkoy/
- /wp-content/cache/supercache/ppmpusnflu/
- /wp-content/cache/supercache/ppquqbnzsu/
- /wp-content/cache/supercache/ptncxxnsii/
- /wp-content/cache/supercache/pvkcenarha/
- /wp-content/cache/supercache/qqoalmfure/
- /wp-content/cache/supercache/ramjlivmdo/
- /wp-content/cache/supercache/ricegsvbzz/
- /wp-content/cache/supercache/risobzsxcd/
- /wp-content/cache/supercache/rrifmsrxeh/
- /wp-content/cache/supercache/rtfomoekio/
- /wp-content/cache/supercache/rtvylrbrmu/
- /wp-content/cache/supercache/rwmpyqekgq/
- /wp-content/cache/supercache/rycfsrtmrn/
- /wp-content/cache/supercache/sblxtxklhm/
- /wp-content/cache/supercache/schnaaps.therathbuns.net/
- /wp-content/cache/supercache/siuqslobcm/
- /wp-content/cache/supercache/siyospidlh/
- /wp-content/cache/supercache/sjqbtpffrk/
- /wp-content/cache/supercache/smtsmlhybj/
- /wp-content/cache/supercache/sonmupiwsy/
- /wp-content/cache/supercache/sxpitskgne/
- /wp-content/cache/supercache/sxypevtudi/
- /wp-content/cache/supercache/tbozwvimqa/
- /wp-content/cache/supercache/tdncivoxpw/
- /wp-content/cache/supercache/tkmhjvzrjd/
- /wp-content/cache/supercache/tlaudtuyzk/
- /wp-content/cache/supercache/tlexmchofg/
- /wp-content/cache/supercache/totlstwxka/
- /wp-content/cache/supercache/trakaotwsz/
- /wp-content/cache/supercache/ttsirlburp/
- /wp-content/cache/supercache/tzaiipblcu/
- /wp-content/cache/supercache/tzxfnhszmt/
- /wp-content/cache/supercache/uhbpwaqrgh/
- /wp-content/cache/supercache/uibdqktebd/
- /wp-content/cache/supercache/uoofxsbtze/
- /wp-content/cache/supercache/uwcmxyzddn/
- /wp-content/cache/supercache/uzkjcqlevw/
- /wp-content/cache/supercache/vieioramks/
- /wp-content/cache/supercache/vjsxrguhir/
- /wp-content/cache/supercache/vmgnygxnxa/
- /wp-content/cache/supercache/vuloursuvc/
- /wp-content/cache/supercache/vwhhdmcwue/
- /wp-content/cache/supercache/vxyzsnnyev/
- /wp-content/cache/supercache/woyyckscly/
- /wp-content/cache/supercache/wsmwgoefet/
- /wp-content/cache/supercache/www.JAMESRATHBUN.COM/
- /wp-content/cache/supercache/www.jamesrathbun.com/
- Welcome to James Rathbun.com

- /wp-content/cache/supercache/www.jamesrathbun.com/about/
- /wp-content/cache/supercache/www.jamesrathbun.com/feed/
- /wp-content/cache/supercache/www.jamesrathbun.com/phone-server-soup/
- /wp-content/cache/supercache/www.jamesrathbun.com/sorry-for-the-dust/
- /wp-content/cache/supercache/wzfkmrsrob/
- /wp-content/cache/supercache/xbjdzjxoye/
- /wp-content/cache/supercache/xbybymdtel/
- /wp-content/cache/supercache/xfmmnbjwba/
- /wp-content/cache/supercache/xghsobxyqc/
- /wp-content/cache/supercache/xllbhvjwdl/
- /wp-content/cache/supercache/xonzikkmju/
- /wp-content/cache/supercache/xpuxhbjaro/
- /wp-content/cache/supercache/xtllrkjzhd/
- /wp-content/cache/supercache/ydtwtosctk/
- /wp-content/cache/supercache/yfhrhjhsjz/
- /wp-content/cache/supercache/yfkzecykry/
- /wp-content/cache/supercache/ygjvngcskw/
- /wp-content/cache/supercache/yhvpzgywnz/
- /wp-content/cache/supercache/ynixmixjhj/
- /wp-content/cache/supercache/yokpaaarwd/
- /wp-content/cache/supercache/ypcwadpnzl/
- /wp-content/cache/supercache/ypdbejtqec/
- /wp-content/cache/supercache/yvjmgotehy/
- /wp-content/cache/supercache/yxuznpulpy/
- /wp-content/cache/supercache/yztetdmlab/
- /wp-content/cache/supercache/zcortzslqm/
- /wp-content/cache/supercache/zhsywfzpgv/
- /wp-content/cache/supercache/zictarmgzk/
- /wp-content/cache/supercache/zilrhauwsz/
- /wp-content/cache/supercache/zjthcfrofe/
- /wp-content/cache/supercache/zoeyjvztri/
- /wp-content/cache/supercache/zqimqignry/
- /wp-content/cache/supercache/zxfzwbfess/
- /wp-content/content/
- index.php
- index.php
- /wp-content/plugins/all-in-one-seo-pack/
- /wp-content/plugins/contact-form-7/
- /wp-content/plugins/google-analytics-for-wordpress/
- /wp-content/plugins/google-sitemap-generator/
- /wp-content/plugins/nucaptcha/
- /wp-content/plugins/seo-automatic-links/
- /wp-content/plugins/social-sharing-toolkit/
- /wp-content/plugins/wp-realtime-sitemap/
- /wp-content/plugins/wp-super-cache/
- index.php
- /wp-content/upgrade/
- /wp-content/uploads/
- /wp-content/uploads/2012/
- /wp-content/uploads/2012/01/
- /wp-includes/
- admin-bar.php
- atomlib.php
- author-template.php
- bookmark-template.php
- bookmark.php
- cache.php
- canonical.php
- capabilities.php
- category-template.php
- category.php
- class-IXR.php
- class-feed.php
- class-http.php
- class-json.php
- class-oembed.php
- class-phpass.php
- class-phpmailer.php
- class-pop3.php
- class-simplepie.php
- class-smtp.php
- class-snoopy.php
- class-wp-admin-bar.php
- class-wp-ajax-response.php
- class-wp-editor.php
- class-wp-error.php
- class-wp-http-ixr-client.php
- class-wp-walker.php
- '.stripslashes($post_data['post_title']).'
- class-wp.php
- class.wp-dependencies.php
- class.wp-scripts.php
- class.wp-styles.php
- comment-template.php
- comment.php
- compat.php
- cron.php
- default-constants.php
- default-filters.php
- default-widgets.php
- deprecated.php
- <?php if ( !is_singular() ) { $title = get_the_title($comment_post->ID); $title = apply_filters('the_title_rss', $title); printf(ent2ncr(__('Comment on %1$s by %2$s')), $title, get_comment_author_rss()); } else { printf(ent2ncr(__('By: %s')), get_comment_author_rss()); } ?>
- feed-atom.php
- <?php bloginfo_rss('name'); wp_title_rss(); ?>
- <?php bloginfo_rss('name'); wp_title_rss(); ?>
- <?php if ( is_singular() ) printf(ent2ncr(__('Comments on: %s')), get_the_title_rss()); elseif ( is_search() ) printf(ent2ncr(__('Comments for %s searching on %s')), get_bloginfo_rss( 'name' ), esc_attr($wp_query->query_vars['s'])); else printf(ent2ncr(__('Comments for %s')), get_bloginfo_rss( 'name' ) . get_wp_title_rss()); ?>
- <?php bloginfo_rss('name'); wp_title_rss(); ?>
- feed.php
- formatting.php
- (.+?)<\/title>/is', $content, $matchtitle ) ) { $post_title = $matchtitle[1]; } else { $post_title = $post_default_title; } return $post_title;}/** * Retrieve the post category or categories from XMLRPC XML. * * If the category element is not found, then the default post category will be * used. The return type then would be what $post_default_category. If the * category is found, then it will always be an array. * * @package WordPress * @subpackage XMLRPC * @since 0.71 * * @global string $post_default_category Default XMLRPC post category. * * @param string $content XMLRPC XML Request content * @return string|array List of categories or category name. */function xmlrpc_getpostcategory( $content ) { global $post_default_category; if ( preg_match( '/<category>(.+?)<\/category>/is', $content, $matchcat ) ) { $post_category = trim( $matchcat[1], ',' ); $post_category = explode( ',', $post_category ); } else { $post_category = $post_default_category; } return $post_category;}/** * XMLRPC XML content without title and category elements. * * @package WordPress * @subpackage XMLRPC * @since 0.71 * * @param string $content XMLRPC XML Request content * @return string XMLRPC XML Request content without title and category elements. */function xmlrpc_removepostdata( $content ) { $content = preg_replace( '/<title>(.+?)<\/title>/si', '', $content ); $content = preg_replace( '/<category>(.+?)<\/category>/si', '', $content ); $content = trim( $content ); return $content;}/** * Open the file handle for debugging. * * This function is used for XMLRPC feature, but it is general purpose enough * to be used in anywhere. * * @see fopen() for mode options. * @package WordPress * @subpackage Debug * @since 0.71 * @uses $debug Used for whether debugging is enabled. * * @param string $filename File path to debug file. * @param string $mode Same as fopen() mode parameter. * @return bool|resource File handle. False on failure. */function debug_fopen( $filename, $mode ) { global $debug; if ( 1 == $debug ) { $fp = fopen( $filename, $mode ); return $fp; } else { return false; }}/** * Write contents to the file used for debugging. * * Technically, this can be used to write to any file handle when the global * $debug is set to 1 or true. * * @package WordPress * @subpackage Debug * @since 0.71 * @uses $debug Used for whether debugging is enabled. * * @param resource $fp File handle for debugging file. * @param string $string Content to write to debug file. */function debug_fwrite( $fp, $string ) { global $debug; if ( 1 == $debug ) fwrite( $fp, $string );}/** * Close the debugging file handle. * * Technically, this can be used to close any file handle when the global $debug * is set to 1 or true. * * @package WordPress * @subpackage Debug * @since 0.71 * @uses $debug Used for whether debugging is enabled. * * @param resource $fp Debug File handle. */function debug_fclose( $fp ) { global $debug; if ( 1 == $debug ) fclose( $fp );}/** * Check content for video and audio links to add as enclosures. * * Will not add enclosures that have already been added and will * remove enclosures that are no longer in the post. This is called as * pingbacks and trackbacks. * * @package WordPress * @since 1.5.0 * * @uses $wpdb * * @param string $content Post Content * @param int $post_ID Post ID */function do_enclose( $content, $post_ID ) { global $wpdb; //TODO: Tidy this ghetto code up and make the debug code optional include_once( ABSPATH . WPINC . '/class-IXR.php' ); $log = debug_fopen( ABSPATH . 'enclosures.log', 'a' ); $post_links = array(); debug_fwrite( $log, 'BEGIN ' . date( 'YmdHis', time() ) . "\n" ); $pung = get_enclosed( $post_ID ); $ltrs = '\w'; $gunk = '/#~:.?+=&%@!\-'; $punc = '.:?\-'; $any = $ltrs . $gunk . $punc; preg_match_all( "{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp ); debug_fwrite( $log, 'Post contents:' ); debug_fwrite( $log, $content . "\n" ); foreach ( $pung as $link_test ) { if ( !in_array( $link_test, $post_links_temp[0] ) ) { // link no longer in post $mid = $wpdb->get_col( $wpdb->prepare("SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, like_escape( $link_test ) . '%') ); do_action( 'delete_postmeta', $mid ); $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id IN(%s)", implode( ',', $mid ) ) ); do_action( 'deleted_postmeta', $mid ); } } foreach ( (array) $post_links_temp[0] as $link_test ) { if ( !in_array( $link_test, $pung ) ) { // If we haven't pung it already $test = @parse_url( $link_test ); if ( false === $test ) continue; if ( isset( $test['query'] ) ) $post_links[] = $link_test; elseif ( isset($test['path']) && ( $test['path'] != '/' ) && ($test['path'] != '' ) ) $post_links[] = $link_test; } } foreach ( (array) $post_links as $url ) { if ( $url != '' && !$wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, like_escape( $url ) . '%' ) ) ) { if ( $headers = wp_get_http_headers( $url) ) { $len = (int) $headers['content-length']; $type = $headers['content-type']; $allowed_types = array( 'video', 'audio' ); // Check to see if we can figure out the mime type from // the extension $url_parts = @parse_url( $url ); if ( false !== $url_parts ) { $extension = pathinfo( $url_parts['path'], PATHINFO_EXTENSION ); if ( !empty( $extension ) ) { foreach ( get_allowed_mime_types( ) as $exts => $mime ) { if ( preg_match( '!^(' . $exts . ')$!i', $extension ) ) { $type = $mime; break; } } } } if ( in_array( substr( $type, 0, strpos( $type, "/" ) ), $allowed_types ) ) { $meta_value = "$url\n$len\n$type\n"; $wpdb->insert($wpdb->postmeta, array('post_id' => $post_ID, 'meta_key' => 'enclosure', 'meta_value' => $meta_value) ); do_action( 'added_postmeta', $wpdb->insert_id, $post_ID, 'enclosure', $meta_value ); } } } }}/** * Perform a HTTP HEAD or GET request. * * If $file_path is a writable filename, this will do a GET request and write * the file to that path. * * @since 2.5.0 * * @param string $url URL to fetch. * @param string|bool $file_path Optional. File path to write request to. * @param int $red (private) The number of Redirects followed, Upon 5 being hit, returns false. * @return bool|string False on failure and string of headers if HEAD request. */function wp_get_http( $url, $file_path = false, $red = 1 ) { @set_time_limit( 60 ); if ( $red > 5 ) return false; $options = array(); $options['redirection'] = 5; if ( false == $file_path ) $options['method'] = 'HEAD'; else $options['method'] = 'GET'; $response = wp_remote_request($url, $options); if ( is_wp_error( $response ) ) return false; $headers = wp_remote_retrieve_headers( $response ); $headers['response'] = wp_remote_retrieve_response_code( $response ); // WP_HTTP no longer follows redirects for HEAD requests. if ( 'HEAD' == $options['method'] && in_array($headers['response'], array(301, 302)) && isset( $headers['location'] ) ) { return wp_get_http( $headers['location'], $file_path, ++$red ); } if ( false == $file_path ) return $headers; // GET request - write it to the supplied filename $out_fp = fopen($file_path, 'w'); if ( !$out_fp ) return $headers; fwrite( $out_fp, wp_remote_retrieve_body( $response ) ); fclose($out_fp); clearstatcache(); return $headers;}/** * Retrieve HTTP Headers from URL. * * @since 1.5.1 * * @param string $url * @param bool $deprecated Not Used. * @return bool|string False on failure, headers on success. */function wp_get_http_headers( $url, $deprecated = false ) { if ( !empty( $deprecated ) ) _deprecated_argument( __FUNCTION__, '2.7' ); $response = wp_remote_head( $url ); if ( is_wp_error( $response ) ) return false; return wp_remote_retrieve_headers( $response );}/** * Whether today is a new day. * * @since 0.71 * @uses $day Today * @uses $previousday Previous day * * @return int 1 when new day, 0 if not a new day. */function is_new_day() { global $currentday, $previousday; if ( $currentday != $previousday ) return 1; else return 0;}/** * Build URL query based on an associative and, or indexed array. * * This is a convenient function for easily building url queries. It sets the * separator to '&' and uses _http_build_query() function. * * @see _http_build_query() Used to build the query * @link http://us2.php.net/manual/en/function.http-build-query.php more on what * http_build_query() does. * * @since 2.3.0 * * @param array $data URL-encode key/value pairs. * @return string URL encoded string */function build_query( $data ) { return _http_build_query( $data, null, '&', '', false );}// from php.net (modified by Mark Jaquith to behave like the native PHP5 function)function _http_build_query($data, $prefix=null, $sep=null, $key='', $urlencode=true) { $ret = array(); foreach ( (array) $data as $k => $v ) { if ( $urlencode) $k = urlencode($k); if ( is_int($k) && $prefix != null ) $k = $prefix.$k; if ( !empty($key) ) $k = $key . '%5B' . $k . '%5D'; if ( $v === NULL ) continue; elseif ( $v === FALSE ) $v = '0'; if ( is_array($v) || is_object($v) ) array_push($ret,_http_build_query($v, '', $sep, $k, $urlencode)); elseif ( $urlencode ) array_push($ret, $k.'='.urlencode($v)); else array_push($ret, $k.'='.$v); } if ( NULL === $sep ) $sep = ini_get('arg_separator.output'); return implode($sep, $ret);}/** * Retrieve a modified URL query string. * * You can rebuild the URL and append a new query variable to the URL query by * using this function. You can also retrieve the full URL with query data. * * Adding a single key & value or an associative array. Setting a key value to * an empty string removes the key. Omitting oldquery_or_uri uses the $_SERVER * value. Additional values provided are expected to be encoded appropriately * with urlencode() or rawurlencode(). * * @since 1.5.0 * * @param mixed $param1 Either newkey or an associative_array * @param mixed $param2 Either newvalue or oldquery or uri * @param mixed $param3 Optional. Old query or uri * @return string New URL query string. */function add_query_arg() { $ret = ''; if ( is_array( func_get_arg(0) ) ) { if ( @func_num_args() < 2 || false === @func_get_arg( 1 ) ) $uri = $_SERVER['REQUEST_URI']; else $uri = @func_get_arg( 1 ); } else { if ( @func_num_args() < 3 || false === @func_get_arg( 2 ) ) $uri = $_SERVER['REQUEST_URI']; else $uri = @func_get_arg( 2 ); } if ( $frag = strstr( $uri, '#' ) ) $uri = substr( $uri, 0, -strlen( $frag ) ); else $frag = ''; if ( preg_match( '|^https?://|i', $uri, $matches ) ) { $protocol = $matches[0]; $uri = substr( $uri, strlen( $protocol ) ); } else { $protocol = ''; } if ( strpos( $uri, '?' ) !== false ) { $parts = explode( '?', $uri, 2 ); if ( 1 == count( $parts ) ) { $base = '?'; $query = $parts[0]; } else { $base = $parts[0] . '?'; $query = $parts[1]; } } elseif ( !empty( $protocol ) || strpos( $uri, '=' ) === false ) { $base = $uri . '?'; $query = ''; } else { $base = ''; $query = $uri; } wp_parse_str( $query, $qs ); $qs = urlencode_deep( $qs ); // this re-URL-encodes things that were already in the query string if ( is_array( func_get_arg( 0 ) ) ) { $kayvees = func_get_arg( 0 ); $qs = array_merge( $qs, $kayvees ); } else { $qs[func_get_arg( 0 )] = func_get_arg( 1 ); } foreach ( (array) $qs as $k => $v ) { if ( $v === false ) unset( $qs[$k] ); } $ret = build_query( $qs ); $ret = trim( $ret, '?' ); $ret = preg_replace( '#=(&|$)#', '$1', $ret ); $ret = $protocol . $base . $ret . $frag; $ret = rtrim( $ret, '?' ); return $ret;}/** * Removes an item or list from the query string. * * @since 1.5.0 * * @param string|array $key Query key or keys to remove. * @param bool $query When false uses the $_SERVER value. * @return string New URL query string. */function remove_query_arg( $key, $query=false ) { if ( is_array( $key ) ) { // removing multiple keys foreach ( $key as $k ) $query = add_query_arg( $k, false, $query ); return $query; } return add_query_arg( $key, false, $query );}/** * Walks the array while sanitizing the contents. * * @since 0.71 * * @param array $array Array to used to walk while sanitizing contents. * @return array Sanitized $array. */function add_magic_quotes( $array ) { foreach ( (array) $array as $k => $v ) { if ( is_array( $v ) ) { $array[$k] = add_magic_quotes( $v ); } else { $array[$k] = addslashes( $v ); } } return $array;}/** * HTTP request for URI to retrieve content. * * @since 1.5.1 * @uses wp_remote_get() * * @param string $uri URI/URL of web page to retrieve. * @return bool|string HTTP content. False on failure. */function wp_remote_fopen( $uri ) { $parsed_url = @parse_url( $uri ); if ( !$parsed_url || !is_array( $parsed_url ) ) return false; $options = array(); $options['timeout'] = 10; $response = wp_remote_get( $uri, $options ); if ( is_wp_error( $response ) ) return false; return wp_remote_retrieve_body( $response );}/** * Set up the WordPress query. * * @since 2.0.0 * * @param string $query_vars Default WP_Query arguments. */function wp( $query_vars = '' ) { global $wp, $wp_query, $wp_the_query; $wp->main( $query_vars ); if ( !isset($wp_the_query) ) $wp_the_query = $wp_query;}/** * Retrieve the description for the HTTP status. * * @since 2.3.0 * * @param int $code HTTP status code. * @return string Empty string if not found, or description if found. */function get_status_header_desc( $code ) { global $wp_header_to_desc; $code = absint( $code ); if ( !isset( $wp_header_to_desc ) ) { $wp_header_to_desc = array( 100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Reserved', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 426 => 'Upgrade Required', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 510 => 'Not Extended' ); } if ( isset( $wp_header_to_desc[$code] ) ) return $wp_header_to_desc[$code]; else return '';}/** * Set HTTP status header. * * @since 2.0.0 * @uses apply_filters() Calls 'status_header' on status header string, HTTP * HTTP code, HTTP code description, and protocol string as separate * parameters. * * @param int $header HTTP status code * @return unknown */function status_header( $header ) { $text = get_status_header_desc( $header ); if ( empty( $text ) ) return false; $protocol = $_SERVER["SERVER_PROTOCOL"]; if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol ) $protocol = 'HTTP/1.0'; $status_header = "$protocol $header $text"; if ( function_exists( 'apply_filters' ) ) $status_header = apply_filters( 'status_header', $status_header, $header, $text, $protocol ); return @header( $status_header, true, $header );}/** * Gets the header information to prevent caching. * * The several different headers cover the different ways cache prevention is handled * by different browsers * * @since 2.8.0 * * @uses apply_filters() * @return array The associative array of header names and field values. */function wp_get_nocache_headers() { $headers = array( 'Expires' => 'Wed, 11 Jan 1984 05:00:00 GMT', 'Last-Modified' => gmdate( 'D, d M Y H:i:s' ) . ' GMT', 'Cache-Control' => 'no-cache, must-revalidate, max-age=0', 'Pragma' => 'no-cache', ); if ( function_exists('apply_filters') ) { $headers = (array) apply_filters('nocache_headers', $headers); } return $headers;}/** * Sets the headers to prevent caching for the different browsers. * * Different browsers support different nocache headers, so several headers must * be sent so that all of them get the point that no caching should occur. * * @since 2.0.0 * @uses wp_get_nocache_headers() */function nocache_headers() { $headers = wp_get_nocache_headers(); foreach( $headers as $name => $field_value ) @header("{$name}: {$field_value}");}/** * Set the headers for caching for 10 days with JavaScript content type. * * @since 2.1.0 */function cache_javascript_headers() { $expiresOffset = 864000; // 10 days header( "Content-Type: text/javascript; charset=" . get_bloginfo( 'charset' ) ); header( "Vary: Accept-Encoding" ); // Handle proxies header( "Expires: " . gmdate( "D, d M Y H:i:s", time() + $expiresOffset ) . " GMT" );}/** * Retrieve the number of database queries during the WordPress execution. * * @since 2.0.0 * * @return int Number of database queries */function get_num_queries() { global $wpdb; return $wpdb->num_queries;}/** * Whether input is yes or no. Must be 'y' to be true. * * @since 1.0.0 * * @param string $yn Character string containing either 'y' or 'n' * @return bool True if yes, false on anything else */function bool_from_yn( $yn ) { return ( strtolower( $yn ) == 'y' );}/** * Loads the feed template from the use of an action hook. * * If the feed action does not have a hook, then the function will die with a * message telling the visitor that the feed is not valid. * * It is better to only have one hook for each feed. * * @since 2.1.0 * @uses $wp_query Used to tell if the use a comment feed. * @uses do_action() Calls 'do_feed_$feed' hook, if a hook exists for the feed. */function do_feed() { global $wp_query; $feed = get_query_var( 'feed' ); // Remove the pad, if present. $feed = preg_replace( '/^_+/', '', $feed ); if ( $feed == '' || $feed == 'feed' ) $feed = get_default_feed(); $hook = 'do_feed_' . $feed; if ( !has_action($hook) ) { $message = sprintf( __( 'ERROR: %s is not a valid feed template.' ), esc_html($feed)); wp_die( $message, '', array( 'response' => 404 ) ); } do_action( $hook, $wp_query->is_comment_feed );}/** * Load the RDF RSS 0.91 Feed template. * * @since 2.1.0 */function do_feed_rdf() { load_template( ABSPATH . WPINC . '/feed-rdf.php' );}/** * Load the RSS 1.0 Feed Template. * * @since 2.1.0 */function do_feed_rss() { load_template( ABSPATH . WPINC . '/feed-rss.php' );}/** * Load either the RSS2 comment feed or the RSS2 posts feed. * * @since 2.1.0 * * @param bool $for_comments True for the comment feed, false for normal feed. */function do_feed_rss2( $for_comments ) { if ( $for_comments ) load_template( ABSPATH . WPINC . '/feed-rss2-comments.php' ); else load_template( ABSPATH . WPINC . '/feed-rss2.php' );}/** * Load either Atom comment feed or Atom posts feed. * * @since 2.1.0 * * @param bool $for_comments True for the comment feed, false for normal feed. */function do_feed_atom( $for_comments ) { if ($for_comments) load_template( ABSPATH . WPINC . '/feed-atom-comments.php'); else load_template( ABSPATH . WPINC . '/feed-atom.php' );}/** * Display the robots.txt file content. * * The echo content should be with usage of the permalinks or for creating the * robots.txt file. * * @since 2.1.0 * @uses do_action() Calls 'do_robotstxt' hook for displaying robots.txt rules. */function do_robots() { header( 'Content-Type: text/plain; charset=utf-8' ); do_action( 'do_robotstxt' ); $output = "User-agent: *\n"; $public = get_option( 'blog_public' ); if ( '0' == $public ) { $output .= "Disallow: /\n"; } else { $site_url = parse_url( site_url() ); $path = ( !empty( $site_url['path'] ) ) ? $site_url['path'] : ''; $output .= "Disallow: $path/wp-admin/\n"; $output .= "Disallow: $path/wp-includes/\n"; } echo apply_filters('robots_txt', $output, $public);}/** * Test whether blog is already installed. * * The cache will be checked first. If you have a cache plugin, which saves the * cache values, then this will work. If you use the default WordPress cache, * and the database goes away, then you might have problems. * * Checks for the option siteurl for whether WordPress is installed. * * @since 2.1.0 * @uses $wpdb * * @return bool Whether blog is already installed. */function is_blog_installed() { global $wpdb; // Check cache first. If options table goes away and we have true cached, oh well. if ( wp_cache_get( 'is_blog_installed' ) ) return true; $suppress = $wpdb->suppress_errors(); if ( ! defined( 'WP_INSTALLING' ) ) { $alloptions = wp_load_alloptions(); } // If siteurl is not set to autoload, check it specifically if ( !isset( $alloptions['siteurl'] ) ) $installed = $wpdb->get_var( "SELECT option_value FROM $wpdb->options WHERE option_name = 'siteurl'" ); else $installed = $alloptions['siteurl']; $wpdb->suppress_errors( $suppress ); $installed = !empty( $installed ); wp_cache_set( 'is_blog_installed', $installed ); if ( $installed ) return true; // If visiting repair.php, return true and let it take over. if ( defined( 'WP_REPAIRING' ) ) return true; $suppress = $wpdb->suppress_errors(); // Loop over the WP tables. If none exist, then scratch install is allowed. // If one or more exist, suggest table repair since we got here because the options // table could not be accessed. $wp_tables = $wpdb->tables(); foreach ( $wp_tables as $table ) { // The existence of custom user tables shouldn't suggest an insane state or prevent a clean install. if ( defined( 'CUSTOM_USER_TABLE' ) && CUSTOM_USER_TABLE == $table ) continue; if ( defined( 'CUSTOM_USER_META_TABLE' ) && CUSTOM_USER_META_TABLE == $table ) continue; if ( ! $wpdb->get_results( "DESCRIBE $table;" ) ) continue; // One or more tables exist. We are insane. // Die with a DB error. $wpdb->error = sprintf( /*WP_I18N_NO_TABLES*/'One or more database tables are unavailable. The database may need to be <a href="%s">repaired</a>.'/*/WP_I18N_NO_TABLES*/, 'maint/repair.php?referrer=is_blog_installed' ); dead_db(); } $wpdb->suppress_errors( $suppress ); wp_cache_set( 'is_blog_installed', false ); return false;}/** * Retrieve URL with nonce added to URL query. * * @package WordPress * @subpackage Security * @since 2.0.4 * * @param string $actionurl URL to add nonce action * @param string $action Optional. Nonce action name * @return string URL with nonce action added. */function wp_nonce_url( $actionurl, $action = -1 ) { $actionurl = str_replace( '&', '&', $actionurl ); return esc_html( add_query_arg( '_wpnonce', wp_create_nonce( $action ), $actionurl ) );}/** * Retrieve or display nonce hidden field for forms. * * The nonce field is used to validate that the contents of the form came from * the location on the current site and not somewhere else. The nonce does not * offer absolute protection, but should protect against most cases. It is very * important to use nonce field in forms. * * The $action and $name are optional, but if you want to have better security, * it is strongly suggested to set those two parameters. It is easier to just * call the function without any parameters, because validation of the nonce * doesn't require any parameters, but since crackers know what the default is * it won't be difficult for them to find a way around your nonce and cause * damage. * * The input name will be whatever $name value you gave. The input value will be * the nonce creation value. * * @package WordPress * @subpackage Security * @since 2.0.4 * * @param string $action Optional. Action name. * @param string $name Optional. Nonce name. * @param bool $referer Optional, default true. Whether to set the referer field for validation. * @param bool $echo Optional, default true. Whether to display or return hidden form field. * @return string Nonce field. */function wp_nonce_field( $action = -1, $name = "_wpnonce", $referer = true , $echo = true ) { $name = esc_attr( $name ); $nonce_field = '<input type="hidden" id="' . $name . '" name="' . $name . '" value="' . wp_create_nonce( $action ) . '" />'; if ( $referer ) $nonce_field .= wp_referer_field( false ); if ( $echo ) echo $nonce_field; return $nonce_field;}/** * Retrieve or display referer hidden field for forms. * * The referer link is the current Request URI from the server super global. The * input name is '_wp_http_referer', in case you wanted to check manually. * * @package WordPress * @subpackage Security * @since 2.0.4 * * @param bool $echo Whether to echo or return the referer field. * @return string Referer field. */function wp_referer_field( $echo = true ) { $ref = esc_attr( $_SERVER['REQUEST_URI'] ); $referer_field = '<input type="hidden" name="_wp_http_referer" value="'. $ref . '" />'; if ( $echo ) echo $referer_field; return $referer_field;}/** * Retrieve or display original referer hidden field for forms. * * The input name is '_wp_original_http_referer' and will be either the same * value of {@link wp_referer_field()}, if that was posted already or it will * be the current page, if it doesn't exist. * * @package WordPress * @subpackage Security * @since 2.0.4 * * @param bool $echo Whether to echo the original http referer * @param string $jump_back_to Optional, default is 'current'. Can be 'previous' or page you want to jump back to. * @return string Original referer field. */function wp_original_referer_field( $echo = true, $jump_back_to = 'current' ) { $jump_back_to = ( 'previous' == $jump_back_to ) ? wp_get_referer() : $_SERVER['REQUEST_URI']; $ref = ( wp_get_original_referer() ) ? wp_get_original_referer() : $jump_back_to; $orig_referer_field = '<input type="hidden" name="_wp_original_http_referer" value="' . esc_attr( stripslashes( $ref ) ) . '" />'; if ( $echo ) echo $orig_referer_field; return $orig_referer_field;}/** * Retrieve referer from '_wp_http_referer' or HTTP referer. If it's the same * as the current request URL, will return false. * * @package WordPress * @subpackage Security * @since 2.0.4 * * @return string|bool False on failure. Referer URL on success. */function wp_get_referer() { $ref = false; if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) $ref = $_REQUEST['_wp_http_referer']; else if ( ! empty( $_SERVER['HTTP_REFERER'] ) ) $ref = $_SERVER['HTTP_REFERER']; if ( $ref && $ref !== $_SERVER['REQUEST_URI'] ) return $ref; return false;}/** * Retrieve original referer that was posted, if it exists. * * @package WordPress * @subpackage Security * @since 2.0.4 * * @return string|bool False if no original referer or original referer if set. */function wp_get_original_referer() { if ( !empty( $_REQUEST['_wp_original_http_referer'] ) ) return $_REQUEST['_wp_original_http_referer']; return false;}/** * Recursive directory creation based on full path. * * Will attempt to set permissions on folders. * * @since 2.0.1 * * @param string $target Full path to attempt to create. * @return bool Whether the path was created. True if path already exists. */function wp_mkdir_p( $target ) { // from php.net/mkdir user contributed notes $target = str_replace( '//', '/', $target ); // safe mode fails with a trailing slash under certain PHP versions. $target = rtrim($target, '/'); // Use rtrim() instead of untrailingslashit to avoid formatting.php dependency. if ( empty($target) ) $target = '/'; if ( file_exists( $target ) ) return @is_dir( $target ); // Attempting to create the directory may clutter up our display. if ( @mkdir( $target ) ) { $stat = @stat( dirname( $target ) ); $dir_perms = $stat['mode'] & 0007777; // Get the permission bits. @chmod( $target, $dir_perms ); return true; } elseif ( is_dir( dirname( $target ) ) ) { return false; } // If the above failed, attempt to create the parent node, then try again. if ( ( $target != '/' ) && ( wp_mkdir_p( dirname( $target ) ) ) ) return wp_mkdir_p( $target ); return false;}/** * Test if a give filesystem path is absolute ('/foo/bar', 'c:\windows'). * * @since 2.5.0 * * @param string $path File path * @return bool True if path is absolute, false is not absolute. */function path_is_absolute( $path ) { // this is definitive if true but fails if $path does not exist or contains a symbolic link if ( realpath($path) == $path ) return true; if ( strlen($path) == 0 || $path[0] == '.' ) return false; // windows allows absolute paths like this if ( preg_match('#^[a-zA-Z]:\\\\#', $path) ) return true; // a path starting with / or \ is absolute; anything else is relative return ( $path[0] == '/' || $path[0] == '\\' );}/** * Join two filesystem paths together (e.g. 'give me $path relative to $base'). * * If the $path is absolute, then it the full path is returned. * * @since 2.5.0 * * @param string $base * @param string $path * @return string The path with the base or absolute path. */function path_join( $base, $path ) { if ( path_is_absolute($path) ) return $path; return rtrim($base, '/') . '/' . ltrim($path, '/');}/** * Determines a writable directory for temporary files. * Function's preference is to WP_CONTENT_DIR followed by the return value of <code>sys_get_temp_dir()</code>, before finally defaulting to /tmp/ * * In the event that this function does not find a writable location, It may be overridden by the <code>WP_TEMP_DIR</code> constant in your <code>wp-config.php</code> file. * * @since 2.5.0 * * @return string Writable temporary directory */function get_temp_dir() { static $temp; if ( defined('WP_TEMP_DIR') ) return trailingslashit(WP_TEMP_DIR); if ( $temp ) return trailingslashit($temp); $temp = WP_CONTENT_DIR . '/'; if ( is_dir($temp) && @is_writable($temp) ) return $temp; if ( function_exists('sys_get_temp_dir') ) { $temp = sys_get_temp_dir(); if ( @is_writable($temp) ) return trailingslashit($temp); } $temp = ini_get('upload_tmp_dir'); if ( is_dir($temp) && @is_writable($temp) ) return trailingslashit($temp); $temp = '/tmp/'; return $temp;}/** * Get an array containing the current upload directory's path and url. * * Checks the 'upload_path' option, which should be from the web root folder, * and if it isn't empty it will be used. If it is empty, then the path will be * 'WP_CONTENT_DIR/uploads'. If the 'UPLOADS' constant is defined, then it will * override the 'upload_path' option and 'WP_CONTENT_DIR/uploads' path. * * The upload URL path is set either by the 'upload_url_path' option or by using * the 'WP_CONTENT_URL' constant and appending '/uploads' to the path. * * If the 'uploads_use_yearmonth_folders' is set to true (checkbox if checked in * the administration settings panel), then the time will be used. The format * will be year first and then month. * * If the path couldn't be created, then an error will be returned with the key * 'error' containing the error message. The error suggests that the parent * directory is not writable by the server. * * On success, the returned array will have many indices: * 'path' - base directory and sub directory or full path to upload directory. * 'url' - base url and sub directory or absolute URL to upload directory. * 'subdir' - sub directory if uploads use year/month folders option is on. * 'basedir' - path without subdir. * 'baseurl' - URL path without subdir. * 'error' - set to false. * * @since 2.0.0 * @uses apply_filters() Calls 'upload_dir' on returned array. * * @param string $time Optional. Time formatted in 'yyyy/mm'. * @return array See above for description. */function wp_upload_dir( $time = null ) { global $switched; $siteurl = get_option( 'siteurl' ); $upload_path = get_option( 'upload_path' ); $upload_path = trim($upload_path); $main_override = is_multisite() && defined( 'MULTISITE' ) && is_main_site(); if ( empty($upload_path) ) { $dir = WP_CONTENT_DIR . '/uploads'; } else { $dir = $upload_path; if ( 'wp-content/uploads' == $upload_path ) { $dir = WP_CONTENT_DIR . '/uploads'; } elseif ( 0 !== strpos($dir, ABSPATH) ) { // $dir is absolute, $upload_path is (maybe) relative to ABSPATH $dir = path_join( ABSPATH, $dir ); } } if ( !$url = get_option( 'upload_url_path' ) ) { if ( empty($upload_path) || ( 'wp-content/uploads' == $upload_path ) || ( $upload_path == $dir ) ) $url = WP_CONTENT_URL . '/uploads'; else $url = trailingslashit( $siteurl ) . $upload_path; } if ( defined('UPLOADS') && !$main_override && ( !isset( $switched ) || $switched === false ) ) { $dir = ABSPATH . UPLOADS; $url = trailingslashit( $siteurl ) . UPLOADS; } if ( is_multisite() && !$main_override && ( !isset( $switched ) || $switched === false ) ) { if ( defined( 'BLOGUPLOADDIR' ) ) $dir = untrailingslashit(BLOGUPLOADDIR); $url = str_replace( UPLOADS, 'files', $url ); } $bdir = $dir; $burl = $url; $subdir = ''; if ( get_option( 'uploads_use_yearmonth_folders' ) ) { // Generate the yearly and monthly dirs if ( !$time ) $time = current_time( 'mysql' ); $y = substr( $time, 0, 4 ); $m = substr( $time, 5, 2 ); $subdir = "/$y/$m"; } $dir .= $subdir; $url .= $subdir; $uploads = apply_filters( 'upload_dir', array( 'path' => $dir, 'url' => $url, 'subdir' => $subdir, 'basedir' => $bdir, 'baseurl' => $burl, 'error' => false ) ); // Make sure we have an uploads dir if ( ! wp_mkdir_p( $uploads['path'] ) ) { $message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), $uploads['path'] ); return array( 'error' => $message ); } return $uploads;}/** * Get a filename that is sanitized and unique for the given directory. * * If the filename is not unique, then a number will be added to the filename * before the extension, and will continue adding numbers until the filename is * unique. * * The callback is passed three parameters, the first one is the directory, the * second is the filename, and the third is the extension. * * @since 2.5.0 * * @param string $dir * @param string $filename * @param mixed $unique_filename_callback Callback. * @return string New filename, if given wasn't unique. */function wp_unique_filename( $dir, $filename, $unique_filename_callback = null ) { // sanitize the file name before we begin processing $filename = sanitize_file_name($filename); // separate the filename into a name and extension $info = pathinfo($filename); $ext = !empty($info['extension']) ? '.' . $info['extension'] : ''; $name = basename($filename, $ext); // edge case: if file is named '.ext', treat as an empty name if ( $name === $ext ) $name = ''; // Increment the file number until we have a unique file to save in $dir. Use callback if supplied. if ( $unique_filename_callback && is_callable( $unique_filename_callback ) ) { $filename = call_user_func( $unique_filename_callback, $dir, $name, $ext ); } else { $number = ''; // change '.ext' to lower case if ( $ext && strtolower($ext) != $ext ) { $ext2 = strtolower($ext); $filename2 = preg_replace( '|' . preg_quote($ext) . '$|', $ext2, $filename ); // check for both lower and upper case extension or image sub-sizes may be overwritten while ( file_exists($dir . "/$filename") || file_exists($dir . "/$filename2") ) { $new_number = $number + 1; $filename = str_replace( "$number$ext", "$new_number$ext", $filename ); $filename2 = str_replace( "$number$ext2", "$new_number$ext2", $filename2 ); $number = $new_number; } return $filename2; } while ( file_exists( $dir . "/$filename" ) ) { if ( '' == "$number$ext" ) $filename = $filename . ++$number . $ext; else $filename = str_replace( "$number$ext", ++$number . $ext, $filename ); } } return $filename;}/** * Create a file in the upload folder with given content. * * If there is an error, then the key 'error' will exist with the error message. * If success, then the key 'file' will have the unique file path, the 'url' key * will have the link to the new file. and the 'error' key will be set to false. * * This function will not move an uploaded file to the upload folder. It will * create a new file with the content in $bits parameter. If you move the upload * file, read the content of the uploaded file, and then you can give the * filename and content to this function, which will add it to the upload * folder. * * The permissions will be set on the new file automatically by this function. * * @since 2.0.0 * * @param string $name * @param null $deprecated Never used. Set to null. * @param mixed $bits File content * @param string $time Optional. Time formatted in 'yyyy/mm'. * @return array */function wp_upload_bits( $name, $deprecated, $bits, $time = null ) { if ( !empty( $deprecated ) ) _deprecated_argument( __FUNCTION__, '2.0' ); if ( empty( $name ) ) return array( 'error' => __( 'Empty filename' ) ); $wp_filetype = wp_check_filetype( $name ); if ( !$wp_filetype['ext'] ) return array( 'error' => __( 'Invalid file type' ) ); $upload = wp_upload_dir( $time ); if ( $upload['error'] !== false ) return $upload; $upload_bits_error = apply_filters( 'wp_upload_bits', array( 'name' => $name, 'bits' => $bits, 'time' => $time ) ); if ( !is_array( $upload_bits_error ) ) { $upload[ 'error' ] = $upload_bits_error; return $upload; } $filename = wp_unique_filename( $upload['path'], $name ); $new_file = $upload['path'] . "/$filename"; if ( ! wp_mkdir_p( dirname( $new_file ) ) ) { $message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), dirname( $new_file ) ); return array( 'error' => $message ); } $ifp = @ fopen( $new_file, 'wb' ); if ( ! $ifp ) return array( 'error' => sprintf( __( 'Could not write file %s' ), $new_file ) ); @fwrite( $ifp, $bits ); fclose( $ifp ); clearstatcache(); // Set correct file permissions $stat = @ stat( dirname( $new_file ) ); $perms = $stat['mode'] & 0007777; $perms = $perms & 0000666; @ chmod( $new_file, $perms ); clearstatcache(); // Compute the URL $url = $upload['url'] . "/$filename"; return array( 'file' => $new_file, 'url' => $url, 'error' => false );}/** * Retrieve the file type based on the extension name. * * @package WordPress * @since 2.5.0 * @uses apply_filters() Calls 'ext2type' hook on default supported types. * * @param string $ext The extension to search. * @return string|null The file type, example: audio, video, document, spreadsheet, etc. Null if not found. */function wp_ext2type( $ext ) { $ext2type = apply_filters( 'ext2type', array( 'audio' => array( 'aac', 'ac3', 'aif', 'aiff', 'm3a', 'm4a', 'm4b', 'mka', 'mp1', 'mp2', 'mp3', 'ogg', 'oga', 'ram', 'wav', 'wma' ), 'video' => array( 'asf', 'avi', 'divx', 'dv', 'flv', 'm4v', 'mkv', 'mov', 'mp4', 'mpeg', 'mpg', 'mpv', 'ogm', 'ogv', 'qt', 'rm', 'vob', 'wmv' ), 'document' => array( 'doc', 'docx', 'docm', 'dotm', 'odt', 'pages', 'pdf', 'rtf', 'wp', 'wpd' ), 'spreadsheet' => array( 'numbers', 'ods', 'xls', 'xlsx', 'xlsb', 'xlsm' ), 'interactive' => array( 'key', 'ppt', 'pptx', 'pptm', 'odp', 'swf' ), 'text' => array( 'asc', 'csv', 'tsv', 'txt' ), 'archive' => array( 'bz2', 'cab', 'dmg', 'gz', 'rar', 'sea', 'sit', 'sqx', 'tar', 'tgz', 'zip', '7z' ), 'code' => array( 'css', 'htm', 'html', 'php', 'js' ), )); foreach ( $ext2type as $type => $exts ) if ( in_array( $ext, $exts ) ) return $type;}/** * Retrieve the file type from the file name. * * You can optionally define the mime array, if needed. * * @since 2.0.4 * * @param string $filename File name or path. * @param array $mimes Optional. Key is the file extension with value as the mime type. * @return array Values with extension first and mime type. */function wp_check_filetype( $filename, $mimes = null ) { if ( empty($mimes) ) $mimes = get_allowed_mime_types(); $type = false; $ext = false; foreach ( $mimes as $ext_preg => $mime_match ) { $ext_preg = '!\.(' . $ext_preg . ')$!i'; if ( preg_match( $ext_preg, $filename, $ext_matches ) ) { $type = $mime_match; $ext = $ext_matches[1]; break; } } return compact( 'ext', 'type' );}/** * Attempt to determine the real file type of a file. * If unable to, the file name extension will be used to determine type. * * If it's determined that the extension does not match the file's real type, * then the "proper_filename" value will be set with a proper filename and extension. * * Currently this function only supports validating images known to getimagesize(). * * @since 3.0.0 * * @param string $file Full path to the image. * @param string $filename The filename of the image (may differ from $file due to $file being in a tmp directory) * @param array $mimes Optional. Key is the file extension with value as the mime type. * @return array Values for the extension, MIME, and either a corrected filename or false if original $filename is valid */function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) { $proper_filename = false; // Do basic extension validation and MIME mapping $wp_filetype = wp_check_filetype( $filename, $mimes ); extract( $wp_filetype ); // We can't do any further validation without a file to work with if ( ! file_exists( $file ) ) return compact( 'ext', 'type', 'proper_filename' ); // We're able to validate images using GD if ( $type && 0 === strpos( $type, 'image/' ) && function_exists('getimagesize') ) { // Attempt to figure out what type of image it actually is $imgstats = @getimagesize( $file ); // If getimagesize() knows what kind of image it really is and if the real MIME doesn't match the claimed MIME if ( !empty($imgstats['mime']) && $imgstats['mime'] != $type ) { // This is a simplified array of MIMEs that getimagesize() can detect and their extensions // You shouldn't need to use this filter, but it's here just in case $mime_to_ext = apply_filters( 'getimagesize_mimes_to_exts', array( 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/gif' => 'gif', 'image/bmp' => 'bmp', 'image/tiff' => 'tif', ) ); // Replace whatever is after the last period in the filename with the correct extension if ( ! empty( $mime_to_ext[ $imgstats['mime'] ] ) ) { $filename_parts = explode( '.', $filename ); array_pop( $filename_parts ); $filename_parts[] = $mime_to_ext[ $imgstats['mime'] ]; $new_filename = implode( '.', $filename_parts ); if ( $new_filename != $filename ) $proper_filename = $new_filename; // Mark that it changed // Redefine the extension / MIME $wp_filetype = wp_check_filetype( $new_filename, $mimes ); extract( $wp_filetype ); } } } // Let plugins try and validate other types of files // Should return an array in the style of array( 'ext' => $ext, 'type' => $type, 'proper_filename' => $proper_filename ) return apply_filters( 'wp_check_filetype_and_ext', compact( 'ext', 'type', 'proper_filename' ), $file, $filename, $mimes );}/** * Retrieve list of allowed mime types and file extensions. * * @since 2.8.6 * * @return array Array of mime types keyed by the file extension regex corresponding to those types. */function get_allowed_mime_types() { static $mimes = false; if ( !$mimes ) { // Accepted MIME types are set here as PCRE unless provided. $mimes = apply_filters( 'upload_mimes', array( 'jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', 'bmp' => 'image/bmp', 'tif|tiff' => 'image/tiff', 'ico' => 'image/x-icon', 'asf|asx|wax|wmv|wmx' => 'video/asf', 'avi' => 'video/avi', 'divx' => 'video/divx', 'flv' => 'video/x-flv', 'mov|qt' => 'video/quicktime', 'mpeg|mpg|mpe' => 'video/mpeg', 'txt|asc|c|cc|h' => 'text/plain', 'csv' => 'text/csv', 'tsv' => 'text/tab-separated-values', 'ics' => 'text/calendar', 'rtx' => 'text/richtext', 'css' => 'text/css', 'htm|html' => 'text/html', 'mp3|m4a|m4b' => 'audio/mpeg', 'mp4|m4v' => 'video/mp4', 'ra|ram' => 'audio/x-realaudio', 'wav' => 'audio/wav', 'ogg|oga' => 'audio/ogg', 'ogv' => 'video/ogg', 'mid|midi' => 'audio/midi', 'wma' => 'audio/wma', 'mka' => 'audio/x-matroska', 'mkv' => 'video/x-matroska', 'rtf' => 'application/rtf', 'js' => 'application/javascript', 'pdf' => 'application/pdf', 'doc|docx' => 'application/msword', 'pot|pps|ppt|pptx|ppam|pptm|sldm|ppsm|potm' => 'application/vnd.ms-powerpoint', 'wri' => 'application/vnd.ms-write', 'xla|xls|xlsx|xlt|xlw|xlam|xlsb|xlsm|xltm' => 'application/vnd.ms-excel', 'mdb' => 'application/vnd.ms-access', 'mpp' => 'application/vnd.ms-project', 'docm|dotm' => 'application/vnd.ms-word', 'pptx|sldx|ppsx|potx' => 'application/vnd.openxmlformats-officedocument.presentationml', 'xlsx|xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml', 'docx|dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml', 'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote', 'swf' => 'application/x-shockwave-flash', 'class' => 'application/java', 'tar' => 'application/x-tar', 'zip' => 'application/zip', 'gz|gzip' => 'application/x-gzip', 'rar' => 'application/rar', '7z' => 'application/x-7z-compressed', 'exe' => 'application/x-msdownload', // openoffice formats 'odt' => 'application/vnd.oasis.opendocument.text', 'odp' => 'application/vnd.oasis.opendocument.presentation', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 'odg' => 'application/vnd.oasis.opendocument.graphics', 'odc' => 'application/vnd.oasis.opendocument.chart', 'odb' => 'application/vnd.oasis.opendocument.database', 'odf' => 'application/vnd.oasis.opendocument.formula', // wordperfect formats 'wp|wpd' => 'application/wordperfect', ) ); } return $mimes;}/** * Retrieve nonce action "Are you sure" message. * * The action is split by verb and noun. The action format is as follows: * verb-action_extra. The verb is before the first dash and has the format of * letters and no spaces and numbers. The noun is after the dash and before the * underscore, if an underscore exists. The noun is also only letters. * * The filter will be called for any action, which is not defined by WordPress. * You may use the filter for your plugin to explain nonce actions to the user, * when they get the "Are you sure?" message. The filter is in the format of * 'explain_nonce_$verb-$noun' with the $verb replaced by the found verb and the * $noun replaced by the found noun. The two parameters that are given to the * hook are the localized "Are you sure you want to do this?" message with the * extra text (the text after the underscore). * * @package WordPress * @subpackage Security * @since 2.0.4 * * @param string $action Nonce action. * @return string Are you sure message. */function wp_explain_nonce( $action ) { if ( $action !== -1 && preg_match( '/([a-z]+)-([a-z]+)(_(.+))?/', $action, $matches ) ) { $verb = $matches[1]; $noun = $matches[2]; $trans = array(); $trans['update']['attachment'] = array( __( 'Your attempt to edit this attachment: “%s” has failed.' ), 'get_the_title' ); $trans['add']['category'] = array( __( 'Your attempt to add this category has failed.' ), false ); $trans['delete']['category'] = array( __( 'Your attempt to delete this category: “%s” has failed.' ), 'get_cat_name' ); $trans['update']['category'] = array( __( 'Your attempt to edit this category: “%s” has failed.' ), 'get_cat_name' ); $trans['delete']['comment'] = array( __( 'Your attempt to delete this comment: “%s” has failed.' ), 'use_id' ); $trans['unapprove']['comment'] = array( __( 'Your attempt to unapprove this comment: “%s” has failed.' ), 'use_id' ); $trans['approve']['comment'] = array( __( 'Your attempt to approve this comment: “%s” has failed.' ), 'use_id' ); $trans['update']['comment'] = array( __( 'Your attempt to edit this comment: “%s” has failed.' ), 'use_id' ); $trans['bulk']['comments'] = array( __( 'Your attempt to bulk modify comments has failed.' ), false ); $trans['moderate']['comments'] = array( __( 'Your attempt to moderate comments has failed.' ), false ); $trans['add']['bookmark'] = array( __( 'Your attempt to add this link has failed.' ), false ); $trans['delete']['bookmark'] = array( __( 'Your attempt to delete this link: “%s” has failed.' ), 'use_id' ); $trans['update']['bookmark'] = array( __( 'Your attempt to edit this link: “%s” has failed.' ), 'use_id' ); $trans['bulk']['bookmarks'] = array( __( 'Your attempt to bulk modify links has failed.' ), false ); $trans['add']['page'] = array( __( 'Your attempt to add this page has failed.' ), false ); $trans['delete']['page'] = array( __( 'Your attempt to delete this page: “%s” has failed.' ), 'get_the_title' ); $trans['update']['page'] = array( __( 'Your attempt to edit this page: “%s” has failed.' ), 'get_the_title' ); $trans['edit']['plugin'] = array( __( 'Your attempt to edit this plugin file: “%s” has failed.' ), 'use_id' ); $trans['activate']['plugin'] = array( __( 'Your attempt to activate this plugin: “%s” has failed.' ), 'use_id' ); $trans['deactivate']['plugin'] = array( __( 'Your attempt to deactivate this plugin: “%s” has failed.' ), 'use_id' ); $trans['upgrade']['plugin'] = array( __( 'Your attempt to update this plugin: “%s” has failed.' ), 'use_id' ); $trans['add']['post'] = array( __( 'Your attempt to add this post has failed.' ), false ); $trans['delete']['post'] = array( __( 'Your attempt to delete this post: “%s” has failed.' ), 'get_the_title' ); $trans['update']['post'] = array( __( 'Your attempt to edit this post: “%s” has failed.' ), 'get_the_title' ); $trans['add']['user'] = array( __( 'Your attempt to add this user has failed.' ), false ); $trans['delete']['users'] = array( __( 'Your attempt to delete users has failed.' ), false ); $trans['bulk']['users'] = array( __( 'Your attempt to bulk modify users has failed.' ), false ); $trans['update']['user'] = array( __( 'Your attempt to edit this user: “%s” has failed.' ), 'get_the_author_meta', 'display_name' ); $trans['update']['profile'] = array( __( 'Your attempt to modify the profile for: “%s” has failed.' ), 'get_the_author_meta', 'display_name' ); $trans['update']['options'] = array( __( 'Your attempt to edit your settings has failed.' ), false ); $trans['update']['permalink'] = array( __( 'Your attempt to change your permalink structure to: %s has failed.' ), 'use_id' ); $trans['edit']['file'] = array( __( 'Your attempt to edit this file: “%s” has failed.' ), 'use_id' ); $trans['edit']['theme'] = array( __( 'Your attempt to edit this theme file: “%s” has failed.' ), 'use_id' ); $trans['switch']['theme'] = array( __( 'Your attempt to switch to this theme: “%s” has failed.' ), 'use_id' ); $trans['log']['out'] = array( sprintf( __( 'You are attempting to log out of %s' ), get_bloginfo( 'sitename' ) ), false ); if ( isset( $trans[$verb][$noun] ) ) { if ( !empty( $trans[$verb][$noun][1] ) ) { $lookup = $trans[$verb][$noun][1]; if ( isset($trans[$verb][$noun][2]) ) $lookup_value = $trans[$verb][$noun][2]; $object = $matches[4]; if ( 'use_id' != $lookup ) { if ( isset( $lookup_value ) ) $object = call_user_func( $lookup, $lookup_value, $object ); else $object = call_user_func( $lookup, $object ); } return sprintf( $trans[$verb][$noun][0], esc_html($object) ); } else { return $trans[$verb][$noun][0]; } } return apply_filters( 'explain_nonce_' . $verb . '-' . $noun, __( 'Are you sure you want to do this?' ), isset($matches[4]) ? $matches[4] : '' ); } else { return apply_filters( 'explain_nonce_' . $action, __( 'Are you sure you want to do this?' ) ); }}/** * Display "Are You Sure" message to confirm the action being taken. * * If the action has the nonce explain message, then it will be displayed along * with the "Are you sure?" message. * * @package WordPress * @subpackage Security * @since 2.0.4 * * @param string $action The nonce action. */function wp_nonce_ays( $action ) { $title = __( 'WordPress Failure Notice' ); $html = esc_html( wp_explain_nonce( $action ) ); if ( 'log-out' == $action ) $html .= "</p><p>" . sprintf( __( "Do you really want to <a href='%s'>log out</a>?"), wp_logout_url() ); elseif ( wp_get_referer() ) $html .= "</p><p><a href='" . esc_url( remove_query_arg( 'updated', wp_get_referer() ) ) . "'>" . __( 'Please try again.' ) . "</a>"; wp_die( $html, $title, array('response' => 403) );}/** * Kill WordPress execution and display HTML message with error message. * * This function complements the die() PHP function. The difference is that * HTML will be displayed to the user. It is recommended to use this function * only, when the execution should not continue any further. It is not * recommended to call this function very often and try to handle as many errors * as possible silently. * * @since 2.0.4 * * @param string $message Error message. * @param string $title Error title. * @param string|array $args Optional arguments to control behavior. */function wp_die( $message, $title = '', $args = array() ) { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) die('-1'); if ( function_exists( 'apply_filters' ) ) { $function = apply_filters( 'wp_die_handler', '_default_wp_die_handler'); } else { $function = '_default_wp_die_handler'; } call_user_func( $function, $message, $title, $args );}/** * Kill WordPress execution and display HTML message with error message. * * This is the default handler for wp_die if you want a custom one for your * site then you can overload using the wp_die_handler filter in wp_die * * @since 3.0.0 * @access private * * @param string $message Error message. * @param string $title Error title. * @param string|array $args Optional arguments to control behavior. */function _default_wp_die_handler( $message, $title = '', $args = array() ) { $defaults = array( 'response' => 500 ); $r = wp_parse_args($args, $defaults); $have_gettext = function_exists('__'); if ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) { if ( empty( $title ) ) { $error_data = $message->get_error_data(); if ( is_array( $error_data ) && isset( $error_data['title'] ) ) $title = $error_data['title']; } $errors = $message->get_error_messages(); switch ( count( $errors ) ) : case 0 : $message = ''; break; case 1 : $message = "<p>{$errors[0]}</p>"; break; default : $message = "<ul>\n\t\t<li>" . join( "</li>\n\t\t<li>", $errors ) . "</li>\n\t</ul>"; break; endswitch; } elseif ( is_string( $message ) ) { $message = "<p>$message</p>"; } if ( isset( $r['back_link'] ) && $r['back_link'] ) { $back_text = $have_gettext? __('« Back') : '« Back'; $message .= "\n<p><a href='javascript:history.back()'>$back_text</a></p>"; } if ( !function_exists( 'did_action' ) || !did_action( 'admin_head' ) ) : if ( !headers_sent() ) { status_header( $r['response'] ); nocache_headers(); header( 'Content-Type: text/html; charset=utf-8' ); } if ( empty($title) ) $title = $have_gettext ? __('WordPress › Error') : 'WordPress › Error'; $text_direction = 'ltr'; if ( isset($r['text_direction']) && 'rtl' == $r['text_direction'] ) $text_direction = 'rtl'; elseif ( function_exists( 'is_rtl' ) && is_rtl() ) $text_direction = 'rtl';?><!DOCTYPE html><!-- Ticket #11289, IE bug fix: always pad the error page with enough characters such that it is greater than 512 bytes, even after gzip compression abcdefghijklmnopqrstuvwxyz1234567890aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz11223344556677889900abacbcbdcdcededfefegfgfhghgihihjijikjkjlklkmlmlnmnmononpopoqpqprqrqsrsrtstsubcbcdcdedefefgfabcadefbghicjkldmnoepqrfstugvwxhyz1i234j567k890laabmbccnddeoeffpgghqhiirjjksklltmmnunoovppqwqrrxsstytuuzvvw0wxx1yyz2z113223434455666777889890091abc2def3ghi4jkl5mno6pqr7stu8vwx9yz11aab2bcc3dd4ee5ff6gg7hh8ii9j0jk1kl2lmm3nnoo4p5pq6qrr7ss8tt9uuvv0wwx1x2yyzz13aba4cbcb5dcdc6dedfef8egf9gfh0ghg1ihi2hji3jik4jkj5lkl6kml7mln8mnm9ono--><html xmlns="http://www.w3.org/1999/xhtml" <?php if ( function_exists( 'language_attributes' ) && function_exists( 'is_rtl' ) ) language_attributes(); else echo "dir='$text_direction'"; ?>><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo $title ?>
- functions.wp-scripts.php
- functions.wp-styles.php
- general-template.php
- http.php
- kses.php
- l10n.php
- link-template.php
- <?php echo /*WP_I18N_MAINTENANCE*/'Maintenance'/*/WP_I18N_MAINTENANCE*/; ?>
- locale.php
- media.php
- meta.php
- ms-blogs.php
- ms-default-constants.php
- ms-default-filters.php
- Error!
- ms-files.php
- ms-functions.php
- ms-load.php
- ms-settings.php
- nav-menu-template.php
- nav-menu.php
- pluggable-deprecated.php
- pluggable.php
- plugin.php
- post-template.php
- post-thumbnail-template.php
- post.php
- query.php
- registration-functions.php
- registration.php
- rewrite.php
- rss-functions.php
- rss.php
- script-loader.php
- shortcodes.php
- taxonomy.php
- template-loader.php
- theme.php
- update.php
- user.php
- vars.php
- version.php
- widgets.php
- wp-db.php
- wp-diff.php
- /wp-includes/Text/
- Diff.php
- /wp-includes/Text/Diff/
- Renderer.php
- /wp-includes/Text/Diff/Engine/
- /wp-includes/Text/Diff/Renderer/
- /wp-includes/css/
- /wp-includes/js/
- /wp-includes/js/crop/
- /wp-includes/js/imgareaselect/
- /wp-includes/js/jcrop/
- /wp-includes/js/jquery/
- /wp-includes/js/jquery/ui/
- /wp-includes/js/plupload/
- /wp-includes/js/scriptaculous/
- /wp-includes/js/swfupload/
- /wp-includes/js/swfupload/plugins/
- /wp-includes/js/thickbox/
- /wp-includes/js/tinymce/
- <?php _e('Rich Editor Help') ?>
- wp-tinymce.php
- /wp-includes/js/tinymce/langs/
- /wp-includes/js/tinymce/plugins/
- /wp-includes/js/tinymce/plugins/directionality/
- /wp-includes/js/tinymce/plugins/fullscreen/
- /wp-includes/js/tinymce/plugins/inlinepopups/
- Template for dialogs
- /wp-includes/js/tinymce/plugins/inlinepopups/skins/
- /wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/
- /wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/
- /wp-includes/js/tinymce/plugins/media/
- {#media_dlg.title}
- /wp-includes/js/tinymce/plugins/media/css/
- /wp-includes/js/tinymce/plugins/media/js/
- /wp-includes/js/tinymce/plugins/paste/
- /wp-includes/js/tinymce/plugins/spellchecker/
- config.php
- rpc.php
- /wp-includes/js/tinymce/plugins/spellchecker/classes/
- /wp-includes/js/tinymce/plugins/spellchecker/css/
- /wp-includes/js/tinymce/plugins/spellchecker/img/
- /wp-includes/js/tinymce/plugins/spellchecker/includes/
- /wp-includes/js/tinymce/plugins/tabfocus/
- /wp-includes/js/tinymce/plugins/wordpress/
- /wp-includes/js/tinymce/plugins/wordpress/css/
- /wp-includes/js/tinymce/plugins/wordpress/img/
- /wp-includes/js/tinymce/plugins/wpdialogs/
- /wp-includes/js/tinymce/plugins/wpdialogs/js/
- /wp-includes/js/tinymce/plugins/wpeditimage/
- editimage.html
- /wp-includes/js/tinymce/plugins/wpeditimage/css/
- /wp-includes/js/tinymce/plugins/wpeditimage/img/
- /wp-includes/js/tinymce/plugins/wpeditimage/js/
- /wp-includes/js/tinymce/plugins/wpfullscreen/
- /wp-includes/js/tinymce/plugins/wpfullscreen/css/
- /wp-includes/js/tinymce/plugins/wpgallery/
- /wp-includes/js/tinymce/plugins/wpgallery/img/
- /wp-includes/js/tinymce/plugins/wplink/
- /wp-includes/js/tinymce/themes/
- /wp-includes/js/tinymce/themes/advanced/
- /wp-includes/js/tinymce/utils/
- /wp-includes/pomo/
- /wp-includes/theme-compat/
This page was last updated on 2012-01-13
| |