2007-05-04 Mark Rowe <mrowe@apple.com>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Jun 2007 09:41:09 +0000 (09:41 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Jun 2007 09:41:09 +0000 (09:41 +0000)
        Upgrade to WordPress 2.2.  I didn't go to the effort of tracking down files
        present in the old version which have since been removed, but it's unlikely
        they'll ever cause a problem.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@21966 268f45cc-cd09-0410-ab3c-d52691b4dbfc

462 files changed:
WebKitSite/ChangeLog
WebKitSite/blog/.htaccess
WebKitSite/blog/index.php
WebKitSite/blog/readme.html
WebKitSite/blog/wp-admin/admin-ajax.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/admin-db.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/admin-footer.php
WebKitSite/blog/wp-admin/admin-functions.php
WebKitSite/blog/wp-admin/admin-header.php
WebKitSite/blog/wp-admin/admin.php
WebKitSite/blog/wp-admin/bookmarklet.php
WebKitSite/blog/wp-admin/cat.js [new file with mode: 0644]
WebKitSite/blog/wp-admin/categories.js [new file with mode: 0644]
WebKitSite/blog/wp-admin/categories.php
WebKitSite/blog/wp-admin/comment.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/custom-fields.js [new file with mode: 0644]
WebKitSite/blog/wp-admin/custom-header.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/dbx-admin-key.js [new file with mode: 0644]
WebKitSite/blog/wp-admin/edit-category-form.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/edit-comments.js [new file with mode: 0644]
WebKitSite/blog/wp-admin/edit-comments.php
WebKitSite/blog/wp-admin/edit-form-advanced.php
WebKitSite/blog/wp-admin/edit-form-comment.php
WebKitSite/blog/wp-admin/edit-form.php
WebKitSite/blog/wp-admin/edit-link-form.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/edit-page-form.php
WebKitSite/blog/wp-admin/edit-pages.php
WebKitSite/blog/wp-admin/edit.php
WebKitSite/blog/wp-admin/export.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-bg-left.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-bg-right.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-bg.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-butt-left.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-butt-right.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-butt.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-head-left.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-head-right.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/box-head.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/browse-happy.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/fade-butt.png [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/login-bkg-bottom.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/login-bkg-tile.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/notice.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/toggle.gif [new file with mode: 0644]
WebKitSite/blog/wp-admin/images/wordpress-logo.png [new file with mode: 0644]
WebKitSite/blog/wp-admin/import.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/blogger.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/blogware.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/dotclear.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/greymatter.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/livejournal.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/mt.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/rss.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/textpattern.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/import/wordpress.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/index-extra.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/index.php
WebKitSite/blog/wp-admin/install-helper.php
WebKitSite/blog/wp-admin/install-rtl.css [new file with mode: 0644]
WebKitSite/blog/wp-admin/install.css [new file with mode: 0644]
WebKitSite/blog/wp-admin/install.php
WebKitSite/blog/wp-admin/link-add.php
WebKitSite/blog/wp-admin/link-import.php
WebKitSite/blog/wp-admin/link-manager.php
WebKitSite/blog/wp-admin/link-parse-opml.php
WebKitSite/blog/wp-admin/link.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/menu-header.php
WebKitSite/blog/wp-admin/menu.php
WebKitSite/blog/wp-admin/moderation.php
WebKitSite/blog/wp-admin/options-discussion.php
WebKitSite/blog/wp-admin/options-general.php
WebKitSite/blog/wp-admin/options-head.php
WebKitSite/blog/wp-admin/options-misc.php
WebKitSite/blog/wp-admin/options-permalink.php
WebKitSite/blog/wp-admin/options-privacy.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/options-reading.php
WebKitSite/blog/wp-admin/options-writing.php
WebKitSite/blog/wp-admin/options.php
WebKitSite/blog/wp-admin/page-new.php
WebKitSite/blog/wp-admin/page.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/plugin-editor.php
WebKitSite/blog/wp-admin/plugins.php
WebKitSite/blog/wp-admin/post-new.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/post.php
WebKitSite/blog/wp-admin/profile-update.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/profile.php
WebKitSite/blog/wp-admin/rtl.css [new file with mode: 0644]
WebKitSite/blog/wp-admin/setup-config.php
WebKitSite/blog/wp-admin/sidebar.php
WebKitSite/blog/wp-admin/templates.php
WebKitSite/blog/wp-admin/theme-editor.php
WebKitSite/blog/wp-admin/themes.php
WebKitSite/blog/wp-admin/update-links.php
WebKitSite/blog/wp-admin/upgrade-functions.php
WebKitSite/blog/wp-admin/upgrade-schema.php
WebKitSite/blog/wp-admin/upgrade.php
WebKitSite/blog/wp-admin/upload-functions.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/upload-rtl.css [new file with mode: 0644]
WebKitSite/blog/wp-admin/upload.css [new file with mode: 0644]
WebKitSite/blog/wp-admin/upload.js [new file with mode: 0644]
WebKitSite/blog/wp-admin/upload.php
WebKitSite/blog/wp-admin/user-edit.php
WebKitSite/blog/wp-admin/users.js [new file with mode: 0644]
WebKitSite/blog/wp-admin/users.php
WebKitSite/blog/wp-admin/widgets-rtl.css [new file with mode: 0644]
WebKitSite/blog/wp-admin/widgets.css [new file with mode: 0644]
WebKitSite/blog/wp-admin/widgets.php [new file with mode: 0644]
WebKitSite/blog/wp-admin/wp-admin.css
WebKitSite/blog/wp-admin/xfn.js [new file with mode: 0644]
WebKitSite/blog/wp-app.php [new file with mode: 0644]
WebKitSite/blog/wp-atom.php
WebKitSite/blog/wp-blog-header.php
WebKitSite/blog/wp-comments-post.php
WebKitSite/blog/wp-commentsrss2.php
WebKitSite/blog/wp-config-sample.php
WebKitSite/blog/wp-config.php
WebKitSite/blog/wp-content/advanced-cache.php [new symlink]
WebKitSite/blog/wp-content/index.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_about.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_admin_css.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_blacklist_class.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_captcha_graphic.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_comment_class.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_core_class.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_functions.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugin_class.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_anubis_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_basic_plugins.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_blacklist_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_captcha_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_javascript_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_payload_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_pjw_daily_digest_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_rbl_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_referrer_check_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins/sk2_snowball_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_second_chance.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/sk2_util_class.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/SK2/spam_karma_2_plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/akismet/akismet.gif [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/akismet/akismet.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/cjd_delete.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/hello.php
WebKitSite/blog/wp-content/plugins/wp-cache/README.txt [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/wp-cache/wp-cache-config-sample.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/wp-cache/wp-cache-phase1.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/wp-cache/wp-cache-phase2.php [new file with mode: 0644]
WebKitSite/blog/wp-content/plugins/wp-cache/wp-cache.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/comments-popup.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/comments.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/footer.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/functions.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/header.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/index.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/screenshot.png [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/sidebar.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/classic/style.css [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/404.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/archive.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/archives.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/attachment.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/comments-popup.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/comments.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/footer.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/functions.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/header.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/audio.jpg [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/header-img.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/kubrickbg-ltr.jpg [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/kubrickbg-rtl.jpg [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/kubrickbgcolor.jpg [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/kubrickbgwide.jpg [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/kubrickfooter.jpg [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/images/kubrickheader.jpg [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/index.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/links.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/page.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/rtl.css [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/screenshot.png [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/search.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/searchform.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/sidebar.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/single.php [new file with mode: 0644]
WebKitSite/blog/wp-content/themes/default/style.css [new file with mode: 0644]
WebKitSite/blog/wp-content/wp-cache-config.php [new file with mode: 0644]
WebKitSite/blog/wp-cron.php [new file with mode: 0644]
WebKitSite/blog/wp-feed.php
WebKitSite/blog/wp-includes/author-template.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/bookmark-template.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/bookmark.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/cache.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/capabilities.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/category-template.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/category.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/class-IXR.php
WebKitSite/blog/wp-includes/class-phpmailer.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/class-pop3.php
WebKitSite/blog/wp-includes/class-smtp.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/class-snoopy.php
WebKitSite/blog/wp-includes/classes.php
WebKitSite/blog/wp-includes/comment-template.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/comment.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/compat.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/cron.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/default-filters.php
WebKitSite/blog/wp-includes/deprecated.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/feed-atom-comments.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/feed-atom.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/feed-rdf.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/feed-rss.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/feed-rss2-comments.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/feed-rss2.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/feed.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/formatting.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/functions.php
WebKitSite/blog/wp-includes/general-template.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/gettext.php
WebKitSite/blog/wp-includes/images/rss.png [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_arrow.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_biggrin.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_confused.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_cool.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_cry.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_eek.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_evil.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_exclaim.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_idea.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_lol.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_mad.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_mrgreen.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_neutral.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_question.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_razz.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_redface.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_rolleyes.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_sad.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_smile.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_surprised.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_twisted.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/images/smilies/icon_wink.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/autosave.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/colorpicker.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/crop/cropper.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/crop/cropper.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/crop/marqueeHoriz.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/crop/marqueeVert.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/dbx.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/fat.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/jquery/interface.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/jquery/jquery.form.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/jquery/jquery.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/list-manipulation.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/prototype.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/quicktags.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/MIT-LICENSE [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/builder.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/controls.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/dragdrop.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/effects.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/prototype.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/scriptaculous.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/slider.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/unittest.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/scriptaculous/wp-scriptaculous.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/blank.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/langs/en.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/license.html [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/license.txt [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/autosave/editor_plugin.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/autosave/editor_plugin_src.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/autosave/langs/en.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/autosave/readme.txt [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality/editor_plugin.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality/images/ltr.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality/images/rtl.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality/langs/en.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/css/inlinepopup.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/images/spacer.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/images/window_close.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/images/window_maximize.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/images/window_minimize.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/images/window_resize.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/jscripts/mcwindows.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/blank.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/css/blank.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/css/pasteword.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/editor_plugin.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/images/pastetext.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/images/pasteword.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/images/selectall.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/jscripts/pastetext.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/jscripts/pasteword.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/langs/en.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/pastetext.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/pasteword.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/HttpClient.class.php [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/TinyGoogleSpell.class.php [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/TinyPspell.class.php [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/TinyPspellShell.class.php [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/config.php [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/css/content.css [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/css/spellchecker.css [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/images/spellchecker.gif [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/images/wline.gif [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/langs/en.js [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/tinyspell.php [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/images/help.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/images/more.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/images/more_bug.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/images/page.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/images/page_bug.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/images/toolbars.gif [new file with mode: 0755]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/langs/en.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/popups.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/wordpress.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wphelp/editor_plugin.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wphelp/images/help.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/plugins/wphelp/langs/en.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/about.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/anchor.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/charmap.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/color_picker.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/css/editor_content.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/css/editor_popup.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/css/editor_ui.css [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/editor_template.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/image.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/anchor.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/anchor_symbol.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/backcolor.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/bold.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/bold_de_se.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/bold_es.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/bold_fr.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/bold_ru.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/bold_tw.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/browse.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/bullist.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/button_menu.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/buttons.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/cancel_button_bg.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/center.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/charmap.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/cleanup.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/close.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/code.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/color.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/copy.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/custom_1.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/cut.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/forecolor.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/full.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/help.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/hr.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/image.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/indent.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/insert_button_bg.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/italic.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/italic_de_se.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/italic_es.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/italic_ru.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/italic_tw.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/justifycenter.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/justifyfull.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/justifyleft.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/justifyright.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/left.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/link.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/menu_check.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/newdocument.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/numlist.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/opacity.png [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/outdent.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/paste.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/redo.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/removeformat.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/right.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/separator.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/spacer.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/statusbar_resize.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/strikethrough.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/sub.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/sup.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/table.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/table_delete_col.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/table_delete_row.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/table_insert_col_after.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/table_insert_col_before.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/table_insert_row_after.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/table_insert_row_before.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/underline.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/underline_es.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/underline_fr.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/underline_ru.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/underline_tw.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/undo.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/unlink.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/visualaid.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/xp/tab_bg.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/xp/tab_end.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/xp/tab_sel_bg.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/xp/tab_sel_end.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/xp/tabs_bg.gif [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts/about.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts/anchor.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts/charmap.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts/color_picker.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts/image.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts/link.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts/source_editor.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/langs/en.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/link.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/source_editor.htm [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/tiny_mce.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/tiny_mce_config.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/tiny_mce_gzip.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/tiny_mce_popup.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/utils/editable_selects.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/utils/form_utils.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/utils/mclayer.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/utils/mctabs.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/utils/validate.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tinymce/wp-mce-help.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/tw-sack.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/js/wp-ajax.js [new file with mode: 0644]
WebKitSite/blog/wp-includes/kses.php
WebKitSite/blog/wp-includes/l10n.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/link-template.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/locale.php
WebKitSite/blog/wp-includes/pluggable.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/plugin.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/post-template.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/post.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/query.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/registration-functions.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/registration.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/rewrite.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/rss-functions.php
WebKitSite/blog/wp-includes/rss.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/script-loader.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/streams.php
WebKitSite/blog/wp-includes/template-loader.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/theme.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/user.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/vars.php
WebKitSite/blog/wp-includes/version.php
WebKitSite/blog/wp-includes/widgets.php [new file with mode: 0644]
WebKitSite/blog/wp-includes/wp-db.php
WebKitSite/blog/wp-links-opml.php
WebKitSite/blog/wp-login.php
WebKitSite/blog/wp-mail.php
WebKitSite/blog/wp-pass.php
WebKitSite/blog/wp-rdf.php
WebKitSite/blog/wp-register.php
WebKitSite/blog/wp-rss.php
WebKitSite/blog/wp-rss2.php
WebKitSite/blog/wp-settings.php
WebKitSite/blog/wp-trackback.php
WebKitSite/blog/xmlrpc.php

index f5f88523a1df7e9c567633b321ddfdf8a1fa1088..0514d7739fed1b9a3af291180997f03582dd2481 100644 (file)
@@ -1,3 +1,9 @@
+2007-05-04  Mark Rowe  <mrowe@apple.com>
+
+        Upgrade to WordPress 2.2.  I didn't go to the effort of tracking down files
+        present in the old version which have since been removed, but it's unlikely
+        they'll ever cause a problem.
+
 2007-05-04  Mark Rowe  <mrowe@apple.com>
 
         Add graphics used by existing blog posts into SVN.
index 111c227a2c0a8b4fb9bc460d38de9c392c12c526..50376e3e7846e7751e406ed190680f526910b55d 100644 (file)
@@ -3,55 +3,9 @@
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /blog/
-RewriteCond %{REQUEST_FILENAME} -f [OR]
-RewriteCond %{REQUEST_FILENAME} -d
-RewriteRule ^.*$ - [S=45]
-RewriteRule ^(webkit-coding-style-guidelines)/trackback/?$ /blog/index.php?pagename=$1&tb=1 [QSA,L]
-RewriteRule ^(webkit-coding-style-guidelines)/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?pagename=$1&feed=$2 [QSA,L]
-RewriteRule ^(webkit-coding-style-guidelines)/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?pagename=$1&feed=$2 [QSA,L]
-RewriteRule ^(webkit-coding-style-guidelines)/page/?([0-9]{1,})/?$ /blog/index.php?pagename=$1&paged=$2 [QSA,L]
-RewriteRule ^(webkit-coding-style-guidelines)(/[0-9]+)?/?$ /blog/index.php?pagename=$1&page=$2 [QSA,L]
-RewriteRule ^feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?&feed=$1 [QSA,L]
-RewriteRule ^(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?&feed=$1 [QSA,L]
-RewriteRule ^page/?([0-9]{1,})/?$ /blog/index.php?&paged=$1 [QSA,L]
-RewriteRule ^comments/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?&feed=$1&withcomments=1 [QSA,L]
-RewriteRule ^comments/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?&feed=$1&withcomments=1 [QSA,L]
-RewriteRule ^comments/page/?([0-9]{1,})/?$ /blog/index.php?&paged=$1 [QSA,L]
-RewriteRule ^search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?s=$1&feed=$2 [QSA,L]
-RewriteRule ^search/(.+)/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?s=$1&feed=$2 [QSA,L]
-RewriteRule ^search/(.+)/page/?([0-9]{1,})/?$ /blog/index.php?s=$1&paged=$2 [QSA,L]
-RewriteRule ^search/(.+)/?$ /blog/index.php?s=$1 [QSA,L]
-RewriteRule ^category/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?category_name=$1&feed=$2 [QSA,L]
-RewriteRule ^category/(.+)/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?category_name=$1&feed=$2 [QSA,L]
-RewriteRule ^category/(.+)/page/?([0-9]{1,})/?$ /blog/index.php?category_name=$1&paged=$2 [QSA,L]
-RewriteRule ^category/(.+)/?$ /blog/index.php?category_name=$1 [QSA,L]
-RewriteRule ^author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?author_name=$1&feed=$2 [QSA,L]
-RewriteRule ^author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?author_name=$1&feed=$2 [QSA,L]
-RewriteRule ^author/([^/]+)/page/?([0-9]{1,})/?$ /blog/index.php?author_name=$1&paged=$2 [QSA,L]
-RewriteRule ^author/([^/]+)/?$ /blog/index.php?author_name=$1 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?year=$1&monthnum=$2&day=$3&feed=$4 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?year=$1&monthnum=$2&day=$3&feed=$4 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$ /blog/index.php?year=$1&monthnum=$2&day=$3&paged=$4 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /blog/index.php?year=$1&monthnum=$2&day=$3 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?year=$1&monthnum=$2&feed=$3 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?year=$1&monthnum=$2&feed=$3 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/page/?([0-9]{1,})/?$ /blog/index.php?year=$1&monthnum=$2&paged=$3 [QSA,L]
-RewriteRule ^date/([0-9]{4})/([0-9]{1,2})/?$ /blog/index.php?year=$1&monthnum=$2 [QSA,L]
-RewriteRule ^date/([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?year=$1&feed=$2 [QSA,L]
-RewriteRule ^date/([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?year=$1&feed=$2 [QSA,L]
-RewriteRule ^date/([0-9]{4})/page/?([0-9]{1,})/?$ /blog/index.php?year=$1&paged=$2 [QSA,L]
-RewriteRule ^date/([0-9]{4})/?$ /blog/index.php?year=$1 [QSA,L]
-RewriteRule ^([0-9]+)/([^/]+)/trackback/?$ /blog/index.php?p=$1&name=$2&tb=1 [QSA,L]
-RewriteRule ^([0-9]+)/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?p=$1&name=$2&feed=$3 [QSA,L]
-RewriteRule ^([0-9]+)/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?p=$1&name=$2&feed=$3 [QSA,L]
-RewriteRule ^([0-9]+)/([^/]+)/page/?([0-9]{1,})/?$ /blog/index.php?p=$1&name=$2&paged=$3 [QSA,L]
-RewriteRule ^([0-9]+)/([^/]+)(/[0-9]+)?/?$ /blog/index.php?p=$1&name=$2&page=$3 [QSA,L]
-RewriteRule ^([0-9]+)/trackback/?$ /blog/index.php?p=$1&tb=1 [QSA,L]
-RewriteRule ^([0-9]+)/feed/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?p=$1&feed=$2 [QSA,L]
-RewriteRule ^([0-9]+)/(feed|rdf|rss|rss2|atom)/?$ /blog/index.php?p=$1&feed=$2 [QSA,L]
-RewriteRule ^([0-9]+)/page/?([0-9]{1,})/?$ /blog/index.php?p=$1&paged=$2 [QSA,L]
-RewriteRule ^([0-9]+)(/[0-9]+)?/?$ /blog/index.php?p=$1&page=$2 [QSA,L]
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule . /blog/index.php [L]
 </IfModule>
 
 # END WordPress
-
index 3e3db402e006200ab05dc725509a60864d87104d..b1c655cd5206a392562d94d6f8dbd7a0da2cafbe 100644 (file)
@@ -1,4 +1,4 @@
-<?php 
+<?php
 /* Short and sweet */
 define('WP_USE_THEMES', true);
 require('./wp-blog-header.php');
index 848fcd7602b5fdc528854591f619a0da3c55c1e0..8b2d65e34e8cdb665e7198fe18f4de25eeb50f3d 100644 (file)
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>WordPress &rsaquo; ReadMe</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<style type="text/css" media="screen">
-       <!--
-       html {
-               background: #eee;
-       }
-       body {
-               background: #fff;
-               color: #000;
-               font-family: Georgia, "Times New Roman", Times, serif;
-               margin-left: 25%;
-               margin-right: 25%;
-               padding: .2em 2em;
-       }
-       
-       h1 {
-               color: #006;
-               font-size: 18px;
-               font-weight: lighter;
-       }
-       
-       h2 {
-               font-size: 16px;
-       }
-       
-       p, li, dt {
-               line-height: 140%;
-               padding-bottom: 2px;
-       }
-
-       ul, ol {
-               padding: 5px 5px 5px 20px;
-       }
-       -->
-       </style>
+       <title>WordPress &rsaquo; ReadMe</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <link rel="stylesheet" href="wp-admin/install.css" type="text/css" />
 </head>
 <body>
-<h1 style="text-align: center"><img alt="WordPress" src="http://wordpress.org/images/wordpress.gif" /> <br />
-       Version 1.5.1</h1>
-<p style="text-align: center"> Semantic Personal Publishing Platform </p>
+<h1 id="logo" style="text-align: center">
+       <img alt="WordPress" src="wp-admin/images/wordpress-logo.png" />
+       <br /> Version 2.2
+</h1>
+<p style="text-align: center">Semantic Personal Publishing Platform</p>
+
 <h1>First Things First</h1>
 <p>Welcome. WordPress is a very special project to me. Every developer and contributor adds something unique to the mix, and together we create something beautiful that I'm proud to be a part of. Thousands of hours have gone into WordPress, and we're dedicated to making it better every day. Thank you for making it part of your world.</p>
-<p style="text-align: right;">&#8212; Matt Mullenweg </p>
+<p style="text-align: right;">&#8212; Matt Mullenweg</p>
 
-<h1 id="installation">Installation: Famous 5-minute install</h1>
+<h1>Installation: Famous 5-minute install</h1>
 <ol>
-       <li>Unzip the package in an empty directory</li>
-       <li>Open up <code>wp-config-sample.php</code> with a text editor like WordPad or similar and fill in your database connection details</li>
-       <li>Save the file as <code>wp-config.php</code> </li>
+       <li>Unzip the package in an empty directory.</li>
+       <li>Open up <code>wp-config-sample.php</code> with a text editor like WordPad or similar and fill in your database connection details.</li>
+       <li>Save the file as <code>wp-config.php</code></li>
        <li>Upload everything.</li>
-       <li>Launch <span class="file"><a href="wp-admin/install.php">/wp-admin/install.php</a></span> in your browser. This should setup the tables needed for your blog. If there is an error, double check your <span class="file">wp-config.php</span> file, and try again. If it fails again, please go to the <a href="http://wordpress.org/support/">support forums</a> with as much data as you can gather. </li>
+       <li>Open <span class="file"><a href="wp-admin/install.php">/wp-admin/install.php</a></span> in your browser. This should setup the tables needed for your blog. If there is an error, double check your <span class="file">wp-config.php</span> file, and try again. If it fails again, please go to the <a href="http://wordpress.org/support/">support forums</a> with as much data as you can gather.</li>
        <li><strong>Note the password given to you.</strong></li>
        <li> The install script should then send you to the <a href="wp-login.php">login page</a>. Sign in with the username <code>admin</code> and the password generated during the installation. You can then click on 'Profile' to change the password.</li>
 </ol>
 
 <h1>Upgrading</h1>
 <p>Before you upgrade anything, make sure you have backup copies of any files you may have modified such as <code>index.php</code>.</p>
-<h2>Upgrading from any previous WordPress to 1.5:</h2>
+<h2>Upgrading from any previous WordPress to 2.2:</h2>
 <ol>
-       <li>Delete your old WP files, saving ones you've modified </li>
-       <li>Upload the new files</li>
-       <li>Point your browser to <span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a></span></li>
+       <li>Delete your old WP files, saving ones you've modified.</li>
+       <li>Upload the new files.</li>
+       <li>Point your browser to <span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a>.</span></li>
        <li>You wanted more, perhaps? That's it!</li>
 </ol>
 <h2>Template Changes</h2>
 <p>If you have customized your templates you will probably have to make some changes to them. If you're converting your 1.2 or earlier templates, <a href="http://codex.wordpress.org/Upgrade_1.2_to_1.5">we've created a special guide for you</a>. </p>
+
 <h1>Online Resources</h1>
 <p>If you have any questions that aren't addressed in this document, please take advantage of WordPress' numerous online resources:</p>
 <dl>
        <dt><a href="http://codex.wordpress.org/">The WordPress Codex </a></dt>
-       <dd>The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available. </dd>
+               <dd>The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available.</dd>
        <dt><a href="http://wordpress.org/development/">The Development Blog</a></dt>
-       <dd>This is where you'll find the latest updates and news related to WordPress. Bookmark and check often. </dd>
+               <dd>This is where you'll find the latest updates and news related to WordPress. Bookmark and check often.</dd>
        <dt><a href="http://planet.wordpress.org/">WordPress Planet </a></dt>
-       <dd>The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web. </dd>
+               <dd>The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web.</dd>
        <dt><a href="http://wordpress.org/support/">WordPress Support Forums</a></dt>
-       <dd>If you've looked everywhere and still can't find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible. </dd>
+               <dd>If you've looked everywhere and still can't find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible.</dd>
        <dt><a href="http://codex.wordpress.org/IRC">WordPress IRC Channel</a></dt>
-       <dd>Finally, there is an online chat channel that is used for discussion amoung people who use WordPress and occasionally support topics. The above wiki page should point you in the right direction. (irc.freenode.net #wordpresss) </dd>
+               <dd>Finally, there is an online chat channel that is used for discussion among people who use WordPress and occasionally support topics. The above wiki page should point you in the right direction. (<a href="irc://irc.freenode.net/wordpress">irc.freenode.net #wordpress</a>)</dd>
 </dl>
 
-<h1 id="requirements">System Recommendations</h1>
+<h1>System Recommendations</h1>
 <ul>
-       <li>PHP version <strong>4.1</strong> or higher</li>
-       <li>MySQL version <strong>3.23.23</strong> or higher</li>
-       <li>... and a link to <a href="http://wordpress.org">http://wordpress.org</a> on your site.</li>
+       <li>PHP version <strong>4.2</strong> or higher.</li>
+       <li>MySQL version <strong>4.0</strong> or higher.</li>
+       <li>... and a link to <a href="http://wordpress.org/">http://wordpress.org</a> on your site.</li>
 </ul>
-<p>WordPress is the official continuation of <a href="http://cafelog.com/">b2/caf&eacute;log</a>, which came from Michel V. The work has been continued by the <a href="http://wordpress.org/about/">WordPress developers</a>. If you would like to support WordPress, please consider <a href="http://wordpress.org/donate/">donating</a>. </p>
+<p>WordPress is the official continuation of <a href="http://cafelog.com/">b2/caf&eacute;log</a>, which came from Michel V. The work has been continued by the <a href="http://wordpress.org/about/">WordPress developers</a>. If you would like to support WordPress, please consider <a href="http://wordpress.org/donate/">donating</a>.</p>
 
 <h1>Upgrading from another system</h1>
-<p>WordPress can <a href="http://codex.wordpress.org/Importing_from_other_blogging_software">import from a number of systems</a>. First you need to get WordPress installed and working as described above.</p>
+<p>WordPress can <a href="http://codex.wordpress.org/Importing_Content">import from a number of systems</a>. First you need to get WordPress installed and working as described above.</p>
 
-<h1 id="templates">XML-RPC Interface</h1>
-<p>You can now post to your WordPress blog with tools like <a href="http://ecto.kung-foo.tv/">Ecto</a>, <a href="http://blogbuddy.sourceforge.net">BlogBuddy</a>, <a href="http://bloggar.com/">Bloggar</a>, <a href="http://www.ubique.ch/wapblogger/">WapBlogger</a> (post from your Wap cellphone!), <a href="http://radio.userland.com">Radio Userland</a> (which means you can use Radio's email-to-blog feature), <a href="http://www.zempt.com/">Zempt</a>, <a href="http://www.newzcrawler.com/">NewzCrawler</a>, and other tools that support the Blogging APIs! :) You can read more about <a href="http://codex.wordpress.org/XML-RPC_Support">XML-RPC support on the Codex</a>.</p>
+<h1>XML-RPC and Atom Interface</h1>
+<p>You can now post to your WordPress blog with tools like <a href="http://windowslivewriter.spaces.live.com/">Windows Live Writer</a>, <a href="http://ecto.kung-foo.tv/">Ecto</a>, <a href="http://bloggar.com/">Bloggar</a>, <a href="http://radio.userland.com">Radio Userland</a> (which means you can use Radio's email-to-blog feature), <a href="http://www.newzcrawler.com/">NewzCrawler</a>, and other tools that support the Blogging APIs! :) You can read more about <a href="http://codex.wordpress.org/XML-RPC_Support">XML-RPC support on the Codex</a>.</p>
 
 <h1>Post via Email</h1>
-<p>You can post from an email client! To set this up go to your &quot;Writing&quot; options screen and fill in the connection details for your secret POP3 account. Then you need to set up <code>wp-mail.php</code> to execute periodically to check the mailbox for new posts. You can do it with Cron-jobs, or if your host doesn't support it you can look into the various website-monitoring services, and make them check your <code>wp-mail.php</code> URL. </p>
-<p> Posting is easy: Any email sent to the address you specify will be posted, with the subject as the title. It is best to keep the address dicrete. The script will <i>delete</i> emails that are successfully posted. </p>
-<h1 id="notes">User Levels </h1>
-<p>You may allow or disallow user registration in your <a href="wp-admin/options-general.php">General options</a>. If &quot;new users can blog&quot; is disabled you must first raise the level of a newly registered user to allow them to post. Click the plus sign next to their name on the <a href="wp-admin/users.php">Users</a> page. </p>
-<h2>User Levels</h2>
-<ul>
-       <li>0 - New User </li>
-       <li>1 - User can post, edit, and delete their own posts.</li>
-       <li>5+ - Admin; can post, edit, delete other people's posts, and change the options.</li>
-       <li>Any user whose level is higher than 1, can edit and delete the posts and change the level of lower users. Example: a level 2 user is not an admin, but can edit the posts of level 1 users, and up the level of a new user from 0 to 1.</li>
-</ul>
-<p>Usually you want to have a team of level 1 users except for you.</p>
+<p>You can post from an email client! To set this up go to your &quot;Writing&quot; options screen and fill in the connection details for your secret POP3 account. Then you need to set up <code>wp-mail.php</code> to execute periodically to check the mailbox for new posts. You can do it with Cron-jobs, or if your host doesn't support it you can look into the various website-monitoring services, and make them check your <code>wp-mail.php</code> URL.</p>
+<p>Posting is easy: Any email sent to the address you specify will be posted, with the subject as the title. It is best to keep the address dicrete. The script will <i>delete</i> emails that are successfully posted.</p>
+
+<h1>User Roles</h1>
+<p>We've eliminated user levels in order to make way for the much more flexible roles system introduced in 2.0. You can <a href="http://codex.wordpress.org/Roles_and_Capabilities">read more about Roles and Capabilities on the Codex</a>.</p>
+
 <h1> Final notes</h1>
 <ul>
-       <li>If you have any suggestions, ideas, comments, or if you (gasp!) found a bug, join us in the <a href="http://wordpress.org/support/">Support Forums</a></li>
+       <li>If you have any suggestions, ideas, comments, or if you (gasp!) found a bug, join us in the <a href="http://wordpress.org/support/">Support Forums</a>.</li>
        <li>WordPress now has a robust plugin API that makes extending the code easy. If you are a developer interested in utilizing this see the <a href="http://codex.wordpress.org/Plugin_API">plugin documentation in the Codex</a>. In most all cases you shouldn't modify any of the core code.</li>
 </ul>
 
 <p>WordPress is released under the <abbr title="GNU Public License">GPL</abbr> (see <a href="license.txt">license.txt</a>).</p>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/WebKitSite/blog/wp-admin/admin-ajax.php b/WebKitSite/blog/wp-admin/admin-ajax.php
new file mode 100644 (file)
index 0000000..ad5064f
--- /dev/null
@@ -0,0 +1,296 @@
+<?php
+require_once('../wp-config.php');
+require_once('admin-functions.php');
+require_once('admin-db.php');
+
+define('DOING_AJAX', true);
+
+check_ajax_referer();
+if ( !is_user_logged_in() )
+       die('-1');
+
+function get_out_now() { exit; }
+add_action( 'shutdown', 'get_out_now', -1 );
+
+function wp_ajax_meta_row( $pid, $mid, $key, $value ) {
+       $value = attribute_escape($value);
+       $key_js = addslashes(wp_specialchars($key, 'double'));
+       $key = attribute_escape($key);
+       $r .= "<tr id='meta-$mid'><td valign='top'>";
+       $r .= "<input name='meta[$mid][key]' tabindex='6' onkeypress='return killSubmit(\"theList.ajaxUpdater(&#039;meta&#039;,&#039;meta-$mid&#039;);\",event);' type='text' size='20' value='$key' />";
+       $r .= "</td><td><textarea name='meta[$mid][value]' tabindex='6' rows='2' cols='30'>$value</textarea></td><td align='center'>";
+       $r .= "<input name='updatemeta' type='button' class='updatemeta' tabindex='6' value='".attribute_escape(__('Update'))."' onclick='return theList.ajaxUpdater(&#039;meta&#039;,&#039;meta-$mid&#039;);' /><br />";
+       $r .= "<input name='deletemeta[$mid]' type='submit' onclick=\"return deleteSomething( 'meta', $mid, '";
+       $r .= js_escape(sprintf(__("You are about to delete the '%s' custom field on this post.\n'OK' to delete, 'Cancel' to stop."), $key_js));
+       $r .= "' );\" class='deletemeta' tabindex='6' value='".attribute_escape(__('Delete'))."' /></td></tr>";
+       return $r;
+}
+
+$id = (int) $_POST['id'];
+switch ( $_POST['action'] ) :
+case 'delete-comment' :
+       if ( !$comment = get_comment( $id ) )
+               die('0');
+       if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+               die('-1');
+
+       if ( wp_delete_comment( $comment->comment_ID ) )
+               die('1');
+       else    die('0');
+       break;
+case 'delete-comment-as-spam' :
+       if ( !$comment = get_comment( $id ) )
+               die('0');
+       if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+               die('-1');
+
+       if ( wp_set_comment_status( $comment->comment_ID, 'spam' ) )
+               die('1');
+       else    die('0');
+       break;
+case 'delete-cat' :
+       if ( !current_user_can( 'manage_categories' ) )
+               die('-1');
+
+       if ( wp_delete_category( $id ) )
+               die('1');
+       else    die('0');
+       break;
+case 'delete-link' :
+       if ( !current_user_can( 'manage_links' ) )
+               die('-1');
+
+       if ( wp_delete_link( $id ) )
+               die('1');
+       else    die('0');
+       break;
+case 'delete-meta' :
+       if ( !$meta = get_post_meta_by_id( $id ) )
+               die('0');
+       if ( !current_user_can( 'edit_post', $meta->post_id ) )
+               die('-1');
+       if ( delete_meta( $meta->meta_id ) )
+               die('1');
+       die('0');
+       break;
+case 'delete-post' :
+       if ( !current_user_can( 'delete_post', $id ) )
+               die('-1');
+
+       if ( wp_delete_post( $id ) )
+               die('1');
+       else    die('0');
+       break;
+case 'delete-page' :
+       if ( !current_user_can( 'delete_page', $id ) )
+               die('-1');
+
+       if ( wp_delete_post( $id ) )
+               die('1');
+       else    die('0');
+       break;
+case 'dim-comment' :
+       if ( !$comment = get_comment( $id ) )
+               die('0');
+       if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) )
+               die('-1');
+       if ( !current_user_can( 'moderate_comments' ) )
+               die('-1');
+
+       if ( 'unapproved' == wp_get_comment_status($comment->comment_ID) ) {
+               if ( wp_set_comment_status( $comment->comment_ID, 'approve' ) )
+                       die('1');
+       } else {
+               if ( wp_set_comment_status( $comment->comment_ID, 'hold' ) )
+                       die('1');
+       }
+       die('0');
+       break;
+case 'add-category' : // On the Fly
+       if ( !current_user_can( 'manage_categories' ) )
+               die('-1');
+       $names = explode(',', $_POST['newcat']);
+       $x = new WP_Ajax_Response();
+       foreach ( $names as $cat_name ) {
+               $cat_name = trim($cat_name);
+               if ( !$category_nicename = sanitize_title($cat_name) )
+                       die('0');
+               if ( !$cat_id = category_exists( $cat_name ) )
+                       $cat_id = wp_create_category( $cat_name );
+               $cat_name = wp_specialchars(stripslashes($cat_name));
+               $x->add( array(
+                       'what' => 'category',
+                       'id' => $cat_id,
+                       'data' => "<li id='category-$cat_id'><label for='in-category-$cat_id' class='selectit'><input value='$cat_id' type='checkbox' checked='checked' name='post_category[]' id='in-category-$cat_id'/> $cat_name</label></li>"
+               ) );
+       }
+       $x->send();
+       break;
+case 'add-cat' : // From Manage->Categories
+       if ( !current_user_can( 'manage_categories' ) )
+               die('-1');
+       if ( !$cat = wp_insert_category( $_POST ) )
+               die('0');
+       if ( !$cat = get_category( $cat ) )
+               die('0');
+       $level = 0;
+       $cat_full_name = $cat->cat_name;
+       $_cat = $cat;
+       while ( $_cat->category_parent ) {
+               $_cat = get_category( $_cat->category_parent );
+               $cat_full_name = $_cat->cat_name . ' &#8212; ' . $cat_full_name;
+               $level++;
+       }
+       $cat_full_name = attribute_escape($cat_full_name);
+
+       $x = new WP_Ajax_Response( array(
+               'what' => 'cat',
+               'id' => $cat->cat_ID,
+               'data' => _cat_row( $cat, $level, $cat_full_name ),
+               'supplemental' => array('name' => $cat_full_name, 'show-link' => sprintf(__( 'Category <a href="#%s">%s</a> added' ), "cat-$cat->cat_ID", $cat_full_name))
+       ) );
+       $x->send();
+       break;
+case 'add-comment' :
+       if ( !current_user_can( 'edit_post', $id ) )
+               die('-1');
+       $search = isset($_POST['s']) ? $_POST['s'] : false;
+       $start = isset($_POST['page']) ? intval($_POST['page']) * 25 : 25;
+
+       list($comments, $total) = _wp_get_comment_list( $search, $start, 1 );
+
+       if ( !$comments )
+               die('1');
+       $x = new WP_Ajax_Response();
+       foreach ( (array) $comments as $comment ) {
+               get_comment( $comment );
+               ob_start();
+                       _wp_comment_list_item( $comment->comment_ID );
+                       $comment_list_item = ob_get_contents();
+               ob_end_clean();
+               $x->add( array(
+                       'what' => 'comment',
+                       'id' => $comment->comment_ID,
+                       'data' => $comment_list_item
+               ) );
+       }
+       $x->send();
+       break;
+case 'add-meta' :
+       if ( !current_user_can( 'edit_post', $id ) )
+               die('-1');
+       if ( $id < 0 ) {
+               $now = current_time('timestamp', 1);
+               if ( $pid = wp_insert_post( array(
+                       'post_title' => sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now))
+               ) ) )
+                       $mid = add_meta( $pid );
+               else
+                       die('0');
+       } else if ( !$mid = add_meta( $id ) ) {
+               die('0');
+       }
+
+       $meta = get_post_meta_by_id( $mid );
+       $key = $meta->meta_key;
+       $value = $meta->meta_value;
+       $pid = (int) $meta->post_id;
+
+       $x = new WP_Ajax_Response( array(
+               'what' => 'meta',
+               'id' => $mid,
+               'data' => wp_ajax_meta_row( $pid, $mid, $key, $value ),
+               'supplemental' => array('postid' => $pid)
+       ) );
+       $x->send();
+       break;
+case 'update-meta' :
+       $mid = (int) array_pop(array_keys($_POST['meta']));
+       $key = $_POST['meta'][$mid]['key'];
+       $value = $_POST['meta'][$mid]['value'];
+       if ( !$meta = get_post_meta_by_id( $mid ) )
+               die('0'); // if meta doesn't exist
+       if ( !current_user_can( 'edit_post', $meta->post_id ) )
+               die('-1');
+       if ( $u = update_meta( $mid, $key, $value ) ) {
+               $key = stripslashes($key);
+               $value = stripslashes($value);
+               $x = new WP_Ajax_Response( array(
+                       'what' => 'meta',
+                       'id' => $mid,
+                       'data' => wp_ajax_meta_row( $meta->post_id, $mid, $key, $value ),
+                       'supplemental' => array('postid' => $meta->post_id)
+               ) );
+               $x->send();
+       }
+       die('1'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
+       break;
+case 'add-user' :
+       if ( !current_user_can('edit_users') )
+               die('-1');
+       require_once(ABSPATH . WPINC . '/registration.php');
+       if ( !$user_id = add_user() )
+               die('0');
+       elseif ( is_wp_error( $user_id ) ) {
+               foreach( $user_id->get_error_messages() as $message )
+                       echo "<p>$message<p>";
+               exit;
+       }
+       $user_object = new WP_User( $user_id );
+       $x = new WP_Ajax_Response( array(
+               'what' => 'user',
+               'id' => $user_id,
+               'data' => user_row( $user_object ),
+               'supplemental' => array('show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login))
+       ) );
+       $x->send();
+       break;
+case 'autosave' : // The name of this action is hardcoded in edit_post()
+       $_POST['post_content'] = $_POST['content'];
+       $_POST['post_excerpt'] = $_POST['excerpt'];
+       $_POST['post_status'] = 'draft';
+       $_POST['post_category'] = explode(",", $_POST['catslist']);
+       if($_POST['post_type'] == 'page' || empty($_POST['post_category']))
+               unset($_POST['post_category']);
+
+       if($_POST['post_ID'] < 0) {
+               $_POST['temp_ID'] = $_POST['post_ID'];
+               $id = wp_write_post();
+               if( is_wp_error($id) )
+                       die($id->get_error_message());
+               else
+                       die("$id");
+       } else {
+               $post_ID = (int) $_POST['post_ID'];
+               $_POST['ID'] = $post_ID;
+               $post = get_post($post_ID);
+               if ( 'page' == $post->post_type ) {
+                       if ( !current_user_can('edit_page', $post_ID) )
+                               die(__('You are not allowed to edit this page.'));
+               } else {
+                       if ( !current_user_can('edit_post', $post_ID) )
+                               die(__('You are not allowed to edit this post.'));
+               }
+               wp_update_post($_POST);
+       }
+       die('0');
+break;
+case 'autosave-generate-nonces' :
+       $ID = (int) $_POST['post_ID'];
+       if($_POST['post_type'] == 'post') {
+               if(current_user_can('edit_post', $ID))
+                       die(wp_create_nonce('update-post_' . $ID));
+       }
+       if($_POST['post_type'] == 'page') {
+               if(current_user_can('edit_page', $ID)) {
+                       die(wp_create_nonce('update-page_' . $ID));
+               }
+       }
+       die($_POST['post_type']);
+break;
+default :
+       do_action( 'wp_ajax_' . $_POST['action'] );
+       die('0');
+       break;
+endswitch;
+?>
diff --git a/WebKitSite/blog/wp-admin/admin-db.php b/WebKitSite/blog/wp-admin/admin-db.php
new file mode 100644 (file)
index 0000000..b2ebd38
--- /dev/null
@@ -0,0 +1,523 @@
+<?php
+
+function get_users_drafts( $user_id ) {
+       global $wpdb;
+       $user_id = (int) $user_id;
+       $query = "SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'draft' AND post_author = $user_id ORDER BY ID DESC";
+       $query = apply_filters('get_users_drafts', $query);
+       return $wpdb->get_results( $query );
+}
+
+function get_others_drafts( $user_id ) {
+       global $wpdb;
+       $user = get_userdata( $user_id );
+       $level_key = $wpdb->prefix . 'user_level';
+
+       $editable = get_editable_user_ids( $user_id );
+
+       if( !$editable ) {
+               $other_drafts = '';
+       } else {
+               $editable = join(',', $editable);
+               $other_drafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'draft' AND post_author IN ($editable) AND post_author != '$user_id' ");
+       }
+
+       return apply_filters('get_others_drafts', $other_drafts);
+}
+
+function get_editable_authors( $user_id ) {
+       global $wpdb;
+
+       $editable = get_editable_user_ids( $user_id );
+
+       if( !$editable ) {
+               return false;
+       } else {
+               $editable = join(',', $editable);
+               $authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable) ORDER BY display_name" );
+       }
+
+       return apply_filters('get_editable_authors', $authors);
+}
+
+function get_editable_user_ids( $user_id, $exclude_zeros = true ) {
+       global $wpdb;
+
+       $user = new WP_User( $user_id );
+
+       if ( ! $user->has_cap('edit_others_posts') ) {
+               if ( $user->has_cap('edit_posts') || $exclude_zeros == false )
+                       return array($user->id);
+               else
+                       return false;
+       }
+
+       $level_key = $wpdb->prefix . 'user_level';
+
+       $query = "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key'";
+       if ( $exclude_zeros )
+               $query .= " AND meta_value != '0'";
+
+       return $wpdb->get_col( $query );
+}
+
+function get_author_user_ids() {
+       global $wpdb;
+       $level_key = $wpdb->prefix . 'user_level';
+
+       $query = "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key' AND meta_value != '0'";
+
+       return $wpdb->get_col( $query );
+}
+
+function get_nonauthor_user_ids() {
+       global $wpdb;
+       $level_key = $wpdb->prefix . 'user_level';
+
+       $query = "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '$level_key' AND meta_value = '0'";
+
+       return $wpdb->get_col( $query );
+}
+
+function wp_insert_category($catarr) {
+       global $wpdb;
+
+       extract($catarr);
+
+       if( trim( $cat_name ) == '' )
+               return 0;
+
+       $cat_ID = (int) $cat_ID;
+
+       // Are we updating or creating?
+       if (!empty ($cat_ID))
+               $update = true;
+       else
+               $update = false;
+
+       $cat_name = apply_filters('pre_category_name', $cat_name);
+
+       if (empty ($category_nicename))
+               $category_nicename = sanitize_title($cat_name);
+       else
+               $category_nicename = sanitize_title($category_nicename);
+       $category_nicename = apply_filters('pre_category_nicename', $category_nicename);
+
+       if (empty ($category_description))
+               $category_description = '';
+       $category_description = apply_filters('pre_category_description', $category_description);
+
+       $category_parent = (int) $category_parent;
+       if ( empty($category_parent) || !get_category( $category_parent ) || ($cat_ID && cat_is_ancestor_of($cat_ID, $category_parent) ) )
+               $category_parent = 0;
+
+       if ( isset($posts_private) )
+               $posts_private = (int) $posts_private;
+       else
+               $posts_private = 0;
+
+       if ( isset($links_private) )
+               $links_private = (int) $links_private;
+       else
+               $links_private = 0;
+
+       if (!$update) {
+               $wpdb->query("INSERT INTO $wpdb->categories (cat_ID, cat_name, category_nicename, category_description, category_parent, links_private, posts_private) VALUES ('0', '$cat_name', '$category_nicename', '$category_description', '$category_parent', '$links_private', '$posts_private')");
+               $cat_ID = (int) $wpdb->insert_id;
+       } else {
+               $wpdb->query ("UPDATE $wpdb->categories SET cat_name = '$cat_name', category_nicename = '$category_nicename', category_description = '$category_description', category_parent = '$category_parent', links_private = '$links_private', posts_private = '$posts_private' WHERE cat_ID = '$cat_ID'");
+       }
+
+       if ( $category_nicename == '' ) {
+               $category_nicename = sanitize_title($cat_name, $cat_ID );
+               $wpdb->query( "UPDATE $wpdb->categories SET category_nicename = '$category_nicename' WHERE cat_ID = '$cat_ID'" );
+       }
+
+       // Keep in mind when using this filter and altering the cat_ID that the two queries above
+       // have already taken place with the OLD cat_ID
+       // Also note that you may have post2cat entries with the old cat_ID if this is an update
+
+       if ($update) {
+               do_action('edit_category', $cat_ID);
+       } else {
+               do_action('create_category', $cat_ID);
+               do_action('add_category', $cat_ID);
+       }
+
+       $cat_ID = apply_filters('cat_id_filter', $cat_ID, $update);
+
+       clean_category_cache($cat_ID);
+
+       if ($update)
+               do_action('edited_category', $cat_ID);
+       else
+               do_action('created_category', $cat_ID);
+       
+       return $cat_ID;
+}
+
+function wp_update_category($catarr) {
+       global $wpdb;
+
+       $cat_ID = (int) $catarr['cat_ID'];
+
+       if( $cat_ID == $catarr['category_parent'] )
+               return false;
+
+       // First, get all of the original fields
+       $category = get_category($cat_ID, ARRAY_A);
+
+       // Escape data pulled from DB.
+       $category = add_magic_quotes($category);
+
+       // Merge old and new fields with new fields overwriting old ones.
+       $catarr = array_merge($category, $catarr);
+
+       return wp_insert_category($catarr);
+}
+
+function wp_delete_category($cat_ID) {
+       global $wpdb;
+
+       $cat_ID = (int) $cat_ID;
+       $default_cat = get_option('default_category');
+       $default_link_cat = get_option('default_link_category');
+
+       // Don't delete either of the default cats
+       if ( $cat_ID == $default_cat || $cat_ID == $default_link_cat )
+               return 0;
+
+       $category = get_category($cat_ID);
+
+       $parent = $category->category_parent;
+
+       // Delete the category
+       if ( !$wpdb->query("DELETE FROM $wpdb->categories WHERE cat_ID = '$cat_ID'") )
+               return 0;
+
+       // Update children to point to new parent
+       $wpdb->query("UPDATE $wpdb->categories SET category_parent = '$parent' WHERE category_parent = '$cat_ID'");
+
+       // Only set posts and links to the default category if they're not in another category already
+       $posts = $wpdb->get_col("SELECT post_id FROM $wpdb->post2cat WHERE category_id='$cat_ID'");
+       foreach ( (array) $posts as $post_id ) {
+               $cats = wp_get_post_categories($post_id);
+               if ( 1 == count($cats) )
+                       $cats = array($default_cat);
+               else
+                       $cats = array_diff($cats, array($cat_ID));
+               wp_set_post_categories($post_id, $cats);
+       }
+
+       $links = $wpdb->get_col("SELECT link_id FROM $wpdb->link2cat WHERE category_id='$cat_ID'");
+       foreach ( (array) $links as $link_id ) {
+               $cats = wp_get_link_cats($link_id);
+               if ( 1 == count($cats) )
+                       $cats = array($default_link_cat);
+               else
+                       $cats = array_diff($cats, array($cat_ID));
+               wp_set_link_cats($link_id, $cats);
+       }
+
+       clean_category_cache($cat_ID);
+       do_action('delete_category', $cat_ID);
+       return 1;
+}
+
+function wp_create_category($cat_name) {
+       $cat_array = compact('cat_name');
+       return wp_insert_category($cat_array);
+}
+
+function wp_create_categories($categories, $post_id = '') {
+       $cat_ids = array ();
+       foreach ($categories as $category) {
+               if ($id = category_exists($category))
+                       $cat_ids[] = $id;
+               else
+                       if ($id = wp_create_category($category))
+                               $cat_ids[] = $id;
+       }
+
+       if ($post_id)
+               wp_set_post_categories($post_id, $cat_ids);
+
+       return $cat_ids;
+}
+
+function category_exists($cat_name) {
+       global $wpdb;
+       if (!$category_nicename = sanitize_title($cat_name))
+               return 0;
+
+       return (int) $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories WHERE category_nicename = '$category_nicename'");
+}
+
+function wp_delete_user($id, $reassign = 'novalue') {
+       global $wpdb;
+
+       $id = (int) $id;
+       $user = get_userdata($id);
+
+       if ($reassign == 'novalue') {
+               $post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_author = $id");
+
+               if ($post_ids) {
+                       foreach ($post_ids as $post_id)
+                               wp_delete_post($post_id);
+               }
+
+               // Clean links
+               $wpdb->query("DELETE FROM $wpdb->links WHERE link_owner = $id");
+       } else {
+               $reassign = (int) $reassign;
+               $wpdb->query("UPDATE $wpdb->posts SET post_author = {$reassign} WHERE post_author = {$id}");
+               $wpdb->query("UPDATE $wpdb->links SET link_owner = {$reassign} WHERE link_owner = {$id}");
+       }
+
+       // FINALLY, delete user
+       do_action('delete_user', $id);
+
+       $wpdb->query("DELETE FROM $wpdb->users WHERE ID = $id");
+       $wpdb->query("DELETE FROM $wpdb->usermeta WHERE user_id = '$id'");
+
+       wp_cache_delete($id, 'users');
+       wp_cache_delete($user->user_login, 'userlogins');
+
+       return true;
+}
+
+function wp_revoke_user($id) {
+       $id = (int) $id;
+
+       $user = new WP_User($id);
+       $user->remove_all_caps();
+}
+
+function wp_insert_link($linkdata) {
+       global $wpdb, $current_user;
+
+       extract($linkdata);
+
+       $update = false;
+
+       if ( !empty($link_id) )
+               $update = true;
+
+       $link_id = (int) $link_id;
+
+       if( trim( $link_name ) == '' )
+               return 0;
+       $link_name = apply_filters('pre_link_name', $link_name);
+
+       if( trim( $link_url ) == '' )
+               return 0;
+       $link_url = apply_filters('pre_link_url', $link_url);
+
+       if ( empty($link_rating) )
+               $link_rating = 0;
+       else
+               $link_rating = (int) $link_rating;
+
+       if ( empty($link_image) )
+               $link_image = '';
+       $link_image = apply_filters('pre_link_image', $link_image);
+
+       if ( empty($link_target) )
+               $link_target = '';
+       $link_target = apply_filters('pre_link_target', $link_target);
+
+       if ( empty($link_visible) )
+               $link_visible = 'Y';
+       $link_visibile = preg_replace('/[^YNyn]/', '', $link_visible);
+
+       if ( empty($link_owner) )
+               $link_owner = $current_user->id;
+       else
+               $link_owner = (int) $link_owner;
+
+       if ( empty($link_notes) )
+               $link_notes = '';
+       $link_notes = apply_filters('pre_link_notes', $link_notes);
+
+       if ( empty($link_description) )
+               $link_description = '';
+       $link_description = apply_filters('pre_link_description', $link_description);
+
+       if ( empty($link_rss) )
+               $link_rss = '';
+       $link_rss = apply_filters('pre_link_rss', $link_rss);
+
+       if ( empty($link_rel) )
+               $link_rel = '';
+       $link_rel = apply_filters('pre_link_rel', $link_rel);
+
+       // Make sure we set a valid category
+       if (0 == count($link_category) || !is_array($link_category)) {
+               $link_category = array(get_option('default_link_category'));
+       }
+
+       if ( $update ) {
+               $wpdb->query("UPDATE $wpdb->links SET link_url='$link_url',
+                       link_name='$link_name', link_image='$link_image',
+                       link_target='$link_target',
+                       link_visible='$link_visible', link_description='$link_description',
+                       link_rating='$link_rating', link_rel='$link_rel',
+                       link_notes='$link_notes', link_rss = '$link_rss'
+                       WHERE link_id='$link_id'");
+       } else {
+               $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_image, link_target, link_description, link_visible, link_owner, link_rating, link_rel, link_notes, link_rss) VALUES('$link_url','$link_name', '$link_image', '$link_target', '$link_description', '$link_visible', '$link_owner', '$link_rating', '$link_rel', '$link_notes', '$link_rss')");
+               $link_id = (int) $wpdb->insert_id;
+       }
+
+       wp_set_link_cats($link_id, $link_category);
+
+       if ( $update )
+               do_action('edit_link', $link_id);
+       else
+               do_action('add_link', $link_id);
+
+       return $link_id;
+}
+
+function wp_update_link($linkdata) {
+       global $wpdb;
+
+       $link_id = (int) $linkdata['link_id'];
+
+       $link = get_link($link_id, ARRAY_A);
+
+       // Escape data pulled from DB.
+       $link = add_magic_quotes($link);
+
+       // Passed link category list overwrites existing category list if not empty.
+       if ( isset($linkdata['link_category']) && is_array($linkdata['link_category'])
+                        && 0 != count($linkdata['link_category']) )
+               $link_cats = $linkdata['link_category'];
+       else
+               $link_cats = $link['link_category'];
+
+       // Merge old and new fields with new fields overwriting old ones.
+       $linkdata = array_merge($link, $linkdata);
+       $linkdata['link_category'] = $link_cats;
+
+       return wp_insert_link($linkdata);
+}
+
+function wp_delete_link($link_id) {
+       global $wpdb;
+
+       do_action('delete_link', $link_id);
+
+       $categories = wp_get_link_cats($link_id);
+       if( is_array( $categories ) ) {
+               foreach ( $categories as $category ) {
+                       $wpdb->query("UPDATE $wpdb->categories SET link_count = link_count - 1 WHERE cat_ID = '$category'");
+                       wp_cache_delete($category, 'category');
+                       do_action('edit_category', $cat_id);
+               }
+       }
+
+       $wpdb->query("DELETE FROM $wpdb->link2cat WHERE link_id = '$link_id'");
+       return $wpdb->query("DELETE FROM $wpdb->links WHERE link_id = '$link_id'");
+       
+       do_action('deleted_link', $link_id);
+}
+
+function wp_get_link_cats($link_ID = 0) {
+       global $wpdb;
+
+       $sql = "SELECT category_id
+               FROM $wpdb->link2cat
+               WHERE link_id = $link_ID
+               ORDER BY category_id";
+
+       $result = $wpdb->get_col($sql);
+
+       if ( !$result )
+               $result = array();
+
+       return array_unique($result);
+}
+
+function wp_set_link_cats($link_ID = 0, $link_categories = array()) {
+       global $wpdb;
+       // If $link_categories isn't already an array, make it one:
+       if (!is_array($link_categories) || 0 == count($link_categories))
+               $link_categories = array(get_option('default_link_category'));
+
+       $link_categories = array_unique($link_categories);
+
+       // First the old categories
+       $old_categories = $wpdb->get_col("
+               SELECT category_id
+               FROM $wpdb->link2cat
+               WHERE link_id = '$link_ID'");
+
+       if (!$old_categories) {
+               $old_categories = array();
+       } else {
+               $old_categories = array_unique($old_categories);
+       }
+
+       // Delete any?
+       $delete_cats = array_diff($old_categories,$link_categories);
+
+       if ($delete_cats) {
+               foreach ($delete_cats as $del) {
+                       $del = (int) $del;
+                       $wpdb->query("
+                               DELETE FROM $wpdb->link2cat
+                               WHERE category_id = '$del'
+                                       AND link_id = '$link_ID'
+                               ");
+               }
+       }
+
+       // Add any?
+       $add_cats = array_diff($link_categories, $old_categories);
+
+       if ($add_cats) {
+               foreach ($add_cats as $new_cat) {
+                       $new_cat = (int) $new_cat;
+                       if ( !empty($new_cat) )
+                               $wpdb->query("
+                                       INSERT INTO $wpdb->link2cat (link_id, category_id)
+                                       VALUES ('$link_ID', '$new_cat')");
+               }
+       }
+
+       // Update category counts.
+       $all_affected_cats = array_unique(array_merge($link_categories, $old_categories));
+       foreach ( $all_affected_cats as $cat_id ) {
+               $count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->link2cat, $wpdb->links WHERE $wpdb->links.link_id = $wpdb->link2cat.link_id AND category_id = '$cat_id'");
+               $wpdb->query("UPDATE $wpdb->categories SET link_count = '$count' WHERE cat_ID = '$cat_id'");
+               wp_cache_delete($cat_id, 'category');
+               do_action('edit_category', $cat_id);
+       }
+
+}      // wp_set_link_cats()
+
+function post_exists($title, $content = '', $post_date = '') {
+       global $wpdb;
+
+       if (!empty ($post_date))
+               $post_date = "AND post_date = '$post_date'";
+
+       if (!empty ($title))
+               return $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_title = '$title' $post_date");
+       else
+               if (!empty ($content))
+                       return $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_content = '$content' $post_date");
+
+       return 0;
+}
+
+function comment_exists($comment_author, $comment_date) {
+       global $wpdb;
+
+       return $wpdb->get_var("SELECT comment_post_ID FROM $wpdb->comments
+                       WHERE comment_author = '$comment_author' AND comment_date = '$comment_date'");
+}
+
+?>
index 14b832b322105b9b1e8c1fdc9104b76cb24b28f4..6023bed960eb5c5da74b47950d52d176fb225961 100644 (file)
@@ -1,13 +1,10 @@
 
-<div id="footer"><p><a href="http://wordpress.org/"><img src="../wp-images/wp-small.png" alt="WordPress" /></a><br />
-<?php bloginfo('version'); ?> <br /> 
-<a href="http://codex.wordpress.org/"><?php _e('Documentation'); ?></a> &#8212; <a href="http://wordpress.org/support/"><?php _e('Support Forums'); ?></a> <br />
-<?php printf(__('%s seconds'), number_format(timer_stop(), 2)); ?>
-</p>
-
+<div id="footer">
+<p class="logo"><a href="http://wordpress.org/" id="wordpress-logo"><img src="images/wordpress-logo.png" alt="WordPress" /></a></p>
+<p class="docs"><?php _e('<a href="http://codex.wordpress.org/">Documentation</a>'); ?> &#8212; <?php _e('<a href="http://wordpress.org/support/">Support Forums</a>'); ?><br />
+<?php bloginfo('version'); ?> &#8212; <?php printf(__('%s seconds'), timer_stop(0, 2)); ?></p>
 </div>
-
 <?php do_action('admin_footer', ''); ?>
-
+<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
 </body>
 </html>
\ No newline at end of file
index e8f915959dc939b733d9971a453f933e46ae5d5c..4ee8b1acd9b99f7a8d2f38931950f7821f5ee62b 100644 (file)
 <?php
 
-function url_shorten ($url) {
-       $short_url = str_replace('http://', '', stripslashes($url));
-       $short_url = str_replace('www.', '', $short_url);
-       if ('/' == substr($short_url, -1))
-               $short_url = substr($short_url, 0, -1);
-       if (strlen($short_url) > 35)
-               $short_url =  substr($short_url, 0, 32).'...';
-       return $short_url;
+function write_post() {
+       $result = wp_write_post();
+       if( is_wp_error( $result ) )
+               wp_die( $result->get_error_message() );
+       else
+               return $result;
+}
+
+// Creates a new post from the "Write Post" form using $_POST information.
+function wp_write_post() {
+       global $user_ID;
+
+       if ( 'page' == $_POST['post_type'] ) {
+               if ( !current_user_can( 'edit_pages' ) )
+                       return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this blog.' ) );
+       } else {
+               if ( !current_user_can( 'edit_posts' ) )
+                       return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this blog.' ) );
+       }
+
+
+       // Check for autosave collisions
+       $temp_id = false;
+       if ( isset($_POST['temp_ID']) ) {
+               $temp_id = (int) $_POST['temp_ID'];
+               if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) )
+                       $draft_ids = array();
+               foreach ( $draft_ids as $temp => $real )
+                       if ( time() + $temp > 86400 ) // 1 day: $temp is equal to -1 * time( then )
+                               unset($draft_ids[$temp]);
+
+               if ( isset($draft_ids[$temp_id]) ) { // Edit, don't write
+                       $_POST['post_ID'] = $draft_ids[$temp_id];
+                       unset($_POST['temp_ID']);
+                       update_user_option( $user_ID, 'autosave_draft_ids', $draft_ids );
+                       return edit_post();
+               }
+       }
+
+       // Rename.
+       $_POST['post_content'] = $_POST['content'];
+       $_POST['post_excerpt'] = $_POST['excerpt'];
+       $_POST['post_parent'] = $_POST['parent_id'];
+       $_POST['to_ping'] = $_POST['trackback_url'];
+
+       if (!empty ( $_POST['post_author_override'] ) ) {
+               $_POST['post_author'] = (int) $_POST['post_author_override'];
+       } else {
+               if (!empty ( $_POST['post_author'] ) ) {
+                       $_POST['post_author'] = (int) $_POST['post_author'];
+               } else {
+                       $_POST['post_author'] = (int) $_POST['user_ID'];
+               }
+
+       }
+
+       if ( $_POST['post_author'] != $_POST['user_ID'] ) {
+               if ( 'page' == $_POST['post_type'] ) {
+                       if ( !current_user_can( 'edit_others_pages' ) )
+                               return new WP_Error( 'edit_others_pages', __( 'You are not allowed to create pages as this user.' ) );
+               } else {
+                       if ( !current_user_can( 'edit_others_posts' ) )
+                               return new WP_Error( 'edit_others_posts', __( 'You are not allowed to post as this user.' ) );
+
+               }
+       }
+
+       // What to do based on which button they pressed
+       if ('' != $_POST['saveasdraft'] )
+               $_POST['post_status'] = 'draft';
+       if ('' != $_POST['saveasprivate'] )
+               $_POST['post_status'] = 'private';
+       if ('' != $_POST['publish'] )
+               $_POST['post_status'] = 'publish';
+       if ('' != $_POST['advanced'] )
+               $_POST['post_status'] = 'draft';
+
+       if ( 'page' == $_POST['post_type'] ) {
+               if ('publish' == $_POST['post_status'] && !current_user_can( 'publish_pages' ) )
+                       $_POST['post_status'] = 'draft';
+       } else {
+               if ('publish' == $_POST['post_status'] && !current_user_can( 'publish_posts' ) )
+                       $_POST['post_status'] = 'draft';
+       }
+
+       if (!isset( $_POST['comment_status'] ))
+               $_POST['comment_status'] = 'closed';
+
+       if (!isset( $_POST['ping_status'] ))
+               $_POST['ping_status'] = 'closed';
+
+       if (!empty ( $_POST['edit_date'] ) ) {
+               $aa = $_POST['aa'];
+               $mm = $_POST['mm'];
+               $jj = $_POST['jj'];
+               $hh = $_POST['hh'];
+               $mn = $_POST['mn'];
+               $ss = $_POST['ss'];
+               $jj = ($jj > 31 ) ? 31 : $jj;
+               $hh = ($hh > 23 ) ? $hh -24 : $hh;
+               $mn = ($mn > 59 ) ? $mn -60 : $mn;
+               $ss = ($ss > 59 ) ? $ss -60 : $ss;
+               $_POST['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
+               $_POST['post_date_gmt'] = get_gmt_from_date( $_POST['post_date'] );
+       }
+
+       // Create the post.
+       $post_ID = wp_insert_post( $_POST );
+
+       add_meta( $post_ID );
+
+       // Reunite any orphaned attachments with their parent
+       if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) )
+               $draft_ids = array();
+       if ( $draft_temp_id = (int) array_search( $post_ID, $draft_ids ) )
+               relocate_children( $draft_temp_id, $post_ID );
+       if ( $temp_id && $temp_id != $draft_temp_id )
+               relocate_children( $temp_id, $post_ID );
+
+       // Update autosave collision detection
+       if ( $temp_id ) {
+               $draft_ids[$temp_id] = $post_ID;
+               update_user_option( $user_ID, 'autosave_draft_ids', $draft_ids );
+       }
+
+       // Now that we have an ID we can fix any attachment anchor hrefs
+       fix_attachment_links( $post_ID );
+
+       return $post_ID;
+}
+
+// Move child posts to a new parent
+function relocate_children( $old_ID, $new_ID ) {
+       global $wpdb;
+       $old_ID = (int) $old_ID;
+       $new_ID = (int) $new_ID;
+       return $wpdb->query( "UPDATE $wpdb->posts SET post_parent = $new_ID WHERE post_parent = $old_ID" );
+}
+
+// Replace hrefs of attachment anchors with up-to-date permalinks.
+function fix_attachment_links( $post_ID ) {
+       global $wp_rewrite;
+
+       $post = & get_post( $post_ID, ARRAY_A );
+
+       $search = "#<a[^>]+rel=('|\")[^'\"]*attachment[^>]*>#ie";
+
+       // See if we have any rel="attachment" links
+       if ( 0 == preg_match_all( $search, $post['post_content'], $anchor_matches, PREG_PATTERN_ORDER ) )
+               return;
+
+       $i = 0;
+       $search = "#[\s]+rel=(\"|')(.*?)wp-att-(\d+)\\1#i";
+       foreach ( $anchor_matches[0] as $anchor ) {
+               if ( 0 == preg_match( $search, $anchor, $id_matches ) )
+                       continue;
+
+               $id = (int) $id_matches[3];
+
+               // While we have the attachment ID, let's adopt any orphans.
+               $attachment = & get_post( $id, ARRAY_A );
+               if ( ! empty( $attachment) && ! is_object( get_post( $attachment['post_parent'] ) ) ) {
+                       $attachment['post_parent'] = $post_ID;
+                       // Escape data pulled from DB.
+                       $attachment = add_magic_quotes( $attachment);
+                       wp_update_post( $attachment);
+               }
+
+               $post_search[$i] = $anchor;
+               $post_replace[$i] = preg_replace( "#href=(\"|')[^'\"]*\\1#e", "stripslashes( 'href=\\1' ).get_attachment_link( $id ).stripslashes( '\\1' )", $anchor );
+               ++$i;
+       }
+
+       $post['post_content'] = str_replace( $post_search, $post_replace, $post['post_content'] );
+
+       // Escape data pulled from DB.
+       $post = add_magic_quotes( $post);
+
+       return wp_update_post( $post);
+}
+
+// Update an existing post with values provided in $_POST.
+function edit_post() {
+       global $user_ID;
+
+       $post_ID = (int) $_POST['post_ID'];
+
+       if ( 'page' == $_POST['post_type'] ) {
+               if ( !current_user_can( 'edit_page', $post_ID ) )
+                       wp_die( __('You are not allowed to edit this page.' ));
+       } else {
+               if ( !current_user_can( 'edit_post', $post_ID ) )
+                       wp_die( __('You are not allowed to edit this post.' ));
+       }
+
+       // Autosave shouldn't save too soon after a real save
+       if ( 'autosave' == $_POST['action'] ) {
+               $post =& get_post( $post_ID );
+               $now = time();
+               $then = strtotime($post->post_date_gmt . ' +0000');
+               // Keep autosave_interval in sync with autosave-js.php.
+               $delta = apply_filters( 'autosave_interval', 120 ) / 2;
+               if ( ($now - $then) < $delta )
+                       return $post_ID;
+       }
+
+       // Rename.
+       $_POST['ID'] = (int) $_POST['post_ID'];
+       $_POST['post_content'] = $_POST['content'];
+       $_POST['post_excerpt'] = $_POST['excerpt'];
+       $_POST['post_parent'] = $_POST['parent_id'];
+       $_POST['to_ping'] = $_POST['trackback_url'];
+
+       if (!empty ( $_POST['post_author_override'] ) ) {
+               $_POST['post_author'] = (int) $_POST['post_author_override'];
+       } else
+               if (!empty ( $_POST['post_author'] ) ) {
+                       $_POST['post_author'] = (int) $_POST['post_author'];
+               } else {
+                       $_POST['post_author'] = (int) $_POST['user_ID'];
+               }
+
+       if ( $_POST['post_author'] != $_POST['user_ID'] ) {
+               if ( 'page' == $_POST['post_type'] ) {
+                       if ( !current_user_can( 'edit_others_pages' ) )
+                               wp_die( __('You are not allowed to edit pages as this user.' ));
+               } else {
+                       if ( !current_user_can( 'edit_others_posts' ) )
+                               wp_die( __('You are not allowed to edit posts as this user.' ));
+
+               }
+       }
+
+       // What to do based on which button they pressed
+       if ('' != $_POST['saveasdraft'] )
+               $_POST['post_status'] = 'draft';
+       if ('' != $_POST['saveasprivate'] )
+               $_POST['post_status'] = 'private';
+       if ('' != $_POST['publish'] )
+               $_POST['post_status'] = 'publish';
+       if ('' != $_POST['advanced'] )
+               $_POST['post_status'] = 'draft';
+
+       if ( 'page' == $_POST['post_type'] ) {
+               if ('publish' == $_POST['post_status'] && !current_user_can( 'edit_published_pages' ))
+                       $_POST['post_status'] = 'draft';
+       } else {
+               if ('publish' == $_POST['post_status'] && !current_user_can( 'edit_published_posts' ))
+                       $_POST['post_status'] = 'draft';
+       }
+
+       if (!isset( $_POST['comment_status'] ))
+               $_POST['comment_status'] = 'closed';
+
+       if (!isset( $_POST['ping_status'] ))
+               $_POST['ping_status'] = 'closed';
+
+       if (!empty ( $_POST['edit_date'] ) ) {
+               $aa = $_POST['aa'];
+               $mm = $_POST['mm'];
+               $jj = $_POST['jj'];
+               $hh = $_POST['hh'];
+               $mn = $_POST['mn'];
+               $ss = $_POST['ss'];
+               $jj = ($jj > 31 ) ? 31 : $jj;
+               $hh = ($hh > 23 ) ? $hh -24 : $hh;
+               $mn = ($mn > 59 ) ? $mn -60 : $mn;
+               $ss = ($ss > 59 ) ? $ss -60 : $ss;
+               $_POST['post_date'] = "$aa-$mm-$jj $hh:$mn:$ss";
+               $_POST['post_date_gmt'] = get_gmt_from_date( "$aa-$mm-$jj $hh:$mn:$ss" );
+       }
+
+       // Meta Stuff
+       if ( $_POST['meta'] ) {
+               foreach ( $_POST['meta'] as $key => $value )
+                       update_meta( $key, $value['key'], $value['value'] );
+       }
+
+       if ( $_POST['deletemeta'] ) {
+               foreach ( $_POST['deletemeta'] as $key => $value )
+                       delete_meta( $key );
+       }
+
+       add_meta( $post_ID );
+
+       wp_update_post( $_POST );
+
+       // Reunite any orphaned attachments with their parent
+       if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) )
+               $draft_ids = array();
+       if ( $draft_temp_id = (int) array_search( $post_ID, $draft_ids ) )
+               relocate_children( $draft_temp_id, $post_ID );
+
+       // Now that we have an ID we can fix any attachment anchor hrefs
+       fix_attachment_links( $post_ID );
+
+       return $post_ID;
+}
+
+function edit_comment() {
+       global $user_ID;
+
+       $comment_ID = (int) $_POST['comment_ID'];
+       $comment_post_ID = (int) $_POST['comment_post_ID'];
+
+       if (!current_user_can( 'edit_post', $comment_post_ID ))
+               wp_die( __('You are not allowed to edit comments on this post, so you cannot edit this comment.' ));
+
+       $_POST['comment_author'] = $_POST['newcomment_author'];
+       $_POST['comment_author_email'] = $_POST['newcomment_author_email'];
+       $_POST['comment_author_url'] = $_POST['newcomment_author_url'];
+       $_POST['comment_approved'] = $_POST['comment_status'];
+       $_POST['comment_content'] = $_POST['content'];
+       $_POST['comment_ID'] = (int) $_POST['comment_ID'];
+
+       if (!empty ( $_POST['edit_date'] ) ) {
+               $aa = $_POST['aa'];
+               $mm = $_POST['mm'];
+               $jj = $_POST['jj'];
+               $hh = $_POST['hh'];
+               $mn = $_POST['mn'];
+               $ss = $_POST['ss'];
+               $jj = ($jj > 31 ) ? 31 : $jj;
+               $hh = ($hh > 23 ) ? $hh -24 : $hh;
+               $mn = ($mn > 59 ) ? $mn -60 : $mn;
+               $ss = ($ss > 59 ) ? $ss -60 : $ss;
+               $_POST['comment_date'] = "$aa-$mm-$jj $hh:$mn:$ss";
+       }
+
+       wp_update_comment( $_POST);
+}
+
+// Get an existing post and format it for editing.
+function get_post_to_edit( $id ) {
+
+       $post = get_post( $id );
+
+       $post->post_content = format_to_edit( $post->post_content, user_can_richedit() );
+       $post->post_content = apply_filters( 'content_edit_pre', $post->post_content);
+
+       $post->post_excerpt = format_to_edit( $post->post_excerpt);
+       $post->post_excerpt = apply_filters( 'excerpt_edit_pre', $post->post_excerpt);
+
+       $post->post_title = format_to_edit( $post->post_title );
+       $post->post_title = apply_filters( 'title_edit_pre', $post->post_title );
+
+       $post->post_password = format_to_edit( $post->post_password );
+
+       if ( $post->post_type == 'page' )
+               $post->page_template = get_post_meta( $id, '_wp_page_template', true );
+
+       return $post;
 }
 
-function selected($selected, $current) {
-       if ($selected == $current) echo ' selected="selected"';
+// Default post information to use when populating the "Write Post" form.
+function get_default_post_to_edit() {
+       if ( !empty( $_REQUEST['post_title'] ) )
+               $post_title = wp_specialchars( stripslashes( $_REQUEST['post_title'] ));
+       else if ( !empty( $_REQUEST['popuptitle'] ) ) {
+               $post_title = wp_specialchars( stripslashes( $_REQUEST['popuptitle'] ));
+               $post_title = funky_javascript_fix( $post_title );
+       } else {
+               $post_title = '';
+       }
+
+       if ( !empty( $_REQUEST['content'] ) )
+               $post_content = wp_specialchars( stripslashes( $_REQUEST['content'] ));
+       else if ( !empty( $post_title ) ) {
+               $text       = wp_specialchars( stripslashes( urldecode( $_REQUEST['text'] ) ) );
+               $text       = funky_javascript_fix( $text);
+               $popupurl   = clean_url($_REQUEST['popupurl']);
+        $post_content = '<a href="'.$popupurl.'">'.$post_title.'</a>'."\n$text";
+    }
+
+       if ( !empty( $_REQUEST['excerpt'] ) )
+               $post_excerpt = wp_specialchars( stripslashes( $_REQUEST['excerpt'] ));
+       else
+               $post_excerpt = '';
+
+       $post->post_status = 'draft';
+       $post->comment_status = get_option( 'default_comment_status' );
+       $post->ping_status = get_option( 'default_ping_status' );
+       $post->post_pingback = get_option( 'default_pingback_flag' );
+       $post->post_category = get_option( 'default_category' );
+       $post->post_content = apply_filters( 'default_content', $post_content);
+       $post->post_title = apply_filters( 'default_title', $post_title );
+       $post->post_excerpt = apply_filters( 'default_excerpt', $post_excerpt);
+       $post->page_template = 'default';
+       $post->post_parent = 0;
+       $post->menu_order = 0;
+
+       return $post;
 }
 
-function checked($checked, $current) {
-       if ($checked == $current) echo ' checked="checked"';
+function get_comment_to_edit( $id ) {
+       $comment = get_comment( $id );
+
+       $comment->comment_content = format_to_edit( $comment->comment_content, user_can_richedit() );
+       $comment->comment_content = apply_filters( 'comment_edit_pre', $comment->comment_content);
+
+       $comment->comment_author = format_to_edit( $comment->comment_author );
+       $comment->comment_author_email = format_to_edit( $comment->comment_author_email );
+       $comment->comment_author_url = format_to_edit( $comment->comment_author_url );
+
+       return $comment;
 }
 
-function return_categories_list( $parent = 0, $sortbyname = FALSE )
-{
-        /*
-         * This function returns an list of all categories
-         * that have $parent as their parent
-         * if no parent is specified we will assume top level caegories
-         * are required.
-         */
-        global $wpdb;
+function get_category_to_edit( $id ) {
+       $category = get_category( $id );
 
-        // select sort order
-        $sort = "cat_id";
-        if( TRUE == $sortbyname )
-        {
-                $sort = "cat_name";
-        }
+       return $category;
+}
 
-        // First query the database
-        $cats_tmp = $wpdb->get_results("SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent ORDER BY $sort");
+function wp_dropdown_roles( $default = false ) {
+       global $wp_roles;
+       $r = '';
+       foreach( $wp_roles->role_names as $role => $name )
+               if ( $default == $role ) // Make default first in list
+                       $p = "\n\t<option selected='selected' value='$role'>$name</option>";
+               else
+                       $r .= "\n\t<option value='$role'>$name</option>";
+       echo $p . $r;
+}
 
-        // Now strip this down to a simple array of IDs
-        $cats = array();
-        if( count($cats_tmp) > 0 )
-        {
-                foreach( $cats_tmp as $cat )
-                {
-                        $cats[] = $cat->cat_ID;
-                }
-        }
 
-        // Return the list of categories
-        return $cats;
+function get_user_to_edit( $user_id ) {
+       $user = new WP_User( $user_id );
+       $user->user_login   = attribute_escape($user->user_login);
+       $user->user_email   = attribute_escape($user->user_email);
+       $user->user_url     = clean_url($user->user_url);
+       $user->first_name   = attribute_escape($user->first_name);
+       $user->last_name    = attribute_escape($user->last_name);
+       $user->display_name = attribute_escape($user->display_name);
+       $user->nickname     = attribute_escape($user->nickname);
+       $user->aim          = attribute_escape($user->aim);
+       $user->yim          = attribute_escape($user->yim);
+       $user->jabber       = attribute_escape($user->jabber);
+       $user->description  =  wp_specialchars($user->description);
+
+       return $user;
+}
+
+// Creates a new user from the "Users" form using $_POST information.
+
+function add_user() {
+       if ( func_num_args() ) { // The hackiest hack that ever did hack
+               global $current_user, $wp_roles;
+               $user_id = (int) func_get_arg( 0 );
+
+               if ( isset( $_POST['role'] ) ) {
+                       if( $user_id != $current_user->id || $wp_roles->role_objects[$_POST['role']]->has_cap( 'edit_users' ) ) {
+                               $user = new WP_User( $user_id );
+                               $user->set_role( $_POST['role'] );
+                       }
+               }
+       } else {
+               add_action( 'user_register', 'add_user' ); // See above
+               return edit_user();
+       }
 }
 
-function get_nested_categories($default = 0, $parent = 0) {
- global $post_ID, $mode, $wpdb;
+function edit_user( $user_id = 0 ) {
+       global $current_user, $wp_roles, $wpdb;
+       if ( $user_id != 0 ) {
+               $update = true;
+               $user->ID = (int) $user_id;
+               $userdata = get_userdata( $user_id );
+               $user->user_login = $wpdb->escape( $userdata->user_login );
+       } else {
+               $update = false;
+               $user = '';
+       }
+
+       if ( isset( $_POST['user_login'] ))
+               $user->user_login = wp_specialchars( trim( $_POST['user_login'] ));
+
+       $pass1 = $pass2 = '';
+       if ( isset( $_POST['pass1'] ))
+               $pass1 = $_POST['pass1'];
+       if ( isset( $_POST['pass2'] ))
+               $pass2 = $_POST['pass2'];
+
+       if ( isset( $_POST['role'] ) && current_user_can( 'edit_users' ) ) { 
+               if( $user_id != $current_user->id || $wp_roles->role_objects[$_POST['role']]->has_cap( 'edit_users' ))
+                       $user->role = $_POST['role'];
+       }
+
+       if ( isset( $_POST['email'] ))
+               $user->user_email = wp_specialchars( trim( $_POST['email'] ));
+       if ( isset( $_POST['url'] ) ) {
+               $user->user_url = clean_url( trim( $_POST['url'] ));
+               $user->user_url = preg_match('/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is', $user->user_url) ? $user->user_url : 'http://'.$user->user_url;
+       }
+       if ( isset( $_POST['first_name'] ))
+               $user->first_name = wp_specialchars( trim( $_POST['first_name'] ));
+       if ( isset( $_POST['last_name'] ))
+               $user->last_name = wp_specialchars( trim( $_POST['last_name'] ));
+       if ( isset( $_POST['nickname'] ))
+               $user->nickname = wp_specialchars( trim( $_POST['nickname'] ));
+       if ( isset( $_POST['display_name'] ))
+               $user->display_name = wp_specialchars( trim( $_POST['display_name'] ));
+       if ( isset( $_POST['description'] ))
+               $user->description = trim( $_POST['description'] );
+       if ( isset( $_POST['jabber'] ))
+               $user->jabber = wp_specialchars( trim( $_POST['jabber'] ));
+       if ( isset( $_POST['aim'] ))
+               $user->aim = wp_specialchars( trim( $_POST['aim'] ));
+       if ( isset( $_POST['yim'] ))
+               $user->yim = wp_specialchars( trim( $_POST['yim'] ));
+       if ( !$update )
+               $user->rich_editing = 'true';  // Default to true for new users.
+       else if ( isset( $_POST['rich_editing'] ) )
+               $user->rich_editing = $_POST['rich_editing'];
+       else
+               $user->rich_editing = 'false';
+
+       $errors = new WP_Error();
+
+       /* checking that username has been typed */
+       if ( $user->user_login == '' )
+               $errors->add( 'user_login', __( '<strong>ERROR</strong>: Please enter a username.' ));
+
+       /* checking the password has been typed twice */
+       do_action_ref_array( 'check_passwords', array ( $user->user_login, & $pass1, & $pass2 ));
+
+       if (!$update ) {
+               if ( $pass1 == '' || $pass2 == '' )
+                       $errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter your password twice.' ));
+       } else {
+               if ((empty ( $pass1 ) && !empty ( $pass2 ) ) || (empty ( $pass2 ) && !empty ( $pass1 ) ) )
+                       $errors->add( 'pass', __( "<strong>ERROR</strong>: you typed your new password only once." ));
+       }
+
+       /* Check for "\" in password */
+       if( strpos( " ".$pass1, "\\" ) )
+               $errors->add( 'pass', __( '<strong>ERROR</strong>: Passwords may not contain the character "\\".' ));
 
- if ($post_ID) {
-   $checked_categories = $wpdb->get_col("
-     SELECT category_id
-     FROM $wpdb->categories, $wpdb->post2cat
-     WHERE $wpdb->post2cat.category_id = cat_ID AND $wpdb->post2cat.post_id = '$post_ID'
-     ");
+       /* checking the password has been typed twice the same */
+       if ( $pass1 != $pass2 )
+               $errors->add( 'pass', __( '<strong>ERROR</strong>: Please type the same password in the two password fields.' ));
 
-   if(count($checked_categories) == 0)
-   {
-     // No selected categories, strange
-     $checked_categories[] = $default;
-   }
+       if (!empty ( $pass1 ))
+               $user->user_pass = $pass1;
 
- } else {
-   $checked_categories[] = $default;
- }
+       if ( !$update && !validate_username( $user->user_login ) )
+               $errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is invalid.  Please enter a valid username.' ));
 
- $cats = return_categories_list($parent, TRUE);
$result = array();
+       if (!$update && username_exists( $user->user_login ))
              $errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is already registered, please choose another one.' ));
 
- foreach($cats as $cat)
- {
-   $result[$cat]['children'] = get_nested_categories($default, $cat);
-   $result[$cat]['cat_ID'] = $cat;
-   $result[$cat]['checked'] = in_array($cat, $checked_categories);
-   $result[$cat]['cat_name'] = get_the_category_by_ID($cat);
- }
+       /* checking e-mail address */
+       if ( empty ( $user->user_email ) ) {
+               $errors->add( 'user_email', __( "<strong>ERROR</strong>: please type an e-mail address" ));
+       } else
+               if (!is_email( $user->user_email ) ) {
+                       $errors->add( 'user_email', __( "<strong>ERROR</strong>: the email address isn't correct" ));
+               }
+
+       if ( $errors->get_error_codes() )
+               return $errors;
 
- return $result;
+       if ( $update ) {
+               $user_id = wp_update_user( get_object_vars( $user ));
+       } else {
+               $user_id = wp_insert_user( get_object_vars( $user ));
+               wp_new_user_notification( $user_id );
+       }
+       return $user_id;
 }
 
-function write_nested_categories($categories) {
- foreach($categories as $category) {
-   echo '<label for="category-', $category['cat_ID'], '" class="selectit"><input value="', $category['cat_ID'],
-     '" type="checkbox" name="post_category[]" id="category-', $category['cat_ID'], '"',
-     ($category['checked'] ? ' checked="checked"' : ""), '/> ', wp_specialchars($category['cat_name']), "</label>\n";
 
-   if(isset($category['children'])) {
-     echo "\n<span class='cat-nest'>\n";
-     write_nested_categories($category['children']);
-     echo "</span>\n";
-   }
- }
+function get_link_to_edit( $link_id ) {
+       $link = get_link( $link_id );
+
+       $link->link_url         = clean_url($link->link_url);
+       $link->link_name        = attribute_escape($link->link_name);
+       $link->link_image       = attribute_escape($link->link_image);
+       $link->link_description = attribute_escape($link->link_description);
+       $link->link_rss         = clean_url($link->link_rss);
+       $link->link_rel         = attribute_escape($link->link_rel);
+       $link->link_notes       =  wp_specialchars($link->link_notes);
+       $link->post_category    = $link->link_category;
+
+       return $link;
 }
 
-function dropdown_categories($default = 0) {
- write_nested_categories(get_nested_categories($default));
-} 
+function get_default_link_to_edit() {
+       if ( isset( $_GET['linkurl'] ) )
+               $link->link_url = clean_url( $_GET['linkurl']);
+       else
+               $link->link_url = '';
+
+       if ( isset( $_GET['name'] ) )
+               $link->link_name = attribute_escape( $_GET['name']);
+       else
+               $link->link_name = '';
+
+       $link->link_visible = 'Y';
+
+       return $link;
+}
+
+function add_link() {
+       return edit_link();
+}
+
+function edit_link( $link_id = '' ) {
+       if (!current_user_can( 'manage_links' ))
+               wp_die( __( 'Cheatin&#8217; uh?' ));
+
+       $_POST['link_url'] = wp_specialchars( $_POST['link_url'] );
+       $_POST['link_url'] = clean_url($_POST['link_url']);
+       $_POST['link_name'] = wp_specialchars( $_POST['link_name'] );
+       $_POST['link_image'] = wp_specialchars( $_POST['link_image'] );
+       $_POST['link_rss'] = clean_url($_POST['link_rss']);
+       $_POST['link_category'] = $_POST['post_category'];
+
+       if ( !empty( $link_id ) ) {
+               $_POST['link_id'] = $link_id;
+               return wp_update_link( $_POST);
+       } else {
+               return wp_insert_link( $_POST);
+       }
+}
+
+function url_shorten( $url ) {
+       $short_url = str_replace( 'http://', '', stripslashes( $url ));
+       $short_url = str_replace( 'www.', '', $short_url );
+       if ('/' == substr( $short_url, -1 ))
+               $short_url = substr( $short_url, 0, -1 );
+       if ( strlen( $short_url ) > 35 )
+               $short_url = substr( $short_url, 0, 32 ).'...';
+       return $short_url;
+}
+
+function selected( $selected, $current) {
+       if ( $selected == $current)
+               echo ' selected="selected"';
+}
+
+function checked( $checked, $current) {
+       if ( $checked == $current)
+               echo ' checked="checked"';
+}
+
+function return_categories_list( $parent = 0 ) {
+       global $wpdb;
+       return $wpdb->get_col( "SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent AND ( link_count = 0 OR category_count != 0 OR ( link_count = 0 AND category_count = 0 ) ) ORDER BY category_count DESC" );
+}
+
+function sort_cats( $cat1, $cat2 ) {
+       if ( $cat1['checked'] || $cat2['checked'] )
+               return ( $cat1['checked'] && !$cat2['checked'] ) ? -1 : 1;
+       else
+               return strcasecmp( $cat1['cat_name'], $cat2['cat_name'] );
+}
+
+function get_nested_categories( $default = 0, $parent = 0 ) {
+       global $post_ID, $link_id, $mode, $wpdb;
+
+       if ( $post_ID ) {
+               $checked_categories = $wpdb->get_col( "
+                    SELECT category_id
+                    FROM $wpdb->categories, $wpdb->post2cat
+                    WHERE $wpdb->post2cat.category_id = cat_ID AND $wpdb->post2cat.post_id = '$post_ID'
+                    " );
+
+               if ( count( $checked_categories ) == 0 ) {
+                       // No selected categories, strange
+                       $checked_categories[] = $default;
+               }
+       } else if ( $link_id ) {
+               $checked_categories = $wpdb->get_col( "
+                    SELECT category_id
+                    FROM $wpdb->categories, $wpdb->link2cat
+                    WHERE $wpdb->link2cat.category_id = cat_ID AND $wpdb->link2cat.link_id = '$link_id'
+                    " );
+
+               if ( count( $checked_categories ) == 0 ) {
+                       // No selected categories, strange
+                       $checked_categories[] = $default;
+               }
+       } else {
+               $checked_categories[] = $default;
+       }
+
+       $cats = return_categories_list( $parent);
+       $result = array ();
+
+       if ( is_array( $cats ) ) {
+               foreach ( $cats as $cat) {
+                       $result[$cat]['children'] = get_nested_categories( $default, $cat);
+                       $result[$cat]['cat_ID'] = $cat;
+                       $result[$cat]['checked'] = in_array( $cat, $checked_categories );
+                       $result[$cat]['cat_name'] = get_the_category_by_ID( $cat);
+               }
+       }
+
+       usort( $result, 'sort_cats' );
+
+       return $result;
+}
+
+function write_nested_categories( $categories ) {
+       foreach ( $categories as $category ) {
+               echo '<li id="category-', $category['cat_ID'], '"><label for="in-category-', $category['cat_ID'], '" class="selectit"><input value="', $category['cat_ID'], '" type="checkbox" name="post_category[]" id="in-category-', $category['cat_ID'], '"', ($category['checked'] ? ' checked="checked"' : "" ), '/> ', wp_specialchars( apply_filters('the_category', $category['cat_name'] )), "</label></li>";
+
+               if ( $category['children'] ) {
+                       echo "<ul>\n";
+                       write_nested_categories( $category['children'] );
+                       echo "</ul>\n";
+               }
+       }
+}
+
+function dropdown_categories( $default = 0 ) {
+       write_nested_categories( get_nested_categories( $default) );
+}
+
+function return_link_categories_list( $parent = 0 ) {
+       global $wpdb;
+       return $wpdb->get_col( "SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent AND ( category_count = 0  OR link_count != 0 OR ( link_count = 0 AND category_count = 0 ) ) ORDER BY link_count DESC" );
+}
+
+function get_nested_link_categories( $default = 0, $parent = 0 ) {
+       global $post_ID, $link_id, $mode, $wpdb;
+
+       if ( $link_id ) {
+               $checked_categories = $wpdb->get_col( "
+                    SELECT category_id
+                    FROM $wpdb->categories, $wpdb->link2cat
+                    WHERE $wpdb->link2cat.category_id = cat_ID AND $wpdb->link2cat.link_id = '$link_id'
+                    " );
+
+               if ( count( $checked_categories ) == 0 ) {
+                       // No selected categories, strange
+                       $checked_categories[] = $default;
+               }
+       } else {
+               $checked_categories[] = $default;
+       }
+
+       $cats = return_link_categories_list( $parent);
+       $result = array ();
+
+       if ( is_array( $cats ) ) {
+               foreach ( $cats as $cat) {
+                       $result[$cat]['children'] = get_nested_link_categories( $default, $cat);
+                       $result[$cat]['cat_ID'] = $cat;
+                       $result[$cat]['checked'] = in_array( $cat, $checked_categories );
+                       $result[$cat]['cat_name'] = get_the_category_by_ID( $cat);
+               }
+       }
+
+       usort( $result, 'sort_cats' );
+
+       return $result;
+}
+
+function dropdown_link_categories( $default = 0 ) {
+       write_nested_categories( get_nested_link_categories( $default) );
+}
 
 // Dandy new recursive multiple category stuff.
-function cat_rows($parent = 0, $level = 0, $categories = 0) {
-       global $wpdb, $class, $user_level;
-       if (!$categories)
-               $categories = $wpdb->get_results("SELECT * FROM $wpdb->categories ORDER BY cat_name");
-
-       if ($categories) {
-               foreach ($categories as $category) {
-                       if ($category->category_parent == $parent) {
-                               $category->cat_name = wp_specialchars($category->cat_name);
-                               $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $wpdb->post2cat WHERE category_id = $category->cat_ID");
-                               $pad = str_repeat('&#8212; ', $level);
-                               if ( $user_level > 3 )
-                                       $edit = "<a href='categories.php?action=edit&amp;cat_ID=$category->cat_ID' class='edit'>" . __('Edit') . "</a></td><td><a href='categories.php?action=delete&amp;cat_ID=$category->cat_ID' onclick=\"return confirm('".  sprintf(__("You are about to delete the category \'%s\'.  All of its posts will go to the default category.\\n  \'OK\' to delete, \'Cancel\' to stop."), addslashes($category->cat_name)) . "')\" class='delete'>" .  __('Delete') . "</a>";
-                               else
-                                       $edit = '';
-                               
-                               $class = ('alternate' == $class) ? '' : 'alternate';
-                               echo "<tr class='$class'><th scope='row'>$category->cat_ID</th><td>$pad $category->cat_name</td>
-                               <td>$category->category_description</td>
-                               <td>$count</td>
-                               <td>$edit</td>
-                               </tr>";
-                               cat_rows($category->cat_ID, $level + 1, $categories);
+function cat_rows( $parent = 0, $level = 0, $categories = 0 ) {
+       if (!$categories )
+               $categories = get_categories( 'hide_empty=0' );
+
+       $children = _get_category_hierarchy();
+
+       if ( $categories ) {
+               ob_start();
+               foreach ( $categories as $category ) {
+                       if ( $category->category_parent == $parent) {
+                               echo "\t" . _cat_row( $category, $level );
+                               if ( isset($children[$category->cat_ID]) )
+                                       cat_rows( $category->cat_ID, $level +1, $categories );
                        }
                }
+               $output = ob_get_contents();
+               ob_end_clean();
+
+               $output = apply_filters('cat_rows', $output);
+
+               echo $output;
        } else {
                return false;
        }
 }
 
-function page_rows( $parent = 0, $level = 0, $pages = 0 ) {
-       global $wpdb, $class, $user_level, $post;
-       if (!$pages)
-               $pages = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_status = 'static' ORDER BY menu_order");
+function _cat_row( $category, $level, $name_override = false ) {
+       global $class;
+
+       $pad = str_repeat( '&#8212; ', $level );
+       if ( current_user_can( 'manage_categories' ) ) {
+               $edit = "<a href='categories.php?action=edit&amp;cat_ID=$category->cat_ID' class='edit'>".__( 'Edit' )."</a></td>";
+               $default_cat_id = (int) get_option( 'default_category' );
+               $default_link_cat_id = (int) get_option( 'default_link_category' );
+
+               if ( ($category->cat_ID != $default_cat_id ) && ($category->cat_ID != $default_link_cat_id ) )
+                       $edit .= "<td><a href='" . wp_nonce_url( "categories.php?action=delete&amp;cat_ID=$category->cat_ID", 'delete-category_' . $category->cat_ID ) . "' onclick=\"return deleteSomething( 'cat', $category->cat_ID, '" . js_escape(sprintf( __("You are about to delete the category '%s'.\nAll posts that were only assigned to this category will be assigned to the '%s' category.\nAll links that were only assigned to this category will be assigned to the '%s' category.\n'OK' to delete, 'Cancel' to stop." ), $category->cat_name, get_catname( $default_cat_id ), get_catname( $default_link_cat_id ) )) . "' );\" class='delete'>".__( 'Delete' )."</a>";
+               else
+                       $edit .= "<td style='text-align:center'>".__( "Default" );
+       } else
+               $edit = '';
+
+       $class = ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || " class='alternate'" == $class ) ? '' : " class='alternate'";
+
+       $category->category_count = number_format( $category->category_count );
+       $category->link_count = number_format( $category->link_count );
+       $posts_count = ( $category->category_count > 0 ) ? "<a href='edit.php?cat=$category->cat_ID'>$category->category_count</a>" : $category->category_count;
+       return "<tr id='cat-$category->cat_ID'$class>
+               <th scope='row' style='text-align: center'>$category->cat_ID</th>
+               <td>" . ( $name_override ? $name_override : $pad . ' ' . $category->cat_name ) . "</td>
+               <td>$category->category_description</td>
+               <td align='center'>$posts_count</td>
+               <td align='center'>$category->link_count</td>
+               <td>$edit</td>\n\t</tr>\n";
+}
+
+function page_rows( $parent = 0, $level = 0, $pages = 0, $hierarchy = true ) {
+       global $wpdb, $class, $post;
+
+       if (!$pages )
+               $pages = get_pages( 'sort_column=menu_order' );
+
+       if (! $pages )
+               return false;
+
+       foreach ( $pages as $post) {
+               setup_postdata( $post);
+               if ( $hierarchy && ($post->post_parent != $parent) )
+                       continue;
 
-       if ($pages) {
-               foreach ($pages as $post) { start_wp();
-                       if ($post->post_parent == $parent) {
-                               $post->post_title = wp_specialchars($post->post_title);
-                               $pad = str_repeat('&#8212; ', $level);
-                               $id = $post->ID;
-                               $class = ('alternate' == $class) ? '' : 'alternate';
+               $post->post_title = wp_specialchars( $post->post_title );
+               $pad = str_repeat( '&#8212; ', $level );
+               $id = (int) $post->ID;
+               $class = ('alternate' == $class ) ? '' : 'alternate';
 ?>
-  <tr class='<?php echo $class; ?>'> 
-    <th scope="row"><?php echo $post->ID; ?></th> 
+  <tr id='page-<?php echo $id; ?>' class='<?php echo $class; ?>'> 
+    <th scope="row" style="text-align: center"><?php echo $post->ID; ?></th> 
     <td>
-      <?php echo $pad; ?><?php the_title() ?> 
+      <?php echo $pad; ?><?php the_title() ?>
     </td> 
     <td><?php the_author() ?></td>
-    <td><?php echo mysql2date('Y-m-d g:i a', $post->post_modified); ?></td> 
-       <td><a href="<?php the_permalink(); ?>" rel="permalink" class="edit"><?php _e('View'); ?></a></td>
-    <td><?php if (($user_level > $authordata->user_level) or ($user_login == $authordata->user_login)) { echo "<a href='post.php?action=edit&amp;post=$id' class='edit'>" . __('Edit') . "</a>"; } ?></td> 
-    <td><?php if (($user_level > $authordata->user_level) or ($user_login == $authordata->user_login)) { echo "<a href='post.php?action=delete&amp;post=$id' class='delete' onclick=\"return confirm('" . sprintf(__("You are about to delete this post \'%s\'\\n  \'OK\' to delete, \'Cancel\' to stop."), the_title('','',0)) . "')\">" . __('Delete') . "</a>"; } ?></td> 
+    <td><?php if ( '0000-00-00 00:00:00' ==$post->post_modified ) _e('Unpublished'); else echo mysql2date( __('Y-m-d g:i a'), $post->post_modified ); ?></td> 
+       <td><a href="<?php the_permalink(); ?>" rel="permalink" class="edit"><?php _e( 'View' ); ?></a></td>
+    <td><?php if ( current_user_can( 'edit_page', $id ) ) { echo "<a href='page.php?action=edit&amp;post=$id' class='edit'>" . __( 'Edit' ) . "</a>"; } ?></td> 
+    <td><?php if ( current_user_can( 'delete_page', $id ) ) { echo "<a href='" . wp_nonce_url( "page.php?action=delete&amp;post=$id", 'delete-page_' . $id ) .  "' class='delete' onclick=\"return deleteSomething( 'page', " . $id . ", '" . js_escape(sprintf( __("You are about to delete the '%s' page.\n'OK' to delete, 'Cancel' to stop." ), get_the_title() ) ) . "' );\">" . __( 'Delete' ) . "</a>"; } ?></td> 
   </tr> 
 
 <?php
-                               page_rows($id, $level + 1, $pages);
-                       }
-               }
-       } else {
-               return false;
+               if ( $hierarchy ) page_rows( $id, $level + 1, $pages );
        }
 }
 
-function wp_dropdown_cats($currentcat = 0, $currentparent = 0, $parent = 0, $level = 0, $categories = 0) {
-       global $wpdb, $bgcolor;
-       if (!$categories) {
-               $categories = $wpdb->get_results("SELECT * FROM $wpdb->categories ORDER BY cat_name");
+function user_row( $user_object, $style = '' ) {
+       if ( !(is_object( $user_object) && is_a( $user_object, 'WP_User' ) ) )
+               $user_object = new WP_User( (int) $user_object );
+       $email = $user_object->user_email;
+       $url = $user_object->user_url;
+       $short_url = str_replace( 'http://', '', $url );
+       $short_url = str_replace( 'www.', '', $short_url );
+       if ('/' == substr( $short_url, -1 ))
+               $short_url = substr( $short_url, 0, -1 );
+       if ( strlen( $short_url ) > 35 )
+               $short_url =  substr( $short_url, 0, 32 ).'...';
+       $numposts = get_usernumposts( $user_object->ID );
+       $r = "<tr id='user-$user_object->ID'$style>
+               <td><input type='checkbox' name='users[]' id='user_{$user_object->ID}' value='{$user_object->ID}' /> <label for='user_{$user_object->ID}'>{$user_object->ID}</label></td>
+               <td><label for='user_{$user_object->ID}'><strong>$user_object->user_login</strong></label></td>
+               <td><label for='user_{$user_object->ID}'>$user_object->first_name $user_object->last_name</label></td>
+               <td><a href='mailto:$email' title='" . sprintf( __('e-mail: %s' ), $email ) . "'>$email</a></td>
+               <td><a href='$url' title='website: $url'>$short_url</a></td>";
+       $r .= "\n\t\t<td align='center'>";
+       if ( $numposts > 0 ) {
+               $r .= "<a href='edit.php?author=$user_object->ID' title='" . __( 'View posts by this author' ) . "' class='edit'>";
+               $r .= sprintf(__ngettext( 'View %s post', 'View %s posts', $numposts ), $numposts);
+               $r .= '</a>';
+       }
+       $r .= "</td>\n\t\t<td>";
+       if ( current_user_can( 'edit_user', $user_object->ID ) ) {
+               $edit_link = add_query_arg( 'wp_http_referer', urlencode( clean_url( stripslashes( $_SERVER['REQUEST_URI'] ) ) ), "user-edit.php?user_id=$user_object->ID" );
+               $r .= "<a href='$edit_link' class='edit'>".__( 'Edit' )."</a>";
        }
-       if ($categories) {
-               foreach ($categories as $category) { if ($currentcat != $category->cat_ID && $parent == $category->category_parent) {
-                       $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $wpdb->post2cat WHERE category_id = $category->cat_ID");
-                       $pad = str_repeat('&#8211; ', $level);
-                       $category->cat_name = wp_specialchars($category->cat_name);
-                       echo "\n\t<option value='$category->cat_ID'";
-                       if ($currentparent == $category->cat_ID)
-                               echo " selected='selected'";
-                       echo ">$pad$category->cat_name</option>";
-                       wp_dropdown_cats($currentcat, $currentparent, $category->cat_ID, $level + 1, $categories);
-               } }
+       $r .= "</td>\n\t</tr>";
+       return $r;
+}
+
+function _wp_get_comment_list( $s = false, $start, $num ) {
+       global $wpdb;
+
+       $start = (int) $start;
+       $num = (int) $num;
+
+       if ( $s ) {
+               $s = $wpdb->escape($s);
+               $comments = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE
+                       (comment_author LIKE '%$s%' OR
+                       comment_author_email LIKE '%$s%' OR
+                       comment_author_url LIKE ('%$s%') OR
+                       comment_author_IP LIKE ('%$s%') OR
+                       comment_content LIKE ('%$s%') ) AND
+                       comment_approved != 'spam'
+                       ORDER BY comment_date DESC LIMIT $start, $num");
        } else {
-               return false;
+               $comments = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE comment_approved = '0' OR comment_approved = '1' ORDER BY comment_date DESC LIMIT $start, $num" );
        }
+
+       $total = $wpdb->get_var( "SELECT FOUND_ROWS()" );
+
+       return array($comments, $total);
 }
 
-function wp_create_thumbnail($file, $max_side, $effect = '') {
-
-    // 1 = GIF, 2 = JPEG, 3 = PNG
-
-    if(file_exists($file)) {
-        $type = getimagesize($file);
-        
-        // if the associated function doesn't exist - then it's not
-        // handle. duh. i hope.
-        
-        if(!function_exists('imagegif') && $type[2] == 1) {
-            $error = __('Filetype not supported. Thumbnail not created.');
-        }elseif(!function_exists('imagejpeg') && $type[2] == 2) {
-            $error = __('Filetype not supported. Thumbnail not created.');
-        }elseif(!function_exists('imagepng') && $type[2] == 3) {
-            $error = __('Filetype not supported. Thumbnail not created.');
-        } else {
-        
-            // create the initial copy from the original file
-            if($type[2] == 1) {
-                $image = imagecreatefromgif($file);
-            } elseif($type[2] == 2) {
-                $image = imagecreatefromjpeg($file);
-            } elseif($type[2] == 3) {
-                $image = imagecreatefrompng($file);
-            }
-            
-                       if (function_exists('imageantialias'))
-                   imageantialias($image, TRUE);
-            
-            $image_attr = getimagesize($file);
-            
-            // figure out the longest side
-            
-            if($image_attr[0] > $image_attr[1]) {
-                $image_width = $image_attr[0];
-                $image_height = $image_attr[1];
-                $image_new_width = $max_side;
-                
-                $image_ratio = $image_width/$image_new_width;
-                $image_new_height = $image_height/$image_ratio;
-                //width is > height
-            } else {
-                $image_width = $image_attr[0];
-                $image_height = $image_attr[1];
-                $image_new_height = $max_side;
-                
-                $image_ratio = $image_height/$image_new_height;
-                $image_new_width = $image_width/$image_ratio;
-                //height > width
-            }
-            
-            $thumbnail = imagecreatetruecolor($image_new_width, $image_new_height);
-            @imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1]);
-            
-            // move the thumbnail to it's final destination
-            
-            $path = explode('/', $file);
-            $thumbpath = substr($file, 0, strrpos($file, '/')) . '/thumb-' . $path[count($path)-1];
-            
-            if($type[2] == 1) {
-                if(!imagegif($thumbnail, $thumbpath)) {
-                    $error = __("Thumbnail path invalid");
-                }
-            } elseif($type[2] == 2) {
-                if(!imagejpeg($thumbnail, $thumbpath)) {
-                    $error = __("Thumbnail path invalid");
-                }
-            } elseif($type[2] == 3) {
-                if(!imagepng($thumbnail, $thumbpath)) {
-                    $error = __("Thumbnail path invalid");
-                }
-            }
-            
-        }
-    }
-    
-    if(!empty($error))
-    {
-        return $error;
-    }
-    else
-    {
-        return 1;
-    }
+function _wp_comment_list_item( $id, $alt = 0 ) {
+       global $authordata, $comment, $wpdb;
+       $id = (int) $id;
+       $comment =& get_comment( $id );
+       $class = '';
+       $authordata = get_userdata($wpdb->get_var("SELECT post_author FROM $wpdb->posts WHERE ID = $comment->comment_post_ID"));
+       $comment_status = wp_get_comment_status($comment->comment_ID);
+       if ( 'unapproved' == $comment_status )
+               $class .= ' unapproved';
+       if ( $alt % 2 )
+               $class .= ' alternate';
+       echo "<li id='comment-$comment->comment_ID' class='$class'>";
+?>
+<p><strong><?php comment_author(); ?></strong> <?php if ($comment->comment_author_email) { ?>| <?php comment_author_email_link() ?> <?php } if ($comment->comment_author_url && 'http://' != $comment->comment_author_url) { ?> | <?php comment_author_url_link() ?> <?php } ?>| <?php _e('IP:') ?> <a href="http://ws.arin.net/cgi-bin/whois.pl?queryinput=<?php comment_author_IP() ?>"><?php comment_author_IP() ?></a></p>
+
+<?php comment_text() ?>
+
+<p><?php comment_date(__('M j, g:i A'));  ?> &#8212; [
+<?php
+if ( current_user_can('edit_post', $comment->comment_post_ID) ) {
+       echo " <a href='comment.php?action=editcomment&amp;c=".$comment->comment_ID."'>" .  __('Edit') . '</a>';
+       echo ' | <a href="' . wp_nonce_url('ocomment.php?action=deletecomment&amp;p=' . $comment->comment_post_ID . '&amp;c=' . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . '" onclick="return deleteSomething( \'comment\', ' . $comment->comment_ID . ', \'' . js_escape(sprintf(__("You are about to delete this comment by '%s'.\n'Cancel' to stop, 'OK' to delete."), $comment->comment_author)) . "', theCommentList );\">" . __('Delete') . '</a> ';
+       if ( ('none' != $comment_status) && ( current_user_can('moderate_comments') ) ) {
+               echo '<span class="unapprove"> | <a href="' . wp_nonce_url('comment.php?action=unapprovecomment&amp;p=' . $comment->comment_post_ID . '&amp;c=' . $comment->comment_ID, 'unapprove-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Unapprove') . '</a> </span>';
+               echo '<span class="approve"> | <a href="' . wp_nonce_url('comment.php?action=approvecomment&amp;p=' . $comment->comment_post_ID . '&amp;c=' . $comment->comment_ID, 'approve-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Approve') . '</a> </span>';
+       }
+       echo " | <a href=\"" . wp_nonce_url("comment.php?action=deletecomment&amp;dt=spam&amp;p=" . $comment->comment_post_ID . "&amp;c=" . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . "\" onclick=\"return deleteSomething( 'comment-as-spam', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to mark as spam this comment by '%s'.\n'Cancel' to stop, 'OK' to mark as spam."), $comment->comment_author))  . "', theCommentList );\">" . __('Spam') . "</a> ";
+}
+$post = get_post($comment->comment_post_ID);
+$post_title = wp_specialchars( $post->post_title, 'double' );
+$post_title = ('' == $post_title) ? "# $comment->comment_post_ID" : $post_title;
+?>
+ ] &#8212; <a href="<?php echo get_permalink($comment->comment_post_ID); ?>"><?php echo $post_title; ?></a></p>
+               </li>
+<?php
+}
+
+function wp_dropdown_cats( $currentcat = 0, $currentparent = 0, $parent = 0, $level = 0, $categories = 0 ) {
+       global $wpdb;
+       if (!$categories )
+               $categories = get_categories( 'hide_empty=0' );
+
+       if ( $categories ) {
+               foreach ( $categories as $category ) {
+                       if ( $currentcat != $category->cat_ID && $parent == $category->category_parent) {
+                               $pad = str_repeat( '&#8211; ', $level );
+                               $category->cat_name = wp_specialchars( $category->cat_name );
+                               echo "\n\t<option value='$category->cat_ID'";
+                               if ( $currentparent == $category->cat_ID )
+                                       echo " selected='selected'";
+                               echo ">$pad$category->cat_name</option>";
+                               wp_dropdown_cats( $currentcat, $currentparent, $category->cat_ID, $level +1, $categories );
+                       }
+               }
+       } else {
+               return false;
+       }
 }
 
 // Some postmeta stuff
-function has_meta($postid) {
+function has_meta( $postid ) {
        global $wpdb;
 
-       return $wpdb->get_results("
-               SELECT meta_key, meta_value, meta_id, post_id
-               FROM $wpdb->postmeta
-               WHERE post_id = '$postid'
-               ORDER BY meta_key,meta_id",ARRAY_A);
+       return $wpdb->get_results( "
+                       SELECT meta_key, meta_value, meta_id, post_id
+                       FROM $wpdb->postmeta
+                       WHERE post_id = '$postid'
+                       ORDER BY meta_key,meta_id", ARRAY_A );
 
 }
 
-function list_meta($meta) {
-       global $post_ID;        
+function list_meta( $meta ) {
+       global $post_ID;
        // Exit if no meta
-       if (!$meta) return;
+       if (!$meta ) {
+               echo '<tbody id="the-list"><tr style="display: none;"><td>&nbsp;</td></tr></tbody>'; //TBODY needed for list-manipulation JS
+               return;
+       }
        $count = 0;
 ?>
-<table id='meta-list' cellpadding="3">
+       <thead>
        <tr>
-               <th><?php _e('Key') ?></th>
-               <th><?php _e('Value') ?></th>
-               <th colspan='2'><?php _e('Action') ?></th>
+               <th><?php _e( 'Key' ) ?></th>
+               <th><?php _e( 'Value' ) ?></th>
+               <th colspan='2'><?php _e( 'Action' ) ?></th>
        </tr>
+       </thead>
 <?php
-               
-       foreach ($meta as $entry) {
-               ++$count;
-               if ( $count % 2 ) $style = 'alternate';
-               else $style = '';
-               if ( '_' == $entry['meta_key']{0} ) $style .= ' hidden';
-               echo "
-       <tr class='$style'>
-               <td valign='top'><input name='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' /></td>
-               <td><textarea name='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>
-               <td align='center' width='10%'><input name='updatemeta' type='submit' class='updatemeta' tabindex='6' value='" . __('Update') ."' /></td>
-               <td align='center' width='10%'><input name='deletemeta[{$entry['meta_id']}]' type='submit' class='deletemeta' tabindex='6' value='" . __('Delete') ."' /></td>
-       </tr>
-";
+       $r ="\n\t<tbody id='the-list'>";
+       foreach ( $meta as $entry ) {
+               ++ $count;
+               if ( $count % 2 )
+                       $style = 'alternate';
+               else
+                       $style = '';
+               if ('_' == $entry['meta_key'] { 0 } )
+                       $style .= ' hidden';
+
+               if ( is_serialized( $entry['meta_value'] ) ) {
+                       if ( is_serialized_string( $entry['meta_value'] ) ) {
+                               // this is a serialized string, so we should display it
+                               $entry['meta_value'] = maybe_unserialize( $entry['meta_value'] );
+                       } else {
+                               // this is a serialized array/object so we should NOT display it
+                               --$count;
+                               continue;
+                       }
+               }
+
+               $key_js = js_escape( $entry['meta_key'] );
+               $entry['meta_key']   = attribute_escape($entry['meta_key']);
+               $entry['meta_value'] = attribute_escape($entry['meta_value']);
+               $r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>";
+               $r .= "\n\t\t<td valign='top'><input name='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' /></td>";
+               $r .= "\n\t\t<td><textarea name='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>";
+               $r .= "\n\t\t<td align='center'><input name='updatemeta' type='submit' class='updatemeta' tabindex='6' value='".attribute_escape(__( 'Update' ))."' /><br />";
+               $r .= "\n\t\t<input name='deletemeta[{$entry['meta_id']}]' type='submit' onclick=\"return deleteSomething( 'meta', {$entry['meta_id']}, '";
+               $r .= js_escape(sprintf( __("You are about to delete the '%s' custom field on this post.\n'OK' to delete, 'Cancel' to stop." ), $key_js ) );
+               $r .= "' );\" class='deletemeta' tabindex='6' value='".attribute_escape(__( 'Delete' ))."' /></td>";
+               $r .= "\n\t</tr>";
        }
-       echo "
-       </table>
-";
+       echo $r;
+       echo "\n\t</tbody>";
 }
 
 // Get a list of previously defined keys
 function get_meta_keys() {
        global $wpdb;
-       
-       $keys = $wpdb->get_col("
-               SELECT meta_key
-               FROM $wpdb->postmeta
-               GROUP BY meta_key
-               ORDER BY meta_key");
-       
+
+       $keys = $wpdb->get_col( "
+                       SELECT meta_key
+                       FROM $wpdb->postmeta
+                       GROUP BY meta_key
+                       ORDER BY meta_key" );
+
        return $keys;
 }
 
 function meta_form() {
        global $wpdb;
-       $keys = $wpdb->get_col("
+       $limit = (int) apply_filters( 'postmeta_form_limit', 30 );
+       $keys = $wpdb->get_col( "
                SELECT meta_key
                FROM $wpdb->postmeta
                GROUP BY meta_key
                ORDER BY meta_id DESC
-               LIMIT 10");
+               LIMIT $limit" );
+       if ( $keys )
+               natcasesort($keys);
 ?>
-<h3><?php _e('Add a new custom field to this post:') ?></h3>
-<table cellspacing="3" cellpadding="3">
+<h3><?php _e( 'Add a new custom field:' ) ?></h3>
+<table id="newmeta" cellspacing="3" cellpadding="3">
        <tr>
-<th colspan="2"><?php _e('Key') ?></th>
-<th><?php _e('Value') ?></th>
+<th colspan="2"><?php _e( 'Key' ) ?></th>
+<th><?php _e( 'Value' ) ?></th>
 </tr>
        <tr valign="top">
                <td align="right" width="18%">
-<?php if ($keys) : ?>
+<?php if ( $keys ) : ?>
 <select id="metakeyselect" name="metakeyselect" tabindex="7">
-<option value="#NONE#"><?php _e('- Select -'); ?></option>
+<option value="#NONE#"><?php _e( '- Select -' ); ?></option>
 <?php
-       foreach($keys as $key) {
+
+       foreach ( $keys as $key ) {
+               $key = attribute_escape( $key);
                echo "\n\t<option value='$key'>$key</option>";
        }
 ?>
-</select> <?php _e('or'); ?>
+</select> <?php _e( 'or' ); ?>
 <?php endif; ?>
 </td>
 <td><input type="text" id="metakeyinput" name="metakeyinput" tabindex="7" /></td>
@@ -368,249 +1090,212 @@ function meta_form() {
        </tr>
 
 </table>
-<p class="submit"><input type="submit" name="updatemeta" tabindex="9" value="<?php _e('Add Custom Field &raquo;') ?>" /></p>
+<p class="submit"><input type="submit" id="updatemetasub" name="updatemeta" tabindex="9" value="<?php _e( 'Add Custom Field &raquo;' ) ?>" /></p>
 <?php
+
 }
 
-function add_meta($post_ID) {
+function add_meta( $post_ID ) {
        global $wpdb;
-       
-       $metakeyselect = $wpdb->escape( stripslashes( trim($_POST['metakeyselect']) ) );
-       $metakeyinput  = $wpdb->escape( stripslashes( trim($_POST['metakeyinput']) ) );
-       $metavalue     = $wpdb->escape( stripslashes( trim($_POST['metavalue']) ) );
+       $post_ID = (int) $post_ID;
+
+       $metakeyselect = $wpdb->escape( stripslashes( trim( $_POST['metakeyselect'] ) ) );
+       $metakeyinput = $wpdb->escape( stripslashes( trim( $_POST['metakeyinput'] ) ) );
+       $metavalue = maybe_serialize( stripslashes( (trim( $_POST['metavalue'] ) ) ));
+       $metavalue = $wpdb->escape( $metavalue );
 
-       if (!empty($metavalue) && ((('#NONE#' != $metakeyselect) && !empty($metakeyselect)) || !empty($metakeyinput))) {
+       if ( ('0' === $metavalue || !empty ( $metavalue ) ) && ((('#NONE#' != $metakeyselect) && !empty ( $metakeyselect) ) || !empty ( $metakeyinput) ) ) {
                // We have a key/value pair. If both the select and the 
                // input for the key have data, the input takes precedence:
 
-               if ('#NONE#' != $metakeyselect)
+               if ('#NONE#' != $metakeyselect)
                        $metakey = $metakeyselect;
-                               
-               if ($metakeyinput)
+
+               if ( $metakeyinput)
                        $metakey = $metakeyinput; // default
 
-               $result = $wpdb->query("
-                               INSERT INTO $wpdb->postmeta 
-                               (post_id,meta_key,meta_value) 
-                               VALUES ('$post_ID','$metakey','$metavalue')
-                       ");
+               $result = $wpdb->query( "
+                                               INSERT INTO $wpdb->postmeta 
+                                               (post_id,meta_key,meta_value ) 
+                                               VALUES ('$post_ID','$metakey','$metavalue' )
+                                       " );
+               return $wpdb->insert_id;
        }
+       return false;
 } // add_meta
 
-function delete_meta($mid) {
+function delete_meta( $mid ) {
        global $wpdb;
+       $mid = (int) $mid;
 
-       $result = $wpdb->query("DELETE FROM $wpdb->postmeta WHERE meta_id = '$mid'");
+       return $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id = '$mid'" );
 }
 
-function update_meta($mid, $mkey, $mvalue) {
+function update_meta( $mid, $mkey, $mvalue ) {
        global $wpdb;
-
-       return $wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '$mkey', meta_value = '$mvalue' WHERE meta_id = '$mid'");
+       $mvalue = maybe_serialize( stripslashes( $mvalue ));
+       $mvalue = $wpdb->escape( $mvalue );
+       $mid = (int) $mid;
+       return $wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '$mkey', meta_value = '$mvalue' WHERE meta_id = '$mid'" );
 }
 
-function touch_time($edit = 1, $for_post = 1) {
-       global $month, $postdata, $commentdata;
-       if ( $for_post && ('draft' == $postdata->post_status) ) {
-               $checked = 'checked="checked" ';
-               $edit = false;
-       } else {
-               $checked = ' ';
-       }
+function get_post_meta_by_id( $mid ) {
+       global $wpdb;
+       $mid = (int) $mid;
 
-       echo '<fieldset><legend><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp" '.$checked.'/> <label for="timestamp">' . __('Edit timestamp') . '</label></legend>';
-       
-       $time_adj = time() + (get_settings('gmt_offset') * 3600);
-       $post_date = ($for_post) ? $postdata->post_date : $commentdata['comment_date'];
-       $jj = ($edit) ? mysql2date('d', $post_date) : gmdate('d', $time_adj);
-       $mm = ($edit) ? mysql2date('m', $post_date) : gmdate('m', $time_adj);
-       $aa = ($edit) ? mysql2date('Y', $post_date) : gmdate('Y', $time_adj);
-       $hh = ($edit) ? mysql2date('H', $post_date) : gmdate('H', $time_adj);
-       $mn = ($edit) ? mysql2date('i', $post_date) : gmdate('i', $time_adj);
-       $ss = ($edit) ? mysql2date('s', $post_date) : gmdate('s', $time_adj);
-
-       echo "<select name=\"mm\">\n";
-       for ($i=1; $i < 13; $i=$i+1) {
-               echo "\t\t\t<option value=\"$i\"";
-               if ($i == $mm)
-               echo " selected='selected'";
-               if ($i < 10) {
-                       $ii = "0".$i;
-               } else {
-                       $ii = "$i";
-               }
-               echo ">".$month["$ii"]."</option>\n";
-       } 
+       $meta = $wpdb->get_row( "SELECT * FROM $wpdb->postmeta WHERE meta_id = '$mid'" );
+       if ( is_serialized_string( $meta->meta_value ) )
+               $meta->meta_value = maybe_unserialize( $meta->meta_value );
+       return $meta;
+}
 
+function touch_time( $edit = 1, $for_post = 1 ) {
+       global $wp_locale, $post, $comment;
+
+       if ( $for_post )
+               $edit = ( ('draft' == $post->post_status ) && (!$post->post_date || '0000-00-00 00:00:00' == $post->post_date ) ) ? false : true;
+       echo '<fieldset><legend><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp" /> <label for="timestamp">'.__( 'Edit timestamp' ).'</label></legend>';
+
+       $time_adj = time() + (get_option( 'gmt_offset' ) * 3600 );
+       $post_date = ($for_post) ? $post->post_date : $comment->comment_date;
+       $jj = ($edit) ? mysql2date( 'd', $post_date ) : gmdate( 'd', $time_adj );
+       $mm = ($edit) ? mysql2date( 'm', $post_date ) : gmdate( 'm', $time_adj );
+       $aa = ($edit) ? mysql2date( 'Y', $post_date ) : gmdate( 'Y', $time_adj );
+       $hh = ($edit) ? mysql2date( 'H', $post_date ) : gmdate( 'H', $time_adj );
+       $mn = ($edit) ? mysql2date( 'i', $post_date ) : gmdate( 'i', $time_adj );
+       $ss = ($edit) ? mysql2date( 's', $post_date ) : gmdate( 's', $time_adj );
+
+       echo "<select name=\"mm\" onchange=\"edit_date.checked=true\">\n";
+       for ( $i = 1; $i < 13; $i = $i +1 ) {
+               echo "\t\t\t<option value=\"$i\"";
+               if ( $i == $mm )
+                       echo ' selected="selected"';
+               echo '>' . $wp_locale->get_month( $i ) . "</option>\n";
+       }
 ?>
 </select>
-<input type="text" name="jj" value="<?php echo $jj; ?>" size="2" maxlength="2" />
-<input type="text" name="aa" value="<?php echo $aa ?>" size="4" maxlength="5" /> @ 
-<input type="text" name="hh" value="<?php echo $hh ?>" size="2" maxlength="2" /> : 
-<input type="text" name="mn" value="<?php echo $mn ?>" size="2" maxlength="2" /> 
-<input type="hidden" name="ss" value="<?php echo $ss ?>" size="2" maxlength="2" /> 
-<?php _e('Existing timestamp'); ?>: 
-       <?php
-               // We might need to readjust to display proper existing timestamp
-               if ( $for_post && ('draft' == $postdata->post_status) ) {
-                       $jj = mysql2date('d', $post_date);
-                       $mm = mysql2date('m', $post_date);
-                       $aa = mysql2date('Y', $post_date);
-                       $hh = mysql2date('H', $post_date);
-                       $mn = mysql2date('i', $post_date);
-                       $ss = mysql2date('s', $post_date);
-               }
-               echo "{$month[$mm]} $jj, $aa @ $hh:$mn"; ?>
+<input type="text" id="jj" name="jj" value="<?php echo $jj; ?>" size="2" maxlength="2" onchange="edit_date.checked=true"/>
+<input type="text" id="aa" name="aa" value="<?php echo $aa ?>" size="4" maxlength="5" onchange="edit_date.checked=true" /> @
+<input type="text" id="hh" name="hh" value="<?php echo $hh ?>" size="2" maxlength="2" onchange="edit_date.checked=true" /> :
+<input type="text" id="mn" name="mn" value="<?php echo $mn ?>" size="2" maxlength="2" onchange="edit_date.checked=true" />
+<input type="hidden" id="ss" name="ss" value="<?php echo $ss ?>" size="2" maxlength="2" onchange="edit_date.checked=true" />
+<?php
+       if ( $edit ) {
+               printf( __('Existing timestamp: %1$s %2$s, %3$s @ %4$s:%5$s' ), $wp_locale->get_month( $mm ), $jj, $aa, $hh, $mn );
+       }
+?>
 </fieldset>
        <?php
-}
 
-function check_admin_referer() {
-       $adminurl = strtolower( get_settings('siteurl') ) . '/wp-admin';
-       $referer = strtolower( $_SERVER['HTTP_REFERER'] );
-       if ( !strstr($referer, $adminurl) )
-               die(__('Sorry, you need to <a href="http://codex.wordpress.org/Enable_Sending_Referrers">enable sending referrers</a> for this feature to work.'));
-       do_action('check_admin_referer');
 }
 
-// insert_with_markers: Owen Winkler
-// Inserts an array of strings into a file (.htaccess), placing it between
+// insert_with_markers: Owen Winkler, fixed by Eric Anderson
+// Inserts an array of strings into a file (.htaccess ), placing it between
 // BEGIN and END markers.  Replaces existing marked info.  Retains surrounding
 // data.  Creates file if none exists.
 // Returns true on write success, false on failure.
-function insert_with_markers($filename, $marker, $insertion) {
-       if (!file_exists($filename) || is_writeable($filename)) {
-               if (!file_exists($filename)) {
+function insert_with_markers( $filename, $marker, $insertion ) {
+       if (!file_exists( $filename ) || is_writeable( $filename ) ) {
+               if (!file_exists( $filename ) ) {
                        $markerdata = '';
                } else {
-                       $markerdata = explode("\n", implode('', file($filename)));
+                       $markerdata = explode( "\n", implode( '', file( $filename ) ) );
                }
 
-               $f = fopen($filename, 'w');
+               $f = fopen( $filename, 'w' );
                $foundit = false;
-               if ($markerdata) {
+               if ( $markerdata ) {
                        $state = true;
-                       $newline = '';
-                       foreach($markerdata as $markerline) {
-                               if (strstr($markerline, "# BEGIN {$marker}")) $state = false;
-                               if ($state) fwrite($f, "{$newline}{$markerline}");
-                               if (strstr($markerline, "# END {$marker}")) {
-                                       fwrite($f, "{$newline}# BEGIN {$marker}");
-                                       if(is_array($insertion)) foreach($insertion as $insertline) fwrite($f, "{$newline}{$insertline}");
-                                       fwrite($f, "{$newline}# END {$marker}");
+                       foreach ( $markerdata as $n => $markerline ) {
+                               if (strpos($markerline, '# BEGIN ' . $marker) !== false)
+                                       $state = false;
+                               if ( $state ) {
+                                       if ( $n + 1 < count( $markerdata ) )
+                                               fwrite( $f, "{$markerline}\n" );
+                                       else
+                                               fwrite( $f, "{$markerline}" );
+                               }
+                               if (strpos($markerline, '# END ' . $marker) !== false) {
+                                       fwrite( $f, "# BEGIN {$marker}\n" );
+                                       if ( is_array( $insertion ))
+                                               foreach ( $insertion as $insertline )
+                                                       fwrite( $f, "{$insertline}\n" );
+                                       fwrite( $f, "# END {$marker}\n" );
                                        $state = true;
                                        $foundit = true;
                                }
-                               $newline = "\n";
                        }
                }
                if (!$foundit) {
-                       fwrite($f, "# BEGIN {$marker}\n");
-                       foreach($insertion as $insertline) fwrite($f, "{$insertline}\n");
-                       fwrite($f, "# END {$marker}");                          
+                       fwrite( $f, "# BEGIN {$marker}\n" );
+                       foreach ( $insertion as $insertline )
+                               fwrite( $f, "{$insertline}\n" );
+                       fwrite( $f, "# END {$marker}\n" );
                }
-               fclose($f);
+               fclose( $f );
                return true;
        } else {
                return false;
        }
 }
 
-// insert_with_markers: Owen Winkler
-// Returns an array of strings from a file (.htaccess) from between BEGIN
+// extract_from_markers: Owen Winkler
+// Returns an array of strings from a file (.htaccess ) from between BEGIN
 // and END markers.
-function extract_from_markers($filename, $marker) {
-       $result = array();
+function extract_from_markers( $filename, $marker ) {
+       $result = array ();
 
-       if (!file_exists($filename)) {
+       if (!file_exists( $filename ) ) {
                return $result;
        }
 
-       if($markerdata = explode("\n", implode('', file($filename))));
+       if ( $markerdata = explode( "\n", implode( '', file( $filename ) ) ));
        {
                $state = false;
-               foreach($markerdata as $markerline) {
-                       if(strstr($markerline, "# END {$marker}"))      $state = false;
-                       if($state) $result[] = $markerline;
-                       if(strstr($markerline, "# BEGIN {$marker}")) $state = true;
+               foreach ( $markerdata as $markerline ) {
+                       if (strpos($markerline, '# END ' . $marker) !== false)
+                               $state = false;
+                       if ( $state )
+                               $result[] = $markerline;
+                       if (strpos($markerline, '# BEGIN ' . $marker) !== false)
+                               $state = true;
                }
        }
 
        return $result;
 }
 
-function save_mod_rewrite_rules() {
-       global $is_apache, $wp_rewrite;
-       $home_path = get_home_path();
-
-       if (! $wp_rewrite->using_mod_rewrite_permalinks())
-               return;
-
-       if ( ! ((!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess')) )
-               return;
-
-       if (! $is_apache)
-               return;
+function got_mod_rewrite() {
+       global $is_apache;
 
-       $rules = explode("\n", $wp_rewrite->mod_rewrite_rules());
-       insert_with_markers($home_path.'.htaccess', 'WordPress', $rules);
-}
-
-function generate_page_rewrite_rules() {
-       global $wpdb;
-       $posts = $wpdb->get_results("SELECT ID, post_name FROM $wpdb->posts WHERE post_status = 'static' ORDER BY post_parent DESC");
+       // take 3 educated guesses as to whether or not mod_rewrite is available
+       if ( !$is_apache )
+               return false;
 
-       $page_rewrite_rules = array();
-       
-       if ($posts) {
-               foreach ($posts as $post) {
-                       // URI => page name
-                       $uri = get_page_uri($post->ID);
-                       
-                       $page_rewrite_rules[$uri] = $post->post_name;
-               }
-               
-               update_option('page_uris', $page_rewrite_rules);
-               
-               save_mod_rewrite_rules();
+       if ( function_exists( 'apache_get_modules' ) ) {
+               if ( !in_array( 'mod_rewrite', apache_get_modules() ) )
+                       return false;
        }
+
+       return true;
 }
 
-function the_quicktags () {
-// Browser detection sucks, but until Safari supports the JS needed for this to work people just assume it's a bug in WP
-if ( !strstr($_SERVER['HTTP_USER_AGENT'], 'Safari') ) :
-       echo '
-       <div id="quicktags">
-       <a href="http://wordpress.org/docs/reference/post/#quicktags" title="' .  __('Help with quicktags') . '">' . __('Quicktags') . '</a>:
-       <script src="quicktags.js" type="text/javascript"></script>
-       <script type="text/javascript">edToolbar();</script>
-';
-       echo '</div>';
-endif;
-}
-
-function validate_current_theme() {
-       $theme_loc = 'wp-content/themes';
-       $theme_root = ABSPATH . $theme_loc;
-
-       $template = get_settings('template');
-       $stylesheet = get_settings('stylesheet');
-
-       if (($template != 'default') && (! file_exists("$theme_root/$template/index.php"))) {
-               update_option('template', 'default');
-               update_option('stylesheet', 'default');
-               do_action('switch_theme', 'Default');
+function save_mod_rewrite_rules() {
+       global $is_apache, $wp_rewrite;
+       $home_path = get_home_path();
+
+       if (!$wp_rewrite->using_mod_rewrite_permalinks() )
                return false;
-       }
 
-       if (($stylesheet != 'default') && (! file_exists("$theme_root/$stylesheet/style.css"))) {
-               update_option('template', 'default');
-               update_option('stylesheet', 'default');
-               do_action('switch_theme', 'Default');
+       if (!((!file_exists( $home_path.'.htaccess' ) && is_writable( $home_path ) ) || is_writable( $home_path.'.htaccess' ) ) )
                return false;
-       }
 
-       return true;
+       if (! got_mod_rewrite() )
+               return false;
+
+       $rules = explode( "\n", $wp_rewrite->mod_rewrite_rules() );
+       return insert_with_markers( $home_path.'.htaccess', 'WordPress', $rules );
 }
 
 function get_broken_themes() {
@@ -624,19 +1309,19 @@ function get_page_templates() {
        $themes = get_themes();
        $theme = get_current_theme();
        $templates = $themes[$theme]['Template Files'];
-       $page_templates = array();
+       $page_templates = array ();
 
-       if( is_array( $templates ) ) {
-               foreach ($templates as $template) {
-                       $template_data = implode('', file(ABSPATH . $template));
-                       preg_match("|Template Name:(.*)|i", $template_data, $name);
-                       preg_match("|Description:(.*)|i", $template_data, $description);
+       if ( is_array( $templates ) ) {
+               foreach ( $templates as $template ) {
+                       $template_data = implode( '', file( ABSPATH.$template ));
+                       preg_match( "|Template Name:(.*)|i", $template_data, $name );
+                       preg_match( "|Description:(.*)|i", $template_data, $description );
 
                        $name = $name[1];
                        $description = $description[1];
 
-                       if (! empty($name)) {
-                               $page_templates[trim($name)] = basename($template);
+                       if (!empty ( $name ) ) {
+                               $page_templates[trim( $name )] = basename( $template );
                        }
                }
        }
@@ -644,35 +1329,37 @@ function get_page_templates() {
        return $page_templates;
 }
 
-function page_template_dropdown($default = '') {
+function page_template_dropdown( $default = '' ) {
        $templates = get_page_templates();
-       foreach (array_keys($templates) as $template) :
-               if ($default == $templates[$template]) $selected = " selected='selected'";
-               else $selected = '';
-               echo "\n\t<option value='" . $templates[$template] . "' $selected>$template</option>";
-               endforeach;
+       foreach (array_keys( $templates ) as $template )
+               : if ( $default == $templates[$template] )
+                       $selected = " selected='selected'";
+               else
+                       $selected = '';
+       echo "\n\t<option value='".$templates[$template]."' $selected>$template</option>";
+       endforeach;
 }
 
-function parent_dropdown($default = 0, $parent = 0, $level = 0) {
+function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
        global $wpdb, $post_ID;
-       $items = $wpdb->get_results("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_status = 'static' ORDER BY menu_order");
+       $items = $wpdb->get_results( "SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_type = 'page' ORDER BY menu_order" );
 
-       if ($items) {
-               foreach ($items as $item) {
-                       // A page cannot be it's own parent.
-                       if (!empty($post_ID)) {
-                               if ($item->ID == $post_ID) {
+       if ( $items ) {
+               foreach ( $items as $item ) {
+                       // A page cannot be its own parent.
+                       if (!empty ( $post_ID ) ) {
+                               if ( $item->ID == $post_ID ) {
                                        continue;
                                }
                        }
-                       $pad = str_repeat('&nbsp;', $level * 3);
-                       if ($item->ID == $default)
+                       $pad = str_repeat( '&nbsp;', $level * 3 );
+                       if ( $item->ID == $default)
                                $current = ' selected="selected"';
                        else
                                $current = '';
 
                        echo "\n\t<option value='$item->ID'$current>$pad $item->post_title</option>";
-                       parent_dropdown($default, $item->ID, $level + 1);
+                       parent_dropdown( $default, $item->ID, $level +1 );
                }
        } else {
                return false;
@@ -683,33 +1370,59 @@ function user_can_access_admin_page() {
        global $pagenow;
        global $menu;
        global $submenu;
-       global $user_level;
+       global $_wp_menu_nopriv;
+       global $_wp_submenu_nopriv;
+       global $plugin_page;
 
        $parent = get_admin_page_parent();
 
-       foreach ($menu as $menu_array) {
-               //echo "parent array: " . $menu_array[2];
-               if ($menu_array[2] == $parent) {
-                       if ($user_level < $menu_array[1]) {
+       if ( isset( $_wp_submenu_nopriv[$parent][$pagenow] ) )
+               return false;
+
+       if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) )
+               return false;
+
+       if ( empty( $parent) ) {
+               if ( isset( $_wp_menu_nopriv[$pagenow] ) )
+                       return false;
+               if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) )
+                       return false;
+               if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) )
+                       return false;
+               foreach (array_keys( $_wp_submenu_nopriv ) as $key ) {
+                       if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) )
                                return false;
-                       } else {
-                               break;
-                       }
+                       if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) )
+                       return false;
                }
+               return true;
        }
 
-       if (isset($submenu[$parent])) {
-               foreach ($submenu[$parent] as $submenu_array) {
-                       if ($submenu_array[2] == $pagenow) {
-                               if ($user_level < $submenu_array[1]) {
+       if ( isset( $submenu[$parent] ) ) {
+               foreach ( $submenu[$parent] as $submenu_array ) {
+                       if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) {
+                               if ( current_user_can( $submenu_array[1] ))
+                                       return true;
+                               else
                                        return false;
-                               } else {
+                       } else if ( $submenu_array[2] == $pagenow ) {
+                               if ( current_user_can( $submenu_array[1] ))
                                        return true;
-                               }
+                               else
+                                       return false;
                        }
                }
        }
-       
+
+       foreach ( $menu as $menu_array ) {
+               if ( $menu_array[2] == $parent) {
+                       if ( current_user_can( $menu_array[1] ))
+                               return true;
+                       else
+                               return false;
+               }
+       }
+
        return true;
 }
 
@@ -720,40 +1433,55 @@ function get_admin_page_title() {
        global $pagenow;
        global $plugin_page;
 
-       if (isset($title) && ! empty($title)) {
+       if ( isset( $title ) && !empty ( $title ) ) {
                return $title;
        }
 
-       $parent = get_admin_page_parent();
-       if (empty($parent)) {
-               foreach ($menu as $menu_array) {
-                       if (isset($menu_array[3])) {
-                               if ($menu_array[2] == $pagenow) {
-                                       $title = $menu_array[3];
-                                       return $menu_array[3];
-                               } else if (isset($plugin_page) && ($plugin_page == $menu_array[2])) {
+       $hook = get_plugin_page_hook( $plugin_page, $pagenow );
+
+       $parent = $parent1 = get_admin_page_parent();
+       if ( empty ( $parent) ) {
+               foreach ( $menu as $menu_array ) {
+                       if ( isset( $menu_array[3] ) ) {
+                               if ( $menu_array[2] == $pagenow ) {
                                        $title = $menu_array[3];
                                        return $menu_array[3];
-                               }
+                               } else
+                                       if ( isset( $plugin_page ) && ($plugin_page == $menu_array[2] ) && ($hook == $menu_array[3] ) ) {
+                                               $title = $menu_array[3];
+                                               return $menu_array[3];
+                                       }
+                       } else {
+                               $title = $menu_array[0];
+                               return $title;
                        }
                }
        } else {
-               foreach (array_keys($submenu) as $parent) {
-                       foreach ($submenu[$parent] as $submenu_array) {
-                               if (isset($submenu_array[3])) {
-                                       if ($submenu_array[2] == $pagenow) {
-                                               $title = $submenu_array[3];
-                                               return $submenu_array[3];
-                                       } else if (isset($plugin_page) && ($plugin_page == $submenu_array[2])) {
+               foreach (array_keys( $submenu ) as $parent) {
+                       foreach ( $submenu[$parent] as $submenu_array ) {
+                               if ( isset( $plugin_page ) && 
+                                       ($plugin_page == $submenu_array[2] ) && 
+                                       (($parent == $pagenow ) || ($parent == $plugin_page ) || ($plugin_page == $hook ) || (($pagenow == 'admin.php' ) && ($parent1 != $submenu_array[2] ) ) )
+                                       ) {
                                                $title = $submenu_array[3];
                                                return $submenu_array[3];
                                        }
+
+                               if ( $submenu_array[2] != $pagenow || isset( $_GET['page'] ) ) // not the current page
+                                       continue;
+
+                               if ( isset( $submenu_array[3] ) ) {
+                                       $title = $submenu_array[3];
+                                       return $submenu_array[3];
+                               } else {
+                                       $title = $submenu_array[0];
+                                       return $title;
                                }
                        }
                }
        }
 
-       return '';
+       return $title;
 }
 
 function get_admin_page_parent() {
@@ -762,29 +1490,53 @@ function get_admin_page_parent() {
        global $submenu;
        global $pagenow;
        global $plugin_page;
+       global $_wp_real_parent_file;
+       global $_wp_menu_nopriv;
+       global $_wp_submenu_nopriv;
+
+       if ( !empty ( $parent_file ) ) {
+               if ( isset( $_wp_real_parent_file[$parent_file] ) )
+                       $parent_file = $_wp_real_parent_file[$parent_file];
 
-       if (isset($parent_file) && ! empty($parent_file)) {
                return $parent_file;
        }
 
-       if ($pagenow == 'admin.php' && isset($plugin_page)) {
-               foreach ($menu as $parent_menu) {
-                       if ($parent_menu[2] == $plugin_page) {
+       if ( $pagenow == 'admin.php' && isset( $plugin_page ) ) {
+               foreach ( $menu as $parent_menu ) {
+                       if ( $parent_menu[2] == $plugin_page ) {
                                $parent_file = $plugin_page;
-                               return $plugin_page;
+                               if ( isset( $_wp_real_parent_file[$parent_file] ) )
+                                       $parent_file = $_wp_real_parent_file[$parent_file];
+                               return $parent_file;
                        }
                }
+               if ( isset( $_wp_menu_nopriv[$plugin_page] ) ) {
+                       $parent_file = $plugin_page;
+                       if ( isset( $_wp_real_parent_file[$parent_file] ) )
+                                       $parent_file = $_wp_real_parent_file[$parent_file];
+                       return $parent_file;
+               }
        }
-               
-       foreach (array_keys($submenu) as $parent) {
-               foreach ($submenu[$parent] as $submenu_array) {
-                       if ($submenu_array[2] == $pagenow) {
-                               $parent_file = $parent;
-                               return $parent;
-                       } else if (isset($plugin_page) && ($plugin_page == $submenu_array[2])) {
+
+       if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) {
+               $parent_file = $pagenow;
+               if ( isset( $_wp_real_parent_file[$parent_file] ) )
+                       $parent_file = $_wp_real_parent_file[$parent_file];
+               return $parent_file;
+       }
+
+       foreach (array_keys( $submenu ) as $parent) {
+               foreach ( $submenu[$parent] as $submenu_array ) {
+                       if ( isset( $_wp_real_parent_file[$parent] ) )
+                               $parent = $_wp_real_parent_file[$parent];
+                       if ( $submenu_array[2] == $pagenow ) {
                                $parent_file = $parent;
                                return $parent;
-                       }
+                       } else
+                               if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) {
+                                       $parent_file = $parent;
+                                       return $parent;
+                               }
                }
        }
 
@@ -792,102 +1544,120 @@ function get_admin_page_parent() {
        return '';
 }
 
-function plugin_basename($file) {
-       return preg_replace('/^.*wp-content[\\\\\/]plugins[\\\\\/]/', '', $file);
-}
-
-function add_menu_page($page_title, $menu_title, $access_level, $file, $function = '') {
+function add_menu_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
        global $menu, $admin_page_hooks;
 
-       $file = plugin_basename($file);
+       $file = plugin_basename( $file );
 
-       $menu[] = array($menu_title, $access_level, $file, $page_title);
+       $menu[] = array ( $menu_title, $access_level, $file, $page_title );
 
-       $admin_page_hooks[$file] = sanitize_title($menu_title);
+       $admin_page_hooks[$file] = sanitize_title( $menu_title );
 
-       $hookname = get_plugin_page_hookname($file, '');
-       if ( !empty($function) && !empty($hookname) )
-               add_action($hookname, $function);
+       $hookname = get_plugin_page_hookname( $file, '' );
+       if (!empty ( $function ) && !empty ( $hookname ))
+               add_action( $hookname, $function );
 
        return $hookname;
 }
 
-function add_submenu_page($parent, $page_title, $menu_title, $access_level, $file, $function = '') {
+function add_submenu_page( $parent, $page_title, $menu_title, $access_level, $file, $function = '' ) {
        global $submenu;
        global $menu;
+       global $_wp_real_parent_file;
+       global $_wp_submenu_nopriv;
+       global $_wp_menu_nopriv;
+
+       $file = plugin_basename( $file );
+
+       $parent = plugin_basename( $parent);
+       if ( isset( $_wp_real_parent_file[$parent] ) )
+               $parent = $_wp_real_parent_file[$parent];
 
-       $parent = plugin_basename($parent);
-       $file = plugin_basename($file);
+       if ( !current_user_can( $access_level ) ) {
+               $_wp_submenu_nopriv[$parent][$file] = true;
+               return false;
+       }
 
        // If the parent doesn't already have a submenu, add a link to the parent
        // as the first item in the submenu.  If the submenu file is the same as the
        // parent file someone is trying to link back to the parent manually.  In
        // this case, don't automatically add a link back to avoid duplication.
-       if (! isset($submenu[$parent]) && $file != $parent) {
-               foreach ($menu as $parent_menu) {
-                       if ($parent_menu[2] == $parent) {
+       if (!isset( $submenu[$parent] ) && $file != $parent  ) {
+               foreach ( $menu as $parent_menu ) {
+                       if ( $parent_menu[2] == $parent && current_user_can( $parent_menu[1] ) )
                                $submenu[$parent][] = $parent_menu;
-                       }
                }
        }
-       
-       $submenu[$parent][] = array($menu_title, $access_level, $file, $page_title);
 
-       $hookname = get_plugin_page_hookname($file, $parent);
-       if ( !empty($function) && !empty($hookname) )
-               add_action($hookname, $function);
+       $submenu[$parent][] = array ( $menu_title, $access_level, $file, $page_title );
+
+       $hookname = get_plugin_page_hookname( $file, $parent);
+       if (!empty ( $function ) && !empty ( $hookname ))
+               add_action( $hookname, $function );
 
        return $hookname;
 }
 
-function add_options_page($page_title, $menu_title, $access_level, $file, $function = '') {
-       return add_submenu_page('options-general.php', $page_title, $menu_title, $access_level, $file, $function);
+function add_options_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+       return add_submenu_page( 'options-general.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_management_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+       return add_submenu_page( 'edit.php', $page_title, $menu_title, $access_level, $file, $function );
+}
+
+function add_theme_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+       return add_submenu_page( 'themes.php', $page_title, $menu_title, $access_level, $file, $function );
 }
 
-function add_management_page($page_title, $menu_title, $access_level, $file, $function = '') {
-       return add_submenu_page('edit.php', $page_title, $menu_title, $access_level, $file, $function);
+function add_users_page( $page_title, $menu_title, $access_level, $file, $function = '' ) {
+       if ( current_user_can('edit_users') )
+               $parent = 'users.php';
+       else
+               $parent = 'profile.php';
+       return add_submenu_page( $parent, $page_title, $menu_title, $access_level, $file, $function );
 }
 
-function validate_file($file, $allowed_files = '') {
-       if ( false !== strpos($file, './'))
+function validate_file( $file, $allowed_files = '' ) {
+       if ( false !== strpos( $file, './' ))
                return 1;
-       
-       if (':' == substr($file,1,1))
+
+       if (':' == substr( $file, 1, 1 ))
                return 2;
 
-       if ( !empty($allowed_files) && (! in_array($file, $allowed_files)) )
+       if (!empty ( $allowed_files ) && (!in_array( $file, $allowed_files ) ) )
                return 3;
 
        return 0;
 }
 
-function validate_file_to_edit($file, $allowed_files = '') {
-       $file = stripslashes($file);
+function validate_file_to_edit( $file, $allowed_files = '' ) {
+       $file = stripslashes( $file );
 
-       $code = validate_file($file, $allowed_files);
+       $code = validate_file( $file, $allowed_files );
 
-       if (! $code)
+       if (!$code )
                return $file;
 
-       switch ($code) {
-       case 1:
-               die (__('Sorry, can&#8217;t edit files with ".." in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.'));
-       
-       case 2:
-               die (__('Sorry, can&#8217;t call files with their real path.'));
+       switch ( $code ) {
+               case 1 :
+                       wp_die( __('Sorry, can&#8217;t edit files with ".." in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.' ));
+
+               case 2 :
+                       wp_die( __('Sorry, can&#8217;t call files with their real path.' ));
 
-       case 3:
-               die (__('Sorry, that file cannot be edited.'));
+               case 3 :
+                       wp_die( __('Sorry, that file cannot be edited.' ));
        }
 }
 
 function get_home_path() {
-       $home = get_settings('home');
-       if ( $home != '' && $home != get_settings('siteurl') ) {
-               $home_path = parse_url($home);
+       $home = get_option( 'home' );
+       if ( $home != '' && $home != get_option( 'siteurl' ) ) {
+               $home_path = parse_url( $home );
                $home_path = $home_path['path'];
-               $root = str_replace($_SERVER["PHP_SELF"], '', $_SERVER["SCRIPT_FILENAME"]);
-               $home_path = trailingslashit($root . $home_path);
+               $root = str_replace( $_SERVER["PHP_SELF"], '', $_SERVER["SCRIPT_FILENAME"] );
+               $home_path = trailingslashit( $root.$home_path );
        } else {
                $home_path = ABSPATH;
        }
@@ -895,191 +1665,647 @@ function get_home_path() {
        return $home_path;
 }
 
-function get_real_file_to_edit($file) {
-       if ('index.php' == $file ||
-                        '.htaccess' == $file) {
-               $real_file = get_home_path() . $file;
+function get_real_file_to_edit( $file ) {
+       if ('index.php' == $file || '.htaccess' == $file ) {
+               $real_file = get_home_path().$file;
        } else {
-               $real_file = ABSPATH . $file;
+               $real_file = ABSPATH.$file;
        }
 
        return $real_file;
 }
 
-$wp_file_descriptions = 
-       array(
-       'index.php' => __('Main Template'),
-       'style.css' => __('Stylesheet'),
-       'comments.php' => __('Comments Template'),
-       'comments-popup.php' => __('Popup Comments Template'),
-       'footer.php' => __('Footer Template'),
-       'header.php' => __('Header Template'),
-       'sidebar.php' => __('Sidebar Template'),
-       'archive.php' => __('Archive Template'),
-       'category.php' => __('Category Template'),
-       'page.php' => __('Page Template'),
-       'search.php' => __('Search Template'),
-       'single.php' => __('Post Template'),
-       '404.php' => __('404 Template'),
-       'my-hacks.php' => __('my-hacks.php (legacy hacks support)'),
-       '.htaccess' => __('.htaccess (for rewrite rules)'),
+$wp_file_descriptions = array ('index.php' => __( 'Main Index Template' ), 'style.css' => __( 'Stylesheet' ), 'comments.php' => __( 'Comments' ), 'comments-popup.php' => __( 'Popup Comments' ), 'footer.php' => __( 'Footer' ), 'header.php' => __( 'Header' ), 'sidebar.php' => __( 'Sidebar' ), 'archive.php' => __( 'Archives' ), 'category.php' => __( 'Category Template' ), 'page.php' => __( 'Page Template' ), 'search.php' => __( 'Search Results' ), 'single.php' => __( 'Single Post' ), '404.php' => __( '404 Template' ), 'my-hacks.php' => __( 'my-hacks.php (legacy hacks support)' ), '.htaccess' => __( '.htaccess (for rewrite rules )' ),
        // Deprecated files
-       'wp-layout.css' => __('Stylesheet'),
-       'wp-comments.php' => __('Comments Template'),
-       'wp-comments-popup.php' => __('Popup Comments Template')
-       );
+       'wp-layout.css' => __( 'Stylesheet' ), 'wp-comments.php' => __( 'Comments Template' ), 'wp-comments-popup.php' => __( 'Popup Comments Template' ));
 
-function get_file_description($file) {
+function get_file_description( $file ) {
        global $wp_file_descriptions;
 
-       if ( isset($wp_file_descriptions[basename($file)] ) ) {
-               return $wp_file_descriptions[basename($file)];
-       } elseif ( file_exists( ABSPATH . $file ) ) {
-               $template_data = implode('', file(ABSPATH . $file));
-               if ( preg_match("|Template Name:(.*)|i", $template_data, $name) )
+       if ( isset( $wp_file_descriptions[basename( $file )] ) ) {
+               return $wp_file_descriptions[basename( $file )];
+       }
+       elseif ( file_exists( ABSPATH . $file ) && is_file( ABSPATH . $file ) ) {
+               $template_data = implode( '', file( ABSPATH . $file ) );
+               if ( preg_match( "|Template Name:(.*)|i", $template_data, $name ))
                        return $name[1];
        }
 
        return basename( $file );
 }
 
-function update_recently_edited($file) {
-       $oldfiles = (array) get_option('recently_edited');
-       if ($oldfiles) {
-               $oldfiles = array_reverse($oldfiles);
+function update_recently_edited( $file ) {
+       $oldfiles = (array ) get_option( 'recently_edited' );
+       if ( $oldfiles ) {
+               $oldfiles = array_reverse( $oldfiles );
                $oldfiles[] = $file;
-               $oldfiles = array_reverse($oldfiles);
-               $oldfiles = array_unique($oldfiles);
-               if ( 5 < count($oldfiles) )
-                       array_pop($oldfiles);
+               $oldfiles = array_reverse( $oldfiles );
+               $oldfiles = array_unique( $oldfiles );
+               if ( 5 < count( $oldfiles ))
+                       array_pop( $oldfiles );
        } else {
                $oldfiles[] = $file;
        }
-       update_option('recently_edited', $oldfiles);
+       update_option( 'recently_edited', $oldfiles );
 }
 
-function get_plugin_data($plugin_file) {
-       $plugin_data = implode('', file($plugin_file));
-       preg_match("|Plugin Name:(.*)|i", $plugin_data, $plugin_name);
-       preg_match("|Plugin URI:(.*)|i", $plugin_data, $plugin_uri);
-       preg_match("|Description:(.*)|i", $plugin_data, $description);
-       preg_match("|Author:(.*)|i", $plugin_data, $author_name);
-       preg_match("|Author URI:(.*)|i", $plugin_data, $author_uri);
-       if ( preg_match("|Version:(.*)|i", $plugin_data, $version) )
-               $version = $version[1];
+function get_plugin_data( $plugin_file ) {
+       $plugin_data = implode( '', file( $plugin_file ));
+       preg_match( "|Plugin Name:(.*)|i", $plugin_data, $plugin_name );
+       preg_match( "|Plugin URI:(.*)|i", $plugin_data, $plugin_uri );
+       preg_match( "|Description:(.*)|i", $plugin_data, $description );
+       preg_match( "|Author:(.*)|i", $plugin_data, $author_name );
+       preg_match( "|Author URI:(.*)|i", $plugin_data, $author_uri );
+       if ( preg_match( "|Version:(.*)|i", $plugin_data, $version ))
+               $version = trim( $version[1] );
        else
-               $version ='';
+               $version = '';
 
-       $description = wptexturize($description[1]);
+       $description = wptexturize( trim( $description[1] ));
 
        $name = $plugin_name[1];
-       $name = trim($name);
+       $name = trim( $name );
        $plugin = $name;
-       if ('' != $plugin_uri[1] && '' != $name) {
-               $plugin = '<a href="' . $plugin_uri[1] . '" title="' . __('Visit plugin homepage') . '">' . $plugin . '</a>';
+       if ('' != $plugin_uri[1] && '' != $name ) {
+               $plugin = '<a href="' . trim( $plugin_uri[1] ) . '" title="'.__( 'Visit plugin homepage' ).'">'.$plugin.'</a>';
        }
 
-       if ('' == $author_uri[1]) {
-               $author = $author_name[1];
+       if ('' == $author_uri[1] ) {
+               $author = trim( $author_name[1] );
        } else {
-               $author = '<a href="' . $author_uri[1] . '" title="' . __('Visit author homepage') . '">' . $author_name[1] . '</a>';
+               $author = '<a href="' . trim( $author_uri[1] ) . '" title="'.__( 'Visit author homepage' ).'">' . trim( $author_name[1] ) . '</a>';
        }
 
-       return array('Name' => $name, 'Title' => $plugin, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1]);
+       return array('Name' => $name, 'Title' => $plugin, 'Description' => $description, 'Author' => $author, 'Version' => $version);
 }
 
 function get_plugins() {
        global $wp_plugins;
 
-       if (isset($wp_plugins)) {
+       if ( isset( $wp_plugins ) ) {
                return $wp_plugins;
        }
 
-       $wp_plugins = array();
-       $plugin_loc = 'wp-content/plugins';
-       $plugin_root = ABSPATH . $plugin_loc;
+       $wp_plugins = array ();
+       $plugin_root = ABSPATH . PLUGINDIR;
 
        // Files in wp-content/plugins directory
-       $plugins_dir = @ dir($plugin_root);
-       if ($plugins_dir) {
-               while(($file = $plugins_dir->read()) !== false) {
-                       if ( preg_match('|^\.+$|', $file) )
+       $plugins_dir = @ dir( $plugin_root);
+       if ( $plugins_dir ) {
+               while (($file = $plugins_dir->read() ) !== false ) {
+                       if ( substr($file, 0, 1) == '.' )
                                continue;
-                       if (is_dir($plugin_root . '/' . $file)) {
-                               $plugins_subdir = @ dir($plugin_root . '/' . $file);
-                               if ($plugins_subdir) {
-                                       while(($subfile = $plugins_subdir->read()) !== false) {
-                                               if ( preg_match('|^\.+$|', $subfile) )
+                       if ( is_dir( $plugin_root.'/'.$file ) ) {
+                               $plugins_subdir = @ dir( $plugin_root.'/'.$file );
+                               if ( $plugins_subdir ) {
+                                       while (($subfile = $plugins_subdir->read() ) !== false ) {
+                                               if ( substr($subfile, 0, 1) == '.' )
                                                        continue;
-                                               if ( preg_match('|\.php$|', $subfile) )
+                                               if ( substr($subfile, -4) == '.php' )
                                                        $plugin_files[] = "$file/$subfile";
                                        }
                                }
                        } else {
-                               if ( preg_match('|\.php$|', $file) ) 
+                               if ( substr($file, -4) == '.php' )
                                        $plugin_files[] = $file;
                        }
                }
        }
 
-       if (!$plugins_dir || !$plugin_files) {
+       if ( !$plugins_dir || !$plugin_files )
                return $wp_plugins;
-       }
 
-       sort($plugin_files);
+       foreach ( $plugin_files as $plugin_file ) {
+               if ( !is_readable( "$plugin_root/$plugin_file" ) )
+                       continue;
+
+               $plugin_data = get_plugin_data( "$plugin_root/$plugin_file" );
 
-       foreach($plugin_files as $plugin_file) {
-               $plugin_data = get_plugin_data("$plugin_root/$plugin_file");
-         
-               if (empty($plugin_data['Name'])) {
+               if ( empty ( $plugin_data['Name'] ) )
                        continue;
-               }
 
-               $wp_plugins[plugin_basename($plugin_file)] = $plugin_data;
+               $wp_plugins[plugin_basename( $plugin_file )] = $plugin_data;
        }
 
+       uasort( $wp_plugins, create_function( '$a, $b', 'return strnatcasecmp( $a["Name"], $b["Name"] );' ));
+
        return $wp_plugins;
 }
 
-function get_plugin_page_hookname($plugin_page, $parent_page) {
+function get_plugin_page_hookname( $plugin_page, $parent_page ) {
        global $admin_page_hooks;
 
        $parent = get_admin_page_parent();
 
-       if ( empty($parent_page) || 'admin.php' == $parent_page ) {
-               if ( isset($admin_page_hooks[$plugin_page]) )
+       if ( empty ( $parent_page ) || 'admin.php' == $parent_page ) {
+               if ( isset( $admin_page_hooks[$plugin_page] ))
                        $page_type = 'toplevel';
-               else if ( isset($admin_page_hooks[$parent]) )
-                       $page_type = $admin_page_hooks[$parent];
-       } else if ( isset($admin_page_hooks[$parent_page]) ) {
-               $page_type = $admin_page_hooks[$parent_page];
-       } else {
-               $page_type = 'admin';
-       }
+               else
+                       if ( isset( $admin_page_hooks[$parent] ))
+                               $page_type = $admin_page_hooks[$parent];
+       } else
+               if ( isset( $admin_page_hooks[$parent_page] ) ) {
+                       $page_type = $admin_page_hooks[$parent_page];
+               } else {
+                       $page_type = 'admin';
+               }
 
-       $plugin_name = preg_replace('!\.php!', '', $plugin_page);
+       $plugin_name = preg_replace( '!\.php!', '', $plugin_page );
 
-       return $page_type . '_page_' . $plugin_name;
+       return $page_type.'_page_'.$plugin_name;
 }
 
-function get_plugin_page_hook($plugin_page, $parent_page) {
+function get_plugin_page_hook( $plugin_page, $parent_page ) {
        global $wp_filter;
-       
-       $hook = get_plugin_page_hookname($plugin_page, $parent_page);
-       if ( isset($wp_filter[$hook]) )
+
+       $hook = get_plugin_page_hookname( $plugin_page, $parent_page );
+       if ( isset( $wp_filter[$hook] ))
                return $hook;
        else
                return '';
 }
 
-function pimp_firefox() {
-       if ( strstr( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) )
-               return;
-       $getit = __('WordPress recommends the open-source Firefox browser');
+function browse_happy() {
+       $getit = __( 'WordPress recommends a better browser' );
        echo '
-       <p id="firefoxlink" style="text-align: center;"><a href="http://spreadfirefox.com/community/?q=affiliates&amp;id=2490&amp;t=1" title="' . $getit . '"><img src="../wp-images/get-firefox.png" alt="Get Firefox" /></a></p>
-       ';
+               <p id="bh" style="text-align: center;"><a href="http://browsehappy.com/" title="'.$getit.'"><img src="images/browse-happy.gif" alt="Browse Happy" /></a></p>
+               ';
+}
+
+if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)
+       add_action( 'admin_footer', 'browse_happy' );
+
+function documentation_link( $for ) {
+       return;
+}
+
+function register_importer( $id, $name, $description, $callback ) {
+       global $wp_importers;
+
+       $wp_importers[$id] = array ( $name, $description, $callback );
+}
+
+function get_importers() {
+       global $wp_importers;
+       uasort($wp_importers, create_function('$a, $b', 'return strcmp($a[0], $b[0]);'));
+       return $wp_importers;
+}
+
+function current_theme_info() {
+       $themes = get_themes();
+       $current_theme = get_current_theme();
+       $ct->name = $current_theme;
+       $ct->title = $themes[$current_theme]['Title'];
+       $ct->version = $themes[$current_theme]['Version'];
+       $ct->parent_theme = $themes[$current_theme]['Parent Theme'];
+       $ct->template_dir = $themes[$current_theme]['Template Dir'];
+       $ct->stylesheet_dir = $themes[$current_theme]['Stylesheet Dir'];
+       $ct->template = $themes[$current_theme]['Template'];
+       $ct->stylesheet = $themes[$current_theme]['Stylesheet'];
+       $ct->screenshot = $themes[$current_theme]['Screenshot'];
+       $ct->description = $themes[$current_theme]['Description'];
+       $ct->author = $themes[$current_theme]['Author'];
+       return $ct;
+}
+
+
+// array wp_handle_upload ( array &file [, array overrides] )
+// file: reference to a single element of $_FILES. Call the function once for each uploaded file.
+// overrides: an associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ).
+// On success, returns an associative array of file attributes.
+// On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ).
+function wp_handle_upload( &$file, $overrides = false ) {
+       // The default error handler.
+       if (! function_exists( 'wp_handle_upload_error' ) ) {
+               function wp_handle_upload_error( &$file, $message ) {
+                       return array( 'error'=>$message );
+               }
+       }
+
+       // You may define your own function and pass the name in $overrides['upload_error_handler']
+       $upload_error_handler = 'wp_handle_upload_error';
+
+       // $_POST['action'] must be set and its value must equal $overrides['action'] or this:
+       $action = 'wp_handle_upload';
+
+       // Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error'].
+       $upload_error_strings = array( false,
+               __( "The uploaded file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>." ),
+               __( "The uploaded file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form." ),
+               __( "The uploaded file was only partially uploaded." ),
+               __( "No file was uploaded." ),
+               __( "Missing a temporary folder." ),
+               __( "Failed to write file to disk." ));
+
+       // All tests are on by default. Most can be turned off by $override[{test_name}] = false;
+       $test_form = true;
+       $test_size = true;
+
+       // If you override this, you must provide $ext and $type!!!!
+       $test_type = true;
+
+       // Install user overrides. Did we mention that this voids your warranty?
+       if ( is_array( $overrides ) )
+               extract( $overrides, EXTR_OVERWRITE );
+
+       // A correct form post will pass this test.
+       if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) )
+               return $upload_error_handler( $file, __( 'Invalid form submission.' ));
+
+       // A successful upload will pass this test. It makes no sense to override this one.
+       if ( $file['error'] > 0 )
+               return $upload_error_handler( $file, $upload_error_strings[$file['error']] );
+
+       // A non-empty file will pass this test.
+       if ( $test_size && !($file['size'] > 0 ) )
+               return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial.' ));
+
+       // A properly uploaded file will pass this test. There should be no reason to override this one.
+       if (! @ is_uploaded_file( $file['tmp_name'] ) )
+               return $upload_error_handler( $file, __( 'Specified file failed upload test.' ));
+
+       // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter.
+       if ( $test_type ) {
+               $wp_filetype = wp_check_filetype( $file['name'], $mimes );
+
+               extract( $wp_filetype );
+
+               if ( !$type || !$ext )
+                       return $upload_error_handler( $file, __( 'File type does not meet security guidelines. Try another.' ));
+       }
+
+       // A writable uploads dir will pass this test. Again, there's no point overriding this one.
+       if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
+               return $upload_error_handler( $file, $uploads['error'] );
+
+       // Increment the file number until we have a unique file to save in $dir. Use $override['unique_filename_callback'] if supplied.
+       if ( isset( $unique_filename_callback ) && function_exists( $unique_filename_callback ) ) {
+               $filename = $unique_filename_callback( $uploads['path'], $file['name'] );
+       } else {
+               $number = '';
+               $filename = str_replace( '#', '_', $file['name'] );
+               $filename = str_replace( array( '\\', "'" ), '', $filename );
+               if ( empty( $ext) )
+                       $ext = '';
+               else
+                       $ext = ".$ext";
+               while ( file_exists( $uploads['path'] . "/$filename" ) ) {
+                       if ( '' == "$number$ext" )
+                               $filename = $filename . ++$number . $ext;
+                       else
+                               $filename = str_replace( "$number$ext", ++$number . $ext, $filename );
+               }
+               $filename = str_replace( $ext, '', $filename );
+               $filename = sanitize_title_with_dashes( $filename ) . $ext;
+       }
+
+       // Move the file to the uploads dir
+       $new_file = $uploads['path'] . "/$filename";
+       if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) )
+               wp_die( printf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ));
+
+       // Set correct file permissions
+       $stat = stat( dirname( $new_file ));
+       $perms = $stat['mode'] & 0000666;
+       @ chmod( $new_file, $perms );
+
+       // Compute the URL
+       $url = $uploads['url'] . "/$filename";
+
+       $return = apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ) );
+
+       return $return;
+}
+
+function wp_shrink_dimensions( $width, $height, $wmax = 128, $hmax = 96 ) {
+       if ( $height <= $hmax && $width <= $wmax )
+               return array( $width, $height);
+       elseif ( $width / $height > $wmax / $hmax )
+               return array( $wmax, (int) ($height / $width * $wmax ));
+       else
+               return array( (int) ($width / $height * $hmax ), $hmax );
+}
+
+function wp_import_cleanup( $id ) {
+       wp_delete_attachment( $id );
+}
+
+function wp_import_upload_form( $action ) {
+       $size = strtolower( ini_get( 'upload_max_filesize' ) );
+       $bytes = 0;
+       if (strpos($size, 'k') !== false)
+               $bytes = $size * 1024;
+       if (strpos($size, 'm') !== false)
+               $bytes = $size * 1024 * 1024;
+       if (strpos($size, 'g') !== false)
+               $bytes = $size * 1024 * 1024 * 1024;
+?>
+<form enctype="multipart/form-data" id="import-upload-form" method="post" action="<?php echo attribute_escape($action) ?>">
+<p>
+<?php wp_nonce_field('import-upload'); ?>
+<label for="upload"><?php _e( 'Choose a file from your computer:' ); ?></label> (<?php printf( __('Maximum size: %s' ), $size ); ?> )
+<input type="file" id="upload" name="import" size="25" />
+<input type="hidden" name="action" value="save" />
+<input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" />
+</p>
+<p class="submit">
+<input type="submit" value="<?php _e( 'Upload file and import' ); ?> &raquo;" />
+</p>
+</form>
+<?php
+}
+
+function wp_import_handle_upload() {
+       $overrides = array( 'test_form' => false, 'test_type' => false );
+       $file = wp_handle_upload( $_FILES['import'], $overrides );
+
+       if ( isset( $file['error'] ) )
+               return $file;
+
+       $url = $file['url'];
+       $type = $file['type'];
+       $file = addslashes( $file['file'] );
+       $filename = basename( $file );
+
+       // Construct the object array
+       $object = array( 'post_title' => $filename,
+               'post_content' => $url,
+               'post_mime_type' => $type,
+               'guid' => $url
+       );
+
+       // Save the data
+       $id = wp_insert_attachment( $object, $file );
+
+       return array( 'file' => $file, 'id' => $id );
+}
+
+function the_attachment_links( $id = false ) {
+       $id = (int) $id;
+       $post = & get_post( $id );
+
+       if ( $post->post_type != 'attachment' )
+               return false;
+
+       $icon = get_attachment_icon( $post->ID );
+       $attachment_data = wp_get_attachment_metadata( $id );
+       $thumb = isset( $attachment_data['thumb'] );
+?>
+<form id="the-attachment-links">
+<table>
+       <col />
+       <col class="widefat" />
+       <tr>
+               <th scope="row"><?php _e( 'URL' ) ?></th>
+               <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><?php echo wp_get_attachment_url(); ?></textarea></td>
+       </tr>
+<?php if ( $icon ) : ?>
+       <tr>
+               <th scope="row"><?php $thumb ? _e( 'Thumbnail linked to file' ) : _e( 'Image linked to file' ); ?></th>
+               <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>"><?php echo $icon ?></a></textarea></td>
+       </tr>
+       <tr>
+               <th scope="row"><?php $thumb ? _e( 'Thumbnail linked to page' ) : _e( 'Image linked to page' ); ?></th>
+               <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link( $post->ID ) ?>" rel="attachment wp-att-<?php echo $post->ID; ?>"><?php echo $icon ?></a></textarea></td>
+       </tr>
+<?php else : ?>
+       <tr>
+               <th scope="row"><?php _e( 'Link to file' ) ?></th>
+               <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo wp_get_attachment_url(); ?>" class="attachmentlink"><?php echo basename( wp_get_attachment_url() );  ?></a></textarea></td>
+       </tr>
+       <tr>
+               <th scope="row"><?php _e( 'Link to page' ) ?></th>
+               <td><textarea rows="1" cols="40" type="text" class="attachmentlinks" readonly="readonly"><a href="<?php echo get_attachment_link( $post->ID ) ?>" rel="attachment wp-att-<?php echo $post->ID ?>"><?php the_title(); ?></a></textarea></td>
+       </tr>
+<?php endif; ?>
+</table>
+</form>
+<?php
+}
+
+function get_udims( $width, $height) {
+       if ( $height <= 96 && $width <= 128 )
+               return array( $width, $height);
+       elseif ( $width / $height > 4 / 3 )
+               return array( 128, (int) ($height / $width * 128 ));
+       else
+               return array( (int) ($width / $height * 96 ), 96 );
+}
+
+function wp_reset_vars( $vars ) {
+       for ( $i=0; $i<count( $vars ); $i += 1 ) {
+               $var = $vars[$i];
+               global $$var;
+
+               if (!isset( $$var ) ) {
+                       if ( empty( $_POST["$var"] ) ) {
+                               if ( empty( $_GET["$var"] ) )
+                                       $$var = '';
+                               else
+                                       $$var = $_GET["$var"];
+                       } else {
+                               $$var = $_POST["$var"];
+                       }
+               }
+       }
+}
+
+
+function wp_remember_old_slug() {
+       global $post;
+       $name = attribute_escape($post->post_name); // just in case
+       if ( strlen($name) )
+               echo '<input type="hidden" id="wp-old-slug" name="wp-old-slug" value="' . $name . '" />';
+}
+
+
+// If siteurl or home changed, reset cookies and flush rewrite rules.
+function update_home_siteurl( $old_value, $value ) {
+       global $wp_rewrite, $user_login, $user_pass_md5;
+
+       if ( defined( "WP_INSTALLING" ) )
+               return;
+
+       // If home changed, write rewrite rules to new location.
+       $wp_rewrite->flush_rules();
+       // Clear cookies for old paths.
+       wp_clearcookie();
+       // Set cookies for new paths.
+       wp_setcookie( $user_login, $user_pass_md5, true, get_option( 'home' ), get_option( 'siteurl' ));
+}
+
+add_action( 'update_option_home', 'update_home_siteurl', 10, 2 );
+add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 );
+
+function wp_crop_image( $src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
+       if ( ctype_digit( $src_file ) ) // Handle int as attachment ID
+               $src_file = get_attached_file( $src_file );
+
+       $src = wp_load_image( $src_file );
+
+       if ( !is_resource( $src ))
+               return $src;
+
+       $dst = imagecreatetruecolor( $dst_w, $dst_h );
+
+       if ( $src_abs ) {
+               $src_w -= $src_x;
+               $src_h -= $src_y;
+       }
+
+       if (function_exists('imageantialias'))
+               imageantialias( $dst, true );
+       
+       imagecopyresampled( $dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
+
+       if ( !$dst_file )
+               $dst_file = str_replace( basename( $src_file ), 'cropped-'.basename( $src_file ), $src_file );
+
+       $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file );
+
+       if ( imagejpeg( $dst, $dst_file ) )
+               return $dst_file;
+       else
+               return false;
+}
+
+function wp_load_image( $file ) {
+       if ( ctype_digit( $file ) )
+               $file = get_attached_file( $file );
+
+       if ( !file_exists( $file ) )
+               return sprintf(__("File '%s' doesn't exist?"), $file);
+
+       if ( ! function_exists('imagecreatefromstring') )
+               return __('The GD image library is not installed.');
+
+       $contents = file_get_contents( $file );
+
+       $image = imagecreatefromstring( $contents );
+
+       if ( !is_resource( $image ) )
+               return sprintf(__("File '%s' is not an image."), $file);
+
+       return $image;
+}
+
+function wp_generate_attachment_metadata( $attachment_id, $file ) {
+       $attachment = get_post( $attachment_id );
+
+       $metadata = array();
+       if ( preg_match('!^image/!', get_post_mime_type( $attachment )) ) {
+               $imagesize = getimagesize($file);
+               $metadata['width'] = $imagesize['0'];
+               $metadata['height'] = $imagesize['1'];
+               list($uwidth, $uheight) = get_udims($metadata['width'], $metadata['height']);
+               $metadata['hwstring_small'] = "height='$uheight' width='$uwidth'";
+               $metadata['file'] = $file;
+
+               $max = apply_filters( 'wp_thumbnail_creation_size_limit', 3 * 1024 * 1024, $attachment_id, $file );
+
+               if ( $max < 0 || $metadata['width'] * $metadata['height'] < $max ) {
+                       $max_side = apply_filters( 'wp_thumbnail_max_side_length', 128, $attachment_id, $file );
+                       $thumb = wp_create_thumbnail( $file, $max_side );
+
+                       if ( @file_exists($thumb) )
+                               $metadata['thumb'] = basename($thumb);
+               }
+       }
+       return apply_filters( 'wp_generate_attachment_metadata', $metadata );
+}
+
+function wp_create_thumbnail( $file, $max_side, $effect = '' ) {
+
+               // 1 = GIF, 2 = JPEG, 3 = PNG
+
+       if ( file_exists( $file ) ) {
+               $type = getimagesize( $file );
+
+               // if the associated function doesn't exist - then it's not
+               // handle. duh. i hope.
+
+               if (!function_exists( 'imagegif' ) && $type[2] == 1 ) {
+                       $error = __( 'Filetype not supported. Thumbnail not created.' );
+               }
+               elseif (!function_exists( 'imagejpeg' ) && $type[2] == 2 ) {
+                       $error = __( 'Filetype not supported. Thumbnail not created.' );
+               }
+               elseif (!function_exists( 'imagepng' ) && $type[2] == 3 ) {
+                       $error = __( 'Filetype not supported. Thumbnail not created.' );
+               } else {
+
+                       // create the initial copy from the original file
+                       if ( $type[2] == 1 ) {
+                               $image = imagecreatefromgif( $file );
+                       }
+                       elseif ( $type[2] == 2 ) {
+                               $image = imagecreatefromjpeg( $file );
+                       }
+                       elseif ( $type[2] == 3 ) {
+                               $image = imagecreatefrompng( $file );
+                       }
+
+                       if ( function_exists( 'imageantialias' ))
+                               imageantialias( $image, TRUE );
+
+                       $image_attr = getimagesize( $file );
+
+                       // figure out the longest side
+
+                       if ( $image_attr[0] > $image_attr[1] ) {
+                               $image_width = $image_attr[0];
+                               $image_height = $image_attr[1];
+                               $image_new_width = $max_side;
+
+                               $image_ratio = $image_width / $image_new_width;
+                               $image_new_height = $image_height / $image_ratio;
+                               //width is > height
+                       } else {
+                               $image_width = $image_attr[0];
+                               $image_height = $image_attr[1];
+                               $image_new_height = $max_side;
+
+                               $image_ratio = $image_height / $image_new_height;
+                               $image_new_width = $image_width / $image_ratio;
+                               //height > width
+                       }
+
+                       $thumbnail = imagecreatetruecolor( $image_new_width, $image_new_height);
+                       @ imagecopyresampled( $thumbnail, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1] );
+
+                       // If no filters change the filename, we'll do a default transformation.
+                       if ( basename( $file ) == $thumb = apply_filters( 'thumbnail_filename', basename( $file ) ) )
+                               $thumb = preg_replace( '!(\.[^.]+)?$!', '.thumbnail' . '$1', basename( $file ), 1 );
+
+                       $thumbpath = str_replace( basename( $file ), $thumb, $file );
+
+                       // move the thumbnail to its final destination
+                       if ( $type[2] == 1 ) {
+                               if (!imagegif( $thumbnail, $thumbpath ) ) {
+                                       $error = __( "Thumbnail path invalid" );
+                               }
+                       }
+                       elseif ( $type[2] == 2 ) {
+                               if (!imagejpeg( $thumbnail, $thumbpath ) ) {
+                                       $error = __( "Thumbnail path invalid" );
+                               }
+                       }
+                       elseif ( $type[2] == 3 ) {
+                               if (!imagepng( $thumbnail, $thumbpath ) ) {
+                                       $error = __( "Thumbnail path invalid" );
+                               }
+                       }
+
+               }
+       } else {
+               $error = __( 'File not found' );
+       }
+
+       if (!empty ( $error ) ) {
+               return $error;
+       } else {
+               return apply_filters( 'wp_create_thumbnail', $thumbpath );
+       }
 }
-//add_action('admin_footer', 'pimp_firefox');
 
-?>
\ No newline at end of file
+?>
index 4585a22ecc94b9c0dfc3154bb1464bca2f3a7bb0..d6ff2efc2117a0646ded138f07a192264ef15bdb 100644 (file)
@@ -1,93 +1,52 @@
-<?php 
+<?php
 @header('Content-type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
-if (!isset($_GET["page"])) require_once('admin.php'); ?>
-<?php get_admin_page_title(); ?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<title><?php bloginfo('name') ?> &rsaquo; <?php echo $title; ?> &#8212; WordPress</title>
-<link rel="stylesheet" href="<?php echo get_settings('siteurl') ?>/wp-admin/wp-admin.css?version=<?php bloginfo('version'); ?>" type="text/css">
-<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_settings('blog_charset'); ?>">
-
-<script type="text/javascript">
-//<![CDATA[
-
-function customToggleLink() {
-       // TODO: Only show link if there's a hidden row
-       document.write('<small>(<a href="javascript:;" id="customtoggle" onclick="toggleHidden()"><?php _e('Show hidden'); ?></a>)</small>');
-       // TODO: Rotate link to say "show" or "hide"
-       // TODO: Use DOM
-}
-
-function toggleHidden() {
-       var allElements = document.getElementsByTagName('tr');
-       for (i = 0; i < allElements.length; i++) {
-               if ( allElements[i].className.indexOf('hidden') != -1 ) {
-                        allElements[i].className = allElements[i].className.replace('hidden', '');
-               }
-       }
-}
-
-<?php if ( isset($xfn) ) : ?>
-
-function GetElementsWithClassName(elementName, className) {
-       var allElements = document.getElementsByTagName(elementName);
-       var elemColl = new Array();
-       for (i = 0; i < allElements.length; i++) {
-               if (allElements[i].className == className) {
-                       elemColl[elemColl.length] = allElements[i];
-               }
-       }
-       return elemColl;
-}
-
-function meChecked() {
-  var undefined;
-  var eMe = document.getElementById('me');
-  if (eMe == undefined) return false;
-  else return eMe.checked;
+if (!isset($_GET["page"])) require_once('admin.php');
+if ( $editing ) {
+       wp_enqueue_script( array('dbx-admin-key?pagenow=' . attribute_escape($pagenow),'admin-custom-fields') );
+       if ( current_user_can('manage_categories') )
+               wp_enqueue_script( 'ajaxcat' );
+       if ( user_can_richedit() )
+               wp_enqueue_script( 'wp_tiny_mce' );
 }
 
-function upit() {
-       var isMe = meChecked(); //document.getElementById('me').checked;
-       var inputColl = GetElementsWithClassName('input', 'valinp');
-       var results = document.getElementById('rel');
-       var linkText, linkUrl, inputs = '';
-       for (i = 0; i < inputColl.length; i++) {
-                inputColl[i].disabled = isMe;
-                inputColl[i].parentNode.className = isMe ? 'disabled' : '';
-                if (!isMe && inputColl[i].checked && inputColl[i].value != '') {
-                       inputs += inputColl[i].value + ' ';
-                               }
-                }
-       inputs = inputs.substr(0,inputs.length - 1);
-       if (isMe) inputs='me';
-       results.value = inputs;
-       }
-
-function blurry() {
-       if (!document.getElementById) return;
-
-       var aInputs = document.getElementsByTagName('input');
-
-       for (var i = 0; i < aInputs.length; i++) {              
-                aInputs[i].onclick = aInputs[i].onkeyup = upit;
-       }
-}
-
-window.onload = blurry;
-<?php endif; ?>
+get_admin_page_title();
 
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
+<head>
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
+<title><?php bloginfo('name') ?> &rsaquo; <?php echo wp_specialchars( strip_tags( $title ) ); ?> &#8212; WordPress</title>
+<link rel="stylesheet" href="<?php echo get_option('siteurl') ?>/wp-admin/wp-admin.css?version=<?php bloginfo('version'); ?>" type="text/css" />
+<?php if ( ('rtl' == $wp_locale->text_direction) ) : ?>
+<link rel="stylesheet" href="<?php echo get_option('siteurl') ?>/wp-admin/rtl.css?version=<?php bloginfo('version'); ?>" type="text/css" />
+<?php endif; ?> 
+<script type="text/javascript">
+//<![CDATA[
+function addLoadEvent(func) {if ( typeof wpOnload!='function'){wpOnload=func;}else{ var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}}
 //]]>
 </script>
-
-<?php do_action('admin_head', ''); ?>
+<?php if ( ($parent_file != 'link-manager.php') && ($parent_file != 'options-general.php') ) : ?>
+<style type="text/css">* html { overflow-x: hidden; }</style>
+<?php endif;
+if ( isset($page_hook) )
+       do_action('admin_print_scripts-' . $page_hook);
+else if ( isset($plugin_page) )
+       do_action('admin_print_scripts-' . $plugin_page);
+do_action('admin_print_scripts');
+
+if ( isset($page_hook) )
+       do_action('admin_head-' . $page_hook);
+else if ( isset($plugin_page) )
+       do_action('admin_head-' . $plugin_page);
+do_action('admin_head');
+?>
 </head>
 <body>
-
 <div id="wphead">
-<h1><?php echo wptexturize(get_settings(('blogname'))); ?> <span>(<a href="<?php echo get_settings('home') . '/'; ?>"><?php _e('View site') ?> &raquo;</a>)</span></h1>
+<h1><?php bloginfo('name'); ?> <span>(<a href="<?php echo get_option('home') . '/'; ?>"><?php _e('View site &raquo;') ?></a>)</span></h1>
 </div>
+<div id="user_info"><p><?php printf(__('Howdy, <strong>%s</strong>.'), $user_identity) ?> [<a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account') ?>"><?php _e('Sign Out'); ?></a>, <a href="profile.php"><?php _e('My Profile'); ?></a>] </p></div>
 
 <?php
 require(ABSPATH . '/wp-admin/menu-header.php');
index 688cf6cb44e495f8f7aebe34367dffb36c5c0236..b5b83a7ad69838742550c6513d63cb2a8d9e94d0 100644 (file)
@@ -3,69 +3,105 @@ if ( defined('ABSPATH') )
        require_once( ABSPATH . 'wp-config.php');
 else
     require_once('../wp-config.php');
-    
+
+if ( get_option('db_version') != $wp_db_version ) {
+       wp_redirect(get_option('siteurl') . '/wp-admin/upgrade.php?_wp_http_referer=' . urlencode(stripslashes($_SERVER['REQUEST_URI'])));
+       exit;
+}
+
 require_once(ABSPATH . 'wp-admin/admin-functions.php');
+require_once(ABSPATH . 'wp-admin/admin-db.php');
+require_once(ABSPATH . WPINC . '/registration.php');
+
 auth_redirect();
 
-header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
-header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
-header('Cache-Control: no-cache, must-revalidate, max-age=0');
-header('Pragma: no-cache');
+nocache_headers();
 
 update_category_cache();
 
-get_currentuserinfo();
-
-$posts_per_page = get_settings('posts_per_page');
-$what_to_show = get_settings('what_to_show');
-$date_format = get_settings('date_format');
-$time_format = get_settings('time_format');
-
-$wpvarstoreset = array('profile','redirect','redirect_url','a','popuptitle','popupurl','text', 'trackback', 'pingback');
-for ($i=0; $i<count($wpvarstoreset); $i += 1) {
-    $wpvar = $wpvarstoreset[$i];
-    if (!isset($$wpvar)) {
-        if (empty($_POST["$wpvar"])) {
-            if (empty($_GET["$wpvar"])) {
-                $$wpvar = '';
-            } else {
-                $$wpvar = $_GET["$wpvar"];
-            }
-        } else {
-            $$wpvar = $_POST["$wpvar"];
-        }
-    }
+wp_get_current_user();
+
+$posts_per_page = get_option('posts_per_page');
+$what_to_show = get_option('what_to_show');
+$date_format = get_option('date_format');
+$time_format = get_option('time_format');
+
+wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'popuptitle', 'popupurl', 'text', 'trackback', 'pingback'));
+
+wp_enqueue_script( 'fat' );
+
+$editing = false;
+
+if (isset($_GET['page'])) {
+       $plugin_page = stripslashes($_GET['page']);
+       $plugin_page = plugin_basename($plugin_page);
 }
 
 require(ABSPATH . '/wp-admin/menu.php');
 
 // Handle plugin admin pages.
-if (isset($_GET['page'])) {
-       $plugin_page = plugin_basename($_GET['page']);
+if (isset($plugin_page)) {
        $page_hook = get_plugin_page_hook($plugin_page, $pagenow);
 
        if ( $page_hook ) {
+               do_action('load-' . $page_hook);
                if (! isset($_GET['noheader']))
                        require_once(ABSPATH . '/wp-admin/admin-header.php');
-               
+
                do_action($page_hook);
        } else {
                if ( validate_file($plugin_page) ) {
-                       die(__('Invalid plugin page'));
+                       wp_die(__('Invalid plugin page'));
                }
-               
-               if (! file_exists(ABSPATH . "wp-content/plugins/$plugin_page"))
-                       die(sprintf(__('Cannot load %s.'), $plugin_page));
+
+               if (! file_exists(ABSPATH . PLUGINDIR . "/$plugin_page"))
+                       wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page)));
+
+               do_action('load-' . $plugin_page);
 
                if (! isset($_GET['noheader']))
                        require_once(ABSPATH . '/wp-admin/admin-header.php');
-               
-               include(ABSPATH . "wp-content/plugins/$plugin_page");
+
+               include(ABSPATH . PLUGINDIR . "/$plugin_page");
        }
-       
+
+       include(ABSPATH . 'wp-admin/admin-footer.php');
+
+       exit();
+} else if (isset($_GET['import'])) {
+
+       $importer = $_GET['import'];
+
+       if ( ! current_user_can('import') )
+               wp_die(__('You are not allowed to import.'));
+
+       if ( validate_file($importer) ) {
+               wp_die(__('Invalid importer.'));
+       }
+
+       if (! file_exists(ABSPATH . "wp-admin/import/$importer.php"))
+               wp_die(__('Cannot load importer.'));
+
+       include(ABSPATH . "wp-admin/import/$importer.php");
+
+       $parent_file = 'edit.php';
+       $submenu_file = 'import.php';
+       $title = __('Import');
+
+       if (! isset($_GET['noheader']))
+               require_once(ABSPATH . 'wp-admin/admin-header.php');
+
+       require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
+
+       define('WP_IMPORTING', true);
+
+       call_user_func($wp_importers[$importer][2]);
+
        include(ABSPATH . 'wp-admin/admin-footer.php');
 
        exit();
+} else {
+       do_action("load-$pagenow");
 }
 
-?>
\ No newline at end of file
+?>
index 555abeed765ac4a090decbf119db1ff2b395b6b0..e84b5d9d02be5acf25d8a83ceec0638c7d53603a 100644 (file)
@@ -2,11 +2,10 @@
 $mode = 'bookmarklet';
 require_once('admin.php');
 
-if ($user_level == 0)
-       die ("Cheatin' uh?");
-
-if ('b' == $a) {
+if ( ! current_user_can('edit_posts') )
+       wp_die(__('Cheatin&#8217; uh?'));
 
+if ('b' == $a):
 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
@@ -19,40 +18,39 @@ window.close()
 <body></body>
 </html>
 <?php
+exit;
+endif;
+
+$post = get_default_post_to_edit();
+
+$popuptitle = wp_specialchars(stripslashes($popuptitle));
+$text       = wp_specialchars(stripslashes(urldecode($text)));
+
+$popuptitle = funky_javascript_fix($popuptitle);
+$text       = funky_javascript_fix($text);
+
+$post_title = wp_specialchars($_REQUEST['post_title']);
+if (!empty($post_title))
+       $post->post_title =  stripslashes($post_title);
+else
+       $post->post_title = $popuptitle;
+
+
+$content  = wp_specialchars($_REQUEST['content']);
+$popupurl = clean_url($_REQUEST['popupurl']);
+if ( !empty($content) ) {
+       $post->post_content = wp_specialchars( stripslashes($_REQUEST['content']) );
 } else {
-       $popuptitle = wp_specialchars(stripslashes($popuptitle));
-       $text       = wp_specialchars(stripslashes(urldecode($text)));
-       
-       $popuptitle = funky_javascript_fix($popuptitle);
-       $text       = funky_javascript_fix($text);
-       
-       $post_title = wp_specialchars($_REQUEST['post_title']);
-       if (!empty($post_title)) {
-               $post_title =  stripslashes($post_title);
-       } else {
-               $post_title = $popuptitle;
-       }
-       
-       $edited_post_title = wp_specialchars($post_title);
-
-// $post_pingback needs to be set in any file that includes edit-form.php
-    $post_pingback = get_settings('default_pingback_flag');
-    
-    $content  = wp_specialchars($_REQUEST['content']);
-       $popupurl = wp_specialchars($_REQUEST['popupurl']);
-    if ( !empty($content) ) {
-        $content = wp_specialchars( stripslashes($_REQUEST['content']) );
-    } else {
-        $content = '<a href="'.$popupurl.'">'.$popuptitle.'</a>'."\n$text";
-    }
-    
-    /* /big funky fixes */
+       $post->post_content = '<a href="'.$popupurl.'">'.$popuptitle.'</a>'."\n$text";
+}
+
+/* /big funky fixes */
 
 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title><?php bloginfo('name') ?> &rsaquo; Bookmarklet &#8212; WordPress</title>
-<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_settings('blog_charset'); ?>" />
+<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
 <link rel="stylesheet" href="wp-admin.css" type="text/css" />
 
 <style type="text/css">
@@ -79,15 +77,15 @@ window.close()
 }
 
 #wpbookmarklet .wrap {
-    border: 0px;
+       border: 0px;
 }
 
 #wpbookmarklet #postdiv {
-    margin-bottom: 0.5em;
+       margin-bottom: 0.5em;
 }
 
 #wpbookmarklet #titlediv {
-    margin-bottom: 1em;
+       margin-bottom: 1em;
 }
 
 -->
@@ -103,6 +101,4 @@ window.close()
 <?php do_action('admin_footer', ''); ?>
 
 </body>
-</html><?php
-}
-?>
+</html>
diff --git a/WebKitSite/blog/wp-admin/cat.js b/WebKitSite/blog/wp-admin/cat.js
new file mode 100644 (file)
index 0000000..e93adfc
--- /dev/null
@@ -0,0 +1,10 @@
+addLoadEvent(function(){catList=new listMan('categorychecklist');catList.ajaxRespEl='jaxcat';catList.topAdder=1;catList.alt=0;catList.showLink=0;});
+addLoadEvent(newCatAddIn);
+function newCatAddIn() {
+       var jaxcat = $('jaxcat');
+       if ( !jaxcat )
+               return false;
+       Element.update(jaxcat,'<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" id="catadd" value="' + catL10n.add + '"/><input type="hidden"/><span id="howto">' + catL10n.how + '</span></span>');
+       $('newcat').onkeypress = function(e) { return killSubmit("catList.ajaxAdder('category','jaxcat');", e); };
+       $('catadd').onclick = function() { catList.ajaxAdder('category', 'jaxcat'); };
+}
diff --git a/WebKitSite/blog/wp-admin/categories.js b/WebKitSite/blog/wp-admin/categories.js
new file mode 100644 (file)
index 0000000..3cee6c6
--- /dev/null
@@ -0,0 +1,16 @@
+addLoadEvent(function() {
+       if (!theList.theList) return false;
+       document.forms.addcat.submit.onclick = function(e) {return killSubmit('theList.ajaxAdder("cat", "addcat");', e); };
+       theList.addComplete = function(what, where, update, transport) {
+               var name = getNodeValue(transport.responseXML, 'name').unescapeHTML();
+               var id = transport.responseXML.getElementsByTagName(what)[0].getAttribute('id');
+               var options = document.forms['addcat'].category_parent.options;
+               options[options.length] = new Option(name, id);
+       };
+       theList.delComplete = function(what, id) {
+               var options = document.forms['addcat'].category_parent.options;
+               for ( var o = 0; o < options.length; o++ )
+                       if ( id == options[o].value )
+                               options[o] = null;
+       };
+});
index 755c976545e8c37d48ab341e00f30a278859c29d..5e77e0fd6524c71e8b27481b8c6ab002433a4d1d 100644 (file)
@@ -4,176 +4,120 @@ require_once('admin.php');
 $title = __('Categories');
 $parent_file = 'edit.php';
 
-$wpvarstoreset = array('action','cat');
-for ($i=0; $i<count($wpvarstoreset); $i += 1) {
-    $wpvar = $wpvarstoreset[$i];
-    if (!isset($$wpvar)) {
-        if (empty($_POST["$wpvar"])) {
-            if (empty($_GET["$wpvar"])) {
-                $$wpvar = '';
-            } else {
-                $$wpvar = $_GET["$wpvar"];
-            }
-        } else {
-            $$wpvar = $_POST["$wpvar"];
-        }
-    }
-}
+wp_reset_vars(array('action', 'cat'));
 
 switch($action) {
 
 case 'addcat':
-       if ($user_level < 3)
-               die (__('Cheatin&#8217; uh?'));
-       
-       $cat_name= wp_specialchars($_POST['cat_name']);
-       $id_result = $wpdb->get_row("SHOW TABLE STATUS LIKE '$wpdb->categories'");
-       $cat_ID = $id_result->Auto_increment;
-       $category_nicename = sanitize_title($cat_name, $cat_ID);
-       $category_description = $_POST['category_description'];
-       $cat = intval($_POST['cat']);
-       
-       $wpdb->query("INSERT INTO $wpdb->categories (cat_ID, cat_name, category_nicename, category_description, category_parent) VALUES ('0', '$cat_name', '$category_nicename', '$category_description', '$cat')");
-       
-       header('Location: categories.php?message=1#addcat');
+
+       check_admin_referer('add-category');
+
+       if ( !current_user_can('manage_categories') )
+               wp_die(__('Cheatin&#8217; uh?'));
+
+       if( wp_insert_category($_POST ) ) {
+               wp_redirect('categories.php?message=1#addcat');
+       } else {
+               wp_redirect('categories.php?message=4#addcat');
+       }
+       exit;
 break;
 
 case 'delete':
+       $cat_ID = (int) $_GET['cat_ID'];
+       check_admin_referer('delete-category_' .  $cat_ID);
 
-       check_admin_referer();
+       if ( !current_user_can('manage_categories') )
+               wp_die(__('Cheatin&#8217; uh?'));
 
-       $cat_ID = (int) $_GET['cat_ID'];
        $cat_name = get_catname($cat_ID);
-       $category = $wpdb->get_row("SELECT * FROM $wpdb->categories WHERE cat_ID = '$cat_ID'");
-       $cat_parent = $category->category_parent;
 
-       if ( 1 == $cat_ID )
-               die(sprintf(__("Can't delete the <strong>%s</strong> category: this is the default one"), $cat_name));
+       // Don't delete the default cats.
+    if ( $cat_ID == get_option('default_category') )
+               wp_die(sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one"), $cat_name));
 
-       if ( $user_level < 3 )
-               die (__('Cheatin&#8217; uh?'));
+    if ( $cat_ID == get_option('default_link_category') )
+               wp_die(sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one for links"), $cat_name));
 
-       $wpdb->query("DELETE FROM $wpdb->categories WHERE cat_ID = '$cat_ID'");
-       $wpdb->query("UPDATE $wpdb->categories SET category_parent = '$cat_parent' WHERE category_parent = '$cat_ID'");
-       // TODO: Only set categories to general if they're not in another category already
-       $wpdb->query("UPDATE $wpdb->post2cat SET category_id='1' WHERE category_id='$cat_ID'");
+       wp_delete_category($cat_ID);
 
-       header('Location: categories.php?message=2');
+       wp_redirect('categories.php?message=2');
+       exit;
 
 break;
 
 case 'edit':
 
-    require_once ('admin-header.php');
-    $cat_ID = (int) $_GET['cat_ID'];
-    $category = $wpdb->get_row("SELECT * FROM $wpdb->categories WHERE cat_ID = '$cat_ID'");
-    $cat_name = $category->cat_name;
-    ?>
-
-<div class="wrap">
- <h2><?php _e('Edit Category') ?></h2>
- <form name="editcat" action="categories.php" method="post">
-         <table class="editform" width="100%" cellspacing="2" cellpadding="5">
-               <tr>
-                 <th width="33%" scope="row"><?php _e('Category name:') ?></th>
-                 <td width="67%"><input name="cat_name" type="text" value="<?php echo wp_specialchars($cat_name); ?>" size="40" /> <input type="hidden" name="action" value="editedcat" />
-<input type="hidden" name="cat_ID" value="<?php echo $cat_ID ?>" /></td>
-               </tr>
-               <tr>
-                       <th scope="row"><?php _e('Category slug:') ?></th>
-                       <td><input name="category_nicename" type="text" value="<?php echo wp_specialchars($category->category_nicename); ?>" size="40" /></td>
-               </tr>
-               <tr>
-                       <th scope="row"><?php _e('Category parent:') ?></th>
-                       <td>        
-                       <select name='cat'>
-         <option value='0' <?php if (!$category->category_parent) echo " selected='selected'"; ?>><?php _e('None') ?></option>
-         <?php wp_dropdown_cats($category->cat_ID, $category->category_parent); ?>
-         </select></td>
-               </tr>
-               <tr>
-                       <th scope="row"><?php _e('Description:') ?></th>
-                       <td><textarea name="category_description" rows="5" cols="50" style="width: 97%;"><?php echo wp_specialchars($category->category_description, 1); ?></textarea></td>
-               </tr>
-               </table>
-         <p class="submit"><input type="submit" name="submit" value="<?php _e('Edit category') ?> &raquo;" /></p>
- </form>
- <p><a href="categories.php"><?php _e('&laquo; Return to category list'); ?></a></p>
-</div>
-    <?php
+       require_once ('admin-header.php');
+       $cat_ID = (int) $_GET['cat_ID'];
+       $category = get_category_to_edit($cat_ID);
+       include('edit-category-form.php');
 
 break;
 
 case 'editedcat':
-       if ($user_level < 3)
-               die (__('Cheatin&#8217; uh?'));
-       
-       $cat_name = wp_specialchars($_POST['cat_name']);
        $cat_ID = (int) $_POST['cat_ID'];
-       $category_nicename = sanitize_title($_POST['category_nicename'], $cat_ID);
-       $category_description = $_POST['category_description'];
-       
-       $wpdb->query("UPDATE $wpdb->categories SET cat_name = '$cat_name', category_nicename = '$category_nicename', category_description = '$category_description', category_parent = '$cat' WHERE cat_ID = '$cat_ID'");
+       check_admin_referer('update-category_' . $cat_ID);
+
+       if ( !current_user_can('manage_categories') )
+               wp_die(__('Cheatin&#8217; uh?'));
+
+       if ( wp_update_category($_POST) )
+               wp_redirect('categories.php?message=3'); 
+       else
+               wp_redirect('categories.php?message=5'); 
 
-       header('Location: categories.php?message=3');
+       exit;
 break;
 
 default:
 
+wp_enqueue_script( 'admin-categories' );
 require_once ('admin-header.php');
 
 $messages[1] = __('Category added.');
 $messages[2] = __('Category deleted.');
 $messages[3] = __('Category updated.');
+$messages[4] = __('Category not added.');
+$messages[5] = __('Category not updated.');
 ?>
 
 <?php if (isset($_GET['message'])) : ?>
-<div class="updated"><p><?php echo $messages[$_GET['message']]; ?></p></div>
+<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
 <?php endif; ?>
 
 <div class="wrap">
-<?php if ( $user_level > 3 ) : ?>
+<?php if ( current_user_can('manage_categories') ) : ?>
        <h2><?php printf(__('Categories (<a href="%s">add new</a>)'), '#addcat') ?> </h2>
 <?php else : ?>
        <h2><?php _e('Categories') ?> </h2>
 <?php endif; ?>
-<table width="100%" cellpadding="3" cellspacing="3">
+<table class="widefat">
+       <thead>
        <tr>
-               <th scope="col"><?php _e('ID') ?></th>
+               <th scope="col" style="text-align: center"><?php _e('ID') ?></th>
         <th scope="col"><?php _e('Name') ?></th>
         <th scope="col"><?php _e('Description') ?></th>
-        <th scope="col"><?php _e('# Posts') ?></th>
-        <th colspan="2"><?php _e('Action') ?></th>
+        <th scope="col" width="90" style="text-align: center"><?php _e('Posts') ?></th>
+        <th scope="col" width="90" style="text-align: center"><?php _e('Links') ?></th>
+        <th colspan="2" style="text-align: center"><?php _e('Action') ?></th>
        </tr>
+       </thead>
+       <tbody id="the-list">
 <?php
 cat_rows();
 ?>
+       </tbody>
 </table>
 
 </div>
 
-<?php if ( $user_level > 3 ) : ?>
+<?php if ( current_user_can('manage_categories') ) : ?>
 <div class="wrap">
-    <p><?php printf(__('<strong>Note:</strong><br />Deleting a category does not delete posts from that category, it will just set them back to the default category <strong>%s</strong>.'), get_catname(1)) ?>
-  </p>
+<p><?php printf(__('<strong>Note:</strong><br />Deleting a category does not delete the posts and links in that category. Instead, posts that were only assigned to the deleted category are set to the category <strong>%s</strong> and links that were only assigned to the deleted category are set to <strong>%s</strong>.'), apply_filters('the_category', get_catname(get_option('default_category'))), apply_filters('the_category', get_catname(get_option('default_link_category')))) ?></p>
 </div>
 
-<div class="wrap">
-    <h2><?php _e('Add New Category') ?></h2>
-    <form name="addcat" id="addcat" action="categories.php" method="post">
-        
-        <p><?php _e('Name:') ?><br />
-        <input type="text" name="cat_name" value="" /></p>
-        <p><?php _e('Category parent:') ?><br />
-        <select name='cat' class='postform'>
-        <option value='0'><?php _e('None') ?></option>
-        <?php wp_dropdown_cats(0); ?>
-        </select></p>
-        <p><?php _e('Description: (optional)') ?> <br />
-        <textarea name="category_description" rows="5" cols="50" style="width: 97%;"></textarea></p>
-        <p class="submit"><input type="hidden" name="action" value="addcat" /><input type="submit" name="submit" value="<?php _e('Add Category &raquo;') ?>" /></p>
-    </form>
-</div>
+<?php include('edit-category-form.php'); ?>
 <?php endif; ?>
 
 <?php
@@ -181,4 +125,5 @@ break;
 }
 
 include('admin-footer.php');
+
 ?>
diff --git a/WebKitSite/blog/wp-admin/comment.php b/WebKitSite/blog/wp-admin/comment.php
new file mode 100644 (file)
index 0000000..063b825
--- /dev/null
@@ -0,0 +1,213 @@
+<?php
+require_once('admin.php');
+
+$parent_file = 'edit-comments.php';
+$submenu_file = 'edit-comments.php';
+
+wp_reset_vars(array('action'));
+
+if ( isset( $_POST['deletecomment'] ) )
+       $action = 'deletecomment';
+
+switch($action) {
+case 'editcomment':
+       $title = __('Edit Comment');
+
+       require_once ('admin-header.php');
+
+       $comment = (int) $_GET['c'];
+
+       if ( ! $comment = get_comment($comment) )
+               wp_die(__('Oops, no comment with this ID.').sprintf(' <a href="%s">'.__('Go back').'</a>!', 'javascript:history.go(-1)'));
+
+       if ( !current_user_can('edit_post', $comment->comment_post_ID) )
+               wp_die( __('You are not allowed to edit comments on this post.') );
+
+       $comment = get_comment_to_edit($comment);
+
+       include('edit-form-comment.php');
+
+       break;
+
+case 'cdc':
+case 'mac':
+
+       require_once('./admin-header.php');
+
+       $comment = (int) $_GET['c'];
+       $formaction = 'cdc' == $action ? 'deletecomment' : 'approvecomment';
+       $nonce_action = 'cdc' == $action ? 'delete-comment_' : 'approve-comment_';
+       $nonce_action .= $comment;
+
+       if ( ! $comment = get_comment($comment) )
+               wp_die(__('Oops, no comment with this ID.').sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php'));
+
+       if ( !current_user_can('edit_post', $comment->comment_post_ID) )
+               wp_die( 'cdc' == $action ? __('You are not allowed to delete comments on this post.') : __('You are not allowed to edit comments on this post, so you cannot approve this comment.') );
+?>
+<div class='wrap'>
+
+<div class="narrow">
+<?php if ( 'spam' == $_GET['dt'] ) { ?>
+<p><?php echo '<strong>'.__('Caution:').'</strong> '.__('You are about to mark the following comment as spam:'); ?></p>
+<?php } elseif ( 'cdc' == $action ) { ?>
+<p><?php echo '<strong>'.__('Caution:').'</strong> '.__('You are about to delete the following comment:'); ?></p>
+<?php } else { ?>
+<p><?php echo '<strong>'.__('Caution:').'</strong> '.__('You are about to approve the following comment:'); ?></p>
+<?php } ?>
+
+<p><?php _e('Are you sure you want to do that?'); ?></p>
+
+<form action='<?php echo get_option('siteurl'); ?>/wp-admin/comment.php' method='get'>
+
+<table width="100%">
+<tr>
+<td><input type='button' value='<?php _e('No'); ?>' onclick="self.location='<?php echo get_option('siteurl'); ?>/wp-admin/edit-comments.php';" /></td>
+<td align="right"><input type='submit' value='<?php _e('Yes'); ?>' /></td>
+</tr>
+</table>
+
+<?php wp_nonce_field($nonce_action); ?>
+<input type='hidden' name='action' value='<?php echo $formaction; ?>' />
+<?php if ( 'spam' == $_GET['dt'] ) { ?>
+<input type='hidden' name='dt' value='spam' />
+<?php } ?>
+<input type='hidden' name='p' value='<?php echo $comment->comment_post_ID; ?>' />
+<input type='hidden' name='c' value='<?php echo $comment->comment_ID; ?>' />
+<input type='hidden' name='noredir' value='1' />
+</form>
+
+<table class="editform" cellpadding="5">
+<tr class="alt">
+<th scope="row"><?php _e('Author:'); ?></th>
+<td><?php echo $comment->comment_author; ?></td>
+</tr>
+<?php if ( $comment->comment_author_email ) { ?>
+<tr>
+<th scope="row"><?php _e('E-mail:'); ?></th>
+<td><?php echo $comment->comment_author_email; ?></td>
+</tr>
+<?php } ?>
+<?php if ( $comment->comment_author_url ) { ?>
+<tr>
+<th scope="row"><?php _e('URL:'); ?></th>
+<td><?php echo $comment->comment_author_url; ?></td>
+</tr>
+<?php } ?>
+<tr>
+<th scope="row" valign="top"><p><?php _e('Comment:'); ?></p></th>
+<td><?php echo apply_filters( 'comment_text', $comment->comment_content ); ?></td>
+</tr>
+</table>
+
+</div>
+</div>
+<?php
+       break;
+
+case 'deletecomment':
+       $comment = (int) $_REQUEST['c'];
+       check_admin_referer('delete-comment_' . $comment);
+
+       if ( isset($_REQUEST['noredir']) ) {
+               $noredir = true;
+       } else {
+               $noredir = false;
+       }
+
+       if ( ! $comment = get_comment($comment) )
+                        wp_die(__('Oops, no comment with this ID.').sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit-comments.php'));
+
+       if ( !current_user_can('edit_post', $comment->comment_post_ID) )
+               wp_die( __('You are not allowed to edit comments on this post.') );
+
+       if ( 'spam' == $_REQUEST['dt'] )
+               wp_set_comment_status($comment->comment_ID, 'spam');
+       else
+               wp_delete_comment($comment->comment_ID);
+
+       if ((wp_get_referer() != '') && (false == $noredir)) {
+               wp_redirect(wp_get_referer());
+       } else {
+               wp_redirect(get_option('siteurl') .'/wp-admin/edit-comments.php');
+       }
+       exit();
+       break;
+
+case 'unapprovecomment':
+       $comment = (int) $_GET['c'];
+       check_admin_referer('unapprove-comment_' . $comment);
+
+       if (isset($_GET['noredir'])) {
+               $noredir = true;
+       } else {
+               $noredir = false;
+       }
+
+       if ( ! $comment = get_comment($comment) )
+               wp_die(__('Oops, no comment with this ID.').sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php'));
+
+       if ( !current_user_can('edit_post', $comment->comment_post_ID) )
+               wp_die( __('You are not allowed to edit comments on this post, so you cannot disapprove this comment.') );
+
+       wp_set_comment_status($comment->comment_ID, "hold");
+
+       if ((wp_get_referer() != "") && (false == $noredir)) {
+               wp_redirect(wp_get_referer());
+       } else {
+               wp_redirect(get_option('siteurl') .'/wp-admin/edit.php?p='.$comment->comment_post_ID.'&c=1#comments');
+       }
+       exit();
+       break;
+
+case 'approvecomment':
+       $comment = (int) $_GET['c'];
+       check_admin_referer('approve-comment_' . $comment);
+
+       if (isset($_GET['noredir'])) {
+               $noredir = true;
+       } else {
+               $noredir = false;
+       }
+
+       if ( ! $comment = get_comment($comment) )
+               wp_die(__('Oops, no comment with this ID.').sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit.php'));
+
+       if ( !current_user_can('edit_post', $comment->comment_post_ID) )
+               wp_die( __('You are not allowed to edit comments on this post, so you cannot approve this comment.') );
+
+       wp_set_comment_status($comment->comment_ID, "approve");
+       if (get_option("comments_notify") == true) {
+               wp_notify_postauthor($comment->comment_ID);
+       }
+
+
+       if ((wp_get_referer() != "") && (false == $noredir)) {
+               wp_redirect(wp_get_referer());
+       } else {
+               wp_redirect(get_option('siteurl') .'/wp-admin/edit.php?p='.$comment->comment_post_ID.'&c=1#comments');
+       }
+       exit();
+       break;
+
+case 'editedcomment':
+
+       $comment_ID = (int) $_POST['comment_ID'];
+       $comment_post_ID = (int) $_POST['comment_post_id'];
+
+       check_admin_referer('update-comment_' . $comment_ID);
+
+       edit_comment();
+
+       $location = ( empty($_POST['referredby']) ? "edit.php?p=$comment_post_ID&c=1" : $_POST['referredby'] ) . '#comment-' . $comment_ID;
+       $location = apply_filters('comment_edit_redirect', $location, $comment_ID);
+       wp_redirect($location);
+       exit();
+       break;
+default:
+       break;
+} // end switch
+
+include('admin-footer.php');
+
+?>
diff --git a/WebKitSite/blog/wp-admin/custom-fields.js b/WebKitSite/blog/wp-admin/custom-fields.js
new file mode 100644 (file)
index 0000000..ad7a2db
--- /dev/null
@@ -0,0 +1,26 @@
+function customFieldsOnComplete( what, where, update, transport ) {
+       var pidEl = $('post_ID');
+       pidEl.name = 'post_ID';
+       pidEl.value = getNodeValue(transport.responseXML, 'postid');
+       var aEl = $('hiddenaction')
+       if ( aEl.value == 'post' ) aEl.value = 'postajaxpost';
+}
+addLoadEvent(customFieldsAddIn);
+function customFieldsAddIn() {
+       theList.showLink=0;
+       theList.addComplete = customFieldsOnComplete;
+       if (!theList.theList) return false;
+       inputs = theList.theList.getElementsByTagName('input');
+       for ( var i=0; i < inputs.length; i++ ) {
+               if ('text' == inputs[i].type) {
+                       inputs[i].setAttribute('autocomplete', 'off');
+                       inputs[i].onkeypress = function(e) {return killSubmit('theList.ajaxUpdater("meta", "meta-' + parseInt(this.name.slice(5),10) + '");', e); };
+               }
+               if ('updatemeta' == inputs[i].className) {
+                       inputs[i].onclick = function(e) {return killSubmit('theList.ajaxUpdater("meta", "meta-' + parseInt(this.parentNode.parentNode.id.slice(5),10) + '");', e); };
+               }
+       }
+
+       $('metakeyinput').onkeypress = function(e) {return killSubmit('theList.inputData+="&id="+$("post_ID").value;theList.ajaxAdder("meta", "newmeta");', e); };
+       $('updatemetasub').onclick = function(e) {return killSubmit('theList.inputData+="&id="+$("post_ID").value;theList.ajaxAdder("meta", "newmeta");', e); };
+}
diff --git a/WebKitSite/blog/wp-admin/custom-header.php b/WebKitSite/blog/wp-admin/custom-header.php
new file mode 100644 (file)
index 0000000..d18ed87
--- /dev/null
@@ -0,0 +1,332 @@
+<?php
+
+class Custom_Image_Header {
+       var $admin_header_callback;
+
+       function Custom_Image_Header($admin_header_callback) {
+               $this->admin_header_callback = $admin_header_callback;
+       }
+
+       function init() {
+               $page = add_theme_page(__('Custom Image Header'), __('Custom Image Header'), 'edit_themes', 'custom-header', array(&$this, 'admin_page'));
+
+               add_action("admin_print_scripts-$page", array(&$this, 'js_includes'));
+               add_action("admin_head-$page", array(&$this, 'js'), 50);
+               add_action("admin_head-$page", $this->admin_header_callback, 51);
+       }
+
+       function js_includes() {
+               wp_enqueue_script('cropper');
+               wp_enqueue_script('colorpicker');
+       }
+
+       function js() {
+
+               if ( isset( $_POST['textcolor'] ) ) {
+                       check_admin_referer('custom-header');
+                       if ( 'blank' == $_POST['textcolor'] ) {
+                               set_theme_mod('header_textcolor', 'blank');
+                       } else {
+                               $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['textcolor']);
+                               if ( strlen($color) == 6 || strlen($color) == 3 )
+                                       set_theme_mod('header_textcolor', $color);
+                       }
+         &